Segment Contents
An object file segment consists of one or more sections, though this fact is transparent to the program header. Whether the file segment holds one section or many sections, is also immaterial to program loading. Nonetheless, various data must be present for program execution, dynamic linking, and so on. The following diagrams illustrate segment contents in general terms. The order and membership of sections within a segment can vary.
Text segments contain read-only instructions and data. Data segments contain writable-data and instructions. See ELF Special Sections for a list of all special sections.
A PT_DYNAMIC
program header element points at the
.dynamic
section. The .got
and
.plt
sections also hold information related to
position-independent code and dynamic linking.
The .plt
can reside in a text or a data segment, depending on
the processor. See Global Offset Table (Processor-Specific) and Procedure Linkage Table (Processor-Specific) for details.
Sections of type SHT_NOBITS
occupy no space in the
file, but contribute to the segment's memory image. Normally, these uninitialized
data reside at the end of the segment, thereby making
p_memsz
larger than
p_filesz
in the associated program header
element.