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