NAME
elf_rand — random archive member access
SYNOPSIS
cc
[flag... ]
file...
-lelf
[library] ...
#include
<libelf.h>
size_t elf_rand(Elf *elf, size_t offset);
DESCRIPTION
elf_rand,
elf_next,
and
elf_begin
manipulate simple object files and archives.
elf
is an ELF descriptor previously
returned from
elf_begin.
elf_rand
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
elf_getarsym(3E)
for more information about archive member
offsets. When
elf_rand
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.
EXAMPLES
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 (elf_rand(elf, (size_t)SARMAG) == SARMAG)
return 0;
return -1;
}