elf_rand(3E) elf_rand(3E)
NAME
elfrand - access random archive member
SYNOPSIS
cc [flag ...] file ... -lelf [library ...]
#include <libelf.h>
sizet elfrand(Elf *elf, sizet offset);
DESCRIPTION
elfrand(), elfnext(), and elfbegin() manipulate simple object files
and archives. elf is an ELF descriptor previously returned from
elfbegin().
elfrand() provides random archive processing, preparing elf to access
an arbitrary archive member. elf must be a descriptor for the archive
itself, not a member within the archive. offset gives the byte offset
from the beginning of the archive to the archive header of the desired
member. See elfgetarsym(3E) for more information about archive member
offsets. When elfrand() works, it returns offset. Otherwise it
returns 0, because an error occurred, elf was null, or the file was
not an archive (no archive member can have a zero offset). A program
may mix random and sequential archive processing.
EXAMPLE
An archive starts with a "magic string" that has SARMAG bytes; the
initial archive member follows immediately. An application could thus
provide the following function to rewind an archive (the function
returns -1 for errors and 0 otherwise).
#include <ar.h>
#include <libelf.h>
int
rewindelf(Elf *elf)
{
if (elfrand(elf, (sizet)SARMAG) == SARMAG)
return 0;
return -1;
}
SEE ALSO
elf(3E), elfbegin(3E), elfgetarsym(3E), elfnext(3E), ar(4).
Page 1 Reliant UNIX 5.44 Printed 11/98