GELF_NEWEHDR(3) Library Functions Manual GELF_NEWEHDR(3)
elf32_newehdr, elf64_newehdr, gelf_newehdr -- retrieve or allocate the
object file header
ELF Access Library (libelf, -lelf)
gelf_newehdr(Elf *elf, int elfclass);
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
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:
Identification bytes at offsets EI_MAG0, EI_MAG1, EI_MAG2 and
EI_MAG3 are set to the ELF signature.
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().
The identification byte at offset EI_DATA is set to ELFDATANONE.
The identification byte at offset EI_VERSION is set to the ELF
library's operating version set by a prior call to
is set to EM_NONE.
e_type is set to ELF_K_NONE.
is set to the ELF library's operating version set by a prior call
Other members of the header are set to zero. The application is
responsible for changing these values as needed before calling
If successful, these three functions set the ELF_F_DIRTY flag on ELF
These functions return a pointer to a translated header descriptor if
successful, or NULL on failure.
These functions can fail with the following errors:
[ELF_E_ARGUMENT] The argument elf was null.
[ELF_E_ARGUMENT] Argument elf was not a descriptor for an ELF object.
[ELF_E_ARGUMENT] Argument elfclass had an unsupported value.
[ELF_E_ARGUMENT] The class of the ELF descriptor elf did not match that
of the requested operation.
[ELF_E_ARGUMENT] For function gelf_newehdr(), the class of argument elf
was not ELFCLASSNONE and did not match the argument
[ELF_E_CLASS] The ELF class of descriptor elf did not match that of
the API function being called.
[ELF_E_HEADER] A malformed ELF header was detected.
[ELF_E_RESOURCE] An out of memory condition was detected during
[ELF_E_SECTION] The ELF descriptor in argument elf did not adhere to
the conventions used for extended numbering.
[ELF_E_VERSION] The ELF descriptor elf had an unsupported ELF version
elf(3), elf32_getehdr(3), elf64_getehdr(3), elf_flagdata(3),
elf_getident(3), elf_update(3), elf_version(3), gelf(3), gelf_getehdr(3),
NetBSD 6.1.5 October 22, 2007 NetBSD 6.1.5