ELF_RAWFILE(3ELF)           ELF Library Functions          ELF_RAWFILE(3ELF)
NAME
       elf_rawfile - retrieve uninterpreted file contents
SYNOPSIS
       cc [ 
flag... ] 
file ... 
-lelf [ 
library ... ]
       #include <libelf.h>       
char *elf_rawfile(
Elf *elf, 
size_t *ptr);
DESCRIPTION
       The 
elf_rawfile() function returns a pointer to an uninterpreted byte
       image of the file. This function should be used only to retrieve a
       file being read. For example, a program might use 
elf_rawfile() to
       retrieve the bytes for an archive member.
       A program may not close or disable (see 
elf_cntl(3ELF)) the file
       descriptor associated with 
elf before the initial call to       
elf_rawfile() , because 
elf_rawfile() might have to read the data
       from the file if it does not already have the original bytes in
       memory.  Generally, this function is more efficient for unknown file
       types than for object files. The library implicitly translates object
       files in memory, while it leaves unknown files unmodified. Thus,
       asking for the uninterpreted image of an object file may create a
       duplicate copy in memory.       
elf_rawdata() is a related function, providing access to sections
       within a file. See 
elf_getdata(3ELF).
       If 
ptr is non-null, the library also stores the file's size, in
       bytes, in the location to which 
ptr points. If no data are present,       
elf is null, or an error occurs, the return value is a null pointer,
       with 
0 stored through 
ptr, if  
ptr is non-null.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Stable          |
       +--------------------+-----------------+
       |MT-Level            | MT-Safe         |
       +--------------------+-----------------+
SEE ALSO
       elf(3ELF), 
elf32_getehdr(3ELF), 
elf_begin(3ELF), 
elf_cntl(3ELF),       
elf_getdata(3ELF), 
elf_getident(3ELF), 
elf_kind(3ELF), 
libelf(3LIB),       
attributes(7)NOTES
       A program that uses 
elf_rawfile() and that also interprets the same
       file as an object file potentially has two copies of the bytes in
       memory. If such a program requests the raw image first, before it
       asks for translated information (through such functions as       
elf32_getehdr(), 
elf_getdata(), and so on), the library ``freezes''
       its original memory copy for the raw image. It then uses this frozen
       copy as the source for creating translated objects, without reading
       the file again. Consequently, the application should view the raw
       file image returned by 
elf_rawfile() as a read-only buffer, unless it
       wants to alter its own view of data subsequently translated. In any
       case, the application may alter the translated objects without
       changing bytes visible in the raw image.
       Multiple calls to 
elf_rawfile() with the same 
ELF descriptor return
       the same value; the library does not create duplicate copies of the
       file.
                                July 11, 2001              ELF_RAWFILE(3ELF)