SPRAC71B February 2019 – October 2023
The System V ABI, along with other base documents and other sections of this ABI, defines several sections with dedicated purposes. Table 11-4 consolidates dedicated sections used by the C28x and groups them by functionality.
Section names are not mandated by the ABI. Special sections should be identified by type, not by name. However, interoperability among toolchains can be improved by following these conventions. For example, using these names may decrease the likelihood of having to write custom linker commands to link relocatable files built by different compilers.
The ABI does mandate that a section whose name does match an entry in the table must be used for the specified purpose. For example, the compiler is not required to generate code into a section called .text, but it is not allowed to generate a section called .text containing anything other than code.
All of the section names listed in the table that follows are prefixes. The type and attributes apply to all sections with names that begin with these strings.
Prefix | Type | Attributes |
---|---|---|
Code Sections | ||
.text | SHT_PROGBITS | SHF_ALLOC + SHF_EXECINSTR |
Data Sections | ||
.data | SHT_PROGBITS | SHF_ALLOC + SHF_WRITE |
.bss | SHT_NOBITS | SHF_ALLOC + SHF_WRITE |
.TI.noinit | SHT_NOBITS | TI_SHF_NOINIT |
.TI.persistent | SHT_PROGBITS | TI_SHF_NOINIT |
.const | SHT_PROGBITS | SHF_ALLOC |
Exception Handling Data Sections | ||
.C28x.exidx | SHT_C28x_UNWIND | SHF_ALLOC + SHF_LINK_ORDER |
.C28x.extab | SHT_PROGBITS | SHF_ALLOC |
Initialization and Termination Sections | ||
.init_array | SHT_INIT_ARRAY | SHF_ALLOC + SHF_WRITE |
ELF Structures | ||
.rel | SHT_REL | None |
.rela | SHT_RELA | None |
.symtab | SHT_SYMTAB | None |
.symtab_shndx | SHT_SYMTAB_SHNDX | None |
.strtab | SHT_STRTAB | SHF_STRINGS |
.shstrtab | SHT_STRTAB | SHF_STRINGS |
.note | SHT_NOTE | None |
Build Attributes | ||
.C28x.attributes | SHT_C28x_ATTRIBUTES | None |
Symbolic Debug Sections | ||
.debug (1) | SHT_PROGBITS | None |
TI Toolchain-Specific Sections | ||
.stack | SHT_NOBITS | SHF_ALLOC + SHF_WRITE |
.sysmem | SHT_NOBITS | SHF_ALLOC + SHF_WRITE |
.switch | SHT_PROGBITS | SHF_ALLOC |
.binit | SHT_PROGBITS | SHF_ALLOC |
.cinit | SHT_TI_INITINFO | SHF_ALLOC |
.const:handler_table | SHT_PROGBITS | SHF_ALLOC |
.ovly | SHT_PROGBITS | SHF_ALLOC |
.ppdata | SHT_NOBITS | SHF_ALLOC + SHF_WRITE |
.ppinfo | SHT_NOBITS | SHF_ALLOC + SHF_WRITE |
.TI.crctab | SHT_PROGBITS | SHF_ALLOC |
.TI.icode | SHT_TI_ICODE | None |
.TI.xref | SHT_TI_XREF | None |
.TI.section.flags | SHT_TI_SH_FLAGS | None |
.TI.symbol.alias | SHT_TI_SYMALIAS | None |
.TI.section.page | SHT_TI_SH_PAGE | None |
Sections in the System V ABI but Unused by the C28x EABI | ||
.comment | ||
.data1 | ||
.dsbt | ||
.dynamic | ||
.dynstr | ||
.dynsym | ||
.far | ||
.fardata | ||
.fardata:const | ||
.fini | ||
.fini_array | ||
.gnu.version | ||
.gnu.version_d | ||
.gnu.version_r | ||
.got | ||
.hash | ||
.init | ||
.interp | ||
.line | ||
.neardata | ||
.plt | ||
.preinit_array | ||
.rodata | ||
.rodata1 | ||
.tbss | ||
.tdata | ||
.tdata1 | ||
.TI.tls_init |
The "TI Toolchain-Specific Sections" sections in the previous table are used by the TI toolchain in various toolchain-specific ways. The ABI does not mandate the use of these sections (although interoperability encourages their use), but it does reserve these names.
The "Sections in the System V ABI but Unused by the C28x EABI" sections in the previous table are specified by the System V ABI, but are not used or defined under the C28x ABI. Other sections are used by TI for other devices; these names are reserved.