| ELF_RAND(3) | Library Functions Manual | ELF_RAND(3) |
elf_rand — provide
sequential access to the next archive member
library “libelf”
#include
<libelf.h>
off_t
elf_rand(Elf
*archive, off_t
offset);
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.
Function elf_rand() returns
offset if successful or zero in case of an error.
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 ...
}
Function elf_rand() may fail with the
following errors:
ELF_E_ARGUMENT]ELF_E_ARGUMENT]ELF_E_ARCHIVE]ar(1), elf(3), elf_begin(3), elf_end(3), elf_getarsym(3), elf_next(3), gelf(3)
| June 17, 2006 | openbsd |