Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.TH OBJECT 2
2
.SH NAME
3
objtype, readobj, objtraverse, isar, nextar, readar \- object file interpretation functions
4
.SH SYNOPSIS
5
.B #include <u.h>
6
.br
7
.B #include <libc.h>
8
.br
9
.B #include <bio.h>
10
.br
11
.B #include <mach.h>
12
.PP
13
.ta \w'\fLmachines 'u
14
.B
15
int  objtype(Biobuf *bp, char **name)
16
.PP
17
.B
18
int  readobj(Biobuf *bp, int objtype)
19
.PP
20
.B
21
void  objtraverse(void(*)(Sym*, void*), void*)
22
.PP
23
.B
24
int isar(Biobuf *bp)
25
.PP
26
.B
27
int nextar(Biobuf *bp, int offset, char *buf)
28
.PP
29
.B
30
int readar(Biobuf *bp, int objtype, int end)
31
.SH DESCRIPTION
32
These functions provide machine-independent access to object files
33
in a directory or an archive.
34
.IR Mach (2)
35
and
36
.IR symbol (2)
37
describe additional library functions
38
for interpreting executable files and executing images.
39
.PP
40
Object files contain no formal symbol table; instead, references
41
to symbols must be extracted from the encoded object representation
42
and resolved.  The resulting symbol information is loaded
43
into a dummy symbol table where it is available for processing by an
44
application.  The organization of the dummy symbol
45
table is identical
46
to that produced by the loader and described in
47
.IR symbol (2)
48
and
49
.IR a.out (6):
50
a vector of
51
.B Sym
52
data structures defining the name, type and relative offset of
53
each symbol.
54
.PP
55
.I Objtype
56
reads the header at the current position of the
57
file associated with
58
.I bp
59
(see
60
.IR Bio (2))
61
to see if it is an intermediate object file.
62
If it is, a code indicating the architecture type of the file
63
is returned and the second argument, if it is non-zero,
64
is set pointing to a string describing the type of the file.
65
If the header does not indicate an object file,
66
\-1 is returned.
67
The header may be at the start of an object
68
file or at the beginning of an archive member.  The
69
file is rewound to its starting
70
position after decoding the header.
71
.PP
72
.I Readobj
73
constructs a symbol table for the object file associated with
74
.IR bp .
75
The second argument contains the type code produced by
76
function
77
.IR objtype .
78
The file must be positioned at the start of the object file.
79
Each invocation of
80
.I readobj
81
destroys the symbol definitions for any previous file.
82
.PP
83
.I Objtraverse
84
scans the symbol table previously built by
85
.I readobj
86
or
87
.IR readar  .
88
.I Objtraverse
89
requires two arguments:
90
the address of a call-back function and a
91
generic pointer.  The call-back function
92
is invoked once for each symbol in the symbol table with
93
the address of a
94
.I Sym
95
data structure as the first argument and the
96
generic pointer as the second.
97
.PP
98
.I Isar
99
reads the header at the current point in the file
100
associated with
101
.I bp
102
and returns 1 if it is an archive or zero otherwise.
103
The file is positioned at the end of the archive
104
header and at the beginning of the first member of the archive.
105
.PP
106
.I Nextar
107
extracts information describing the archive member stored
108
at
109
.I offset
110
in the file associated with
111
.IR bp .
112
If the header describing the member can be
113
extracted and decoded, the size of the member is
114
returned.  Adding this value to
115
.I offset
116
yields the offset of the beginning of the next member
117
in the archive.  On return the input file is positioned
118
at the end of the member header
119
and the name of the member is stored in
120
.IR buf ,
121
a buffer of
122
.B SARNAME
123
characters.
124
If there are no more members,
125
.I nextar
126
returns zero; a negative return indicates a missing
127
or malformed header.
128
.PP
129
.I Readar
130
constructs the symbol table of the object file stored
131
at the current position in the archive associated with
132
.IR bp .
133
This function operates exactly as
134
.IR readobj ;
135
the only difference is the extra argument,
136
.IR end ,
137
specifying the offset to the beginning of the
138
next member in the archive.
139
.I Readar
140
leaves the file positioned at that point.
141
.SH SOURCE
142
.B /sys/src/libmach
143
.SH "SEE ALSO"
144
.IR mach (2),
145
.IR symbol (2),
146
.IR bio (2),
147
.IR a.out (6)
148
.SH DIAGNOSTICS
149
These routines set
150
.IR errstr .