| ELF_RAND(3) | Library Functions Manual | ELF_RAND(3) | 
elf_rand —
#include <libelf.h>
off_t
  
  elf_rand(Elf
    *archive, off_t
    offset);
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.
elf_rand() returns offset
  if successful or zero in case of an error.
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 ...
}
elf_rand() may fail with the following errors:
ELF_E_ARGUMENT]ELF_E_ARGUMENT]ELF_E_ARCHIVE]| June 17, 2006 | NetBSD 9.4 |