123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- .TH OBJECT 2
- .SH NAME
- objtype, readobj, objtraverse, isar, nextar, readar \- object file interpretation functions
- .SH SYNOPSIS
- .B #include <u.h>
- .br
- .B #include <libc.h>
- .br
- .B #include <bio.h>
- .br
- .B #include <mach.h>
- .PP
- .ta \w'\fLmachines 'u
- .B
- int objtype(Biobuf *bp, char **name)
- .PP
- .B
- int readobj(Biobuf *bp, int objtype)
- .PP
- .B
- void objtraverse(void(*)(Sym*, void*), void*)
- .PP
- .B
- int isar(Biobuf *bp)
- .PP
- .B
- int nextar(Biobuf *bp, int offset, char *buf)
- .PP
- .B
- int readar(Biobuf *bp, int objtype, int end)
- .SH DESCRIPTION
- These functions provide machine-independent access to object files
- in a directory or an archive.
- .IR Mach (2)
- and
- .IR symbol (2)
- describe additional library functions
- for interpreting executable files and executing images.
- .PP
- Object files contain no formal symbol table; instead, references
- to symbols must be extracted from the encoded object representation
- and resolved. The resulting symbol information is loaded
- into a dummy symbol table where it is available for processing by an
- application. The organization of the dummy symbol
- table is identical
- to that produced by the loader and described in
- .IR symbol (2)
- and
- .IR a.out (6):
- a vector of
- .B Sym
- data structures defining the name, type and relative offset of
- each symbol.
- .PP
- .I Objtype
- reads the header at the current position of the
- file associated with
- .I bp
- (see
- .IR Bio (2))
- to see if it is an intermediate object file.
- If it is, a code indicating the architecture type of the file
- is returned and the second argument, if it is non-zero,
- is set pointing to a string describing the type of the file.
- If the header does not indicate an object file,
- \-1 is returned.
- The header may be at the start of an object
- file or at the beginning of an archive member. The
- file is rewound to its starting
- position after decoding the header.
- .PP
- .I Readobj
- constructs a symbol table for the object file associated with
- .IR bp .
- The second argument contains the type code produced by
- function
- .IR objtype .
- The file must be positioned at the start of the object file.
- Each invocation of
- .I readobj
- destroys the symbol definitions for any previous file.
- .PP
- .I Objtraverse
- scans the symbol table previously built by
- .I readobj
- or
- .IR readar .
- .I Objtraverse
- requires two arguments:
- the address of a call-back function and a
- generic pointer. The call-back function
- is invoked once for each symbol in the symbol table with
- the address of a
- .I Sym
- data structure as the first argument and the
- generic pointer as the second.
- .PP
- .I Isar
- reads the header at the current point in the file
- associated with
- .I bp
- and returns 1 if it is an archive or zero otherwise.
- The file is positioned at the end of the archive
- header and at the beginning of the first member of the archive.
- .PP
- .I Nextar
- extracts information describing the archive member stored
- at
- .I offset
- in the file associated with
- .IR bp .
- If the header describing the member can be
- extracted and decoded, the size of the member is
- returned. Adding this value to
- .I offset
- yields the offset of the beginning of the next member
- in the archive. On return the input file is positioned
- at the end of the member header
- and the name of the member is stored in
- .IR buf ,
- a buffer of
- .B SARNAME
- characters.
- If there are no more members,
- .I nextar
- returns zero; a negative return indicates a missing
- or malformed header.
- .PP
- .I Readar
- constructs the symbol table of the object file stored
- at the current position in the archive associated with
- .IR bp .
- This function operates exactly as
- .IR readobj ;
- the only difference is the extra argument,
- .IR end ,
- specifying the offset to the beginning of the
- next member in the archive.
- .I Readar
- leaves the file positioned at that point.
- .SH SOURCE
- .B /sys/src/libmach
- .SH "SEE ALSO"
- .IR mach (2),
- .IR symbol (2),
- .IR bio (2),
- .IR a.out (6)
- .SH DIAGNOSTICS
- These routines set
- .IR errstr .
|