SPRUIG4E january   2018  – april 2023

 

  1.   Read This First
    1.     About This Manual
    2.     Related TI Documentation
    3.     Other Relevant Documentation
    4.     Trademarks
  2. Introduction
    1. 1.1 ABIs for the C7000
    2. 1.2 Scope
    3. 1.3 ABI Variants
    4. 1.4 Toolchains and Interoperability
    5. 1.5 Libraries
    6. 1.6 Types of Object Files
    7. 1.7 Segments
    8. 1.8 C7000 Architecture Overview
    9. 1.9 Code Fragment Notation
  3. Data Representation
    1. 2.1 Basic Types
      1. 2.1.1 Basic Types in Memory
      2. 2.1.2 Basic Types in Registers
    2. 2.2 Complex Types
      1. 2.2.1 Memory Representation of Complex Types
      2. 2.2.2 Register Representation of Complex Types
    3. 2.3 Vector Types
    4. 2.4 Structures and Unions
      1. 2.4.1 Structures in Registers
    5. 2.5 Bit-Fields
      1. 2.5.1 Volatile Bit-Fields
    6. 2.6 Enumeration Types
  4. Calling Conventions
    1. 3.1 Call and Return
      1. 3.1.1 Pipeline Conventions
      2. 3.1.2 Weak Functions
    2. 3.2 Register Conventions
    3. 3.3 Return Values
    4. 3.4 Values Passed and Returned by Reference
    5. 3.5 Conventions for Compiler Helper Functions
    6. 3.6 Scratch Registers for Trampolines and PLT Entries
  5. Data Allocation and Addressing
    1. 4.1 Data Sections and Segments
    2. 4.2 Allocation and Addressing of Static Data
      1. 4.2.1 Addressing Methods for Static Data
        1. 4.2.1.1 Direct Addressing
        2. 4.2.1.2 Taking the Address of a Variable
        3. 4.2.1.3 Absolute Addressing
      2. 4.2.2 Initialization of Static Data
    3. 4.3 Automatic Variables
    4. 4.4 Frame Layout
      1. 4.4.1 Stack Allocation
      2. 4.4.2 Register Save Order
    5. 4.5 Heap-Allocated Objects
  6. Code Allocation and Addressing
    1. 5.1 Branching
    2. 5.2 Calls
      1. 5.2.1 PLT Entries for Dynamic Linking
    3. 5.3 Computing Code Addresses
  7. Helper Function API
    1. 6.1 Floating-Point Behavior
    2. 6.2 C Helper Function API
    3. 6.3 Special Register Conventions for Helper Functions
  8. Standard C Library API
    1. 7.1  Reserved Symbols
    2. 7.2  <assert.h> Implementation
    3. 7.3  <complex.h> Implementation
    4. 7.4  <ctype.h> Implementation
    5. 7.5  <errno.h> Implementation
    6. 7.6  <float.h> Implementation
    7. 7.7  <inttypes.h> Implementation
    8. 7.8  <iso646.h> Implementation
    9. 7.9  <limits.h> Implementation
    10. 7.10 <locale.h> Implementation
    11. 7.11 <math.h> Implementation
    12. 7.12 <setjmp.h> Implementation
    13. 7.13 <signal.h> Implementation
    14. 7.14 <stdarg.h> Implementation
    15. 7.15 <stdbool.h> Implementation
    16. 7.16 <stddef.h> Implementation
    17. 7.17 <stdint.h> Implementation
    18. 7.18 <stdio.h> Implementation
    19. 7.19 <stdlib.h> Implementation
    20. 7.20 <string.h> Implementation
    21. 7.21 <tgmath.h> Implementation
    22. 7.22 <time.h> Implementation
    23. 7.23 <wchar.h> Implementation
    24. 7.24 <wctype.h> Implementation
  9. 8 C++ ABI
    1. 8.1  Limits (GC++ABI 1.2)
    2. 8.2  Export Template (GC++ABI 1.4.2)
    3. 8.3  Data Layout (GC++ABI Chapter 2)
    4. 8.4  Initialization Guard Variables (GC++ABI 2.8)
    5. 8.5  Constructor Return Value (GC++ABI 3.1.5)
    6. 8.6  One-time Construction API (GC++ABI 3.3.2)
    7. 8.7  Controlling Object Construction Order (GC++ ABI 3.3.4)
    8. 8.8  Static Data (GC++ ABI 5.2.2)
    9. 8.9  Virtual Tables and the Key function (GC++ABI 5.2.3)
    10. 8.10 Unwind Table Location (GC++ABI 5.3)
  10. Exception Handling
    1. 9.1  Overview
    2. 9.2  PREL30 Encoding
    3. 9.3  The Exception Index Table (EXIDX)
    4. 9.4  The Exception Handling Instruction Table (EXTAB)
    5. 9.5  Unwinding Instructions
      1. 9.5.1 Common Sequence
      2. 9.5.2 Byte-Encoded Unwinding Instructions
      3. 9.5.3 24-bit Unwinding Encoding
    6. 9.6  Descriptors
      1. 9.6.1 Encoding of Type Identifiers
      2. 9.6.2 Scope
      3. 9.6.3 Cleanup Descriptor
      4. 9.6.4 Catch Descriptor
      5. 9.6.5 Function Exception Specification (FESPEC) Descriptor
    7. 9.7  Special Sections
    8. 9.8  Interaction With Non-C++ Code
      1. 9.8.1 Automatic EXIDX entry generation
      2. 9.8.2 Hand-coded Assembly Functions
    9. 9.9  Interaction with System Features
    10. 9.10 Assembly Language Operators in the TI Toolchain
  11. 10DWARF
    1. 10.1 DWARF Register Names
    2. 10.2 Call Frame Information
    3. 10.3 Vendor Names
    4. 10.4 Vendor Extensions
  12. 11Object Files (Processor Supplement)
    1. 11.1 Registered Vendor Names
    2. 11.2 ELF Header
    3. 11.3 Sections
      1. 11.3.1 Section Types
      2. 11.3.2 Section Attribute Flags
      3. 11.3.3 Subsections
      4. 11.3.4 Special Sections
      5. 11.3.5 Section Alignment
    4. 11.4 Symbol Table
      1. 11.4.1 Symbol Types
      2. 11.4.2 Common Block Symbols
      3. 11.4.3 Symbol Names
      4. 11.4.4 Reserved Symbol Names
      5. 11.4.5 Mapping Symbols
    5. 11.5 Relocation
      1. 11.5.1 Relocation Types
      2. 11.5.2 Relocation Operations
      3. 11.5.3 Relocation of Unresolved Weak References
  13. 12Build Attributes
    1. 12.1 Overview
    2. 12.2 C7000 ABI Build Attribute Subsection
    3. 12.3 C7000 ABI Build Attribute Tags
  14. 13Copy Tables and Variable Initialization
    1. 13.1 Overview
    2. 13.2 Copy Table Format
    3. 13.3 Compressed Data Formats
    4. 13.4 Variable Initialization
  15. 14Extended Program Header Attributes
    1. 14.1 Overview
    2. 14.2 Encoding
    3. 14.3 Attribute Tag Definitions
    4. 14.4 Extended Program Header Attributes Section Format
  16. 15Revision History
  17.   156

Read This First