These functions retrieve the ELF header from the ELF descriptor
elf, allocating a new header if needed. File data structures are translated to their in-memory representations as described in
elf(3).
Function
elf32_newehdr() returns a pointer to a 32 bit
Elf32_Ehdr structure. Function
elf64_newehdr() returns a pointer to a 64 bit
Elf64_Ehdr structure.
When argument
elfclass has value
ELFCLASS32, function
gelf_newehdr() returns the value returned by
elf32_newehdr(
elf). When argument
elfclass has value
ELFCLASS64 it returns the value returned by
elf64_newehdr(
elf).
If a fresh header structure is allocated, the members of the structure are initialized as follows:
e_ident[EI_MAG0..EI_MAG3]
Identification bytes at offsets EI_MAG0, EI_MAG1, EI_MAG2 and EI_MAG3 are set to the ELF signature.
e_ident[EI_CLASS]
The identification byte at offset EI_CLASS is set to the ELF class associated with the function being called or to argument elfclass for function gelf_newehdr().
e_ident[EI_DATA]
The identification byte at offset EI_DATA is set to ELFDATANONE.
e_ident[EI_VERSION]
The identification byte at offset
EI_VERSION is set to the ELF library's operating version set by a prior call to
elf_version(3).
e_machine
is set to EM_NONE.
e_type
is set to ELF_K_NONE.
e_version
is set to the ELF library's operating version set by a prior call to
elf_version(3).
Other members of the header are set to zero. The application is responsible for changing these values as needed before calling
elf_update().
If successful, these three functions set the
ELF_F_DIRTY flag on ELF descriptor
elf.