NAME
elf_rand —
provide sequential access to
the next archive member
LIBRARY
ELF Access Library (libelf, -lelf)
SYNOPSIS
#include <libelf.h>
off_t
elf_rand(
Elf
*archive,
off_t
offset);
DESCRIPTION
The
elf_rand() function causes the ELF descriptor
archive to be adjusted so that the next call to
elf_begin(3) will provide
access to the archive member at byte offset
offset in
the archive. Argument
offset is the byte offset from the
start of the archive to the beginning of the archive header for the desired
member.
Archive member offsets may be retrieved using the
elf_getarsym(3) function.
RETURN VALUES
Function
elf_rand() returns
offset if
successful or zero in case of an error.
EXAMPLES
To process all the members of an archive use:
off_t off;
Elf *archive, *e;
...
cmd = ELF_C_READ;
archive = elf_begin(fd, cmd, NULL);
while ((e = elf_begin(fd, cmd, archive)) != (Elf *) 0)
{
... process `e' here ...
elf_end(e);
off = ...new value...;
if (elf_rand(archive, off) != off) {
... process error ...
}
}
elf_end(archive);
To rewind an archive, use:
Elf *archive;
...
if (elf_rand(archive, SARMAG) != SARMAG) {
... error ...
}
ERRORS
Function
elf_rand() may fail with the following errors:
-
-
- [
ELF_E_ARGUMENT
]
- Argument archive was null.
-
-
- [
ELF_E_ARGUMENT
]
- Argument archive was not a descriptor
for an ar(1) archive.
-
-
- [
ELF_E_ARCHIVE
]
- Argument offset did not correspond to
the start of an archive member header.
SEE ALSO
ar(1),
elf(3),
elf_begin(3),
elf_end(3),
elf_getarsym(3),
elf_next(3),
gelf(3)