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)