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
Vt Elf32_Ehdr
structure.
Function
elf64_newehdr ();
returns a pointer to a 64 bit
Vt 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_MAG0EI_MAG1EI_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_version3.
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_version3.
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
bit on ELF descriptor
elf
RETURN VALUES
These functions return a pointer to a translated header descriptor
if successful, or NULL on failure.
ERRORS
These functions can fail with the following errors:
Bq Er ELF_E_ARGUMENT
The argument
elf
was null.
Bq Er ELF_E_ARGUMENT
Argument
elf
was not a descriptor for an ELF object.
Bq Er ELF_E_ARGUMENT
Argument
elfclass
had an unsupported value.
Bq Er ELF_E_ARGUMENT
The class of the ELF descriptor
elf
did not match that of the requested operation.
Bq Er ELF_E_ARGUMENT
For function
gelf_newehdr (,);
the class of argument
elf
was not
ELFCLASSNONE
and did not match the argument
elfclass
Bq Er ELF_E_CLASS
The ELF class of descriptor
elf
did not match that of the API function being called.
Bq Er ELF_E_HEADER
A malformed ELF header was detected.
Bq Er ELF_E_RESOURCE
An out of memory condition was detected during execution.
Bq Er ELF_E_SECTION
The ELF descriptor in argument
elf
did not adhere to the conventions used for extended numbering.
Bq Er ELF_E_VERSION
The ELF descriptor
elf
had an unsupported ELF version number.