Updated: 2022/Sep/29
Please read Privacy Policy. It's for your privacy.
GELF_NEWEHDR(3) Library Functions Manual GELF_NEWEHDR(3) NAME elf32_newehdr, elf64_newehdr, gelf_newehdr - retrieve or allocate the object file header LIBRARY ELF Access Library (libelf, -lelf) SYNOPSIS #include <libelf.h> Elf32_Ehdr * elf32_newehdr(Elf *elf); Elf64_Ehdr * elf64_newehdr(Elf *elf); #include <gelf.h> void * gelf_newehdr(Elf *elf, int elfclass); DESCRIPTION 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. RETURN VALUES These functions return a pointer to a translated header descriptor if successful, or NULL on failure. COMPATIBILITY The gelf_newehdr() function uses a type of void * for its returned value. This differs from some other implementations of the elf(3) API, which use an unsigned long return type. ERRORS 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 elfclass. [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 execution. [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 number. SEE ALSO 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), elf(5) NetBSD 10.99 June 12, 2019 NetBSD 10.99