summaryrefslogtreecommitdiff
path: root/static/plan9-4e/man2/object.2
diff options
context:
space:
mode:
Diffstat (limited to 'static/plan9-4e/man2/object.2')
-rw-r--r--static/plan9-4e/man2/object.2150
1 files changed, 150 insertions, 0 deletions
diff --git a/static/plan9-4e/man2/object.2 b/static/plan9-4e/man2/object.2
new file mode 100644
index 00000000..29a6bde3
--- /dev/null
+++ b/static/plan9-4e/man2/object.2
@@ -0,0 +1,150 @@
+.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 .