ELF header
Some object file control structures can grow, because the
ELF header contains their actual sizes. If the
object file format changes, a program may encounter control
structures that are larger or smaller than expected.
Programs might therefore ignore ``extra'' information. The
treatment of ``missing'' information depends on context and
will be specified when and if extensions are defined.
Example 8-1 ELF header
#define EI_NIDENT 16typedef struct { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr;
e_idente_type------------------------------------------------------- Name Value Meaning ------------------------------------------------------- ET_NONE 0 No file type ET_REL 1 Relocatable file ET_EXEC 2 Executable file ET_DYN 3 Shared object file ET_CORE 4 Core file ET_LOPROC 0xff00 Processor-specific ET_HIPROC 0xffff Processor-specificAlthough the core file contents are unspecified in the System V Application Binary Interface, type ET_CORE is reserved to mark the file. Values from ET_LOPROC through ET_HIPROC (inclusive) are reserved for processor-specific semantics. Other values are reserved and will be assigned to new object file types as necessary.
e_machine------------------------------------------------------ Name Value Meaning ------------------------------------------------------ EM_NONE 0 No machine EM_M32 1 AT&T WE 32100 EM_SPARC 2 SPARC EM_386 3 Intel386(TM) CPU EM_68K 4 Motorola 68000 EM_88K 5 Motorola 88000 EM_860 7 Intel860(TM) CPU EM_MIPS 8 MIPS R2000Other values are reserved and will be assigned to new machines as necessary. Processor-specific ELF names use the machine name to distinguish them. For example, the flags mentioned in the next table use the prefix EF_.
e_version------------------------------------------------------ Name Value Meaning ------------------------------------------------------ EV_NONE 0 Invalid version EV_CURRENT 1 Current versionThe value 1 signifies the original file format; extensions will create new versions with higher numbers. Although the value of EV_CURRENT is shown as 1 in the previous table, it will change as necessary to reflect the current version number.
e_entrye_phoffe_shoffe_flags
e_ehsizee_phentsizee_phnume_phentsize
and e_phnum gives the table's size in bytes. If
a file has no program header table, e_phnum holds
the value zero.
e_shentsizee_shnume_shentsize
and e_shnum gives the section header table's size
in bytes. If a file has no section header table,
e_shnum holds the value zero.
e_shstrndx