ELF_OPEN(3) | Library Functions Manual | ELF_OPEN(3)

# NAME

`elf_open`, `elf_openmemory` — open ELF objects and ar(1) archives

# LIBRARY

ELF Access Library (libelf, -lelf)

# SYNOPSIS

`#include <libelf.h>`

Elf *
`elf_open`(int fd);

Elf *
`elf_openmemory`(char *image, size_t sz);

# DESCRIPTION

Important: The functions `elf_open`() and `elf_openmemory`() are extensions to the elf(3) API, for the internal use of the Elftoolchain project. Portable applications should not use these functions.

The function `elf_open`() returns an Elf descriptor opened with mode `ELF_C_READ` for the ELF object or ar(1) archive referenced by the file descriptor in argument fd.

The function `elf_openmemory`() returns an ELF descriptor opened with mode `ELF_C_READ` for the ELF object or ar(1) archive contained in the memory area pointed to by the argument image. The argument sz specifies the size of the memory area in bytes.

# RETURN VALUES

The function returns a pointer to a ELF descriptor if successful, or `NULL` if an error occurred.

# COMPATIBILITY

These functions are non-standard extensions to the elf(3) API set.

The behavior of these functions differs from their counterparts elf_begin(3) and elf_memory(3) in that these functions will successfully open malformed ELF objects and ar(1) archives, returning an Elf descriptor of type `ELF_K_NONE`.

# ERRORS

These functions can fail with the following errors:

[`ELF_E_ARGUMENT`]
  The argument fd was of an unsupported file type.
[`ELF_E_ARGUMENT`]
  The argument sz was zero, or the argument image was `NULL`.
[`ELF_E_IO`]
  The file descriptor in argument fd was invalid.
[`ELF_E_IO`]
  The file descriptor in argument fd could not be read.
[`ELF_E_RESOURCE`]
  An out of memory condition was encountered.
[`ELF_E_SEQUENCE`]
  Functions `elf_open`() or `elf_openmemory`() was called before a working version was established with elf_version(3).

# SEE ALSO

elf(3), elf_begin(3), elf_errno(3), elf_memory(3), gelf(3)

July 15, 2025 | NetBSD 11.0