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.
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.