ELF_GETARSYM(3)

ELF_GETARSYM(3) | Library Functions Manual | ELF_GETARSYM(3)

# NAME

`elf_getarsym` — retrieve the symbol table of an archive

# LIBRARY

ELF Access Library (libelf, -lelf)

# SYNOPSIS

`#include <libelf.h>`

Elf_Arsym *
`elf_getarsym`(Elf *elf, size_t *ptr);

# DESCRIPTION

The function `elf_getarsym`() retrieves the symbol table for an ar(1) archive, if one is available.

Argument elf should be a descriptor for an ar(1) archive opened using `elf_begin`() or `elf_memory`().

If the archive elf contains a symbol table with n entries, this function returns a pointer to an array of n+1 Elf_Arsym structures. An Elf_Arsym structure has the following elements:

char * as_name
  This structure member is a pointer to a null-terminated symbol name.
off_t as_off
  This structure member contains the byte offset from the beginning of the archive to the header for the archive member. This value is suitable for use with elf_rand(3).
unsigned long as_hash
  This structure member contains a portable hash value for the symbol name, as computed by elf_hash(3).

The last entry of the returned array will have a `NULL` value for member as_name, a zero value for member as_off and an illegal value of ~0UL for as_hash.

If argument ptr is non-null, the `elf_getarsym`() function will store the number of table entries returned (including the sentinel entry at the end) into the location it points to.

# RETURN VALUES

Function `elf_getarsym`() returns a pointer to an array of Elf_Arsym structures if successful, or a `NULL` pointer if an error was encountered.

If argument ptr is non-null and there was no error, the library will store the number of archive symbol entries returned into the location it points to. If argument ptr is non-null and an error was encountered, the library will set the location pointed to by it to zero.

# ERRORS

Function `elf_getarsym`() may fail with the following errors:

[`ELF_E_ARGUMENT`]
  Argument elf was `NULL`.
[`ELF_E_ARGUMENT`]
  Argument elf was not a descriptor for an ar(1) archive.

# SEE ALSO

elf(3), elf_begin(3), elf_getarhdr(3), elf_hash(3), elf_memory(3), elf_next(3), elf_rand(3)

August 15, 2006 | NetBSD 11.0