64-bit PowerPC ELF Application Binary Interface Supplement 1.9

Ian Lance Taylor

Zembu Labs

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 available from http://www.linuxbase.org/spec/refspecs/LSB_1.2.0/gLSB/gfdl.html.

The following terms are trademarks or registered trademarks of International Business Machines Corporation in the United States and/or other countires: AIX, PowerPC. A full list U.S. trademarks owned by IBM may be found at http://www.ibm.com/legal/copytrade.shtml.


Table of Contents
1. Introduction
1.1. How to Use the 64-bit PowerPC ELF ABI Supplement
2. Software Installation
2.1. Physical Distribution Media and Formats
3. Low Level System Information
3.1. Machine Interface
3.1.1. Processor Architecture
3.1.2. Data Representation
3.1.3. Byte Ordering
3.1.4. Fundamental Types
3.1.5. Extended Precision
3.1.6. Aggregates and Unions
3.1.7. Bit-fields
3.2. Function Calling Sequence
3.2.1. Registers
3.2.2. The Stack Frame
3.2.3. Parameter Passing
3.2.4. Return Values
3.2.5. Function Descriptors
3.3. Traceback Tables
3.3.1. Mandatory Fields
3.3.2. Optional Fields
3.4. Process Initialization
3.4.1. Registers
3.4.2. Process Stack
3.5. Coding Examples
3.5.1. Code Model Overview
3.5.2. The TOC section
3.5.3. TOC Assembly Language Syntax
3.5.4. Function Prologue and Epilogue
3.5.5. Register Saving and Restoring Functions
3.5.6. Saving General Registers Only
3.5.7. Saving General Registers and Floating Point Registers
3.5.8. Saving Floating Point Registers Only
3.5.9. Save and Restore Services
3.5.10. Data Objects
3.5.11. Function Calls
3.5.12. Branching
3.5.13. Dynamic Stack Space Allocation
3.6. DWARF Definition
3.6.1. DWARF Release Number
3.6.2. DWARF Register Number Mapping
4. Object Files
4.1. ELF Header
4.2. Special Sections
4.3. TOC
4.4. Symbol Table
4.4.1. Symbol Values
4.5. Relocation
4.5.1. Relocation Types
5. Program Loading and Dynamic Linking
5.1. Program Loading
5.1.1. Program Interpreter
5.2. Dynamic Linking
5.2.1. Dynamic Section
5.2.2. Global Offset Table
5.2.3. Function Addresses
5.2.4. Procedure Linkage Table
6. Libraries
List of Figures
3-1. Bit and Byte Numbering in Halfwords
3-2. Bit and Byte Numbering in Words
3-3. Bit and Byte Numbering in Doublewords
3-4. Bit and Byte Numbering in Quadwords
3-5. Structure Smaller Than a Word
3-6. No Padding
3-7. Internal Padding
3-8. Internal and Tail Padding
3-9. Union Allocation
3-10. Bit Numbering
3-11. Bit-field Allocation
3-12. Boundary Alignment
3-13. Doubleword Boundary Alignment
3-14. Storage Unit Sharing
3-15. Union Allocation
3-16. Unnamed bit-fields
3-17. Stack Frame Organiztion
3-18. Parameter Passing
4-1. Relocation Table
5-1. Virtual Address