11.3. Special Sections

11.3.1. Special Sections

Various sections hold program and control information. Sections in the lists below are used by the system and have the indicated types and attributes.

11.3.1.1. ELF Special Sections

The following sections are defined in the System V ABI and the System V ABI Update.

Table 11-3. ELF Special Sections

NameTypeAttributes
.bssSHT_NOBITSSHF_ALLOC+SHF_WRITE
.commentSHT_PROGBITS0
.dataSHT_PROGBITSSHF_ALLOC+SHF_WRITE
.data1SHT_PROGBITSSHF_ALLOC+SHF_WRITE
.debugSHT_PROGBITS0
.dynamicSHT_DYNAMICSHF_ALLOC+SHF_WRITE
.dynstrSHT_STRTABSHF_ALLOC
.dynsymSHT_DYNSYMSHF_ALLOC
.finiSHT_PROGBITSSHF_ALLOC+SHF_EXECINSTR
.fini_arraySHT_FINI_ARRAYSHF_ALLOC+SHF_WRITE
.hashSHT_HASHSHF_ALLOC
.initSHT_PROGBITSSHF_ALLOC+SHF_EXECINSTR
.init_arraySHT_INIT_ARRAY SHF_ALLOC+SHF_WRITE
.interpSHT_PROGBITSSHF_ALLOC
.lineSHT_PROGBITS0
.noteSHT_NOTE0
.preinit_arraySHT_PREINIT_ARRAYSHF_ALLOC+SHF_WRITE
.rodataSHT_PROGBITSSHF_ALLOC+SHF_MERGE+SHF_STRINGS
.rodata1SHT_PROGBITSSHF_ALLOC+SHF_MERGE+SHF_STRINGS
.shstrtabSHT_STRTAB0
.strtabSHT_STRTABSHF_ALLOC
.symtabSHT_SYMTABSHF_ALLOC
.tbssSHT_NOBITSSHF_ALLOC+SHF_WRITE+SHF_TLS
.tdataSHT_PROGBITSSHF_ALLOC+SHF_WRITE+SHF_TLS
.textSHT_PROGBITSSHF_ALLOC+SHF_EXECINSTR

.bss 

This section holds data that contributes to the program's memory image. The program may treat this data as uninitialized. However, the system shall initialize this data with zeroes when the program begins to run. The section occupies no file space, as indicated by the section type, SHT_NOBITS.

.comment 

This section holds version control information.

.data 

This section holds initialized data that contribute to the program's memory image.

.data1 

This section holds initialized data that contribute to the program's memory image.

.debug 

This section holds information for symbolic debugging. The contents are unspecified. All section names with the prefix .debug hold information for symbolic debugging. The contents of these sections are unspecified.

.dynamic 

This section holds dynamic linking information. The section's attributes will include the SHF_ALLOC bit. Whether the SHF_WRITE bit is set is processor specific. See Chapter 5 of System V ABI Update for more information.

.dynstr 

This section holds strings needed for dynamic linking, most commonly the strings that represent the names associated with symbol table entries. See Chapter 5 of System V ABI Update for more information.

.dynsym 

This section holds the dynamic linking symbol table, as described in `Symbol Table' of System V ABI Update.

.fini 

This section holds executable instructions that contribute to the process termination code. That is, when a program exits normally, the system arranges to execute the code in this section.

.fini_array 

This section holds an array of function pointers that contributes to a single termination array for the executable or shared object containing the section.

.hash 

This section holds a symbol hash table. See `Hash Table' in Chapter 5 of System V ABI Update for more information.

.init 

This section holds executable instructions that contribute to the process initialization code. When a program starts to run, the system arranges to execute the code in this section before calling the main program entry point (called main for C programs).

.init_array 

This section holds an array of function pointers that contributes to a single initialization array for the executable or shared object containing the section.

.interp 

This section holds the path name of a program interpreter. If the file has a loadable segment that includes relocation, the sections' attributes will include the SHF_ALLOC bit; otherwise, that bit will be off. See Chapter 5 of System V ABI Update for more information.

.line 

This section holds line number information for symbolic debugging, which describes the correspondence between the source program and the machine code. The contents are unspecified.

.note 

This section holds information in the format that `Note Section' in Chapter 5 of System V ABI Update describes.

.preinit_array 

This section holds an array of function pointers that contributes to a single pre-initialization array for the executable or shared object containing the section.

.rodata 

This section holds read-only data that typically contribute to a non-writable segment in the process image. See `Program Header' in Chapter 5 of System V ABI Update for more information.

.rodata1 

This section holds read-only data that typically contribute to a non-writable segment in the process image. See `Program Header' in Chapter 5 of System V ABI Update for more information.

.shstrtab 

This section holds section names.

.strtab 

This section holds strings, most commonly the strings that represent the names associated with symbol table entries. If the file has a loadable segment that includes the symbol string table, the section's attributes will include the SHF_ALLOC bit; otherwise, that bit will be off.

.symtab 

This section holds a symbol table, as `Symbol Table' in Chapter 4 of System V ABI Update describes. If the file has a loadable segment that includes the symbol table, the section's attributes will include the SHF_ALLOC bit; otherwise, that bit will be off.

.tbss 

This section holds uninitialized thread-local data that contribute to the program's memory image. By definition, the system initializes the data with zeros when the data is instantiated for each new execution flow. The section occupies no file space, as indicated by the section type, SHT_NOBITS. Implementations need not support thread-local storage.

.tdata 

This section holds initialized thread-local data that contributes to the program's memory image. A copy of its contents is instantiated by the system for each new execution flow. Implementations need not support thread-local storage.

.text 

This section holds the `text', or executable instructions, of a program.

11.3.1.2. Additional Special Sections

Object files in an LSB conforming application may also contain one or more of the additional special sections described below.

Table 11-4. Additional Special Sections

NameTypeAttributes
.ctorsSHT_PROGBITSSHF_ALLOC+SHF_WRITE
.data.rel.roSHT_PROGBITSSHF_ALLOC+SHF_WRITE
.dtorsSHT_PROGBITSSHF_ALLOC+SHF_WRITE
.eh_frameSHT_PROGBITSSHF_ALLOC
.eh_frame_hdrSHT_PROGBITSSHF_ALLOC
.gcc_except_tableSHT_PROGBITSSHF_ALLOC
.gnu.versionSHT_GNU_versymSHF_ALLOC
.gnu.version_dSHT_GNU_verdefSHF_ALLOC
.gnu.version_rSHT_GNU_verneedSHF_ALLOC
.got.pltSHT_PROGBITSSHF_ALLOC+SHF_WRITE
.jcrSHT_PROGBITSSHF_ALLOC+SHF_WRITE
.note.ABI-tagSHT_NOTESHF_ALLOC
.stabSHT_PROGBITS0
.stabstrSHT_STRTAB0

.ctors 

This section contains a list of global constructor function pointers.

.data.rel.ro 

This section holds initialized data that contribute to the program's memory image. This section may be made read-only after relocations have been applied.

.dtors 

This section contains a list of global destructor function pointers.

.eh_frame 

This section contains information necessary for frame unwinding during exception handling. See Section 11.6.1.

.eh_frame_hdr 

This section contains a pointer to the .eh_frame section which is accessible to the runtime support code of a C++ application. This section may also contain a binary search table which may be used by the runtime support code to more efficiently access records in the .eh_frame section. See Section 11.6.2.

.gcc_except_table 

This section holds Language Specific Data.

.gnu.version 

This section contains the Symbol Version Table. See Section 11.7.2.

.gnu.version_d 

This section contains the Version Definitions. See Section 11.7.3.

.gnu.version_r 

This section contains the Version Requirements. See Section 11.7.4.

.got.plt 

This section holds the read-only portion of the GLobal Offset Table. This section may be made read-only after relocations have been applied.

.jcr 

This section contains information necessary for registering compiled Java classes. The contents are compiler-specific and used by compiler initialization functions.

.note.ABI-tag 

Specify ABI details. See Section 11.8.

.stab 

This section contains debugging information. The contents are not specified as part of the LSB.

.stabstr 

This section contains strings associated with the debugging infomation contained in the .stab section.