elf32_newphdr
,
elf64_newphdr
, gelf_newphdr
— allocate an ELF program header table
ELF Access Library (libelf, -lelf)
#include
<libelf.h>
Elf32_Phdr *
elf32_newphdr
(Elf
*elf, size_t
count);
Elf64_Phdr *
elf64_newphdr
(Elf
*elf, size_t
count);
#include
<gelf.h>
void *
gelf_newphdr
(Elf
*elf, size_t
count);
These functions allocate an ELF Program Header table for an ELF
descriptor. Elf32_Phdr and
Elf64_Phdr descriptors are described further in
elf(5).
Functions
elf32_newphdr
()
and
elf64_newphdr
()
allocate a table of count
Elf32_Phdr and Elf64_Phdr
descriptors respectively, discarding any existing program header table
already present in the ELF descriptor elf. A value of
zero for argument count may be used to delete an
existing program header table from an ELF descriptor.
Function
gelf_newphdr
()
will return a table of Elf32_Phdr or
Elf64_Phdr with count elements
depending on the ELF class of ELF descriptor elf.
The functions set the ELF_F_DIRTY
flag on
the program header table. All members of the returned array of Phdr
structures will be initialized to zero.
After a successful call to these functions, the
pointer returned by a prior call to
elf32_getphdr
()
or
elf64_getphdr
()
on the same descriptor elf will no longer be
valid.
The functions a valid pointer if successful, or NULL in case an
error was encountered.
The gelf_newphdr
() 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.
These functions may fail with the following errors:
- [
ELF_E_ARGUMENT
]
- Argument elf was NULL.
- [
ELF_E_ARGUMENT
]
- Argument elf was not a descriptor for an ELF
object.
- [
ELF_E_CLASS
]
- ELF descriptor elf was of an unrecognized
class.
- [
ELF_E_RESOURCE
]
- An out of memory condition was detected.
- [
ELF_E_SEQUENCE
]
- An executable header was not allocated for ELF descriptor
elf before using these APIs.
elf(3),
elf32_getphdr(3),
elf32_newehdr(3),
elf64_getphdr(3),
elf64_newehdr(3),
elf_flagphdr(3),
elf_getphnum(3),
gelf(3),
gelf_getphdr(3),
gelf_newehdr(3),
elf(5)