elf_getarsym —
retrieve the symbol table of an
archive
ELF Access Library (libelf, -lelf)
#include
<libelf.h>
Elf_Arsym *
elf_getarsym(Elf
*elf, size_t
*ptr);
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.
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.
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.