xref: /freebsd/share/man/man5/a.out.5 (revision 97759ccc715c4b365432c16d763c50eecfcb1100)
1afe61c15SRodney W. Grimes.\" Copyright (c) 1991, 1993
2afe61c15SRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
3afe61c15SRodney W. Grimes.\"
4a1601503SHiten Pandya.\" This manual page is derived from documentation contributed to Berkeley by
5afe61c15SRodney W. Grimes.\" Donn Seeley at UUNET Technologies, Inc.
6afe61c15SRodney W. Grimes.\"
7afe61c15SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
8afe61c15SRodney W. Grimes.\" modification, are permitted provided that the following conditions
9afe61c15SRodney W. Grimes.\" are met:
10afe61c15SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
11afe61c15SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
12afe61c15SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
13afe61c15SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
14afe61c15SRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
15dda5b397SEitan Adler.\" 3. Neither the name of the University nor the names of its contributors
16afe61c15SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
17afe61c15SRodney W. Grimes.\"    without specific prior written permission.
18afe61c15SRodney W. Grimes.\"
19afe61c15SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20afe61c15SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21afe61c15SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22afe61c15SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23afe61c15SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24afe61c15SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25afe61c15SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26afe61c15SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27afe61c15SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28afe61c15SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29afe61c15SRodney W. Grimes.\" SUCH DAMAGE.
30afe61c15SRodney W. Grimes.\"
3154e57c81SBjoern A. Zeeb.Dd June 10, 2010
32afe61c15SRodney W. Grimes.Dt A.OUT 5
33afe61c15SRodney W. Grimes.Os
34afe61c15SRodney W. Grimes.Sh NAME
35afe61c15SRodney W. Grimes.Nm a.out
36afe61c15SRodney W. Grimes.Nd format of executable binary files
37afe61c15SRodney W. Grimes.Sh SYNOPSIS
3832eef9aeSRuslan Ermilov.In a.out.h
39afe61c15SRodney W. Grimes.Sh DESCRIPTION
40afe61c15SRodney W. GrimesThe include file
41fe08efe6SRuslan Ermilov.In a.out.h
42afe61c15SRodney W. Grimesdeclares three structures and several macros.
43afe61c15SRodney W. GrimesThe structures describe the format of
44afe61c15SRodney W. Grimesexecutable machine code files
45afe61c15SRodney W. Grimes.Pq Sq binaries
46afe61c15SRodney W. Grimeson the system.
47afe61c15SRodney W. Grimes.Pp
48afe61c15SRodney W. GrimesA binary file consists of up to 7 sections.
49afe61c15SRodney W. GrimesIn order, these sections are:
50afe61c15SRodney W. Grimes.Bl -tag -width "text relocations"
51afe61c15SRodney W. Grimes.It exec header
52afe61c15SRodney W. GrimesContains parameters used by the kernel
53afe61c15SRodney W. Grimesto load a binary file into memory and execute it,
54afe61c15SRodney W. Grimesand by the link editor
55afe61c15SRodney W. Grimes.Xr ld 1
56afe61c15SRodney W. Grimesto combine a binary file with other binary files.
57afe61c15SRodney W. GrimesThis section is the only mandatory one.
58afe61c15SRodney W. Grimes.It text segment
59afe61c15SRodney W. GrimesContains machine code and related data
60afe61c15SRodney W. Grimesthat are loaded into memory when a program executes.
61afe61c15SRodney W. GrimesMay be loaded read-only.
62afe61c15SRodney W. Grimes.It data segment
63afe61c15SRodney W. GrimesContains initialized data; always loaded into writable memory.
64afe61c15SRodney W. Grimes.It text relocations
65afe61c15SRodney W. GrimesContains records used by the link editor
66afe61c15SRodney W. Grimesto update pointers in the text segment when combining binary files.
67afe61c15SRodney W. Grimes.It data relocations
68afe61c15SRodney W. GrimesLike the text relocation section, but for data segment pointers.
69afe61c15SRodney W. Grimes.It symbol table
70afe61c15SRodney W. GrimesContains records used by the link editor
71afe61c15SRodney W. Grimesto cross reference the addresses of named variables and functions
72afe61c15SRodney W. Grimes.Pq Sq symbols
73afe61c15SRodney W. Grimesbetween binary files.
74afe61c15SRodney W. Grimes.It string table
75afe61c15SRodney W. GrimesContains the character strings corresponding to the symbol names.
76afe61c15SRodney W. Grimes.El
77afe61c15SRodney W. Grimes.Pp
78afe61c15SRodney W. GrimesEvery binary file begins with an
79afe61c15SRodney W. Grimes.Fa exec
80afe61c15SRodney W. Grimesstructure:
81afe61c15SRodney W. Grimes.Bd -literal -offset indent
82afe61c15SRodney W. Grimesstruct exec {
83b35481d4SNate Williams	unsigned long	a_midmag;
84afe61c15SRodney W. Grimes	unsigned long	a_text;
85afe61c15SRodney W. Grimes	unsigned long	a_data;
86afe61c15SRodney W. Grimes	unsigned long	a_bss;
87afe61c15SRodney W. Grimes	unsigned long	a_syms;
88afe61c15SRodney W. Grimes	unsigned long	a_entry;
89afe61c15SRodney W. Grimes	unsigned long	a_trsize;
90afe61c15SRodney W. Grimes	unsigned long	a_drsize;
91afe61c15SRodney W. Grimes};
92afe61c15SRodney W. Grimes.Ed
93afe61c15SRodney W. Grimes.Pp
94afe61c15SRodney W. GrimesThe fields have the following functions:
95afe61c15SRodney W. Grimes.Bl -tag -width a_trsize
96b35481d4SNate Williams.It Fa a_midmag
97b35481d4SNate WilliamsThis field is stored in host byte-order.
98b35481d4SNate WilliamsIt has a number of sub-components accessed by the macros
99d0353b83SRuslan Ermilov.Fn N_GETFLAG ,
100d0353b83SRuslan Ermilov.Fn N_GETMID ,
101d0353b83SRuslan Ermilovand
102d0353b83SRuslan Ermilov.Fn N_GETMAGIC ,
103b35481d4SNate Williamsand set by the macro
104d0353b83SRuslan Ermilov.Fn N_SETMAGIC .
105b35481d4SNate Williams.Pp
106b35481d4SNate WilliamsThe macro
107d0353b83SRuslan Ermilov.Fn N_GETFLAG
108b35481d4SNate Williamsreturns a few flags:
109b35481d4SNate Williams.Bl -tag -width EX_DYNAMIC
110b35481d4SNate Williams.It Dv EX_DYNAMIC
111b35481d4SNate Williamsindicates that the executable requires the services of the run-time link editor.
112b35481d4SNate Williams.It Dv EX_PIC
1131111b49cSSheldon Hearnindicates that the object contains position independent code.
1141111b49cSSheldon HearnThis flag is
115b35481d4SNate Williamsset by
116b35481d4SNate Williams.Xr as 1
117b35481d4SNate Williamswhen given the
118b35481d4SNate Williams.Sq -k
119b35481d4SNate Williamsflag and is preserved by
120b35481d4SNate Williams.Xr ld 1
121b35481d4SNate Williamsif necessary.
122b35481d4SNate Williams.El
123b35481d4SNate Williams.Pp
1244a8d0283SMike PritchardIf both EX_DYNAMIC and EX_PIC are set, the object file is a position independent
1255203edcdSRuslan Ermilovexecutable image (e.g.\& a shared library), which is to be loaded into the
126b35481d4SNate Williamsprocess address space by the run-time link editor.
127b35481d4SNate Williams.Pp
128b35481d4SNate WilliamsThe macro
129d0353b83SRuslan Ermilov.Fn N_GETMID
130b35481d4SNate Williamsreturns the machine-id.
131b35481d4SNate WilliamsThis indicates which machine(s) the binary is intended to run on.
132b35481d4SNate Williams.Pp
133d0353b83SRuslan Ermilov.Fn N_GETMAGIC
134b35481d4SNate Williamsspecifies the magic number, which uniquely identifies binary files
135afe61c15SRodney W. Grimesand distinguishes different loading conventions.
136afe61c15SRodney W. GrimesThe field must contain one of the following values:
137afe61c15SRodney W. Grimes.Bl -tag -width ZMAGIC
138afe61c15SRodney W. Grimes.It Dv OMAGIC
139afe61c15SRodney W. GrimesThe text and data segments immediately follow the header
140afe61c15SRodney W. Grimesand are contiguous.
141afe61c15SRodney W. GrimesThe kernel loads both text and data segments into writable memory.
142afe61c15SRodney W. Grimes.It Dv NMAGIC
143afe61c15SRodney W. GrimesAs with
144afe61c15SRodney W. Grimes.Dv OMAGIC ,
145afe61c15SRodney W. Grimestext and data segments immediately follow the header and are contiguous.
146afe61c15SRodney W. GrimesHowever, the kernel loads the text into read-only memory
147afe61c15SRodney W. Grimesand loads the data into writable memory at the next
148afe61c15SRodney W. Grimespage boundary after the text.
149afe61c15SRodney W. Grimes.It Dv ZMAGIC
150afe61c15SRodney W. GrimesThe kernel loads individual pages on demand from the binary.
151afe61c15SRodney W. GrimesThe header, text segment and data segment are all
152afe61c15SRodney W. Grimespadded by the link editor to a multiple of the page size.
153afe61c15SRodney W. GrimesPages that the kernel loads from the text segment are read-only,
154afe61c15SRodney W. Grimeswhile pages from the data segment are writable.
155afe61c15SRodney W. Grimes.El
156afe61c15SRodney W. Grimes.It Fa a_text
157afe61c15SRodney W. GrimesContains the size of the text segment in bytes.
158afe61c15SRodney W. Grimes.It Fa a_data
159afe61c15SRodney W. GrimesContains the size of the data segment in bytes.
160afe61c15SRodney W. Grimes.It Fa a_bss
161afe61c15SRodney W. GrimesContains the number of bytes in the
162afe61c15SRodney W. Grimes.Sq bss segment
163afe61c15SRodney W. Grimesand is used by the kernel to set the initial break
164afe61c15SRodney W. Grimes.Pq Xr brk 2
165afe61c15SRodney W. Grimesafter the data segment.
166afe61c15SRodney W. GrimesThe kernel loads the program so that this amount of writable memory
167afe61c15SRodney W. Grimesappears to follow the data segment and initially reads as zeroes.
168e2f20864SRuslan Ermilov.Em ( bss
169e2f20864SRuslan Ermilov= block started by symbol)
170afe61c15SRodney W. Grimes.It Fa a_syms
171afe61c15SRodney W. GrimesContains the size in bytes of the symbol table section.
172afe61c15SRodney W. Grimes.It Fa a_entry
173afe61c15SRodney W. GrimesContains the address in memory of the entry point
174afe61c15SRodney W. Grimesof the program after the kernel has loaded it;
175afe61c15SRodney W. Grimesthe kernel starts the execution of the program
176afe61c15SRodney W. Grimesfrom the machine instruction at this address.
177afe61c15SRodney W. Grimes.It Fa a_trsize
178afe61c15SRodney W. GrimesContains the size in bytes of the text relocation table.
179afe61c15SRodney W. Grimes.It Fa a_drsize
180afe61c15SRodney W. GrimesContains the size in bytes of the data relocation table.
181afe61c15SRodney W. Grimes.El
182afe61c15SRodney W. Grimes.Pp
183afe61c15SRodney W. GrimesThe
184743d5d51SRuslan Ermilov.In a.out.h
185afe61c15SRodney W. Grimesinclude file defines several macros which use an
186afe61c15SRodney W. Grimes.Fa exec
187afe61c15SRodney W. Grimesstructure to test consistency or to locate section offsets in the binary file.
188afe61c15SRodney W. Grimes.Bl -tag -width N_BADMAG(exec)
189afe61c15SRodney W. Grimes.It Fn N_BADMAG exec
190afe61c15SRodney W. GrimesNonzero if the
191afe61c15SRodney W. Grimes.Fa a_magic
192afe61c15SRodney W. Grimesfield does not contain a recognized value.
193afe61c15SRodney W. Grimes.It Fn N_TXTOFF exec
194afe61c15SRodney W. GrimesThe byte offset in the binary file of the beginning of the text segment.
195afe61c15SRodney W. Grimes.It Fn N_SYMOFF exec
196afe61c15SRodney W. GrimesThe byte offset of the beginning of the symbol table.
197afe61c15SRodney W. Grimes.It Fn N_STROFF exec
198afe61c15SRodney W. GrimesThe byte offset of the beginning of the string table.
199afe61c15SRodney W. Grimes.El
200afe61c15SRodney W. Grimes.Pp
201afe61c15SRodney W. GrimesRelocation records have a standard format which
202afe61c15SRodney W. Grimesis described by the
203afe61c15SRodney W. Grimes.Fa relocation_info
204afe61c15SRodney W. Grimesstructure:
205afe61c15SRodney W. Grimes.Bd -literal -offset indent
206afe61c15SRodney W. Grimesstruct relocation_info {
207afe61c15SRodney W. Grimes	int		r_address;
208afe61c15SRodney W. Grimes	unsigned int	r_symbolnum : 24,
209afe61c15SRodney W. Grimes			r_pcrel : 1,
210afe61c15SRodney W. Grimes			r_length : 2,
211afe61c15SRodney W. Grimes			r_extern : 1,
212b35481d4SNate Williams			r_baserel : 1,
213b35481d4SNate Williams			r_jmptable : 1,
214b35481d4SNate Williams			r_relative : 1,
215b35481d4SNate Williams			r_copy : 1;
216afe61c15SRodney W. Grimes};
217afe61c15SRodney W. Grimes.Ed
218afe61c15SRodney W. Grimes.Pp
219afe61c15SRodney W. GrimesThe
220afe61c15SRodney W. Grimes.Fa relocation_info
221afe61c15SRodney W. Grimesfields are used as follows:
222afe61c15SRodney W. Grimes.Bl -tag -width r_symbolnum
223afe61c15SRodney W. Grimes.It Fa r_address
224afe61c15SRodney W. GrimesContains the byte offset of a pointer that needs to be link-edited.
225afe61c15SRodney W. GrimesText relocation offsets are reckoned from the start of the text segment,
226afe61c15SRodney W. Grimesand data relocation offsets from the start of the data segment.
227afe61c15SRodney W. GrimesThe link editor adds the value that is already stored at this offset
228afe61c15SRodney W. Grimesinto the new value that it computes using this relocation record.
229afe61c15SRodney W. Grimes.It Fa r_symbolnum
230afe61c15SRodney W. GrimesContains the ordinal number of a symbol structure
231afe61c15SRodney W. Grimesin the symbol table (it is
232afe61c15SRodney W. Grimes.Em not
233afe61c15SRodney W. Grimesa byte offset).
234afe61c15SRodney W. GrimesAfter the link editor resolves the absolute address for this symbol,
235afe61c15SRodney W. Grimesit adds that address to the pointer that is undergoing relocation.
236afe61c15SRodney W. Grimes(If the
237afe61c15SRodney W. Grimes.Fa r_extern
238afe61c15SRodney W. Grimesbit is clear, the situation is different; see below.)
239afe61c15SRodney W. Grimes.It Fa r_pcrel
240afe61c15SRodney W. GrimesIf this is set,
241afe61c15SRodney W. Grimesthe link editor assumes that it is updating a pointer
242afe61c15SRodney W. Grimesthat is part of a machine code instruction using pc-relative addressing.
243afe61c15SRodney W. GrimesThe address of the relocated pointer is implicitly added
244afe61c15SRodney W. Grimesto its value when the running program uses it.
245afe61c15SRodney W. Grimes.It Fa r_length
246afe61c15SRodney W. GrimesContains the log base 2 of the length of the pointer in bytes;
247afe61c15SRodney W. Grimes0 for 1-byte displacements, 1 for 2-byte displacements,
248afe61c15SRodney W. Grimes2 for 4-byte displacements.
249afe61c15SRodney W. Grimes.It Fa r_extern
250afe61c15SRodney W. GrimesSet if this relocation requires an external reference;
251afe61c15SRodney W. Grimesthe link editor must use a symbol address to update the pointer.
252afe61c15SRodney W. GrimesWhen the
253afe61c15SRodney W. Grimes.Fa r_extern
254afe61c15SRodney W. Grimesbit is clear, the relocation is
255afe61c15SRodney W. Grimes.Sq local ;
256afe61c15SRodney W. Grimesthe link editor updates the pointer to reflect
257afe61c15SRodney W. Grimeschanges in the load addresses of the various segments,
258b35481d4SNate Williamsrather than changes in the value of a symbol (except when
259b35481d4SNate Williams.Fa r_baserel
260b35481d4SNate Williamsis also set (see below).
261afe61c15SRodney W. GrimesIn this case, the content of the
262afe61c15SRodney W. Grimes.Fa r_symbolnum
263afe61c15SRodney W. Grimesfield is an
264afe61c15SRodney W. Grimes.Fa n_type
265afe61c15SRodney W. Grimesvalue (see below);
266afe61c15SRodney W. Grimesthis type field tells the link editor
267afe61c15SRodney W. Grimeswhat segment the relocated pointer points into.
268b35481d4SNate Williams.It Fa r_baserel
269b35481d4SNate WilliamsIf set, the symbol, as identified by the
270b35481d4SNate Williams.Fa r_symbolnum
271b35481d4SNate Williamsfield, is to be relocated to an offset into the Global Offset Table.
272b35481d4SNate WilliamsAt run-time, the entry in the Global Offset Table at this offset is set to
273b35481d4SNate Williamsbe the address of the symbol.
274b35481d4SNate Williams.It Fa r_jmptable
275b35481d4SNate WilliamsIf set, the symbol, as identified by the
276b35481d4SNate Williams.Fa r_symbolnum
277b35481d4SNate Williamsfield, is to be relocated to an offset into the Procedure Linkage Table.
278b35481d4SNate Williams.It Fa r_relative
279b35481d4SNate WilliamsIf set, this relocation is relative to the (run-time) load address of the
2801111b49cSSheldon Hearnimage this object file is going to be a part of.
2811111b49cSSheldon HearnThis type of relocation
282b35481d4SNate Williamsonly occurs in shared objects.
283b35481d4SNate Williams.It Fa r_copy
284b35481d4SNate WilliamsIf set, this relocation record identifies a symbol whose contents should
285b35481d4SNate Williamsbe copied to the location given in
286b35481d4SNate Williams.Fa r_address .
287b35481d4SNate WilliamsThe copying is done by the run-time link-editor from a suitable data
288b35481d4SNate Williamsitem in a shared object.
289afe61c15SRodney W. Grimes.El
290afe61c15SRodney W. Grimes.Pp
291afe61c15SRodney W. GrimesSymbols map names to addresses (or more generally, strings to values).
292afe61c15SRodney W. GrimesSince the link-editor adjusts addresses,
293afe61c15SRodney W. Grimesa symbol's name must be used to stand for its address
294afe61c15SRodney W. Grimesuntil an absolute value has been assigned.
295afe61c15SRodney W. GrimesSymbols consist of a fixed-length record in the symbol table
296afe61c15SRodney W. Grimesand a variable-length name in the string table.
297afe61c15SRodney W. GrimesThe symbol table is an array of
298afe61c15SRodney W. Grimes.Fa nlist
299afe61c15SRodney W. Grimesstructures:
300afe61c15SRodney W. Grimes.Bd -literal -offset indent
301afe61c15SRodney W. Grimesstruct nlist {
302afe61c15SRodney W. Grimes	union {
30354e57c81SBjoern A. Zeeb		const char	*n_name;
304afe61c15SRodney W. Grimes		long		n_strx;
305afe61c15SRodney W. Grimes	} n_un;
306afe61c15SRodney W. Grimes	unsigned char		n_type;
307afe61c15SRodney W. Grimes	char			n_other;
308afe61c15SRodney W. Grimes	short			n_desc;
309afe61c15SRodney W. Grimes	unsigned long		n_value;
310afe61c15SRodney W. Grimes};
311afe61c15SRodney W. Grimes.Ed
312afe61c15SRodney W. Grimes.Pp
313afe61c15SRodney W. GrimesThe fields are used as follows:
314afe61c15SRodney W. Grimes.Bl -tag -width n_un.n_strx
315afe61c15SRodney W. Grimes.It Fa n_un.n_strx
316afe61c15SRodney W. GrimesContains a byte offset into the string table
317afe61c15SRodney W. Grimesfor the name of this symbol.
318afe61c15SRodney W. GrimesWhen a program accesses a symbol table with the
319afe61c15SRodney W. Grimes.Xr nlist 3
320afe61c15SRodney W. Grimesfunction,
321afe61c15SRodney W. Grimesthis field is replaced with the
322afe61c15SRodney W. Grimes.Fa n_un.n_name
323afe61c15SRodney W. Grimesfield, which is a pointer to the string in memory.
324afe61c15SRodney W. Grimes.It Fa n_type
325afe61c15SRodney W. GrimesUsed by the link editor to determine
326afe61c15SRodney W. Grimeshow to update the symbol's value.
327afe61c15SRodney W. GrimesThe
328afe61c15SRodney W. Grimes.Fa n_type
329afe61c15SRodney W. Grimesfield is broken down into three sub-fields using bitmasks.
330afe61c15SRodney W. GrimesThe link editor treats symbols with the
331afe61c15SRodney W. Grimes.Dv N_EXT
332afe61c15SRodney W. Grimestype bit set as
333afe61c15SRodney W. Grimes.Sq external
334afe61c15SRodney W. Grimessymbols and permits references to them from other binary files.
335afe61c15SRodney W. GrimesThe
336afe61c15SRodney W. Grimes.Dv N_TYPE
337afe61c15SRodney W. Grimesmask selects bits of interest to the link editor:
338afe61c15SRodney W. Grimes.Bl -tag -width N_TEXT
339afe61c15SRodney W. Grimes.It Dv N_UNDF
340afe61c15SRodney W. GrimesAn undefined symbol.
341afe61c15SRodney W. GrimesThe link editor must locate an external symbol with the same name
342afe61c15SRodney W. Grimesin another binary file to determine the absolute value of this symbol.
343afe61c15SRodney W. GrimesAs a special case, if the
344afe61c15SRodney W. Grimes.Fa n_value
345afe61c15SRodney W. Grimesfield is nonzero and no binary file in the link-edit defines this symbol,
346afe61c15SRodney W. Grimesthe link-editor will resolve this symbol to an address
347afe61c15SRodney W. Grimesin the bss segment,
348afe61c15SRodney W. Grimesreserving an amount of bytes equal to
349afe61c15SRodney W. Grimes.Fa n_value .
350afe61c15SRodney W. GrimesIf this symbol is undefined in more than one binary file
351afe61c15SRodney W. Grimesand the binary files do not agree on the size,
352afe61c15SRodney W. Grimesthe link editor chooses the greatest size found across all binaries.
353afe61c15SRodney W. Grimes.It Dv N_ABS
354afe61c15SRodney W. GrimesAn absolute symbol.
355afe61c15SRodney W. GrimesThe link editor does not update an absolute symbol.
356afe61c15SRodney W. Grimes.It Dv N_TEXT
357afe61c15SRodney W. GrimesA text symbol.
358afe61c15SRodney W. GrimesThis symbol's value is a text address and
359afe61c15SRodney W. Grimesthe link editor will update it when it merges binary files.
360afe61c15SRodney W. Grimes.It Dv N_DATA
361afe61c15SRodney W. GrimesA data symbol; similar to
362afe61c15SRodney W. Grimes.Dv N_TEXT
363afe61c15SRodney W. Grimesbut for data addresses.
364afe61c15SRodney W. GrimesThe values for text and data symbols are not file offsets but
365afe61c15SRodney W. Grimesaddresses; to recover the file offsets, it is necessary
366afe61c15SRodney W. Grimesto identify the loaded address of the beginning of the corresponding
367afe61c15SRodney W. Grimessection and subtract it, then add the offset of the section.
368afe61c15SRodney W. Grimes.It Dv N_BSS
369afe61c15SRodney W. GrimesA bss symbol; like text or data symbols but
370afe61c15SRodney W. Grimeshas no corresponding offset in the binary file.
371afe61c15SRodney W. Grimes.It Dv N_FN
372afe61c15SRodney W. GrimesA filename symbol.
373afe61c15SRodney W. GrimesThe link editor inserts this symbol before
374afe61c15SRodney W. Grimesthe other symbols from a binary file when
375afe61c15SRodney W. Grimesmerging binary files.
376afe61c15SRodney W. GrimesThe name of the symbol is the filename given to the link editor,
377afe61c15SRodney W. Grimesand its value is the first text address from that binary file.
378afe61c15SRodney W. GrimesFilename symbols are not needed for link-editing or loading,
379afe61c15SRodney W. Grimesbut are useful for debuggers.
380afe61c15SRodney W. Grimes.El
381afe61c15SRodney W. Grimes.Pp
382afe61c15SRodney W. GrimesThe
383afe61c15SRodney W. Grimes.Dv N_STAB
384afe61c15SRodney W. Grimesmask selects bits of interest to symbolic debuggers
385afe61c15SRodney W. Grimessuch as
386*3c405c7eSJens Schweikhardt.Xr gdb 1 Pq Pa ports/devel/gdb ;
387afe61c15SRodney W. Grimesthe values are described in
388afe61c15SRodney W. Grimes.Xr stab 5 .
389afe61c15SRodney W. Grimes.It Fa n_other
390b35481d4SNate WilliamsThis field provides information on the nature of the symbol independent of
391b35481d4SNate Williamsthe symbol's location in terms of segments as determined by the
392b35481d4SNate Williams.Fa n_type
3931111b49cSSheldon Hearnfield.
3941111b49cSSheldon HearnCurrently, the lower 4 bits of the
395b35481d4SNate Williams.Fa n_other
396b35481d4SNate Williamsfield hold one of two values:
397b35481d4SNate Williams.Dv AUX_FUNC
398b35481d4SNate Williamsand
399b35481d4SNate Williams.Dv AUX_OBJECT
400c4d9468eSRuslan Ermilov(see
401fe08efe6SRuslan Ermilov.In link.h
402c4d9468eSRuslan Ermilovfor their definitions).
403b35481d4SNate Williams.Dv AUX_FUNC
404b35481d4SNate Williamsassociates the symbol with a callable function, while
405b35481d4SNate Williams.Dv AUX_OBJECT
406b35481d4SNate Williamsassociates the symbol with data, irrespective of their locations in
407b35481d4SNate Williamseither the text or the data segment.
408b35481d4SNate WilliamsThis field is intended to be used by
409b35481d4SNate Williams.Xr ld 1
410b35481d4SNate Williamsfor the construction of dynamic executables.
411afe61c15SRodney W. Grimes.It Fa n_desc
412afe61c15SRodney W. GrimesReserved for use by debuggers; passed untouched by the link editor.
413afe61c15SRodney W. GrimesDifferent debuggers use this field for different purposes.
414afe61c15SRodney W. Grimes.It Fa n_value
415afe61c15SRodney W. GrimesContains the value of the symbol.
416afe61c15SRodney W. GrimesFor text, data and bss symbols, this is an address;
417afe61c15SRodney W. Grimesfor other symbols (such as debugger symbols),
418afe61c15SRodney W. Grimesthe value may be arbitrary.
419afe61c15SRodney W. Grimes.El
420afe61c15SRodney W. Grimes.Pp
421afe61c15SRodney W. GrimesThe string table consists of an
422afe61c15SRodney W. Grimes.Em unsigned long
423afe61c15SRodney W. Grimeslength followed by null-terminated symbol strings.
424afe61c15SRodney W. GrimesThe length represents the size of the entire table in bytes,
425afe61c15SRodney W. Grimesso its minimum value (or the offset of the first string)
426afe61c15SRodney W. Grimesis always 4 on 32-bit machines.
427afe61c15SRodney W. Grimes.Sh SEE ALSO
428b35481d4SNate Williams.Xr as 1 ,
429*3c405c7eSJens Schweikhardt.Xr gdb 1 Pq Pa ports/devel/gdb ,
430afe61c15SRodney W. Grimes.Xr ld 1 ,
431b35481d4SNate Williams.Xr brk 2 ,
432afe61c15SRodney W. Grimes.Xr execve 2 ,
433afe61c15SRodney W. Grimes.Xr nlist 3 ,
434afe61c15SRodney W. Grimes.Xr core 5 ,
43577a98af6SJeroen Ruigrok van der Werven.Xr elf 5 ,
436c69a537cSWolfram Schneider.Xr link 5 ,
437c69a537cSWolfram Schneider.Xr stab 5
438afe61c15SRodney W. Grimes.Sh HISTORY
439afe61c15SRodney W. GrimesThe
440743d5d51SRuslan Ermilov.In a.out.h
441afe61c15SRodney W. Grimesinclude file appeared in
442afe61c15SRodney W. Grimes.At v7 .
443afe61c15SRodney W. Grimes.Sh BUGS
444afe61c15SRodney W. GrimesSince not all of the supported architectures use the
445b35481d4SNate Williams.Fa a_midmag
446afe61c15SRodney W. Grimesfield,
447afe61c15SRodney W. Grimesit can be difficult to determine what
448afe61c15SRodney W. Grimesarchitecture a binary will execute on
449afe61c15SRodney W. Grimeswithout examining its actual machine code.
450afe61c15SRodney W. GrimesEven with a machine identifier,
451afe61c15SRodney W. Grimesthe byte order of the
452afe61c15SRodney W. Grimes.Fa exec
453afe61c15SRodney W. Grimesheader is machine-dependent.
454