NAME
elf32_newphdr
,
elf64_newphdr
, gelf_newphdr
— allocate an ELF program header
table
LIBRARY
library “libelf”
SYNOPSIS
#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);
DESCRIPTION
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.
RETURN VALUES
The functions a valid pointer if successful, or NULL in case an error was encountered.
COMPATIBILITY
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.
ERRORS
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.
SEE ALSO
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)