S/390 ELF Application Binary Interface Supplement

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Linux is a trademark of Linus Torvalds.

LSB is a trademark of the Free Standards Group in the USA and other countries.


Table of Contents
Preface
1. Low-level system information
1.1. Machine interface
1.1.1. Processor architecture
1.1.2. Data representation
1.2. Function calling sequence
1.2.1. Registers
1.2.2. The stack frame
1.2.3. Parameter passing
1.2.4. Variable argument lists
1.2.5. Return values
1.3. Operating system interface
1.3.1. Virtual address space
1.3.2. Page size
1.3.3. Virtual address assignments
1.3.4. Managing the process stack
1.3.5. Coding guidelines
1.3.6. Processor execution modes
1.4. Exception interface
1.5. Process initialization
1.5.1. Registers
1.5.2. Process stack
1.6. Coding examples
1.6.1. Code model overview
1.6.2. Function prolog and epilog
1.6.3. Profiling
1.6.4. Data objects
1.6.5. Function calls
1.6.6. Branching
1.6.7. Dynamic stack space allocation
1.7. DWARF definition
2. Object files
2.1. ELF Header
2.1.1. Machine Information
2.2. Sections
2.2.1. Special Sections
2.2.2. Symbol Table
2.2.3. Relocation
3. Program loading and dynamic linking
3.1. Program Loading
3.2. Dynamic Linking
3.2.1. Dynamic Section
3.2.2. Global Offset Table
3.2.3. Function Addresses
3.2.4. Procedure Linkage Table
A.
A.1. GNU Free Documentation License
A.1.1. PREAMBLE
A.1.2. APPLICABILITY AND DEFINITIONS
A.1.3. VERBATIM COPYING
A.1.4. COPYING IN QUANTITY
A.1.5. MODIFICATIONS
A.1.6. COMBINING DOCUMENTS
A.1.7. COLLECTIONS OF DOCUMENTS
A.1.8. AGGREGATION WITH INDEPENDENT WORKS
A.1.9. TRANSLATION
A.1.10. TERMINATION
A.1.11. FUTURE REVISIONS OF THIS LICENSE
A.1.12. How to use this License for your documents
4. Notices
4.1. Programming interface information
4.2. Trademarks
B.
Index
List of Tables
1-1. Scalar types
1-2.
1-3.
1-4.
1-5.
1-6.
1-7. Bit fields
1-8.
1-9.
1-10. Parameter passing example: Register allocation
1-11. Registers for return values
1-12. Exceptions and Signals
1-13.
1-14. Auxiliary Vector Types, a_type
1-15.
1-16.
1-17.
1-18.
1-19.
1-20.
1-21.
1-22.
1-23.
1-24.
1-25.
1-26.
1-27. DWARF register number mapping
2-1. Auxiliary Vector Types Description
2-2. Special Sections
2-3. Special Sections Description
2-4. Relocation Types
2-5. Relocation type descriptions
3-1. Program Header Segments
3-2. Shared Object Segment Example
4-1.
List of Figures
1-1. Bit and byte numbering in halfwords
1-2. Bit and byte numbering in words
1-3. Bit and byte numbering in doublewords
1-4. Structure smaller than a word
1-5. No padding
1-6. Internal padding
1-7. Internal and tail padding
1-8. Union padding
1-9. Bit numbering
1-10. Left-to-right allocation
1-11. Boundary alignment
1-12. Storage unit sharing
1-13. Union allocation
1-14. Unnamed bit fields
1-15. Standard stack frame
1-16. Register save area
1-17. Parameter list area
1-18. Parameter passing example
1-19. Virtual address configuration
1-20. Declaration for main
1-21. Auxiliary vector structure
1-22. Initial Process Stack
1-23. Prolog and epilog example
1-24. Code for profiling
1-25. Absolute addressing
1-26. Small model position-independent addressing
1-27. Large model position-independent addressing
1-28. Absolute direct function call
1-29. Small model position-independent direct function call
1-30. Large model position-independent direct function call
1-31. Absolute indirect function call
1-32. Small model position-independent indirect function call
1-33. Large model position-independent indirect function call
1-34. Branch instruction
1-35. Absolute switch code
1-36. Position-independent switch code, all models
1-37. Dynamic Stack Space Allocation
2-1. Relocation Fields
3-1. Executable File Example
3-2. Process Image Segments
3-3. Procedure Linkage Table Example
3-4. Special first entry in Procedure Linkage Table