elf_rand(3)

elf_rand3

Provide sequential access to the next archive member

Usage

#include <libelf.h>

off_t

elf_rand(Elf *archive, off_t offset);

Library

library “libelf”

Overview

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.

Releases

44 releases since FreeBSD 7.0-RELEASE; the text changed 20 times.

  1. 7.0
  2. 7.1
  3. 7.2
  4. 7.3
  5. 7.4
  6. 8.0
  7. 8.1
  8. 8.2
  9. 8.3
  10. 8.4
  11. 9.0
  12. 9.1
  13. 9.2
  14. 9.3
  15. 10.0
  16. 10.1
  17. 10.2
  18. 10.3
  19. 10.4
  20. 11.0–12.0
  21. 12.1–16.0

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.