GELF_NEWPHDR(3) | Library Functions Manual | GELF_NEWPHDR(3)

# NAME

`elf32_newphdr`, `elf64_newphdr`, `gelf_newphdr` — allocate an ELF program header table

# SYNOPSIS

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);

# 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)

June 12, 2019 | Debian