Data Representation
The object file format supports various processors with 8-bit bytes, 32-bit
architectures and 64-bit architectures. Nevertheless, the data representation is
intended to be extensible to larger, or smaller, architectures. Figure 13, Table 13, ELF 32-Bit Data Types and Figure 14, Table 14, ELF 64-Bit Data Types list the 32-bit data
types and 64-bit data types.
Object files represent some control data with a machine-independent format. This format
provides for the common identification and interpretation of object files. The remaining data
in an object file use the encoding of the target processor, regardless of the machine on which
the file was created.
Table 13 ELF 32-Bit Data Types
|
|
|
|
Elf32_Addr
|
4
|
4
|
Unsigned program address
|
Elf32_Half
|
2
|
2
|
Unsigned medium integer
|
Elf32_Off
|
4
|
4
|
Unsigned file offset
|
Elf32_Sword
|
4
|
4
|
Signed integer
|
Elf32_Word
|
4
|
4
|
Unsigned integer
|
unsigned char
|
1
|
1
|
Unsigned small integer
|
|
Table 14 ELF 64-Bit Data Types
|
|
|
|
Elf64_Addr
|
8
|
8
|
Unsigned program address
|
Elf64_Half
|
2
|
2
|
Unsigned medium integer
|
Elf64_Off
|
8
|
8
|
Unsigned file offset
|
Elf64_Sword
|
4
|
4
|
Signed integer
|
Elf64_Word
|
4
|
4
|
Unsigned integer
|
Elf64_Xword
|
8
|
8
|
Unsigned long integer
|
Elf64_Sxword
|
8
|
8
|
Signed long integer
|
unsigned char
|
1
|
1
|
Unsigned small integer
|
|
All data structures that the object file format defines follow the natural size and
alignment guidelines for the relevant class. Data structures can contain explicit padding to
ensure 4-byte alignment for 4-byte objects, to force structure sizes to a multiple of 4, and
so forth. Data also have suitable alignment from the beginning of the file. Thus, for example,
a structure containing an Elf32_Addr member is aligned on a 4-byte boundary
within the file. Similarly, a structure containing an Elf64_Addr member is
aligned on an 8-byte boundary.
Note -
For portability, ELF uses no bit-fields.