elf64_newphdr3
Allocate an elf program header table
Part of elf32_newphdr(3).
Usage
Elf32_Phdr *
Elf64_Phdr *
void *
Library
library “libelf”
Overview
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.
History
- FreeBSD 16.0-CURRENT (2026-10-27) to FreeBSD 12.2-RELEASE: the text shown here
- FreeBSD 12.1-RELEASE
- FreeBSD 12.0-RELEASE to FreeBSD 11.1-RELEASE
- FreeBSD 11.0-RELEASE
- FreeBSD 10.4-RELEASE
- FreeBSD 10.3-RELEASE
- FreeBSD 10.2-RELEASE
- FreeBSD 10.1-RELEASE
- FreeBSD 10.0-RELEASE
- FreeBSD 9.3-RELEASE
- FreeBSD 9.2-RELEASE
- FreeBSD 9.1-RELEASE
- FreeBSD 9.0-RELEASE
- FreeBSD 8.4-RELEASE
- FreeBSD 8.3-RELEASE
- FreeBSD 8.2-RELEASE
- FreeBSD 8.1-RELEASE
- FreeBSD 8.0-RELEASE
- FreeBSD 7.4-RELEASE
- FreeBSD 7.3-RELEASE
- FreeBSD 7.2-RELEASE
- FreeBSD 7.1-RELEASE
- FreeBSD 7.0-RELEASE