150 lines · 3.8 KB · Text
RawDownload
.TH OBJECT 2.SH NAMEobjtype, 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.Bint  objtype(Biobuf *bp, char **name).PP.Bint  readobj(Biobuf *bp, int objtype).PP.Bvoid  objtraverse(void(*)(Sym*, void*), void*).PP.Bint isar(Biobuf *bp).PP.Bint nextar(Biobuf *bp, int offset, char *buf).PP.Bint readar(Biobuf *bp, int objtype, int end).SH DESCRIPTIONThese functions provide machine-independent access to object filesin a directory or an archive..IR Mach (2)and.IR symbol (2)describe additional library functionsfor interpreting executable files and executing images..PPObject files contain no formal symbol table; instead, referencesto symbols must be extracted from the encoded object representationand resolved.  The resulting symbol information is loadedinto a dummy symbol table where it is available for processing by anapplication.  The organization of the dummy symboltable is identicalto that produced by the loader and described in.IR symbol (2)and.IR a.out (6):a vector of.B Symdata structures defining the name, type and relative offset ofeach symbol..PP.I Objtypereads the header at the current position of thefile 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 fileis 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 objectfile or at the beginning of an archive member.  Thefile is rewound to its startingposition after decoding the header..PP.I Readobjconstructs a symbol table for the object file associated with.IR bp .The second argument contains the type code produced byfunction.IR objtype .The file must be positioned at the start of the object file.Each invocation of.I readobjdestroys the symbol definitions for any previous file..PP.I Objtraversescans the symbol table previously built by.I readobjor.IR readar  ..I Objtraverserequires two arguments:the address of a call-back function and ageneric pointer.  The call-back functionis invoked once for each symbol in the symbol table withthe address of a.I Symdata structure as the first argument and thegeneric pointer as the second..PP.I Isarreads the header at the current point in the fileassociated with.I bpand returns 1 if it is an archive or zero otherwise.The file is positioned at the end of the archiveheader and at the beginning of the first member of the archive..PP.I Nextarextracts information describing the archive member storedat.I offsetin the file associated with.IR bp .If the header describing the member can beextracted and decoded, the size of the member isreturned.  Adding this value to.I offsetyields the offset of the beginning of the next memberin the archive.  On return the input file is positionedat the end of the member headerand the name of the member is stored in.IR buf ,a buffer of.B SARNAMEcharacters.If there are no more members,.I nextarreturns zero; a negative return indicates a missingor malformed header..PP.I Readarconstructs the symbol table of the object file storedat 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 thenext member in the archive..I Readarleaves 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 DIAGNOSTICSThese routines set.IR errstr .