|
|
1.1 root 1: .TH LD 1 "18 January 1983"
2: .UC 4
3: .SH NAME
4: ld \- link editor
5: .SH SYNOPSIS
6: .B ld
7: [ option ] ... file ...
8: .SH DESCRIPTION
9: .I Ld
10: combines several
11: object programs into one, resolves external
12: references, and searches libraries.
13: In the simplest case several object
14: .I files
15: are given, and
16: .I ld
17: combines them, producing
18: an object module which can be either executed or
19: become the input for a further
20: .I ld
21: run.
22: (In the latter case, the
23: .B \-r
24: option must be given
25: to preserve the relocation bits.)\
26: The output of
27: .I ld
28: is left on
29: .BR a.out .
30: This file is made executable
31: only if no errors occurred during the load.
32: .PP
33: The argument routines are concatenated in the order
34: specified. The entry point of the output is the
35: beginning of the first routine (unless the \fB\-e\fP option is specified).
36: .PP
37: If any argument is a library, it is searched exactly once
38: at the point it is encountered in the argument list.
39: Only those routines defining an unresolved external
40: reference are loaded.
41: If a routine from a library
42: references another routine in the library,
43: and the library has not been processed by
44: .IR ranlib (1),
45: the referenced routine must appear after the
46: referencing routine in the library.
47: Thus the order of programs within libraries
48: may be important.
49: The first member of a library
50: should be a file named `\_\^\_.SYMDEF',
51: which is understood to be a dictionary for the library as produced by
52: .IR ranlib (1);
53: the dictionary is searched iteratively to satisfy as many references as
54: possible.
55: .PP
56: The symbols `\_etext', `\_edata' and `\_end'
57: (`etext', `edata' and `end' in C)
58: are reserved, and if referred to,
59: are set to the first location above the program,
60: the first location above initialized data,
61: and the first location above all data respectively.
62: It is erroneous to define these symbols.
63: .PP
64: .I Ld
65: understands several options.
66: Except for
67: .BR \-l ,
68: they should appear before the file names.
69: .TP
70: .B \-A
71: This option specifies incremental loading, i.e.
72: linking is to be done in a manner so that the resulting object
73: may be read into an already executing program.
74: The next argument is the name of a file whose symbol table will be
75: taken as a basis on which to define additional symbols.
76: Only newly linked material will be entered into the text and
77: data portions of
78: .BR a.out,
79: but the new symbol table will reflect
80: every symbol defined before and after the incremental load.
81: This argument must appear before any other object file in the argument list.
82: The
83: .B \-T
84: option may be used as well, and will be taken to mean that the
85: newly linked segment will commence at the corresponding address
86: (which must be a multiple of 1024).
87: The default value is the old value of _end.
88: .TP
89: .B \-D
90: Take the next argument as a hexadecimal number and pad the data segment
91: with zero bytes to the indicated length.
92: .TP
93: .B \-d
94: Force definition of common storage
95: even if the
96: .B \-r
97: flag is present.
98: .TP
99: .B \-e
100: The following argument is taken to be the
101: name of the entry point of the loaded
102: program; location 0 is the default.
103: .TP
104: .BI \-l x
105: This
106: option is an abbreviation for the library name
107: .RI `/lib/lib x .a',
108: where
109: .I x
110: is a string.
111: If that does not exist,
112: .I ld
113: tries
114: .RI `/usr/lib/lib x .a'
115: A library is searched when its name is encountered,
116: so the placement of a
117: .B \-l
118: is significant.
119: .TP
120: .B \-M
121: produce a primitive load map, listing the names of the files
122: which will be loaded.
123: .TP
124: .B \-N
125: Do not make the text portion read only or sharable. (Use "magic number" 0407.)
126: .TP
127: .B \-n
128: Arrange (by giving the output file a 0410 "magic number") that
129: when the output file is executed,
130: the text portion will be read-only and shared
131: among all users executing the file.
132: This involves moving the data areas up to the first
133: possible 1024 byte boundary following the
134: end of the text.
135: .TP
136: .B \-o
137: The
138: .I name
139: argument after
140: .B \-o
141: is used as the name of the
142: .I ld
143: output file, instead of
144: .BR a.out .
145: .TP
146: .B \-r
147: Generate relocation bits in the output file
148: so that it can be the subject of another
149: .I ld
150: run.
151: This flag also prevents final definitions from being
152: given to common symbols,
153: and suppresses the `undefined symbol' diagnostics.
154: .TP
155: .B \-S
156: `Strip' the output by removing all symbols except locals and globals.
157: .TP
158: .B \-s
159: `Strip' the output, that is, remove the symbol table
160: and relocation bits to save space (but impair the
161: usefulness of the debuggers).
162: This information can also be removed by
163: .IR strip (1).
164: .TP
165: .B \-T
166: The next argument is a hexadecimal number which sets the text segment origin.
167: The default origin is 0.
168: .TP
169: .B \-B
170: The next argument is a hexadecimal number which sets the base of the data
171: (data origin). The default origin is the first multiple of 1024 after the
172: text.
173: .TP
174: .B \-t
175: ("trace") Print the name of each file as it is processed.
176: .TP
177: .B \-u
178: Take the following argument as a symbol and enter
179: it as undefined in the symbol table. This is useful
180: for loading wholly from a library, since initially the symbol
181: table is empty and an unresolved reference is needed
182: to force the loading of the first routine.
183: .TP
184: .B \-X
185: Save local symbols
186: except for those whose names begin with `L'.
187: This option is used by
188: .IR cc (1)
189: to discard internally-generated labels while
190: retaining symbols local to routines.
191: .TP
192: .B \-x
193: Do not preserve local
194: (non-.globl) symbols in the output symbol table; only enter
195: external symbols.
196: This option saves some space in the output file.
197: .TP
198: \fB\-y\fIsym\fR
199: Indicate each file in which
200: .I sym
201: appears, its type and whether the file defines or references it.
202: Many such options may be given to trace many symbols.
203: (It is usually necessary to begin
204: .I sym
205: with an `_', as external C, FORTRAN and Pascal variables begin
206: with underscores.)
207: .TP
208: .B \-z
209: Arrange for the process to be loaded on
210: demand from the resulting executable file (413 format)
211: rather than preloaded.
212: This is the default.
213: Results in a 1024 byte header on the output file followed by
214: a text and data segment each of which have size a multiple of 1024 bytes
215: (being padded out with nulls in the file if necessary).
216: With this format the first few BSS segment symbols may actually appear
217: (from the output of
218: .IR size (1))
219: to live in the data segment;
220: this to avoid wasting the space resulting from data segment size roundup.
221: .SH FILES
222: .ta \w'/usr/local/lib/lib*.a\ \ 'u
223: /lib/lib*.a libraries
224: .br
225: /usr/lib/lib*.a more libraries
226: .br
227: /usr/local/lib/lib*.a still more libraries
228: .br
229: a.out output file
230: .SH "SEE ALSO"
231: as(1), ar(1), cc(1), ranlib(1)
232: .SH BUGS
233: There is no way to force data to be page aligned.
234: .I Ld
235: pads images which are to be demand loaded from
236: the file system to the next
237: page boundary to avoid a bug in the system.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.