GELF_GETPHDR(3) | Library Functions Manual | GELF_GETPHDR(3)

# NAME

`elf32_getphdr`, `elf64_getphdr`, `gelf_getphdr` —
retrieve an ELF program header table

# LIBRARY

ELF Access Library (libelf, -lelf)

# SYNOPSIS

`#include <libelf.h>`

Elf32_Phdr *
`elf32_getphdr`(Elf *elf);

Elf64_Phdr *
`elf64_getphdr`(Elf *elf);

`#include <gelf.h>`

GElf_Phdr *
`gelf_getphdr`(Elf *elf, int index, GElf_Phdr *dst);

# DESCRIPTION

These functions retrieve and translate ELF program header information from an ELF descriptor, if this information exists.

Functions `elf32_getphdr`() and `elf64_getphdr`() return a pointer to an array of translated Elf32_Phdr and Elf64_Phdr descriptors respectively. These descriptors are described in elf(5). The number of entries in this array may be determined using the elf_getphnum(3) function.

Function `gelf_getphdr`() will retrieve the program header table entry at index index from ELF descriptor elf. The translated program header table entry will be written to the address pointed to be argument dst.

Applications may inform the library of modifications to a program header table entry by using the elf_flagphdr(3) API. Applications using the gelf(3) interface need to use the gelf_update_phdr(3) API to copy modifications to a program header entry back to the underlying ELF descriptor.

# RETURN VALUES

The functions a valid pointer if successful, or NULL in case an error was encountered.

# 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_ARGUMENT`]
  Argument dst was NULL.
[`ELF_E_ARGUMENT`]
  Index index was out of range.
[`ELF_E_CLASS`]
  The class of ELF descriptor elf did not match the expected class of the function being called.
[`ELF_E_HEADER`]
  ELF descriptor elf did not possess an executable header.
[`ELF_E_HEADER`]
  ELF descriptor elf had a corrupt executable header.
[`ELF_E_RESOURCE`]
  An out of memory condition was detected.
[`ELF_E_SECTION`]
  The ELF descriptor in argument elf did not adhere to the conventions used for extended numbering.
[`ELF_VERSION`]
  ELF descriptor elf was of an unsupported version.

# SEE ALSO

elf(3), elf32_getehdr(3), elf32_newphdr(3), elf64_getehdr(3), elf64_newphdr(3), elf_flagphdr(3), elf_getphnum(3), gelf(3), gelf_getehdr(3), gelf_newphdr(3), gelf_update_phdr(3), elf(5)

October 21, 2007 | NetBSD 9.4