* Makefile.in: Revert 2001-06-17.
[deliverable/binutils-gdb.git] / ld / ld.1
CommitLineData
506eee22
NC
1.\" Automatically generated by Pod::Man version 1.02
2.\" Tue May 22 15:43:56 2001
3.\"
4.\" Standard preamble:
5.\" ======================================================================
6.de Sh \" Subsection heading
252b5132 7.br
0285c67d
NC
8.if t .Sp
9.ne 5
10.PP
11\fB\\$1\fR
12.PP
13..
506eee22 14.de Sp \" Vertical space (when we can't use .PP)
0285c67d
NC
15.if t .sp .5v
16.if n .sp
17..
506eee22 18.de Ip \" List item
252b5132 19.br
0285c67d
NC
20.ie \\n(.$>=3 .ne \\$3
21.el .ne 3
22.IP "\\$1" \\$2
23..
506eee22 24.de Vb \" Begin verbatim text
0285c67d
NC
25.ft CW
26.nf
27.ne \\$1
28..
506eee22 29.de Ve \" End verbatim text
0285c67d 30.ft R
252b5132 31
0285c67d
NC
32.fi
33..
506eee22
NC
34.\" Set up some character translations and predefined strings. \*(-- will
35.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
36.\" double quote, and \*(R" will give a right double quote. | will give a
37.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used
38.\" to do unbreakable dashes and therefore won't be available. \*(C` and
39.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
0285c67d 40.tr \(*W-|\(bv\*(Tr
506eee22 41.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
0285c67d 42.ie n \{\
506eee22
NC
43. ds -- \(*W-
44. ds PI pi
45. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
46. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
47. ds L" ""
48. ds R" ""
49. ds C` `
50. ds C' '
0285c67d
NC
51'br\}
52.el\{\
506eee22
NC
53. ds -- \|\(em\|
54. ds PI \(*p
55. ds L" ``
56. ds R" ''
0285c67d 57'br\}
506eee22
NC
58.\"
59.\" If the F register is turned on, we'll generate index entries on stderr
60.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
61.\" index entries marked with X<> in POD. Of course, you'll have to process
62.\" the output yourself in some meaningful fashion.
63.if \nF \{\
64. de IX
65. tm Index:\\$1\t\\n%\t"\\$2"
66. .
67. nr % 0
68. rr F
0285c67d 69.\}
506eee22
NC
70.\"
71.\" For nroff, turn off justification. Always turn off hyphenation; it
72.\" makes way too many mistakes in technical documents.
73.hy 0
74.\"
75.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
76.\" Fear. Run. Save yourself. No user-serviceable parts.
0285c67d 77.bd B 3
506eee22 78. \" fudge factors for nroff and troff
0285c67d 79.if n \{\
506eee22
NC
80. ds #H 0
81. ds #V .8m
82. ds #F .3m
83. ds #[ \f1
84. ds #] \fP
0285c67d
NC
85.\}
86.if t \{\
506eee22
NC
87. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
88. ds #V .6m
89. ds #F 0
90. ds #[ \&
91. ds #] \&
0285c67d 92.\}
506eee22 93. \" simple accents for nroff and troff
0285c67d 94.if n \{\
506eee22
NC
95. ds ' \&
96. ds ` \&
97. ds ^ \&
98. ds , \&
99. ds ~ ~
100. ds /
0285c67d
NC
101.\}
102.if t \{\
506eee22
NC
103. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
104. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
105. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
106. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
107. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
108. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
0285c67d 109.\}
506eee22 110. \" troff and (daisy-wheel) nroff accents
0285c67d
NC
111.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
112.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
0285c67d
NC
113.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
114.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
115.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
116.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
117.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
118.ds ae a\h'-(\w'a'u*4/10)'e
119.ds Ae A\h'-(\w'A'u*4/10)'E
506eee22 120. \" corrections for vroff
0285c67d
NC
121.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
122.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
506eee22 123. \" for low resolution devices (crt and lpr)
0285c67d
NC
124.if \n(.H>23 .if \n(.V>19 \
125\{\
506eee22
NC
126. ds : e
127. ds 8 ss
128. ds o a
129. ds d- d\h'-1'\(ga
130. ds D- D\h'-1'\(hy
131. ds th \o'bp'
132. ds Th \o'LP'
133. ds ae ae
134. ds Ae AE
0285c67d
NC
135.\}
136.rm #[ #] #H #V #F C
506eee22
NC
137.\" ======================================================================
138.\"
139.IX Title "LD 1"
140.TH LD 1 "binutils-2.11.90" "2001-05-22" "GNU"
141.UC
0285c67d 142.SH "NAME"
506eee22 143ld \- Using \s-1LD\s0, the \s-1GNU\s0 linker
0285c67d 144.SH "SYNOPSIS"
506eee22 145.IX Header "SYNOPSIS"
0285c67d
NC
146ld [ options ] objfile...
147.SH "DESCRIPTION"
506eee22
NC
148.IX Header "DESCRIPTION"
149\&\f(CW\*(C`ld\*(C'\fR combines a number of object and archive files, relocates
0285c67d 150their data and ties up symbol references. Usually the last step in
506eee22 151compiling a program is to run \f(CW\*(C`ld\*(C'\fR.
0285c67d 152.PP
506eee22
NC
153\&\f(CW\*(C`ld\*(C'\fR accepts Linker Command Language files written in
154a superset of \s-1AT&T\s0's Link Editor Command Language syntax,
0285c67d
NC
155to provide explicit and total control over the linking process.
156.PP
157This man page does not describe the command language; see the
506eee22
NC
158\&\f(CW\*(C`ld\*(C'\fR entry in \f(CW\*(C`info\*(C'\fR, or the manual
159ld: the \s-1GNU\s0 linker, for full details on the command language and
160on other aspects of the \s-1GNU\s0 linker.
0285c67d 161.PP
506eee22
NC
162This version of \f(CW\*(C`ld\*(C'\fR uses the general purpose \s-1BFD\s0 libraries
163to operate on object files. This allows \f(CW\*(C`ld\*(C'\fR to read, combine, and
164write object files in many different formats\-\-\-for example, \s-1COFF\s0 or
165\&\f(CW\*(C`a.out\*(C'\fR. Different formats may be linked together to produce any
0285c67d
NC
166available kind of object file.
167.PP
506eee22 168Aside from its flexibility, the \s-1GNU\s0 linker is more helpful than other
252b5132
RH
169linkers in providing diagnostic information. Many linkers abandon
170execution immediately upon encountering an error; whenever possible,
506eee22 171\&\f(CW\*(C`ld\*(C'\fR continues executing, allowing you to identify other errors
252b5132 172(or, in some cases, to get an output file in spite of the error).
0285c67d 173.PP
506eee22 174The \s-1GNU\s0 linker \f(CW\*(C`ld\*(C'\fR is meant to cover a broad range of situations,
252b5132 175and to be as compatible as possible with other linkers. As a result,
0285c67d
NC
176you have many choices to control its behavior.
177.SH "OPTIONS"
506eee22 178.IX Header "OPTIONS"
0285c67d
NC
179The linker supports a plethora of command-line options, but in actual
180practice few of them are used in any particular context.
506eee22 181For instance, a frequent use of \f(CW\*(C`ld\*(C'\fR is to link standard Unix
252b5132 182object files on a standard, supported Unix system. On such a system, to
506eee22 183link a file \f(CW\*(C`hello.o\*(C'\fR:
0285c67d 184.PP
506eee22 185.Vb 1
0285c67d
NC
186\& ld -o I<output> /lib/crt0.o hello.o -lc
187.Ve
506eee22
NC
188This tells \f(CW\*(C`ld\*(C'\fR to produce a file called \fIoutput\fR as the
189result of linking the file \f(CW\*(C`/lib/crt0.o\*(C'\fR with \f(CW\*(C`hello.o\*(C'\fR and
190the library \f(CW\*(C`libc.a\*(C'\fR, which will come from the standard search
0285c67d
NC
191directories. (See the discussion of the \fB\-l\fR option below.)
192.PP
506eee22 193Some of the command-line options to \f(CW\*(C`ld\*(C'\fR may be specified at any
0285c67d
NC
194point in the command line. However, options which refer to files, such
195as \fB\-l\fR or \fB\-T\fR, cause the file to be read at the point at
196which the option appears in the command line, relative to the object
197files and other file options. Repeating non-file options with a
252b5132 198different argument will either have no further effect, or override prior
0285c67d
NC
199occurrences (those further to the left on the command line) of that
200option. Options which may be meaningfully specified more than once are
201noted in the descriptions below.
202.PP
203Non-option arguments are object files or archives which are to be linked
204together. They may follow, precede, or be mixed in with command-line
205options, except that an object file argument may not be placed between
206an option and its argument.
207.PP
208Usually the linker is invoked with at least one object file, but you can
209specify other forms of binary input files using \fB\-l\fR, \fB\-R\fR,
210and the script command language. If \fIno\fR binary input files at all
211are specified, the linker does not produce any output, and issues the
212message \fBNo input files\fR.
213.PP
214If the linker can not recognize the format of an object file, it will
215assume that it is a linker script. A script specified in this way
216augments the main linker script used for the link (either the default
217linker script or the one specified by using \fB\-T\fR). This feature
218permits the linker to link against a file which appears to be an object
219or an archive, but actually merely defines some symbol values, or uses
506eee22 220\&\f(CW\*(C`INPUT\*(C'\fR or \f(CW\*(C`GROUP\*(C'\fR to load other objects. Note that
0285c67d
NC
221specifying a script in this way should only be used to augment the main
222linker script; if you want to use some command that logically can only
506eee22 223appear once, such as the \f(CW\*(C`SECTIONS\*(C'\fR or \f(CW\*(C`MEMORY\*(C'\fR command, you
0285c67d
NC
224must replace the default linker script using the \fB\-T\fR option.
225.PP
226For options whose names are a single letter,
227option arguments must either follow the option letter without intervening
252b5132
RH
228whitespace, or be given as separate arguments immediately following the
229option that requires them.
0285c67d
NC
230.PP
231For options whose names are multiple letters, either one dash or two can
232precede the option name; for example, \fB\-trace-symbol\fR and
506eee22
NC
233\&\fB\*(--trace-symbol\fR are equivalent. Note \- there is one exception to
234this rule. Multiple letter options that start with a lower case 'o' can
0285c67d 235only be preceeded by two dashes. This is to reduce confusion with the
506eee22
NC
236\&\fB\-o\fR option. So for example \fB\-omagic\fR sets the output file
237name to \fBmagic\fR whereas \fB\*(--omagic\fR sets the \s-1NMAGIC\s0 flag on the
0285c67d
NC
238output.
239.PP
240Arguments to multiple-letter options must either be separated from the
241option name by an equals sign, or be given as separate arguments
242immediately following the option that requires them. For example,
506eee22 243\&\fB\*(--trace-symbol foo\fR and \fB\*(--trace-symbol=foo\fR are equivalent.
0285c67d
NC
244Unique abbreviations of the names of multiple-letter options are
245accepted.
246.PP
247Note \- if the linker is being invoked indirectly, via a compiler driver
248(eg \fBgcc\fR) then all the linker command line options should be
249prefixed by \fB\-Wl,\fR (or whatever is appropriate for the particular
250compiler driver) like this:
251.PP
506eee22 252.Vb 1
0285c67d
NC
253\& gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
254.Ve
255This is important, because otherwise the compiler driver program may
256silently drop the linker options, resulting in a bad link.
257.PP
506eee22 258Here is a table of the generic command line switches accepted by the \s-1GNU\s0
0285c67d 259linker:
506eee22
NC
260.Ip "\f(CW\*(C`\-a\f(CIkeyword\f(CW\*(C'\fR" 4
261.IX Item "-akeyword"
0285c67d
NC
262This option is supported for \s-1HP/UX\s0 compatibility. The \fIkeyword\fR
263argument must be one of the strings \fBarchive\fR, \fBshared\fR, or
506eee22
NC
264\&\fBdefault\fR. \fB\-aarchive\fR is functionally equivalent to
265\&\fB\-Bstatic\fR, and the other two keywords are functionally equivalent
0285c67d 266to \fB\-Bdynamic\fR. This option may be used any number of times.
506eee22
NC
267.Ip "\f(CW\*(C`\-A\f(CIarchitecture\f(CW\*(C'\fR" 4
268.IX Item "-Aarchitecture"
269.Ip "\f(CW\*(C`\-\-architecture=\f(CIarchitecture\f(CW\*(C'\fR" 4
270.IX Item "--architecture=architecture"
271In the current release of \f(CW\*(C`ld\*(C'\fR, this option is useful only for the
272Intel 960 family of architectures. In that \f(CW\*(C`ld\*(C'\fR configuration, the
273\&\fIarchitecture\fR argument identifies the particular architecture in
0285c67d
NC
274the 960 family, enabling some safeguards and modifying the
275archive-library search path.
276.Sp
506eee22 277Future releases of \f(CW\*(C`ld\*(C'\fR may support similar functionality for
252b5132 278other architecture families.
506eee22
NC
279.Ip "\f(CW\*(C`\-b \f(CIinput\-format\f(CW\*(C'\fR" 4
280.IX Item "-b input-format"
281.Ip "\f(CW\*(C`\-\-format=\f(CIinput\-format\f(CW\*(C'\fR" 4
282.IX Item "--format=input-format"
283\&\f(CW\*(C`ld\*(C'\fR may be configured to support more than one kind of object
284file. If your \f(CW\*(C`ld\*(C'\fR is configured this way, you can use the
285\&\fB\-b\fR option to specify the binary format for input object files
286that follow this option on the command line. Even when \f(CW\*(C`ld\*(C'\fR is
0285c67d 287configured to support alternative object formats, you don't usually need
506eee22 288to specify this, as \f(CW\*(C`ld\*(C'\fR should be configured to expect as a
0285c67d 289default input format the most usual format on each machine.
506eee22 290\&\fIinput-format\fR is a text string, the name of a particular format
0285c67d
NC
291supported by the \s-1BFD\s0 libraries. (You can list the available binary
292formats with \fBobjdump \-i\fR.)
293.Sp
252b5132 294You may want to use this option if you are linking files with an unusual
0285c67d 295binary format. You can also use \fB\-b\fR to switch formats explicitly (when
252b5132 296linking object files of different formats), by including
506eee22 297\&\fB\-b\fR \fIinput-format\fR before each group of object files in a
0285c67d
NC
298particular format.
299.Sp
252b5132 300The default format is taken from the environment variable
506eee22 301\&\f(CW\*(C`GNUTARGET\*(C'\fR.
0285c67d
NC
302.Sp
303You can also define the input format from a script, using the command
506eee22
NC
304\&\f(CW\*(C`TARGET\*(C'\fR;
305.Ip "\f(CW\*(C`\-c \f(CIMRI\-commandfile\f(CW\*(C'\fR" 4
306.IX Item "-c MRI-commandfile"
307.Ip "\f(CW\*(C`\-\-mri\-script=\f(CIMRI\-commandfile\f(CW\*(C'\fR" 4
308.IX Item "--mri-script=MRI-commandfile"
309For compatibility with linkers produced by \s-1MRI\s0, \f(CW\*(C`ld\*(C'\fR accepts script
0285c67d
NC
310files written in an alternate, restricted command language, described in
311the \s-1MRI\s0 Compatible Script Files section of \s-1GNU\s0 ld documentation.
312Introduce \s-1MRI\s0 script files with
313the option \fB\-c\fR; use the \fB\-T\fR option to run linker
506eee22
NC
314scripts written in the general-purpose \f(CW\*(C`ld\*(C'\fR scripting language.
315If \fIMRI-cmdfile\fR does not exist, \f(CW\*(C`ld\*(C'\fR looks for it in the directories
0285c67d 316specified by any \fB\-L\fR options.
506eee22
NC
317.Ip "\f(CW\*(C`\-d\*(C'\fR" 4
318.IX Item "-d"
319.Ip "\f(CW\*(C`\-dc\*(C'\fR" 4
320.IX Item "-dc"
321.Ip "\f(CW\*(C`\-dp\*(C'\fR" 4
322.IX Item "-dp"
0285c67d
NC
323These three options are equivalent; multiple forms are supported for
324compatibility with other linkers. They assign space to common symbols
325even if a relocatable output file is specified (with \fB\-r\fR). The
506eee22
NC
326script command \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR has the same effect.
327.Ip "\f(CW\*(C`\-e \f(CIentry\f(CW\*(C'\fR" 4
328.IX Item "-e entry"
329.Ip "\f(CW\*(C`\-\-entry=\f(CIentry\f(CW\*(C'\fR" 4
330.IX Item "--entry=entry"
0285c67d
NC
331Use \fIentry\fR as the explicit symbol for beginning execution of your
332program, rather than the default entry point. If there is no symbol
333named \fIentry\fR, the linker will try to parse \fIentry\fR as a number,
334and use that as the entry address (the number will be interpreted in
335base 10; you may use a leading \fB0x\fR for base 16, or a leading
506eee22
NC
336\&\fB0\fR for base 8).
337.Ip "\f(CW\*(C`\-E\*(C'\fR" 4
338.IX Item "-E"
339.Ip "\f(CW\*(C`\-\-export\-dynamic\*(C'\fR" 4
340.IX Item "--export-dynamic"
0285c67d
NC
341When creating a dynamically linked executable, add all symbols to the
342dynamic symbol table. The dynamic symbol table is the set of symbols
343which are visible from dynamic objects at run time.
344.Sp
345If you do not use this option, the dynamic symbol table will normally
346contain only those symbols which are referenced by some dynamic object
347mentioned in the link.
348.Sp
506eee22 349If you use \f(CW\*(C`dlopen\*(C'\fR to load a dynamic object which needs to refer
0285c67d
NC
350back to the symbols defined by the program, rather than some other
351dynamic object, then you will probably need to use this option when
352linking the program itself.
506eee22
NC
353.Ip "\f(CW\*(C`\-EB\*(C'\fR" 4
354.IX Item "-EB"
0285c67d 355Link big-endian objects. This affects the default output format.
506eee22
NC
356.Ip "\f(CW\*(C`\-EL\*(C'\fR" 4
357.IX Item "-EL"
0285c67d 358Link little-endian objects. This affects the default output format.
506eee22
NC
359.Ip "\f(CW\*(C`\-f\*(C'\fR" 4
360.IX Item "-f"
361.Ip "\f(CW\*(C`\-\-auxiliary \f(CIname\f(CW\*(C'\fR" 4
362.IX Item "--auxiliary name"
0285c67d
NC
363When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_AUXILIARY\s0 field
364to the specified name. This tells the dynamic linker that the symbol
365table of the shared object should be used as an auxiliary filter on the
366symbol table of the shared object \fIname\fR.
367.Sp
368If you later link a program against this filter object, then, when you
369run the program, the dynamic linker will see the \s-1DT_AUXILIARY\s0 field. If
370the dynamic linker resolves any symbols from the filter object, it will
371first check whether there is a definition in the shared object
506eee22 372\&\fIname\fR. If there is one, it will be used instead of the definition
0285c67d
NC
373in the filter object. The shared object \fIname\fR need not exist.
374Thus the shared object \fIname\fR may be used to provide an alternative
375implementation of certain functions, perhaps for debugging or for
376machine specific performance.
377.Sp
378This option may be specified more than once. The \s-1DT_AUXILIARY\s0 entries
379will be created in the order in which they appear on the command line.
506eee22
NC
380.Ip "\f(CW\*(C`\-F \f(CIname\f(CW\*(C'\fR" 4
381.IX Item "-F name"
382.Ip "\f(CW\*(C`\-\-filter \f(CIname\f(CW\*(C'\fR" 4
383.IX Item "--filter name"
0285c67d
NC
384When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_FILTER\s0 field to
385the specified name. This tells the dynamic linker that the symbol table
386of the shared object which is being created should be used as a filter
387on the symbol table of the shared object \fIname\fR.
388.Sp
389If you later link a program against this filter object, then, when you
390run the program, the dynamic linker will see the \s-1DT_FILTER\s0 field. The
391dynamic linker will resolve symbols according to the symbol table of the
392filter object as usual, but it will actually link to the definitions
393found in the shared object \fIname\fR. Thus the filter object can be
394used to select a subset of the symbols provided by the object
506eee22 395\&\fIname\fR.
0285c67d 396.Sp
506eee22 397Some older linkers used the \f(CW\*(C`\-F\*(C'\fR option throughout a compilation
0285c67d
NC
398toolchain for specifying object-file format for both input and output
399object files. The \s-1GNU\s0 linker uses other mechanisms for this
506eee22
NC
400purpose: the \f(CW\*(C`\-b\*(C'\fR, \f(CW\*(C`\-\-format\*(C'\fR, \f(CW\*(C`\-\-oformat\*(C'\fR options, the
401\&\f(CW\*(C`TARGET\*(C'\fR command in linker scripts, and the \f(CW\*(C`GNUTARGET\*(C'\fR
402environment variable. The \s-1GNU\s0 linker will ignore the \f(CW\*(C`\-F\*(C'\fR
0285c67d 403option when not creating an \s-1ELF\s0 shared object.
506eee22
NC
404.Ip "\f(CW\*(C`\-fini \f(CIname\f(CW\*(C'\fR" 4
405.IX Item "-fini name"
0285c67d
NC
406When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
407executable or shared object is unloaded, by setting \s-1DT_FINI\s0 to the
506eee22 408address of the function. By default, the linker uses \f(CW\*(C`_fini\*(C'\fR as
0285c67d 409the function to call.
506eee22
NC
410.Ip "\f(CW\*(C`\-g\*(C'\fR" 4
411.IX Item "-g"
0285c67d 412Ignored. Provided for compatibility with other tools.
506eee22
NC
413.Ip "\f(CW\*(C`\-G\f(CIvalue\f(CW\*(C'\fR" 4
414.IX Item "-Gvalue"
415.Ip "\f(CW\*(C`\-\-gpsize=\f(CIvalue\f(CW\*(C'\fR" 4
416.IX Item "--gpsize=value"
0285c67d 417Set the maximum size of objects to be optimized using the \s-1GP\s0 register to
506eee22
NC
418\&\fIsize\fR. This is only meaningful for object file formats such as
419\&\s-1MIPS\s0 \s-1ECOFF\s0 which supports putting large and small objects into different
0285c67d 420sections. This is ignored for other object file formats.
506eee22
NC
421.Ip "\f(CW\*(C`\-h\f(CIname\f(CW\*(C'\fR" 4
422.IX Item "-hname"
423.Ip "\f(CW\*(C`\-soname=\f(CIname\f(CW\*(C'\fR" 4
424.IX Item "-soname=name"
0285c67d
NC
425When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_SONAME\s0 field to
426the specified name. When an executable is linked with a shared object
427which has a \s-1DT_SONAME\s0 field, then when the executable is run the dynamic
428linker will attempt to load the shared object specified by the \s-1DT_SONAME\s0
429field rather than the using the file name given to the linker.
506eee22
NC
430.Ip "\f(CW\*(C`\-i\*(C'\fR" 4
431.IX Item "-i"
0285c67d 432Perform an incremental link (same as option \fB\-r\fR).
506eee22
NC
433.Ip "\f(CW\*(C`\-init \f(CIname\f(CW\*(C'\fR" 4
434.IX Item "-init name"
0285c67d
NC
435When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
436executable or shared object is loaded, by setting \s-1DT_INIT\s0 to the address
506eee22 437of the function. By default, the linker uses \f(CW\*(C`_init\*(C'\fR as the
0285c67d 438function to call.
506eee22
NC
439.Ip "\f(CW\*(C`\-l\f(CIarchive\f(CW\*(C'\fR" 4
440.IX Item "-larchive"
441.Ip "\f(CW\*(C`\-\-library=\f(CIarchive\f(CW\*(C'\fR" 4
442.IX Item "--library=archive"
0285c67d 443Add archive file \fIarchive\fR to the list of files to link. This
506eee22
NC
444option may be used any number of times. \f(CW\*(C`ld\*(C'\fR will search its
445path-list for occurrences of \f(CW\*(C`lib\f(CIarchive\f(CW.a\*(C'\fR for every
446\&\fIarchive\fR specified.
0285c67d 447.Sp
506eee22
NC
448On systems which support shared libraries, \f(CW\*(C`ld\*(C'\fR may also search for
449libraries with extensions other than \f(CW\*(C`.a\*(C'\fR. Specifically, on \s-1ELF\s0
450and SunOS systems, \f(CW\*(C`ld\*(C'\fR will search a directory for a library with
451an extension of \f(CW\*(C`.so\*(C'\fR before searching for one with an extension of
452\&\f(CW\*(C`.a\*(C'\fR. By convention, a \f(CW\*(C`.so\*(C'\fR extension indicates a shared
0285c67d
NC
453library.
454.Sp
455The linker will search an archive only once, at the location where it is
456specified on the command line. If the archive defines a symbol which
457was undefined in some object which appeared before the archive on the
458command line, the linker will include the appropriate \fIfile\fR\|(s) from the
459archive. However, an undefined symbol in an object appearing later on
460the command line will not cause the linker to search the archive again.
461.Sp
506eee22 462See the \f(CW\*(C`\-(\*(C'\fR option for a way to force the linker to search
0285c67d
NC
463archives multiple times.
464.Sp
465You may list the same archive multiple times on the command line.
466.Sp
467This type of archive searching is standard for Unix linkers. However,
506eee22 468if you are using \f(CW\*(C`ld\*(C'\fR on \s-1AIX\s0, note that it is different from the
0285c67d 469behaviour of the \s-1AIX\s0 linker.
506eee22
NC
470.Ip "\f(CW\*(C`\-L\f(CIsearchdir\f(CW\*(C'\fR" 4
471.IX Item "-Lsearchdir"
472.Ip "\f(CW\*(C`\-\-library\-path=\f(CIsearchdir\f(CW\*(C'\fR" 4
473.IX Item "--library-path=searchdir"
474Add path \fIsearchdir\fR to the list of paths that \f(CW\*(C`ld\*(C'\fR will search
475for archive libraries and \f(CW\*(C`ld\*(C'\fR control scripts. You may use this
0285c67d
NC
476option any number of times. The directories are searched in the order
477in which they are specified on the command line. Directories specified
478on the command line are searched before the default directories. All
506eee22 479\&\f(CW\*(C`\-L\*(C'\fR options apply to all \f(CW\*(C`\-l\*(C'\fR options, regardless of the
0285c67d
NC
480order in which the options appear.
481.Sp
482The default set of paths searched (without being specified with
506eee22 483\&\fB\-L\fR) depends on which emulation mode \f(CW\*(C`ld\*(C'\fR is using, and in
0285c67d
NC
484some cases also on how it was configured.
485.Sp
486The paths can also be specified in a link script with the
506eee22 487\&\f(CW\*(C`SEARCH_DIR\*(C'\fR command. Directories specified this way are searched
0285c67d 488at the point in which the linker script appears in the command line.
506eee22
NC
489.Ip "\f(CW\*(C`\-m\f(CIemulation\f(CW\*(C'\fR" 4
490.IX Item "-memulation"
0285c67d 491Emulate the \fIemulation\fR linker. You can list the available
506eee22 492emulations with the \fB\*(--verbose\fR or \fB\-V\fR options.
0285c67d
NC
493.Sp
494If the \fB\-m\fR option is not used, the emulation is taken from the
506eee22 495\&\f(CW\*(C`LDEMULATION\*(C'\fR environment variable, if that is defined.
0285c67d
NC
496.Sp
497Otherwise, the default emulation depends upon how the linker was
498configured.
506eee22
NC
499.Ip "\f(CW\*(C`\-M\*(C'\fR" 4
500.IX Item "-M"
501.Ip "\f(CW\*(C`\-\-print\-map\*(C'\fR" 4
502.IX Item "--print-map"
0285c67d
NC
503Print a link map to the standard output. A link map provides
504information about the link, including the following:
506eee22
NC
505.RS 4
506.Ip "\(bu" 4
0285c67d 507Where object files and symbols are mapped into memory.
506eee22 508.Ip "\(bu" 4
0285c67d 509How common symbols are allocated.
506eee22 510.Ip "\(bu" 4
0285c67d
NC
511All archive members included in the link, with a mention of the symbol
512which caused the archive member to be brought in.
506eee22
NC
513.RE
514.RS 4
515.RE
516.Ip "\f(CW\*(C`\-n\*(C'\fR" 4
517.IX Item "-n"
518.Ip "\f(CW\*(C`\-\-nmagic\*(C'\fR" 4
519.IX Item "--nmagic"
0285c67d 520Turn off page alignment of sections, and mark the output as
506eee22
NC
521\&\f(CW\*(C`NMAGIC\*(C'\fR if possible.
522.Ip "\f(CW\*(C`\-N\*(C'\fR" 4
523.IX Item "-N"
524.Ip "\f(CW\*(C`\-\-omagic\*(C'\fR" 4
525.IX Item "--omagic"
0285c67d
NC
526Set the text and data sections to be readable and writable. Also, do
527not page-align the data segment. If the output format supports Unix
506eee22
NC
528style magic numbers, mark the output as \f(CW\*(C`OMAGIC\*(C'\fR.
529.Ip "\f(CW\*(C`\-o \f(CIoutput\f(CW\*(C'\fR" 4
530.IX Item "-o output"
531.Ip "\f(CW\*(C`\-\-output=\f(CIoutput\f(CW\*(C'\fR" 4
532.IX Item "--output=output"
533Use \fIoutput\fR as the name for the program produced by \f(CW\*(C`ld\*(C'\fR; if this
0285c67d 534option is not specified, the name \fIa.out\fR is used by default. The
506eee22
NC
535script command \f(CW\*(C`OUTPUT\*(C'\fR can also specify the output file name.
536.Ip "\f(CW\*(C`\-O \f(CIlevel\f(CW\*(C'\fR" 4
537.IX Item "-O level"
538If \fIlevel\fR is a numeric values greater than zero \f(CW\*(C`ld\*(C'\fR optimizes
0285c67d
NC
539the output. This might take significantly longer and therefore probably
540should only be enabled for the final binary.
506eee22
NC
541.Ip "\f(CW\*(C`\-q\*(C'\fR" 4
542.IX Item "-q"
543.Ip "\f(CW\*(C`\-\-emit\-relocs\*(C'\fR" 4
544.IX Item "--emit-relocs"
0285c67d
NC
545Leave relocation sections and contents in fully linked exececutables.
546Post link analysis and optimization tools may need this information in
547order to perform correct modifications of executables. This results
548in larger executables.
506eee22
NC
549.Ip "\f(CW\*(C`\-r\*(C'\fR" 4
550.IX Item "-r"
551.Ip "\f(CW\*(C`\-\-relocateable\*(C'\fR" 4
552.IX Item "--relocateable"
553Generate relocatable output\-\-\-i.e., generate an output file that can in
554turn serve as input to \f(CW\*(C`ld\*(C'\fR. This is often called \fIpartial
0285c67d
NC
555linking\fR. As a side effect, in environments that support standard Unix
556magic numbers, this option also sets the output file's magic number to
506eee22 557\&\f(CW\*(C`OMAGIC\*(C'\fR.
0285c67d
NC
558If this option is not specified, an absolute file is produced. When
559linking \*(C+ programs, this option \fIwill not\fR resolve references to
560constructors; to do that, use \fB\-Ur\fR.
561.Sp
562This option does the same thing as \fB\-i\fR.
506eee22
NC
563.Ip "\f(CW\*(C`\-R \f(CIfilename\f(CW\*(C'\fR" 4
564.IX Item "-R filename"
565.Ip "\f(CW\*(C`\-\-just\-symbols=\f(CIfilename\f(CW\*(C'\fR" 4
566.IX Item "--just-symbols=filename"
0285c67d
NC
567Read symbol names and their addresses from \fIfilename\fR, but do not
568relocate it or include it in the output. This allows your output file
569to refer symbolically to absolute locations of memory defined in other
570programs. You may use this option more than once.
571.Sp
506eee22 572For compatibility with other \s-1ELF\s0 linkers, if the \f(CW\*(C`\-R\*(C'\fR option is
0285c67d 573followed by a directory name, rather than a file name, it is treated as
506eee22
NC
574the \f(CW\*(C`\-rpath\*(C'\fR option.
575.Ip "\f(CW\*(C`\-s\*(C'\fR" 4
576.IX Item "-s"
577.Ip "\f(CW\*(C`\-\-strip\-all\*(C'\fR" 4
578.IX Item "--strip-all"
0285c67d 579Omit all symbol information from the output file.
506eee22
NC
580.Ip "\f(CW\*(C`\-S\*(C'\fR" 4
581.IX Item "-S"
582.Ip "\f(CW\*(C`\-\-strip\-debug\*(C'\fR" 4
583.IX Item "--strip-debug"
0285c67d 584Omit debugger symbol information (but not all symbols) from the output file.
506eee22
NC
585.Ip "\f(CW\*(C`\-t\*(C'\fR" 4
586.IX Item "-t"
587.Ip "\f(CW\*(C`\-\-trace\*(C'\fR" 4
588.IX Item "--trace"
589Print the names of the input files as \f(CW\*(C`ld\*(C'\fR processes them.
590.Ip "\f(CW\*(C`\-T \f(CIscriptfile\f(CW\*(C'\fR" 4
591.IX Item "-T scriptfile"
592.Ip "\f(CW\*(C`\-\-script=\f(CIscriptfile\f(CW\*(C'\fR" 4
593.IX Item "--script=scriptfile"
0285c67d 594Use \fIscriptfile\fR as the linker script. This script replaces
506eee22
NC
595\&\f(CW\*(C`ld\*(C'\fR's default linker script (rather than adding to it), so
596\&\fIcommandfile\fR must specify everything necessary to describe the
0285c67d
NC
597output file. You must use this option if you want to use a command
598which can only appear once in a linker script, such as the
506eee22
NC
599\&\f(CW\*(C`SECTIONS\*(C'\fR or \f(CW\*(C`MEMORY\*(C'\fR command. If
600\&\fIscriptfile\fR does not exist in the current directory, \f(CW\*(C`ld\*(C'\fR
0285c67d
NC
601looks for it in the directories specified by any preceding \fB\-L\fR
602options. Multiple \fB\-T\fR options accumulate.
506eee22
NC
603.Ip "\f(CW\*(C`\-u \f(CIsymbol\f(CW\*(C'\fR" 4
604.IX Item "-u symbol"
605.Ip "\f(CW\*(C`\-\-undefined=\f(CIsymbol\f(CW\*(C'\fR" 4
606.IX Item "--undefined=symbol"
0285c67d
NC
607Force \fIsymbol\fR to be entered in the output file as an undefined
608symbol. Doing this may, for example, trigger linking of additional
609modules from standard libraries. \fB\-u\fR may be repeated with
610different option arguments to enter additional undefined symbols. This
506eee22
NC
611option is equivalent to the \f(CW\*(C`EXTERN\*(C'\fR linker script command.
612.Ip "\f(CW\*(C`\-Ur\*(C'\fR" 4
613.IX Item "-Ur"
0285c67d 614For anything other than \*(C+ programs, this option is equivalent to
506eee22
NC
615\&\fB\-r\fR: it generates relocatable output\-\-\-i.e., an output file that can in
616turn serve as input to \f(CW\*(C`ld\*(C'\fR. When linking \*(C+ programs, \fB\-Ur\fR
617\&\fIdoes\fR resolve references to constructors, unlike \fB\-r\fR.
0285c67d
NC
618It does not work to use \fB\-Ur\fR on files that were themselves linked
619with \fB\-Ur\fR; once the constructor table has been built, it cannot
620be added to. Use \fB\-Ur\fR only for the last partial link, and
506eee22
NC
621\&\fB\-r\fR for the others.
622.Ip "\f(CW\*(C`\-\-unique[=\f(CI\s\-1SECTION\s0\f(CW]\*(C'\fR" 4
623.IX Item "--unique[=SECTION]"
0285c67d 624Creates a separate output section for every input section matching
506eee22 625\&\fI\s-1SECTION\s0\fR, or if the optional wildcard \fI\s-1SECTION\s0\fR argument is
0285c67d
NC
626missing, for every orphan input section. An orphan section is one not
627specifically mentioned in a linker script. You may use this option
628multiple times on the command line; It prevents the normal merging of
629input sections with the same name, overriding output section assignments
630in a linker script.
506eee22
NC
631.Ip "\f(CW\*(C`\-v\*(C'\fR" 4
632.IX Item "-v"
633.Ip "\f(CW\*(C`\-\-version\*(C'\fR" 4
634.IX Item "--version"
635.Ip "\f(CW\*(C`\-V\*(C'\fR" 4
636.IX Item "-V"
637Display the version number for \f(CW\*(C`ld\*(C'\fR. The \f(CW\*(C`\-V\*(C'\fR option also
0285c67d 638lists the supported emulations.
506eee22
NC
639.Ip "\f(CW\*(C`\-x\*(C'\fR" 4
640.IX Item "-x"
641.Ip "\f(CW\*(C`\-\-discard\-all\*(C'\fR" 4
642.IX Item "--discard-all"
0285c67d 643Delete all local symbols.
506eee22
NC
644.Ip "\f(CW\*(C`\-X\*(C'\fR" 4
645.IX Item "-X"
646.Ip "\f(CW\*(C`\-\-discard\-locals\*(C'\fR" 4
647.IX Item "--discard-locals"
0285c67d
NC
648Delete all temporary local symbols. For most targets, this is all local
649symbols whose names begin with \fBL\fR.
506eee22
NC
650.Ip "\f(CW\*(C`\-y \f(CIsymbol\f(CW\*(C'\fR" 4
651.IX Item "-y symbol"
652.Ip "\f(CW\*(C`\-\-trace\-symbol=\f(CIsymbol\f(CW\*(C'\fR" 4
653.IX Item "--trace-symbol=symbol"
0285c67d
NC
654Print the name of each linked file in which \fIsymbol\fR appears. This
655option may be given any number of times. On many systems it is necessary
656to prepend an underscore.
657.Sp
658This option is useful when you have an undefined symbol in your link but
659don't know where the reference is coming from.
506eee22
NC
660.Ip "\f(CW\*(C`\-Y \f(CIpath\f(CW\*(C'\fR" 4
661.IX Item "-Y path"
0285c67d
NC
662Add \fIpath\fR to the default library search path. This option exists
663for Solaris compatibility.
506eee22
NC
664.Ip "\f(CW\*(C`\-z \f(CIkeyword\f(CW\*(C'\fR" 4
665.IX Item "-z keyword"
666The recognized keywords are \f(CW\*(C`initfirst\*(C'\fR, \f(CW\*(C`interpose\*(C'\fR,
667\&\f(CW\*(C`loadfltr\*(C'\fR, \f(CW\*(C`nodefaultlib\*(C'\fR, \f(CW\*(C`nodelete\*(C'\fR, \f(CW\*(C`nodlopen\*(C'\fR,
668\&\f(CW\*(C`nodump\*(C'\fR, \f(CW\*(C`now\*(C'\fR and \f(CW\*(C`origin\*(C'\fR. The other keywords are
669ignored for Solaris compatibility. \f(CW\*(C`initfirst\*(C'\fR marks the object
0285c67d 670to be initialized first at runtime before any other objects.
506eee22
NC
671\&\f(CW\*(C`interpose\*(C'\fR marks the object that its symbol table interposes
672before all symbols but the primary executable. \f(CW\*(C`loadfltr\*(C'\fR marks
0285c67d 673the object that its filtees be processed immediately at runtime.
506eee22 674\&\f(CW\*(C`nodefaultlib\*(C'\fR marks the object that the search for dependencies
0285c67d 675of this object will ignore any default library search paths.
506eee22
NC
676\&\f(CW\*(C`nodelete\*(C'\fR marks the object shouldn't be unloaded at runtime.
677\&\f(CW\*(C`nodlopen\*(C'\fR marks the object not available to \f(CW\*(C`dlopen\*(C'\fR.
678\&\f(CW\*(C`nodump\*(C'\fR marks the object can not be dumped by \f(CW\*(C`dldump\*(C'\fR.
679\&\f(CW\*(C`now\*(C'\fR marks the object with the non-lazy runtime binding.
680\&\f(CW\*(C`origin\*(C'\fR marks the object may contain \f(CW$ORIGIN\fR.
681\&\f(CW\*(C`defs\*(C'\fR disallows undefined symbols.
682.Ip "\f(CW\*(C`\-( \f(CIarchives\f(CW \-)\*(C'\fR" 4
683.IX Item "-( archives -)"
684.Ip "\f(CW\*(C`\-\-start\-group \f(CIarchives\f(CW \-\-end\-group\*(C'\fR" 4
685.IX Item "--start-group archives --end-group"
0285c67d
NC
686The \fIarchives\fR should be a list of archive files. They may be
687either explicit file names, or \fB\-l\fR options.
688.Sp
689The specified archives are searched repeatedly until no new undefined
690references are created. Normally, an archive is searched only once in
691the order that it is specified on the command line. If a symbol in that
692archive is needed to resolve an undefined symbol referred to by an
693object in an archive that appears later on the command line, the linker
694would not be able to resolve that reference. By grouping the archives,
695they all be searched repeatedly until all possible references are
696resolved.
697.Sp
698Using this option has a significant performance cost. It is best to use
699it only when there are unavoidable circular references between two or
700more archives.
506eee22
NC
701.Ip "\f(CW\*(C`\-assert \f(CIkeyword\f(CW\*(C'\fR" 4
702.IX Item "-assert keyword"
0285c67d 703This option is ignored for SunOS compatibility.
506eee22
NC
704.Ip "\f(CW\*(C`\-Bdynamic\*(C'\fR" 4
705.IX Item "-Bdynamic"
706.Ip "\f(CW\*(C`\-dy\*(C'\fR" 4
707.IX Item "-dy"
708.Ip "\f(CW\*(C`\-call_shared\*(C'\fR" 4
709.IX Item "-call_shared"
252b5132
RH
710Link against dynamic libraries. This is only meaningful on platforms
711for which shared libraries are supported. This option is normally the
0285c67d
NC
712default on such platforms. The different variants of this option are
713for compatibility with various systems. You may use this option
714multiple times on the command line: it affects library searching for
506eee22
NC
715\&\f(CW\*(C`\-l\*(C'\fR options which follow it.
716.Ip "\f(CW\*(C`\-Bgroup\*(C'\fR" 4
717.IX Item "-Bgroup"
718Set the \f(CW\*(C`DF_1_GROUP\*(C'\fR flag in the \f(CW\*(C`DT_FLAGS_1\*(C'\fR entry in the dynamic
0285c67d
NC
719section. This causes the runtime linker to handle lookups in this
720object and its dependencies to be performed only inside the group.
506eee22 721\&\f(CW\*(C`\-\-no\-undefined\*(C'\fR is implied. This option is only meaningful on \s-1ELF\s0
0285c67d 722platforms which support shared libraries.
506eee22
NC
723.Ip "\f(CW\*(C`\-Bstatic\*(C'\fR" 4
724.IX Item "-Bstatic"
725.Ip "\f(CW\*(C`\-dn\*(C'\fR" 4
726.IX Item "-dn"
727.Ip "\f(CW\*(C`\-non_shared\*(C'\fR" 4
728.IX Item "-non_shared"
729.Ip "\f(CW\*(C`\-static\*(C'\fR" 4
730.IX Item "-static"
0285c67d
NC
731Do not link against shared libraries. This is only meaningful on
732platforms for which shared libraries are supported. The different
733variants of this option are for compatibility with various systems. You
734may use this option multiple times on the command line: it affects
506eee22
NC
735library searching for \f(CW\*(C`\-l\*(C'\fR options which follow it.
736.Ip "\f(CW\*(C`\-Bsymbolic\*(C'\fR" 4
737.IX Item "-Bsymbolic"
0285c67d
NC
738When creating a shared library, bind references to global symbols to the
739definition within the shared library, if any. Normally, it is possible
740for a program linked against a shared library to override the definition
741within the shared library. This option is only meaningful on \s-1ELF\s0
742platforms which support shared libraries.
506eee22
NC
743.Ip "\f(CW\*(C`\-\-check\-sections\*(C'\fR" 4
744.IX Item "--check-sections"
745.Ip "\f(CW\*(C`\-\-no\-check\-sections\*(C'\fR" 4
746.IX Item "--no-check-sections"
0285c67d
NC
747Asks the linker \fInot\fR to check section addresses after they have
748been assigned to see if there any overlaps. Normally the linker will
749perform this check, and if it finds any overlaps it will produce
750suitable error messages. The linker does know about, and does make
751allowances for sections in overlays. The default behaviour can be
506eee22
NC
752restored by using the command line switch \fB\*(--check-sections\fR.
753.Ip "\f(CW\*(C`\-\-cref\*(C'\fR" 4
754.IX Item "--cref"
252b5132
RH
755Output a cross reference table. If a linker map file is being
756generated, the cross reference table is printed to the map file.
757Otherwise, it is printed on the standard output.
0285c67d
NC
758.Sp
759The format of the table is intentionally simple, so that it may be
760easily processed by a script if necessary. The symbols are printed out,
761sorted by name. For each symbol, a list of file names is given. If the
762symbol is defined, the first file listed is the location of the
763definition. The remaining files contain references to the symbol.
506eee22
NC
764.Ip "\f(CW\*(C`\-\-defsym \f(CIsymbol\f(CW=\f(CIexpression\f(CW\*(C'\fR" 4
765.IX Item "--defsym symbol=expression"
252b5132 766Create a global symbol in the output file, containing the absolute
0285c67d 767address given by \fIexpression\fR. You may use this option as many
252b5132 768times as necessary to define multiple symbols in the command line. A
0285c67d 769limited form of arithmetic is supported for the \fIexpression\fR in this
252b5132 770context: you may give a hexadecimal constant or the name of an existing
506eee22 771symbol, or use \f(CW\*(C`+\*(C'\fR and \f(CW\*(C`\-\*(C'\fR to add or subtract hexadecimal
252b5132 772constants or symbols. If you need more elaborate expressions, consider
0285c67d
NC
773using the linker command language from a script. \fINote:\fR there should be no white
774space between \fIsymbol\fR, the equals sign (``\fB=\fR''), and
506eee22
NC
775\&\fIexpression\fR.
776.Ip "\f(CW\*(C`\-\-demangle[=\f(CIstyle\f(CW]\*(C'\fR" 4
777.IX Item "--demangle[=style]"
778.Ip "\f(CW\*(C`\-\-no\-demangle\*(C'\fR" 4
779.IX Item "--no-demangle"
0285c67d
NC
780These options control whether to demangle symbol names in error messages
781and other output. When the linker is told to demangle, it tries to
782present symbol names in a readable fashion: it strips leading
783underscores if they are used by the object file format, and converts \*(C+
784mangled symbol names into user readable names. Different compilers have
785different mangling styles. The optional demangling style argument can be used
786to choose an appropriate demangling style for your compiler. The linker will
787demangle by default unless the environment variable \fB\s-1COLLECT_NO_DEMANGLE\s0\fR
252b5132 788is set. These options may be used to override the default.
506eee22
NC
789.Ip "\f(CW\*(C`\-\-dynamic\-linker \f(CIfile\f(CW\*(C'\fR" 4
790.IX Item "--dynamic-linker file"
0285c67d
NC
791Set the name of the dynamic linker. This is only meaningful when
792generating dynamically linked \s-1ELF\s0 executables. The default dynamic
793linker is normally correct; don't use this unless you know what you are
794doing.
506eee22
NC
795.Ip "\f(CW\*(C`\-\-embedded\-relocs\*(C'\fR" 4
796.IX Item "--embedded-relocs"
0285c67d
NC
797This option is only meaningful when linking \s-1MIPS\s0 embedded \s-1PIC\s0 code,
798generated by the \-membedded-pic option to the \s-1GNU\s0 compiler and
799assembler. It causes the linker to create a table which may be used at
800runtime to relocate any data which was statically initialized to pointer
801values. See the code in testsuite/ld-empic for details.
506eee22
NC
802.Ip "\f(CW\*(C`\-\-fatal\-warnings\*(C'\fR" 4
803.IX Item "--fatal-warnings"
7ce691ae 804Treat all warnings as errors.
506eee22
NC
805.Ip "\f(CW\*(C`\-\-force\-exe\-suffix\*(C'\fR" 4
806.IX Item "--force-exe-suffix"
0285c67d
NC
807Make sure that an output file has a .exe suffix.
808.Sp
809If a successfully built fully linked output file does not have a
506eee22
NC
810\&\f(CW\*(C`.exe\*(C'\fR or \f(CW\*(C`.dll\*(C'\fR suffix, this option forces the linker to copy
811the output file to one of the same name with a \f(CW\*(C`.exe\*(C'\fR suffix. This
0285c67d
NC
812option is useful when using unmodified Unix makefiles on a Microsoft
813Windows host, since some versions of Windows won't run an image unless
506eee22
NC
814it ends in a \f(CW\*(C`.exe\*(C'\fR suffix.
815.Ip "\f(CW\*(C`\-\-no\-gc\-sections\*(C'\fR" 4
816.IX Item "--no-gc-sections"
817.Ip "\f(CW\*(C`\-\-gc\-sections\*(C'\fR" 4
818.IX Item "--gc-sections"
0285c67d
NC
819Enable garbage collection of unused input sections. It is ignored on
820targets that do not support this option. This option is not compatible
821with \fB\-r\fR, nor should it be used with dynamic linking. The default
822behaviour (of not performing this garbage collection) can be restored by
506eee22
NC
823specifying \fB\*(--no-gc-sections\fR on the command line.
824.Ip "\f(CW\*(C`\-\-help\*(C'\fR" 4
825.IX Item "--help"
252b5132 826Print a summary of the command-line options on the standard output and exit.
506eee22
NC
827.Ip "\f(CW\*(C`\-\-target\-help\*(C'\fR" 4
828.IX Item "--target-help"
0285c67d 829Print a summary of all target specific options on the standard output and exit.
506eee22
NC
830.Ip "\f(CW\*(C`\-Map \f(CImapfile\f(CW\*(C'\fR" 4
831.IX Item "-Map mapfile"
0285c67d 832Print a link map to the file \fImapfile\fR. See the description of the
506eee22
NC
833\&\fB\-M\fR option, above.
834.Ip "\f(CW\*(C`\-\-no\-keep\-memory\*(C'\fR" 4
835.IX Item "--no-keep-memory"
836\&\f(CW\*(C`ld\*(C'\fR normally optimizes for speed over memory usage by caching the
837symbol tables of input files in memory. This option tells \f(CW\*(C`ld\*(C'\fR to
0285c67d 838instead optimize for memory usage, by rereading the symbol tables as
506eee22 839necessary. This may be required if \f(CW\*(C`ld\*(C'\fR runs out of memory space
0285c67d 840while linking a large executable.
506eee22
NC
841.Ip "\f(CW\*(C`\-\-no\-undefined\*(C'\fR" 4
842.IX Item "--no-undefined"
843.Ip "\f(CW\*(C`\-z defs\*(C'\fR" 4
844.IX Item "-z defs"
0285c67d
NC
845Normally when creating a non-symbolic shared library, undefined symbols
846are allowed and left to be resolved by the runtime loader. These options
847disallows such undefined symbols.
506eee22
NC
848.Ip "\f(CW\*(C`\-\-allow\-shlib\-undefined\*(C'\fR" 4
849.IX Item "--allow-shlib-undefined"
850Allow undefined symbols in shared objects even when \-\-no-undefined is
0285c67d
NC
851set. The net result will be that undefined symbols in regular objects
852will still trigger an error, but undefined symbols in shared objects
853will be ignored. The implementation of no_undefined makes the
854assumption that the runtime linker will choke on undefined symbols.
855However there is at least one system (BeOS) where undefined symbols in
856shared libraries is normal since the kernel patches them at load time to
857select which function is most appropriate for the current architecture.
858I.E. dynamically select an appropriate memset function. Apparently it
859is also normal for \s-1HPPA\s0 shared libraries to have undefined symbols.
506eee22
NC
860.Ip "\f(CW\*(C`\-\-no\-warn\-mismatch\*(C'\fR" 4
861.IX Item "--no-warn-mismatch"
862Normally \f(CW\*(C`ld\*(C'\fR will give an error if you try to link together input
0285c67d
NC
863files that are mismatched for some reason, perhaps because they have
864been compiled for different processors or for different endiannesses.
506eee22 865This option tells \f(CW\*(C`ld\*(C'\fR that it should silently permit such possible
0285c67d
NC
866errors. This option should only be used with care, in cases when you
867have taken some special action that ensures that the linker errors are
868inappropriate.
506eee22
NC
869.Ip "\f(CW\*(C`\-\-no\-whole\-archive\*(C'\fR" 4
870.IX Item "--no-whole-archive"
871Turn off the effect of the \f(CW\*(C`\-\-whole\-archive\*(C'\fR option for subsequent
0285c67d 872archive files.
506eee22
NC
873.Ip "\f(CW\*(C`\-\-noinhibit\-exec\*(C'\fR" 4
874.IX Item "--noinhibit-exec"
0285c67d 875Retain the executable output file whenever it is still usable.
252b5132 876Normally, the linker will not produce an output file if it encounters
0285c67d
NC
877errors during the link process; it exits without writing an output file
878when it issues any error whatsoever.
506eee22
NC
879.Ip "\f(CW\*(C`\-\-oformat \f(CIoutput\-format\f(CW\*(C'\fR" 4
880.IX Item "--oformat output-format"
881\&\f(CW\*(C`ld\*(C'\fR may be configured to support more than one kind of object
882file. If your \f(CW\*(C`ld\*(C'\fR is configured this way, you can use the
883\&\fB\*(--oformat\fR option to specify the binary format for the output
884object file. Even when \f(CW\*(C`ld\*(C'\fR is configured to support alternative
885object formats, you don't usually need to specify this, as \f(CW\*(C`ld\*(C'\fR
0285c67d
NC
886should be configured to produce as a default output format the most
887usual format on each machine. \fIoutput-format\fR is a text string, the
888name of a particular format supported by the \s-1BFD\s0 libraries. (You can
889list the available binary formats with \fBobjdump \-i\fR.) The script
506eee22 890command \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR can also specify the output format, but
0285c67d 891this option overrides it.
506eee22
NC
892.Ip "\f(CW\*(C`\-qmagic\*(C'\fR" 4
893.IX Item "-qmagic"
0285c67d 894This option is ignored for Linux compatibility.
506eee22
NC
895.Ip "\f(CW\*(C`\-Qy\*(C'\fR" 4
896.IX Item "-Qy"
0285c67d 897This option is ignored for \s-1SVR4\s0 compatibility.
506eee22
NC
898.Ip "\f(CW\*(C`\-\-relax\*(C'\fR" 4
899.IX Item "--relax"
0285c67d
NC
900An option with machine dependent effects.
901This option is only supported on a few targets.
902.Sp
506eee22 903On some platforms, the \fB\*(--relax\fR option performs global
0285c67d
NC
904optimizations that become possible when the linker resolves addressing
905in the program, such as relaxing address modes and synthesizing new
906instructions in the output object file.
907.Sp
908On some platforms these link time global optimizations may make symbolic
909debugging of the resulting executable impossible.
910This is known to be
911the case for the Matsushita \s-1MN10200\s0 and \s-1MN10300\s0 family of processors.
912.Sp
506eee22 913On platforms where this is not supported, \fB\*(--relax\fR is accepted,
0285c67d 914but ignored.
506eee22
NC
915.Ip "\f(CW\*(C`\-\-retain\-symbols\-file \f(CIfilename\f(CW\*(C'\fR" 4
916.IX Item "--retain-symbols-file filename"
0285c67d
NC
917Retain \fIonly\fR the symbols listed in the file \fIfilename\fR,
918discarding all others. \fIfilename\fR is simply a flat file, with one
919symbol name per line. This option is especially useful in environments
920(such as VxWorks)
921where a large global symbol table is accumulated gradually, to conserve
922run-time memory.
923.Sp
506eee22 924\&\fB\*(--retain-symbols-file\fR does \fInot\fR discard undefined symbols,
0285c67d
NC
925or symbols needed for relocations.
926.Sp
506eee22 927You may only specify \fB\*(--retain-symbols-file\fR once in the command
0285c67d 928line. It overrides \fB\-s\fR and \fB\-S\fR.
506eee22
NC
929.Ip "\f(CW\*(C`\-rpath \f(CIdir\f(CW\*(C'\fR" 4
930.IX Item "-rpath dir"
252b5132 931Add a directory to the runtime library search path. This is used when
506eee22 932linking an \s-1ELF\s0 executable with shared objects. All \f(CW\*(C`\-rpath\*(C'\fR
252b5132 933arguments are concatenated and passed to the runtime linker, which uses
506eee22 934them to locate shared objects at runtime. The \f(CW\*(C`\-rpath\*(C'\fR option is
0285c67d
NC
935also used when locating shared objects which are needed by shared
936objects explicitly included in the link; see the description of the
506eee22
NC
937\&\f(CW\*(C`\-rpath\-link\*(C'\fR option. If \f(CW\*(C`\-rpath\*(C'\fR is not used when linking an
938\&\s-1ELF\s0 executable, the contents of the environment variable
939\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR will be used if it is defined.
0285c67d 940.Sp
506eee22 941The \f(CW\*(C`\-rpath\*(C'\fR option may also be used on SunOS. By default, on
0285c67d 942SunOS, the linker will form a runtime search patch out of all the
506eee22
NC
943\&\f(CW\*(C`\-L\*(C'\fR options it is given. If a \f(CW\*(C`\-rpath\*(C'\fR option is used, the
944runtime search path will be formed exclusively using the \f(CW\*(C`\-rpath\*(C'\fR
945options, ignoring the \f(CW\*(C`\-L\*(C'\fR options. This can be useful when using
946gcc, which adds many \f(CW\*(C`\-L\*(C'\fR options which may be on \s-1NFS\s0 mounted
0285c67d
NC
947filesystems.
948.Sp
506eee22 949For compatibility with other \s-1ELF\s0 linkers, if the \f(CW\*(C`\-R\*(C'\fR option is
0285c67d 950followed by a directory name, rather than a file name, it is treated as
506eee22
NC
951the \f(CW\*(C`\-rpath\*(C'\fR option.
952.Ip "\f(CW\*(C`\-rpath\-link \f(CI\s\-1DIR\s0\f(CW\*(C'\fR" 4
953.IX Item "-rpath-link DIR"
0285c67d 954When using \s-1ELF\s0 or SunOS, one shared library may require another. This
506eee22 955happens when an \f(CW\*(C`ld \-shared\*(C'\fR link includes a shared library as one
0285c67d
NC
956of the input files.
957.Sp
252b5132 958When the linker encounters such a dependency when doing a non-shared,
0285c67d 959non-relocatable link, it will automatically try to locate the required
252b5132 960shared library and include it in the link, if it is not included
506eee22 961explicitly. In such a case, the \f(CW\*(C`\-rpath\-link\*(C'\fR option
0285c67d 962specifies the first set of directories to search. The
506eee22 963\&\f(CW\*(C`\-rpath\-link\*(C'\fR option may specify a sequence of directory names
0285c67d
NC
964either by specifying a list of names separated by colons, or by
965appearing multiple times.
966.Sp
967This option should be used with caution as it overrides the search path
968that may have been hard compiled into a shared library. In such a case it
969is possible to use unintentionally a different search path than the
970runtime linker would do.
971.Sp
972The linker uses the following search paths to locate required shared
973libraries.
506eee22
NC
974.RS 4
975.Ip "1." 4
976Any directories specified by \f(CW\*(C`\-rpath\-link\*(C'\fR options.
977.Ip "2." 4
978Any directories specified by \f(CW\*(C`\-rpath\*(C'\fR options. The difference
979between \f(CW\*(C`\-rpath\*(C'\fR and \f(CW\*(C`\-rpath\-link\*(C'\fR is that directories
980specified by \f(CW\*(C`\-rpath\*(C'\fR options are included in the executable and
981used at runtime, whereas the \f(CW\*(C`\-rpath\-link\*(C'\fR option is only effective
0285c67d 982at link time. It is for the native linker only.
506eee22
NC
983.Ip "3." 4
984On an \s-1ELF\s0 system, if the \f(CW\*(C`\-rpath\*(C'\fR and \f(CW\*(C`rpath\-link\*(C'\fR options
0285c67d 985were not used, search the contents of the environment variable
506eee22
NC
986\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR. It is for the native linker only.
987.Ip "4." 4
988On SunOS, if the \f(CW\*(C`\-rpath\*(C'\fR option was not used, search any
989directories specified using \f(CW\*(C`\-L\*(C'\fR options.
990.Ip "5." 4
0285c67d 991For a native linker, the contents of the environment variable
506eee22
NC
992\&\f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR.
993.Ip "6." 4
994For a native \s-1ELF\s0 linker, the directories in \f(CW\*(C`DT_RUNPATH\*(C'\fR or
995\&\f(CW\*(C`DT_RPATH\*(C'\fR of a shared library are searched for shared
996libraries needed by it. The \f(CW\*(C`DT_RPATH\*(C'\fR entries are ignored if
997\&\f(CW\*(C`DT_RUNPATH\*(C'\fR entries exist.
998.Ip "7." 4
0285c67d 999The default directories, normally \fI/lib\fR and \fI/usr/lib\fR.
506eee22 1000.Ip "8." 4
0285c67d
NC
1001For a native linker on an \s-1ELF\s0 system, if the file \fI/etc/ld.so.conf\fR
1002exists, the list of directories found in that file.
506eee22
NC
1003.RE
1004.RS 4
0285c67d 1005.Sp
252b5132
RH
1006If the required shared library is not found, the linker will issue a
1007warning and continue with the link.
506eee22
NC
1008.RE
1009.Ip "\f(CW\*(C`\-shared\*(C'\fR" 4
1010.IX Item "-shared"
1011.Ip "\f(CW\*(C`\-Bshareable\*(C'\fR" 4
1012.IX Item "-Bshareable"
0285c67d
NC
1013Create a shared library. This is currently only supported on \s-1ELF\s0, \s-1XCOFF\s0
1014and SunOS platforms. On SunOS, the linker will automatically create a
506eee22 1015shared library if the \f(CW\*(C`\-e\*(C'\fR option is not used and there are
0285c67d 1016undefined symbols in the link.
506eee22
NC
1017.Ip "\f(CW\*(C`\-\-sort\-common\*(C'\fR" 4
1018.IX Item "--sort-common"
1019This option tells \f(CW\*(C`ld\*(C'\fR to sort the common symbols by size when it
0285c67d
NC
1020places them in the appropriate output sections. First come all the one
1021byte symbols, then all the two bytes, then all the four bytes, and then
1022everything else. This is to prevent gaps between symbols due to
1023alignment constraints.
506eee22
NC
1024.Ip "\f(CW\*(C`\-\-split\-by\-file [\f(CIsize\f(CW]\*(C'\fR" 4
1025.IX Item "--split-by-file [size]"
1026Similar to \f(CW\*(C`\-\-split\-by\-reloc\*(C'\fR but creates a new output section for
0285c67d
NC
1027each input file when \fIsize\fR is reached. \fIsize\fR defaults to a
1028size of 1 if not given.
506eee22
NC
1029.Ip "\f(CW\*(C`\-\-split\-by\-reloc [\f(CIcount\f(CW]\*(C'\fR" 4
1030.IX Item "--split-by-reloc [count]"
0285c67d
NC
1031Tries to creates extra sections in the output file so that no single
1032output section in the file contains more than \fIcount\fR relocations.
1033This is useful when generating huge relocatable files for downloading into
1034certain real time kernels with the \s-1COFF\s0 object file format; since \s-1COFF\s0
1035cannot represent more than 65535 relocations in a single section. Note
1036that this will fail to work with object file formats which do not
252b5132 1037support arbitrary sections. The linker will not split up individual
0285c67d
NC
1038input sections for redistribution, so if a single input section contains
1039more than \fIcount\fR relocations one output section will contain that
1040many relocations. \fIcount\fR defaults to a value of 32768.
506eee22
NC
1041.Ip "\f(CW\*(C`\-\-stats\*(C'\fR" 4
1042.IX Item "--stats"
0285c67d
NC
1043Compute and display statistics about the operation of the linker, such
1044as execution time and memory usage.
506eee22
NC
1045.Ip "\f(CW\*(C`\-\-traditional\-format\*(C'\fR" 4
1046.IX Item "--traditional-format"
1047For some targets, the output of \f(CW\*(C`ld\*(C'\fR is different in some ways from
1048the output of some existing linker. This switch requests \f(CW\*(C`ld\*(C'\fR to
0285c67d
NC
1049use the traditional format instead.
1050.Sp
506eee22 1051For example, on SunOS, \f(CW\*(C`ld\*(C'\fR combines duplicate entries in the
0285c67d
NC
1052symbol string table. This can reduce the size of an output file with
1053full debugging information by over 30 percent. Unfortunately, the SunOS
506eee22
NC
1054\&\f(CW\*(C`dbx\*(C'\fR program can not read the resulting program (\f(CW\*(C`gdb\*(C'\fR has no
1055trouble). The \fB\*(--traditional-format\fR switch tells \f(CW\*(C`ld\*(C'\fR to not
0285c67d 1056combine duplicate entries.
506eee22
NC
1057.Ip "\f(CW\*(C`\-\-section\-start \f(CIsectionname\f(CW=\f(CIorg\f(CW\*(C'\fR" 4
1058.IX Item "--section-start sectionname=org"
176355da 1059Locate a section in the output file at the absolute
0285c67d 1060address given by \fIorg\fR. You may use this option as many
176355da 1061times as necessary to locate multiple sections in the command
0285c67d 1062line.
506eee22 1063\&\fIorg\fR must be a single hexadecimal integer;
0285c67d 1064for compatibility with other linkers, you may omit the leading
506eee22 1065\&\fB0x\fR usually associated with hexadecimal values. \fINote:\fR there
0285c67d
NC
1066should be no white space between \fIsectionname\fR, the equals
1067sign (``\fB=\fR''), and \fIorg\fR.
506eee22
NC
1068.Ip "\f(CW\*(C`\-Tbss \f(CIorg\f(CW\*(C'\fR" 4
1069.IX Item "-Tbss org"
1070.Ip "\f(CW\*(C`\-Tdata \f(CIorg\f(CW\*(C'\fR" 4
1071.IX Item "-Tdata org"
1072.Ip "\f(CW\*(C`\-Ttext \f(CIorg\f(CW\*(C'\fR" 4
1073.IX Item "-Ttext org"
1074Use \fIorg\fR as the starting address for\-\-\-respectively\-\-\-the
1075\&\f(CW\*(C`bss\*(C'\fR, \f(CW\*(C`data\*(C'\fR, or the \f(CW\*(C`text\*(C'\fR segment of the output file.
1076\&\fIorg\fR must be a single hexadecimal integer;
0285c67d 1077for compatibility with other linkers, you may omit the leading
506eee22
NC
1078\&\fB0x\fR usually associated with hexadecimal values.
1079.Ip "\f(CW\*(C`\-\-dll\-verbose\*(C'\fR" 4
1080.IX Item "--dll-verbose"
1081.Ip "\f(CW\*(C`\-\-verbose\*(C'\fR" 4
1082.IX Item "--verbose"
1083Display the version number for \f(CW\*(C`ld\*(C'\fR and list the linker emulations
0285c67d
NC
1084supported. Display which input files can and cannot be opened. Display
1085the linker script if using a default builtin script.
506eee22
NC
1086.Ip "\f(CW\*(C`\-\-version\-script=\f(CIversion\-scriptfile\f(CW\*(C'\fR" 4
1087.IX Item "--version-script=version-scriptfile"
0285c67d
NC
1088Specify the name of a version script to the linker. This is typically
1089used when creating shared libraries to specify additional information
1090about the version heirarchy for the library being created. This option
1091is only meaningful on \s-1ELF\s0 platforms which support shared libraries.
506eee22
NC
1092.Ip "\f(CW\*(C`\-\-warn\-common\*(C'\fR" 4
1093.IX Item "--warn-common"
252b5132
RH
1094Warn when a common symbol is combined with another common symbol or with
1095a symbol definition. Unix linkers allow this somewhat sloppy practice,
1096but linkers on some other operating systems do not. This option allows
1097you to find potential problems from combining global symbols.
0285c67d
NC
1098Unfortunately, some C libraries use this practice, so you may get some
1099warnings about symbols in the libraries as well as in your programs.
1100.Sp
1101There are three kinds of global symbols, illustrated here by C examples:
506eee22
NC
1102.RS 4
1103.Ip "\fBint i = 1;\fR" 4
1104.IX Item "int i = 1;"
0285c67d
NC
1105A definition, which goes in the initialized data section of the output
1106file.
506eee22
NC
1107.Ip "\fBextern int i;\fR" 4
1108.IX Item "extern int i;"
0285c67d
NC
1109An undefined reference, which does not allocate space.
1110There must be either a definition or a common symbol for the
1111variable somewhere.
506eee22
NC
1112.Ip "\fBint i;\fR" 4
1113.IX Item "int i;"
0285c67d
NC
1114A common symbol. If there are only (one or more) common symbols for a
1115variable, it goes in the uninitialized data area of the output file.
1116The linker merges multiple common symbols for the same variable into a
1117single symbol. If they are of different sizes, it picks the largest
1118size. The linker turns a common symbol into a declaration, if there is
1119a definition of the same variable.
506eee22
NC
1120.RE
1121.RS 4
0285c67d 1122.Sp
506eee22 1123The \fB\*(--warn-common\fR option can produce five kinds of warnings.
0285c67d
NC
1124Each warning consists of a pair of lines: the first describes the symbol
1125just encountered, and the second describes the previous symbol
1126encountered with the same name. One or both of the two symbols will be
1127a common symbol.
506eee22
NC
1128.RS 4
1129.RE
1130.Ip "1." 4
0285c67d
NC
1131Turning a common symbol into a reference, because there is already a
1132definition for the symbol.
506eee22
NC
1133.Sp
1134.Vb 3
1135\& I<file>(I<section>): warning: common of `I<symbol>'
1136\& overridden by definition
1137\& I<file>(I<section>): warning: defined here
1138.Ve
1139.Ip "2." 4
0285c67d
NC
1140Turning a common symbol into a reference, because a later definition for
1141the symbol is encountered. This is the same as the previous case,
1142except that the symbols are encountered in a different order.
506eee22
NC
1143.Sp
1144.Vb 3
1145\& I<file>(I<section>): warning: definition of `I<symbol>'
1146\& overriding common
1147\& I<file>(I<section>): warning: common is here
1148.Ve
1149.Ip "3." 4
0285c67d 1150Merging a common symbol with a previous same-sized common symbol.
506eee22
NC
1151.Sp
1152.Vb 3
1153\& I<file>(I<section>): warning: multiple common
1154\& of `I<symbol>'
1155\& I<file>(I<section>): warning: previous common is here
1156.Ve
1157.Ip "4." 4
0285c67d 1158Merging a common symbol with a previous larger common symbol.
506eee22
NC
1159.Sp
1160.Vb 3
1161\& I<file>(I<section>): warning: common of `I<symbol>'
1162\& overridden by larger common
1163\& I<file>(I<section>): warning: larger common is here
1164.Ve
1165.Ip "5." 4
0285c67d
NC
1166Merging a common symbol with a previous smaller common symbol. This is
1167the same as the previous case, except that the symbols are
1168encountered in a different order.
506eee22
NC
1169.Sp
1170.Vb 3
1171\& I<file>(I<section>): warning: common of `I<symbol>'
1172\& overriding smaller common
1173\& I<file>(I<section>): warning: smaller common is here
1174.Ve
1175.RE
1176.RS 4
1177.RE
1178.Ip "\f(CW\*(C`\-\-warn\-constructors\*(C'\fR" 4
1179.IX Item "--warn-constructors"
0285c67d
NC
1180Warn if any global constructors are used. This is only useful for a few
1181object file formats. For formats like \s-1COFF\s0 or \s-1ELF\s0, the linker can not
1182detect the use of global constructors.
506eee22
NC
1183.Ip "\f(CW\*(C`\-\-warn\-multiple\-gp\*(C'\fR" 4
1184.IX Item "--warn-multiple-gp"
0285c67d
NC
1185Warn if multiple global pointer values are required in the output file.
1186This is only meaningful for certain processors, such as the Alpha.
1187Specifically, some processors put large-valued constants in a special
1188section. A special register (the global pointer) points into the middle
1189of this section, so that constants can be loaded efficiently via a
1190base-register relative addressing mode. Since the offset in
1191base-register relative mode is fixed and relatively small (e.g., 16
1192bits), this limits the maximum size of the constant pool. Thus, in
1193large programs, it is often necessary to use multiple global pointer
1194values in order to be able to address all possible constants. This
1195option causes a warning to be issued whenever this case occurs.
506eee22
NC
1196.Ip "\f(CW\*(C`\-\-warn\-once\*(C'\fR" 4
1197.IX Item "--warn-once"
252b5132
RH
1198Only warn once for each undefined symbol, rather than once per module
1199which refers to it.
506eee22
NC
1200.Ip "\f(CW\*(C`\-\-warn\-section\-align\*(C'\fR" 4
1201.IX Item "--warn-section-align"
252b5132
RH
1202Warn if the address of an output section is changed because of
1203alignment. Typically, the alignment will be set by an input section.
1204The address will only be changed if it not explicitly specified; that
506eee22 1205is, if the \f(CW\*(C`SECTIONS\*(C'\fR command does not specify a start address for
0285c67d 1206the section.
506eee22
NC
1207.Ip "\f(CW\*(C`\-\-whole\-archive\*(C'\fR" 4
1208.IX Item "--whole-archive"
252b5132 1209For each archive mentioned on the command line after the
506eee22 1210\&\f(CW\*(C`\-\-whole\-archive\*(C'\fR option, include every object file in the archive
0285c67d
NC
1211in the link, rather than searching the archive for the required object
1212files. This is normally used to turn an archive file into a shared
1213library, forcing every object to be included in the resulting shared
1214library. This option may be used more than once.
1215.Sp
1216Two notes when using this option from gcc: First, gcc doesn't know
506eee22
NC
1217about this option, so you have to use \f(CW\*(C`\-Wl,\-whole\-archive\*(C'\fR.
1218Second, don't forget to use \f(CW\*(C`\-Wl,\-no\-whole\-archive\*(C'\fR after your
0285c67d
NC
1219list of archives, because gcc will add its own list of archives to
1220your link and you may not want this flag to affect those as well.
506eee22
NC
1221.Ip "\f(CW\*(C`\-\-wrap \f(CIsymbol\f(CW\*(C'\fR" 4
1222.IX Item "--wrap symbol"
0285c67d 1223Use a wrapper function for \fIsymbol\fR. Any undefined reference to
506eee22
NC
1224\&\fIsymbol\fR will be resolved to \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR. Any
1225undefined reference to \f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR will be resolved to
1226\&\fIsymbol\fR.
0285c67d
NC
1227.Sp
1228This can be used to provide a wrapper for a system function. The
506eee22 1229wrapper function should be called \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR. If it
0285c67d 1230wishes to call the system function, it should call
506eee22 1231\&\f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR.
0285c67d
NC
1232.Sp
1233Here is a trivial example:
1234.Sp
506eee22 1235.Vb 6
0285c67d
NC
1236\& void *
1237\& __wrap_malloc (int c)
1238\& {
1239\& printf ("malloc called with %ld\en", c);
1240\& return __real_malloc (c);
1241\& }
1242.Ve
506eee22
NC
1243If you link other code with this file using \f(CW\*(C`\-\-wrap malloc\*(C'\fR, then
1244all calls to \f(CW\*(C`malloc\*(C'\fR will call the function \f(CW\*(C`_\|_wrap_malloc\*(C'\fR
1245instead. The call to \f(CW\*(C`_\|_real_malloc\*(C'\fR in \f(CW\*(C`_\|_wrap_malloc\*(C'\fR will
1246call the real \f(CW\*(C`malloc\*(C'\fR function.
0285c67d 1247.Sp
506eee22
NC
1248You may wish to provide a \f(CW\*(C`_\|_real_malloc\*(C'\fR function as well, so that
1249links without the \f(CW\*(C`\-\-wrap\*(C'\fR option will succeed. If you do this,
1250you should not put the definition of \f(CW\*(C`_\|_real_malloc\*(C'\fR in the same
1251file as \f(CW\*(C`_\|_wrap_malloc\*(C'\fR; if you do, the assembler may resolve the
1252call before the linker has a chance to wrap it to \f(CW\*(C`malloc\*(C'\fR.
1253.Ip "\f(CW\*(C`\-\-enable\-new\-dtags\*(C'\fR" 4
1254.IX Item "--enable-new-dtags"
1255.Ip "\f(CW\*(C`\-\-disable\-new\-dtags\*(C'\fR" 4
1256.IX Item "--disable-new-dtags"
0285c67d
NC
1257This linker can create the new dynamic tags in \s-1ELF\s0. But the older \s-1ELF\s0
1258systems may not understand them. If you specify
506eee22
NC
1259\&\f(CW\*(C`\-\-enable\-new\-dtags\*(C'\fR, the dynamic tags will be created as needed.
1260If you specify \f(CW\*(C`\-\-disable\-new\-dtags\*(C'\fR, no new dynamic tags will be
0285c67d
NC
1261created. By default, the new dynamic tags are not created. Note that
1262those options are only available for \s-1ELF\s0 systems.
1263.PP
506eee22 1264The i386 \s-1PE\s0 linker supports the \f(CW\*(C`\-shared\*(C'\fR option, which causes
0285c67d 1265the output to be a dynamically linked library (\s-1DLL\s0) instead of a
506eee22 1266normal executable. You should name the output \f(CW\*(C`*.dll\*(C'\fR when you
0285c67d 1267use this option. In addition, the linker fully supports the standard
506eee22 1268\&\f(CW\*(C`*.def\*(C'\fR files, which may be specified on the linker command line
0285c67d
NC
1269like an object file (in fact, it should precede archives it exports
1270symbols from, to ensure that they get linked in, just like a normal
1271object file).
1272.PP
1273In addition to the options common to all targets, the i386 \s-1PE\s0 linker
1274support additional command line options that are specific to the i386
506eee22 1275\&\s-1PE\s0 target. Options that take values may be separated from their
0285c67d 1276values by either a space or an equals sign.
506eee22
NC
1277.Ip "\f(CW\*(C`\-\-add\-stdcall\-alias\*(C'\fR" 4
1278.IX Item "--add-stdcall-alias"
0285c67d
NC
1279If given, symbols with a stdcall suffix (@\fInn\fR) will be exported
1280as-is and also with the suffix stripped.
506eee22
NC
1281.Ip "\f(CW\*(C`\-\-base\-file \f(CIfile\f(CW\*(C'\fR" 4
1282.IX Item "--base-file file"
0285c67d
NC
1283Use \fIfile\fR as the name of a file in which to save the base
1284addresses of all the relocations needed for generating DLLs with
506eee22
NC
1285\&\fIdlltool\fR.
1286.Ip "\f(CW\*(C`\-\-dll\*(C'\fR" 4
1287.IX Item "--dll"
0285c67d 1288Create a \s-1DLL\s0 instead of a regular executable. You may also use
506eee22 1289\&\f(CW\*(C`\-shared\*(C'\fR or specify a \f(CW\*(C`LIBRARY\*(C'\fR in a given \f(CW\*(C`.def\*(C'\fR
0285c67d 1290file.
506eee22
NC
1291.Ip "\f(CW\*(C`\-\-enable\-stdcall\-fixup\*(C'\fR" 4
1292.IX Item "--enable-stdcall-fixup"
1293.Ip "\f(CW\*(C`\-\-disable\-stdcall\-fixup\*(C'\fR" 4
1294.IX Item "--disable-stdcall-fixup"
0285c67d
NC
1295If the link finds a symbol that it cannot resolve, it will attempt to
1296do \*(L"fuzzy linking\*(R" by looking for another defined symbol that differs
1297only in the format of the symbol name (cdecl vs stdcall) and will
1298resolve that symbol by linking to the match. For example, the
506eee22
NC
1299undefined symbol \f(CW\*(C`_foo\*(C'\fR might be linked to the function
1300\&\f(CW\*(C`_foo@12\*(C'\fR, or the undefined symbol \f(CW\*(C`_bar@16\*(C'\fR might be linked
1301to the function \f(CW\*(C`_bar\*(C'\fR. When the linker does this, it prints a
0285c67d
NC
1302warning, since it normally should have failed to link, but sometimes
1303import libraries generated from third-party dlls may need this feature
506eee22 1304to be usable. If you specify \f(CW\*(C`\-\-enable\-stdcall\-fixup\*(C'\fR, this
0285c67d 1305feature is fully enabled and warnings are not printed. If you specify
506eee22 1306\&\f(CW\*(C`\-\-disable\-stdcall\-fixup\*(C'\fR, this feature is disabled and such
0285c67d 1307mismatches are considered to be errors.
506eee22
NC
1308.Ip "\f(CW\*(C`\-\-export\-all\-symbols\*(C'\fR" 4
1309.IX Item "--export-all-symbols"
0285c67d
NC
1310If given, all global symbols in the objects used to build a \s-1DLL\s0 will
1311be exported by the \s-1DLL\s0. Note that this is the default if there
1312otherwise wouldn't be any exported symbols. When symbols are
1313explicitly exported via \s-1DEF\s0 files or implicitly exported via function
1314attributes, the default is to not export anything else unless this
506eee22
NC
1315option is given. Note that the symbols \f(CW\*(C`DllMain@12\*(C'\fR,
1316\&\f(CW\*(C`DllEntryPoint@0\*(C'\fR, and \f(CW\*(C`impure_ptr\*(C'\fR will not be automatically
0285c67d 1317exported.
506eee22
NC
1318.Ip "\f(CW\*(C`\-\-exclude\-symbols \f(CIsymbol\f(CW,\f(CIsymbol\f(CW,...\*(C'\fR" 4
1319.IX Item "--exclude-symbols symbol,symbol,..."
0285c67d
NC
1320Specifies a list of symbols which should not be automatically
1321exported. The symbol names may be delimited by commas or colons.
506eee22
NC
1322.Ip "\f(CW\*(C`\-\-file\-alignment\*(C'\fR" 4
1323.IX Item "--file-alignment"
0285c67d
NC
1324Specify the file alignment. Sections in the file will always begin at
1325file offsets which are multiples of this number. This defaults to
1326512.
506eee22
NC
1327.Ip "\f(CW\*(C`\-\-heap \f(CIreserve\f(CW\*(C'\fR" 4
1328.IX Item "--heap reserve"
1329.Ip "\f(CW\*(C`\-\-heap \f(CIreserve\f(CW,\f(CIcommit\f(CW\*(C'\fR" 4
1330.IX Item "--heap reserve,commit"
0285c67d
NC
1331Specify the amount of memory to reserve (and optionally commit) to be
1332used as heap for this program. The default is 1Mb reserved, 4K
1333committed.
506eee22
NC
1334.Ip "\f(CW\*(C`\-\-image\-base \f(CIvalue\f(CW\*(C'\fR" 4
1335.IX Item "--image-base value"
0285c67d
NC
1336Use \fIvalue\fR as the base address of your program or dll. This is
1337the lowest memory location that will be used when your program or dll
1338is loaded. To reduce the need to relocate and improve performance of
1339your dlls, each should have a unique base address and not overlap any
1340other dlls. The default is 0x400000 for executables, and 0x10000000
1341for dlls.
506eee22
NC
1342.Ip "\f(CW\*(C`\-\-kill\-at\*(C'\fR" 4
1343.IX Item "--kill-at"
0285c67d
NC
1344If given, the stdcall suffixes (@\fInn\fR) will be stripped from
1345symbols before they are exported.
506eee22
NC
1346.Ip "\f(CW\*(C`\-\-major\-image\-version \f(CIvalue\f(CW\*(C'\fR" 4
1347.IX Item "--major-image-version value"
0285c67d 1348Sets the major number of the \*(L"image version\*(R". Defaults to 1.
506eee22
NC
1349.Ip "\f(CW\*(C`\-\-major\-os\-version \f(CIvalue\f(CW\*(C'\fR" 4
1350.IX Item "--major-os-version value"
0285c67d 1351Sets the major number of the \*(L"os version\*(R". Defaults to 4.
506eee22
NC
1352.Ip "\f(CW\*(C`\-\-major\-subsystem\-version \f(CIvalue\f(CW\*(C'\fR" 4
1353.IX Item "--major-subsystem-version value"
0285c67d 1354Sets the major number of the \*(L"subsystem version\*(R". Defaults to 4.
506eee22
NC
1355.Ip "\f(CW\*(C`\-\-minor\-image\-version \f(CIvalue\f(CW\*(C'\fR" 4
1356.IX Item "--minor-image-version value"
0285c67d 1357Sets the minor number of the \*(L"image version\*(R". Defaults to 0.
506eee22
NC
1358.Ip "\f(CW\*(C`\-\-minor\-os\-version \f(CIvalue\f(CW\*(C'\fR" 4
1359.IX Item "--minor-os-version value"
0285c67d 1360Sets the minor number of the \*(L"os version\*(R". Defaults to 0.
506eee22
NC
1361.Ip "\f(CW\*(C`\-\-minor\-subsystem\-version \f(CIvalue\f(CW\*(C'\fR" 4
1362.IX Item "--minor-subsystem-version value"
0285c67d 1363Sets the minor number of the \*(L"subsystem version\*(R". Defaults to 0.
506eee22
NC
1364.Ip "\f(CW\*(C`\-\-output\-def \f(CIfile\f(CW\*(C'\fR" 4
1365.IX Item "--output-def file"
0285c67d
NC
1366The linker will create the file \fIfile\fR which will contain a \s-1DEF\s0
1367file corresponding to the \s-1DLL\s0 the linker is generating. This \s-1DEF\s0 file
506eee22
NC
1368(which should be called \f(CW\*(C`*.def\*(C'\fR) may be used to create an import
1369library with \f(CW\*(C`dlltool\*(C'\fR or may be used as a reference to
0285c67d 1370automatically or implicitly exported symbols.
506eee22
NC
1371.Ip "\f(CW\*(C`\-\-section\-alignment\*(C'\fR" 4
1372.IX Item "--section-alignment"
0285c67d
NC
1373Sets the section alignment. Sections in memory will always begin at
1374addresses which are a multiple of this number. Defaults to 0x1000.
506eee22
NC
1375.Ip "\f(CW\*(C`\-\-stack \f(CIreserve\f(CW\*(C'\fR" 4
1376.IX Item "--stack reserve"
1377.Ip "\f(CW\*(C`\-\-stack \f(CIreserve\f(CW,\f(CIcommit\f(CW\*(C'\fR" 4
1378.IX Item "--stack reserve,commit"
0285c67d
NC
1379Specify the amount of memory to reserve (and optionally commit) to be
1380used as stack for this program. The default is 32Mb reserved, 4K
1381committed.
506eee22
NC
1382.Ip "\f(CW\*(C`\-\-subsystem \f(CIwhich\f(CW\*(C'\fR" 4
1383.IX Item "--subsystem which"
1384.Ip "\f(CW\*(C`\-\-subsystem \f(CIwhich\f(CW:\f(CImajor\f(CW\*(C'\fR" 4
1385.IX Item "--subsystem which:major"
1386.Ip "\f(CW\*(C`\-\-subsystem \f(CIwhich\f(CW:\f(CImajor\f(CW.\f(CIminor\f(CW\*(C'\fR" 4
1387.IX Item "--subsystem which:major.minor"
0285c67d 1388Specifies the subsystem under which your program will execute. The
506eee22
NC
1389legal values for \fIwhich\fR are \f(CW\*(C`native\*(C'\fR, \f(CW\*(C`windows\*(C'\fR,
1390\&\f(CW\*(C`console\*(C'\fR, and \f(CW\*(C`posix\*(C'\fR. You may optionally set the
0285c67d
NC
1391subsystem version also.
1392.SH "ENVIRONMENT"
506eee22
NC
1393.IX Header "ENVIRONMENT"
1394You can change the behavior of \f(CW\*(C`ld\*(C'\fR with the environment variables
1395\&\f(CW\*(C`GNUTARGET\*(C'\fR, \f(CW\*(C`LDEMULATION\*(C'\fR, and \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR.
0285c67d 1396.PP
506eee22
NC
1397\&\f(CW\*(C`GNUTARGET\*(C'\fR determines the input-file object format if you don't
1398use \fB\-b\fR (or its synonym \fB\*(--format\fR). Its value should be one
1399of the \s-1BFD\s0 names for an input format. If there is no
1400\&\f(CW\*(C`GNUTARGET\*(C'\fR in the environment, \f(CW\*(C`ld\*(C'\fR uses the natural format
1401of the target. If \f(CW\*(C`GNUTARGET\*(C'\fR is set to \f(CW\*(C`default\*(C'\fR then \s-1BFD\s0
0285c67d
NC
1402attempts to discover the input format by examining binary input files;
1403this method often succeeds, but there are potential ambiguities, since
1404there is no method of ensuring that the magic number used to specify
1405object-file formats is unique. However, the configuration procedure for
506eee22 1406\&\s-1BFD\s0 on each system places the conventional format for that system first
0285c67d
NC
1407in the search-list, so ambiguities are resolved in favor of convention.
1408.PP
506eee22
NC
1409\&\f(CW\*(C`LDEMULATION\*(C'\fR determines the default emulation if you don't use the
1410\&\fB\-m\fR option. The emulation can affect various aspects of linker
0285c67d 1411behaviour, particularly the default linker script. You can list the
506eee22
NC
1412available emulations with the \fB\*(--verbose\fR or \fB\-V\fR options. If
1413the \fB\-m\fR option is not used, and the \f(CW\*(C`LDEMULATION\*(C'\fR environment
0285c67d
NC
1414variable is not defined, the default emulation depends upon how the
1415linker was configured.
1416.PP
1417Normally, the linker will default to demangling symbols. However, if
506eee22 1418\&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR is set in the environment, then it will
0285c67d 1419default to not demangling symbols. This environment variable is used in
506eee22
NC
1420a similar fashion by the \f(CW\*(C`gcc\*(C'\fR linker wrapper program. The default
1421may be overridden by the \fB\*(--demangle\fR and \fB\*(--no-demangle\fR
0285c67d
NC
1422options.
1423.SH "SEE ALSO"
506eee22
NC
1424.IX Header "SEE ALSO"
1425\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjcopy\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1) and
0285c67d 1426the Info entries for \fIbinutils\fR and
506eee22 1427\&\fIld\fR.
0285c67d 1428.SH "COPYRIGHT"
506eee22 1429.IX Header "COPYRIGHT"
0285c67d
NC
1430Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
1431.PP
1432Permission is granted to copy, distribute and/or modify this document
506eee22 1433under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
0285c67d
NC
1434or any later version published by the Free Software Foundation;
1435with no Invariant Sections, with no Front-Cover Texts, and with no
1436Back-Cover Texts. A copy of the license is included in the
506eee22 1437section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R".
This page took 0.16211 seconds and 4 git commands to generate.