---
name: "gelf_getehdr"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/elf32_getehdr"
---

# gelf\_getehdr(3)

retrieve the object file header

Part of [elf32\_getehdr(3)](/elf32_getehdr/3.md).

## NAME

**elf32\_getehdr**, **elf64\_getehdr**, **gelf\_getehdr** – retrieve the object file header

## LIBRARY

library “libelf”

## SYNOPSIS

**#include \<libelf.h\>**

*Elf32\_Ehdr \**\

**elf32\_getehdr**(*Elf \*elf*);

*Elf64\_Ehdr \**\

**elf64\_getehdr**(*Elf \*elf*);

**#include \<gelf.h\>**

*GElf\_Ehdr \**\

**gelf\_getehdr**(*Elf \*elf*, *GElf\_Ehdr \*dst*);

## DESCRIPTION

These functions retrieve the ELF object file header from the ELF descriptor *elf* and return a translated header descriptor to their callers.

Functions **elf32\_getehdr**() and **elf64\_getehdr**() return a pointer to the appropriate class-specific header descriptor if it exists in the file referenced by descriptor *elf*. These functions return NULL if an ELF header was not found in file *elf*.

Function **gelf\_getehdr**() stores a translated copy of the header for ELF file *elf* into the descriptor pointed to by argument *dst*. It returns argument *dst* if successful or NULL in case of failure.

## RETURN VALUES

These functions return a pointer to a translated header descriptor if successful, or NULL on failure.

## ERRORS

These functions can fail with the following errors:

- \[ELF\_E\_ARGUMENT\]

  The argument *elf* was null.

- \[ELF\_E\_ARGUMENT\]

  Argument *elf* was not a descriptor for an ELF file.

- \[ELF\_E\_ARGUMENT\]

  The elf class of descriptor *elf* was not recognized.

- \[ELF\_E\_ARGUMENT\]

  Argument *dst* was null.

- \[ELF\_E\_CLASS\]

  The ELF class of descriptor *elf* did not match that of the API function being called.

- \[ELF\_E\_HEADER\]

  ELF descriptor *elf* does not have an associated header.

- \[ELF\_E\_RESOURCE\]

  An out of memory condition was detected during execution.

- \[ELF\_E\_SECTION\]

  The ELF descriptor in argument *elf* did not adhere to the conventions used for extended numbering.

- \[ELF\_E\_VERSION\]

  The ELF descriptor *elf* had an unsupported ELF version number.

## SEE ALSO

[elf(3)](/elf/3.md), [elf32\_newehdr(3)](/elf32_newehdr/3.md), [elf64\_newehdr(3)](/elf64_newehdr/3.md), [elf\_flagehdr(3)](/elf_flagehdr/3.md), [elf\_getident(3)](/elf_getident/3.md), [gelf(3)](/gelf/3.md), [gelf\_newehdr(3)](/gelf_newehdr/3.md), [elf(5)](/elf/5.md)
