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.
ELF header
#define EI_NIDENT 16
typedef 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_ident
-
The initial bytes mark the file as an object file
and provide machine-independent data with which to
decode and interpret the file's contents.
Complete descriptions appear in
``ELF identification''.
e_type
-
This member identifies the object file 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-specific
|
Although 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
-
This member's value specifies the required architecture
for an individual file.
Name
|
Value
|
Meaning
|
EM_NONE
|
0
|
No machine
|
EM_M32
|
1
|
AT&T WE 32100
|
EM_SPARC
|
2
|
SPARC
|
EM_386
|
3
|
Intel386 CPU
|
EM_68K
|
4
|
Motorola 68000
|
EM_88K
|
5
|
Motorola 88000
|
EM_860
|
7
|
Intel860 CPU
|
EM_MIPS
|
8
|
MIPS R2000
|
Other 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
-
This member identifies the object file version.
Name
|
Value
|
Meaning
|
EV_NONE
|
0
|
Invalid version
|
EV_CURRENT
|
1
|
Current version
|
The 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_entry
-
This member gives the virtual address to which the system
first transfers control, thus starting the process. If the
file has no associated entry point, this member holds
zero.
e_phoff
-
This member holds the program header table's file offset in
bytes. If the file has no program header table, this
member holds zero.
e_shoff
-
This member holds the section header table's file offset in
bytes. If the file has no section header table, this
member holds zero.
e_flags
-
This member holds processor-specific flags associated with
the file. Flag names take the form EF_machine_flag.
NOTE:
See
``ELF header flags''
for flag definitions.
e_ehsize
-
This member holds the ELF header's size in bytes.
e_phentsize
-
This member holds the size in bytes of one entry in the
file's program header table; all entries are the same
size.
e_phnum
-
This member holds the number of entries in the program
header table. Thus the product of
e_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_shentsize
-
This member holds a section header's size in bytes.
A section header is one entry in the section header
table; all entries are the same size.
e_shnum
-
This member holds the number of entries in the section
header table. Thus the product of
e_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
-
This member holds the section header table index of the entry
associated with the section name string table.
If the file has no section name string table, this member holds the value
SHN_UNDEF.
NOTE:
See
``Section header''
and
``String table''
for more information.
Next topic:
ELF identification
Previous topic:
Program linking
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003