ELF_RAND(3E) ELF_RAND(3E)
elf_rand - random archive member access
cc [flag ...] file ... -lelf [library ...]
#include <libelf.h>
size_t elf_rand(Elf *elf, size_t offset);
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.
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;
}
elf(3E), elf_begin(3E), elf_getarsym(3E), elf_next(3E), ar(4).
PPPPaaaaggggeeee 1111 [ Back ]
|