]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/ld.texinfo
* gdb.base/printcmds.exp: Expect the null character to be printed
[thirdparty/binutils-gdb.git] / ld / ld.texinfo
CommitLineData
252b5132
RH
1\input texinfo
2@setfilename ld.info
a2b64bed
NC
3@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4@c 2001 Free Software Foundation, Inc.
252b5132
RH
5@syncodeindex ky cp
6@include configdoc.texi
7@c (configdoc.texi is generated by the Makefile)
8@include ldver.texi
9
10@c @smallbook
11
ff5dcc92
SC
12@macro gcctabopt{body}
13@code{\body\}
14@end macro
15
0285c67d
NC
16@c man begin NAME
17@ifset man
18@c Configure for the generation of man pages
19@set UsesEnvVars
20@set GENERIC
21@set A29K
22@set ARC
23@set ARM
24@set D10V
25@set D30V
26@set H8/300
27@set H8/500
28@set HPPA
29@set I370
30@set I80386
31@set I860
32@set I960
33@set M32R
34@set M68HC11
35@set M680X0
36@set MCORE
37@set MIPS
3c3bdf30 38@set MMIX
0285c67d
NC
39@set PDP11
40@set PJ
41@set SH
42@set SPARC
43@set C54X
44@set V850
45@set VAX
46@end ifset
47@c man end
48
252b5132
RH
49@ifinfo
50@format
51START-INFO-DIR-ENTRY
52* Ld: (ld). The GNU linker.
53END-INFO-DIR-ENTRY
54@end format
55@end ifinfo
56
57@ifinfo
58This file documents the @sc{gnu} linker LD version @value{VERSION}.
59
62bf86b4
HPN
60Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
612001 Free Software Foundation, Inc.
252b5132 62
252b5132 63@ignore
cf055d54
NC
64
65Permission is granted to copy, distribute and/or modify this document
66under the terms of the GNU Free Documentation License, Version 1.1
67or any later version published by the Free Software Foundation;
68with no Invariant Sections, with no Front-Cover Texts, and with no
69Back-Cover Texts. A copy of the license is included in the
70section entitled "GNU Free Documentation License".
71
252b5132
RH
72Permission is granted to process this file through Tex and print the
73results, provided the printed document carries copying permission
74notice identical to this one except for the removal of this paragraph
75(this paragraph not being relevant to the printed manual).
76
77@end ignore
78@end ifinfo
79@iftex
80@finalout
81@setchapternewpage odd
82@settitle Using LD, the GNU linker
83@titlepage
84@title Using ld
85@subtitle The GNU linker
86@sp 1
87@subtitle @code{ld} version 2
88@subtitle Version @value{VERSION}
89@author Steve Chamberlain
90@author Ian Lance Taylor
252b5132
RH
91@page
92
93@tex
94{\parskip=0pt
704c465c
NC
95\hfill Red Hat Inc\par
96\hfill nickc\@credhat.com, doc\@redhat.com\par
252b5132
RH
97\hfill {\it Using LD, the GNU linker}\par
98\hfill Edited by Jeffrey Osier (jeffrey\@cygnus.com)\par
99}
100\global\parindent=0pt % Steve likes it this way.
101@end tex
102
103@vskip 0pt plus 1filll
0285c67d 104@c man begin COPYRIGHT
114283d8 105Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
252b5132 106
0285c67d
NC
107Permission is granted to copy, distribute and/or modify this document
108under the terms of the GNU Free Documentation License, Version 1.1
109or any later version published by the Free Software Foundation;
110with no Invariant Sections, with no Front-Cover Texts, and with no
111Back-Cover Texts. A copy of the license is included in the
112section entitled "GNU Free Documentation License".
113@c man end
252b5132 114
252b5132
RH
115@end titlepage
116@end iftex
117@c FIXME: Talk about importance of *order* of args, cmds to linker!
118
119@ifinfo
120@node Top
121@top Using ld
122This file documents the @sc{gnu} linker ld version @value{VERSION}.
123
cf055d54
NC
124This document is distributed under the terms of the GNU Free
125Documentation License. A copy of the license is included in the
126section entitled "GNU Free Documentation License".
127
252b5132
RH
128@menu
129* Overview:: Overview
130* Invocation:: Invocation
131* Scripts:: Linker Scripts
132@ifset GENERIC
133* Machine Dependent:: Machine Dependent Features
134@end ifset
135@ifclear GENERIC
136@ifset H8300
137* H8/300:: ld and the H8/300
138@end ifset
139@ifset Hitachi
140* Hitachi:: ld and other Hitachi micros
141@end ifset
142@ifset I960
143* i960:: ld and the Intel 960 family
144@end ifset
74459f0e
TW
145@ifset TICOFF
146* TI COFF:: ld and the TI COFF
147@end ifset
252b5132
RH
148@end ifclear
149@ifclear SingleFormat
150* BFD:: BFD
151@end ifclear
152@c Following blank line required for remaining bug in makeinfo conds/menus
153
154* Reporting Bugs:: Reporting Bugs
155* MRI:: MRI Compatible Script Files
704c465c 156* GNU Free Documentation License:: GNU Free Documentation License
252b5132
RH
157* Index:: Index
158@end menu
159@end ifinfo
160
161@node Overview
162@chapter Overview
163
164@cindex @sc{gnu} linker
165@cindex what is this?
0285c67d 166
0879a67a 167@ifset man
0285c67d 168@c man begin SYNOPSIS
ff5dcc92 169ld [@b{options}] @var{objfile} @dots{}
0285c67d
NC
170@c man end
171
172@c man begin SEEALSO
173ar(1), nm(1), objcopy(1), objdump(1), readelf(1) and
174the Info entries for @file{binutils} and
175@file{ld}.
176@c man end
177@end ifset
178
179@c man begin DESCRIPTION
180
ff5dcc92 181@command{ld} combines a number of object and archive files, relocates
252b5132 182their data and ties up symbol references. Usually the last step in
ff5dcc92 183compiling a program is to run @command{ld}.
252b5132 184
ff5dcc92 185@command{ld} accepts Linker Command Language files written in
252b5132
RH
186a superset of AT&T's Link Editor Command Language syntax,
187to provide explicit and total control over the linking process.
188
0285c67d
NC
189@ifset man
190@c For the man only
191This man page does not describe the command language; see the
ff5dcc92 192@command{ld} entry in @code{info}, or the manual
0285c67d
NC
193ld: the GNU linker, for full details on the command language and
194on other aspects of the GNU linker.
195@end ifset
196
252b5132 197@ifclear SingleFormat
ff5dcc92
SC
198This version of @command{ld} uses the general purpose BFD libraries
199to operate on object files. This allows @command{ld} to read, combine, and
252b5132
RH
200write object files in many different formats---for example, COFF or
201@code{a.out}. Different formats may be linked together to produce any
202available kind of object file. @xref{BFD}, for more information.
203@end ifclear
204
205Aside from its flexibility, the @sc{gnu} linker is more helpful than other
206linkers in providing diagnostic information. Many linkers abandon
207execution immediately upon encountering an error; whenever possible,
ff5dcc92 208@command{ld} continues executing, allowing you to identify other errors
252b5132
RH
209(or, in some cases, to get an output file in spite of the error).
210
0285c67d
NC
211@c man end
212
252b5132
RH
213@node Invocation
214@chapter Invocation
215
0285c67d
NC
216@c man begin DESCRIPTION
217
ff5dcc92 218The @sc{gnu} linker @command{ld} is meant to cover a broad range of situations,
252b5132
RH
219and to be as compatible as possible with other linkers. As a result,
220you have many choices to control its behavior.
221
0285c67d
NC
222@c man end
223
252b5132
RH
224@ifset UsesEnvVars
225@menu
226* Options:: Command Line Options
227* Environment:: Environment Variables
228@end menu
229
230@node Options
231@section Command Line Options
232@end ifset
233
234@cindex command line
235@cindex options
0285c67d
NC
236
237@c man begin OPTIONS
238
252b5132
RH
239The linker supports a plethora of command-line options, but in actual
240practice few of them are used in any particular context.
241@cindex standard Unix system
ff5dcc92 242For instance, a frequent use of @command{ld} is to link standard Unix
252b5132
RH
243object files on a standard, supported Unix system. On such a system, to
244link a file @code{hello.o}:
245
246@smallexample
247ld -o @var{output} /lib/crt0.o hello.o -lc
248@end smallexample
249
ff5dcc92 250This tells @command{ld} to produce a file called @var{output} as the
252b5132
RH
251result of linking the file @code{/lib/crt0.o} with @code{hello.o} and
252the library @code{libc.a}, which will come from the standard search
253directories. (See the discussion of the @samp{-l} option below.)
254
ff5dcc92 255Some of the command-line options to @command{ld} may be specified at any
511ab9e9
ILT
256point in the command line. However, options which refer to files, such
257as @samp{-l} or @samp{-T}, cause the file to be read at the point at
258which the option appears in the command line, relative to the object
259files and other file options. Repeating non-file options with a
260different argument will either have no further effect, or override prior
252b5132
RH
261occurrences (those further to the left on the command line) of that
262option. Options which may be meaningfully specified more than once are
263noted in the descriptions below.
264
265@cindex object files
511ab9e9
ILT
266Non-option arguments are object files or archives which are to be linked
267together. They may follow, precede, or be mixed in with command-line
268options, except that an object file argument may not be placed between
269an option and its argument.
252b5132
RH
270
271Usually the linker is invoked with at least one object file, but you can
272specify other forms of binary input files using @samp{-l}, @samp{-R},
273and the script command language. If @emph{no} binary input files at all
274are specified, the linker does not produce any output, and issues the
275message @samp{No input files}.
276
277If the linker can not recognize the format of an object file, it will
278assume that it is a linker script. A script specified in this way
279augments the main linker script used for the link (either the default
280linker script or the one specified by using @samp{-T}). This feature
281permits the linker to link against a file which appears to be an object
282or an archive, but actually merely defines some symbol values, or uses
283@code{INPUT} or @code{GROUP} to load other objects. Note that
114283d8
NC
284specifying a script in this way merely augments the main linker script;
285use the @samp{-T} option to replace the default linker script entirely.
252b5132
RH
286@xref{Scripts}.
287
288For options whose names are a single letter,
289option arguments must either follow the option letter without intervening
290whitespace, or be given as separate arguments immediately following the
291option that requires them.
292
293For options whose names are multiple letters, either one dash or two can
e4897a32
NC
294precede the option name; for example, @samp{-trace-symbol} and
295@samp{--trace-symbol} are equivalent. Note - there is one exception to
296this rule. Multiple letter options that start with a lower case 'o' can
297only be preceeded by two dashes. This is to reduce confusion with the
298@samp{-o} option. So for example @samp{-omagic} sets the output file
299name to @samp{magic} whereas @samp{--omagic} sets the NMAGIC flag on the
300output.
301
302Arguments to multiple-letter options must either be separated from the
303option name by an equals sign, or be given as separate arguments
304immediately following the option that requires them. For example,
305@samp{--trace-symbol foo} and @samp{--trace-symbol=foo} are equivalent.
306Unique abbreviations of the names of multiple-letter options are
307accepted.
252b5132 308
4e53152f
NC
309Note - if the linker is being invoked indirectly, via a compiler driver
310(eg @samp{gcc}) then all the linker command line options should be
fa19fce0
NC
311prefixed by @samp{-Wl,} (or whatever is appropriate for the particular
312compiler driver) like this:
4e53152f
NC
313
314@smallexample
315 gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
316@end smallexample
317
318This is important, because otherwise the compiler driver program may
319silently drop the linker options, resulting in a bad link.
320
321Here is a table of the generic command line switches accepted by the GNU
322linker:
323
ff5dcc92 324@table @gcctabopt
252b5132
RH
325@kindex -a@var{keyword}
326@item -a@var{keyword}
327This option is supported for HP/UX compatibility. The @var{keyword}
328argument must be one of the strings @samp{archive}, @samp{shared}, or
329@samp{default}. @samp{-aarchive} is functionally equivalent to
330@samp{-Bstatic}, and the other two keywords are functionally equivalent
331to @samp{-Bdynamic}. This option may be used any number of times.
332
333@ifset I960
334@cindex architectures
335@kindex -A@var{arch}
336@item -A@var{architecture}
337@kindex --architecture=@var{arch}
338@itemx --architecture=@var{architecture}
ff5dcc92
SC
339In the current release of @command{ld}, this option is useful only for the
340Intel 960 family of architectures. In that @command{ld} configuration, the
252b5132
RH
341@var{architecture} argument identifies the particular architecture in
342the 960 family, enabling some safeguards and modifying the
ff5dcc92 343archive-library search path. @xref{i960,,@command{ld} and the Intel 960
252b5132
RH
344family}, for details.
345
ff5dcc92 346Future releases of @command{ld} may support similar functionality for
252b5132
RH
347other architecture families.
348@end ifset
349
350@ifclear SingleFormat
351@cindex binary input format
352@kindex -b @var{format}
353@kindex --format=@var{format}
354@cindex input format
355@cindex input format
356@item -b @var{input-format}
357@itemx --format=@var{input-format}
ff5dcc92
SC
358@command{ld} may be configured to support more than one kind of object
359file. If your @command{ld} is configured this way, you can use the
252b5132 360@samp{-b} option to specify the binary format for input object files
ff5dcc92 361that follow this option on the command line. Even when @command{ld} is
252b5132 362configured to support alternative object formats, you don't usually need
ff5dcc92 363to specify this, as @command{ld} should be configured to expect as a
252b5132
RH
364default input format the most usual format on each machine.
365@var{input-format} is a text string, the name of a particular format
366supported by the BFD libraries. (You can list the available binary
367formats with @samp{objdump -i}.)
368@xref{BFD}.
369
370You may want to use this option if you are linking files with an unusual
371binary format. You can also use @samp{-b} to switch formats explicitly (when
372linking object files of different formats), by including
373@samp{-b @var{input-format}} before each group of object files in a
a1ab1d2a 374particular format.
252b5132
RH
375
376The default format is taken from the environment variable
377@code{GNUTARGET}.
378@ifset UsesEnvVars
379@xref{Environment}.
380@end ifset
381You can also define the input format from a script, using the command
0285c67d
NC
382@code{TARGET};
383@ifclear man
384see @ref{Format Commands}.
385@end ifclear
252b5132
RH
386@end ifclear
387
388@kindex -c @var{MRI-cmdfile}
389@kindex --mri-script=@var{MRI-cmdfile}
390@cindex compatibility, MRI
391@item -c @var{MRI-commandfile}
392@itemx --mri-script=@var{MRI-commandfile}
ff5dcc92 393For compatibility with linkers produced by MRI, @command{ld} accepts script
252b5132 394files written in an alternate, restricted command language, described in
0285c67d
NC
395@ifclear man
396@ref{MRI,,MRI Compatible Script Files}.
397@end ifclear
398@ifset man
399the MRI Compatible Script Files section of GNU ld documentation.
400@end ifset
401Introduce MRI script files with
252b5132 402the option @samp{-c}; use the @samp{-T} option to run linker
ff5dcc92
SC
403scripts written in the general-purpose @command{ld} scripting language.
404If @var{MRI-cmdfile} does not exist, @command{ld} looks for it in the directories
252b5132
RH
405specified by any @samp{-L} options.
406
407@cindex common allocation
408@kindex -d
409@kindex -dc
410@kindex -dp
a1ab1d2a 411@item -d
252b5132
RH
412@itemx -dc
413@itemx -dp
414These three options are equivalent; multiple forms are supported for
415compatibility with other linkers. They assign space to common symbols
416even if a relocatable output file is specified (with @samp{-r}). The
417script command @code{FORCE_COMMON_ALLOCATION} has the same effect.
418@xref{Miscellaneous Commands}.
419
420@cindex entry point, from command line
421@kindex -e @var{entry}
422@kindex --entry=@var{entry}
a1ab1d2a 423@item -e @var{entry}
252b5132
RH
424@itemx --entry=@var{entry}
425Use @var{entry} as the explicit symbol for beginning execution of your
426program, rather than the default entry point. If there is no symbol
427named @var{entry}, the linker will try to parse @var{entry} as a number,
428and use that as the entry address (the number will be interpreted in
429base 10; you may use a leading @samp{0x} for base 16, or a leading
430@samp{0} for base 8). @xref{Entry Point}, for a discussion of defaults
431and other ways of specifying the entry point.
432
433@cindex dynamic symbol table
434@kindex -E
435@kindex --export-dynamic
436@item -E
437@itemx --export-dynamic
438When creating a dynamically linked executable, add all symbols to the
439dynamic symbol table. The dynamic symbol table is the set of symbols
440which are visible from dynamic objects at run time.
441
442If you do not use this option, the dynamic symbol table will normally
443contain only those symbols which are referenced by some dynamic object
444mentioned in the link.
445
446If you use @code{dlopen} to load a dynamic object which needs to refer
447back to the symbols defined by the program, rather than some other
448dynamic object, then you will probably need to use this option when
449linking the program itself.
450
cb840a31
L
451You can also use the version script to control what symbols should
452be added to the dynamic symbol table if the output format supports it.
453See the description of @samp{--version-script} in @ref{VERSION}.
454
252b5132
RH
455@cindex big-endian objects
456@cindex endianness
457@kindex -EB
458@item -EB
459Link big-endian objects. This affects the default output format.
460
461@cindex little-endian objects
462@kindex -EL
463@item -EL
464Link little-endian objects. This affects the default output format.
465
466@kindex -f
467@kindex --auxiliary
468@item -f
469@itemx --auxiliary @var{name}
470When creating an ELF shared object, set the internal DT_AUXILIARY field
471to the specified name. This tells the dynamic linker that the symbol
472table of the shared object should be used as an auxiliary filter on the
473symbol table of the shared object @var{name}.
474
475If you later link a program against this filter object, then, when you
476run the program, the dynamic linker will see the DT_AUXILIARY field. If
477the dynamic linker resolves any symbols from the filter object, it will
478first check whether there is a definition in the shared object
479@var{name}. If there is one, it will be used instead of the definition
480in the filter object. The shared object @var{name} need not exist.
481Thus the shared object @var{name} may be used to provide an alternative
482implementation of certain functions, perhaps for debugging or for
483machine specific performance.
484
485This option may be specified more than once. The DT_AUXILIARY entries
486will be created in the order in which they appear on the command line.
487
488@kindex -F
489@kindex --filter
490@item -F @var{name}
491@itemx --filter @var{name}
492When creating an ELF shared object, set the internal DT_FILTER field to
493the specified name. This tells the dynamic linker that the symbol table
494of the shared object which is being created should be used as a filter
495on the symbol table of the shared object @var{name}.
496
497If you later link a program against this filter object, then, when you
498run the program, the dynamic linker will see the DT_FILTER field. The
499dynamic linker will resolve symbols according to the symbol table of the
500filter object as usual, but it will actually link to the definitions
501found in the shared object @var{name}. Thus the filter object can be
502used to select a subset of the symbols provided by the object
503@var{name}.
504
ff5dcc92 505Some older linkers used the @option{-F} option throughout a compilation
252b5132
RH
506toolchain for specifying object-file format for both input and output
507object files. The @sc{gnu} linker uses other mechanisms for this
ff5dcc92 508purpose: the @option{-b}, @option{--format}, @option{--oformat} options, the
252b5132 509@code{TARGET} command in linker scripts, and the @code{GNUTARGET}
ff5dcc92 510environment variable. The @sc{gnu} linker will ignore the @option{-F}
252b5132
RH
511option when not creating an ELF shared object.
512
3dbf70a2
MM
513@cindex finalization function
514@kindex -fini
515@item -fini @var{name}
516When creating an ELF executable or shared object, call NAME when the
517executable or shared object is unloaded, by setting DT_FINI to the
518address of the function. By default, the linker uses @code{_fini} as
519the function to call.
520
252b5132
RH
521@kindex -g
522@item -g
523Ignored. Provided for compatibility with other tools.
524
525@kindex -G
526@kindex --gpsize
527@cindex object size
528@item -G@var{value}
529@itemx --gpsize=@var{value}
530Set the maximum size of objects to be optimized using the GP register to
531@var{size}. This is only meaningful for object file formats such as
532MIPS ECOFF which supports putting large and small objects into different
533sections. This is ignored for other object file formats.
534
535@cindex runtime library name
536@kindex -h@var{name}
537@kindex -soname=@var{name}
538@item -h@var{name}
539@itemx -soname=@var{name}
540When creating an ELF shared object, set the internal DT_SONAME field to
541the specified name. When an executable is linked with a shared object
542which has a DT_SONAME field, then when the executable is run the dynamic
543linker will attempt to load the shared object specified by the DT_SONAME
544field rather than the using the file name given to the linker.
545
546@kindex -i
547@cindex incremental link
548@item -i
549Perform an incremental link (same as option @samp{-r}).
550
3dbf70a2
MM
551@cindex initialization function
552@kindex -init
553@item -init @var{name}
554When creating an ELF executable or shared object, call NAME when the
555executable or shared object is loaded, by setting DT_INIT to the address
556of the function. By default, the linker uses @code{_init} as the
557function to call.
558
252b5132
RH
559@cindex archive files, from cmd line
560@kindex -l@var{archive}
561@kindex --library=@var{archive}
562@item -l@var{archive}
563@itemx --library=@var{archive}
564Add archive file @var{archive} to the list of files to link. This
ff5dcc92 565option may be used any number of times. @command{ld} will search its
252b5132
RH
566path-list for occurrences of @code{lib@var{archive}.a} for every
567@var{archive} specified.
568
ff5dcc92 569On systems which support shared libraries, @command{ld} may also search for
252b5132 570libraries with extensions other than @code{.a}. Specifically, on ELF
ff5dcc92 571and SunOS systems, @command{ld} will search a directory for a library with
252b5132
RH
572an extension of @code{.so} before searching for one with an extension of
573@code{.a}. By convention, a @code{.so} extension indicates a shared
574library.
575
576The linker will search an archive only once, at the location where it is
577specified on the command line. If the archive defines a symbol which
578was undefined in some object which appeared before the archive on the
579command line, the linker will include the appropriate file(s) from the
580archive. However, an undefined symbol in an object appearing later on
581the command line will not cause the linker to search the archive again.
582
ff5dcc92 583See the @option{-(} option for a way to force the linker to search
252b5132
RH
584archives multiple times.
585
586You may list the same archive multiple times on the command line.
587
588@ifset GENERIC
589This type of archive searching is standard for Unix linkers. However,
ff5dcc92 590if you are using @command{ld} on AIX, note that it is different from the
252b5132
RH
591behaviour of the AIX linker.
592@end ifset
593
594@cindex search directory, from cmd line
595@kindex -L@var{dir}
596@kindex --library-path=@var{dir}
a1ab1d2a 597@item -L@var{searchdir}
252b5132 598@itemx --library-path=@var{searchdir}
ff5dcc92
SC
599Add path @var{searchdir} to the list of paths that @command{ld} will search
600for archive libraries and @command{ld} control scripts. You may use this
252b5132
RH
601option any number of times. The directories are searched in the order
602in which they are specified on the command line. Directories specified
603on the command line are searched before the default directories. All
ff5dcc92 604@option{-L} options apply to all @option{-l} options, regardless of the
252b5132
RH
605order in which the options appear.
606
607@ifset UsesEnvVars
608The default set of paths searched (without being specified with
ff5dcc92 609@samp{-L}) depends on which emulation mode @command{ld} is using, and in
252b5132
RH
610some cases also on how it was configured. @xref{Environment}.
611@end ifset
612
613The paths can also be specified in a link script with the
614@code{SEARCH_DIR} command. Directories specified this way are searched
615at the point in which the linker script appears in the command line.
616
617@cindex emulation
618@kindex -m @var{emulation}
619@item -m@var{emulation}
620Emulate the @var{emulation} linker. You can list the available
621emulations with the @samp{--verbose} or @samp{-V} options.
622
623If the @samp{-m} option is not used, the emulation is taken from the
624@code{LDEMULATION} environment variable, if that is defined.
625
626Otherwise, the default emulation depends upon how the linker was
627configured.
628
629@cindex link map
630@kindex -M
631@kindex --print-map
632@item -M
633@itemx --print-map
634Print a link map to the standard output. A link map provides
635information about the link, including the following:
636
637@itemize @bullet
638@item
639Where object files and symbols are mapped into memory.
640@item
641How common symbols are allocated.
642@item
643All archive members included in the link, with a mention of the symbol
644which caused the archive member to be brought in.
645@end itemize
646
647@kindex -n
648@cindex read-only text
649@cindex NMAGIC
650@kindex --nmagic
651@item -n
652@itemx --nmagic
fa19fce0 653Turn off page alignment of sections, and mark the output as
a1ab1d2a 654@code{NMAGIC} if possible.
252b5132
RH
655
656@kindex -N
657@kindex --omagic
658@cindex read/write from cmd line
659@cindex OMAGIC
a1ab1d2a 660@item -N
252b5132
RH
661@itemx --omagic
662Set the text and data sections to be readable and writable. Also, do
663not page-align the data segment. If the output format supports Unix
664style magic numbers, mark the output as @code{OMAGIC}.
665
666@kindex -o @var{output}
667@kindex --output=@var{output}
668@cindex naming the output file
669@item -o @var{output}
670@itemx --output=@var{output}
ff5dcc92 671Use @var{output} as the name for the program produced by @command{ld}; if this
252b5132
RH
672option is not specified, the name @file{a.out} is used by default. The
673script command @code{OUTPUT} can also specify the output file name.
674
675@kindex -O @var{level}
676@cindex generating optimized output
677@item -O @var{level}
ff5dcc92 678If @var{level} is a numeric values greater than zero @command{ld} optimizes
252b5132
RH
679the output. This might take significantly longer and therefore probably
680should only be enabled for the final binary.
681
a712da20
NC
682@kindex -q
683@kindex --emit-relocs
684@cindex retain relocations in final executable
685@item -q
686@itemx --emit-relocs
687Leave relocation sections and contents in fully linked exececutables.
688Post link analysis and optimization tools may need this information in
689order to perform correct modifications of executables. This results
690in larger executables.
691
252b5132
RH
692@cindex partial link
693@cindex relocatable output
694@kindex -r
695@kindex --relocateable
696@item -r
697@itemx --relocateable
698Generate relocatable output---i.e., generate an output file that can in
ff5dcc92 699turn serve as input to @command{ld}. This is often called @dfn{partial
252b5132
RH
700linking}. As a side effect, in environments that support standard Unix
701magic numbers, this option also sets the output file's magic number to
702@code{OMAGIC}.
ff5dcc92 703@c ; see @option{-N}.
252b5132
RH
704If this option is not specified, an absolute file is produced. When
705linking C++ programs, this option @emph{will not} resolve references to
706constructors; to do that, use @samp{-Ur}.
707
62bf86b4
HPN
708When an input file does not have the same format as the output file,
709partial linking is only supported if that input file does not contain any
710relocations. Different output formats can have further restrictions; for
711example some @code{a.out}-based formats do not support partial linking
712with input files in other formats at all.
713
252b5132
RH
714This option does the same thing as @samp{-i}.
715
716@kindex -R @var{file}
717@kindex --just-symbols=@var{file}
718@cindex symbol-only input
719@item -R @var{filename}
720@itemx --just-symbols=@var{filename}
721Read symbol names and their addresses from @var{filename}, but do not
722relocate it or include it in the output. This allows your output file
723to refer symbolically to absolute locations of memory defined in other
724programs. You may use this option more than once.
725
ff5dcc92 726For compatibility with other ELF linkers, if the @option{-R} option is
252b5132 727followed by a directory name, rather than a file name, it is treated as
ff5dcc92 728the @option{-rpath} option.
252b5132
RH
729
730@kindex -s
731@kindex --strip-all
732@cindex strip all symbols
a1ab1d2a 733@item -s
252b5132
RH
734@itemx --strip-all
735Omit all symbol information from the output file.
736
737@kindex -S
738@kindex --strip-debug
739@cindex strip debugger symbols
a1ab1d2a 740@item -S
252b5132
RH
741@itemx --strip-debug
742Omit debugger symbol information (but not all symbols) from the output file.
743
744@kindex -t
745@kindex --trace
746@cindex input files, displaying
a1ab1d2a 747@item -t
252b5132 748@itemx --trace
ff5dcc92 749Print the names of the input files as @command{ld} processes them.
252b5132
RH
750
751@kindex -T @var{script}
752@kindex --script=@var{script}
753@cindex script files
754@item -T @var{scriptfile}
755@itemx --script=@var{scriptfile}
756Use @var{scriptfile} as the linker script. This script replaces
ff5dcc92 757@command{ld}'s default linker script (rather than adding to it), so
252b5132 758@var{commandfile} must specify everything necessary to describe the
114283d8
NC
759output file. @xref{Scripts}. If @var{scriptfile} does not exist in
760the current directory, @code{ld} looks for it in the directories
761specified by any preceding @samp{-L} options. Multiple @samp{-T}
762options accumulate.
252b5132
RH
763
764@kindex -u @var{symbol}
765@kindex --undefined=@var{symbol}
766@cindex undefined symbol
767@item -u @var{symbol}
768@itemx --undefined=@var{symbol}
769Force @var{symbol} to be entered in the output file as an undefined
770symbol. Doing this may, for example, trigger linking of additional
771modules from standard libraries. @samp{-u} may be repeated with
772different option arguments to enter additional undefined symbols. This
773option is equivalent to the @code{EXTERN} linker script command.
774
775@kindex -Ur
776@cindex constructors
a1ab1d2a 777@item -Ur
252b5132
RH
778For anything other than C++ programs, this option is equivalent to
779@samp{-r}: it generates relocatable output---i.e., an output file that can in
ff5dcc92 780turn serve as input to @command{ld}. When linking C++ programs, @samp{-Ur}
252b5132
RH
781@emph{does} resolve references to constructors, unlike @samp{-r}.
782It does not work to use @samp{-Ur} on files that were themselves linked
783with @samp{-Ur}; once the constructor table has been built, it cannot
784be added to. Use @samp{-Ur} only for the last partial link, and
785@samp{-r} for the others.
786
577a0623
AM
787@kindex --unique[=@var{SECTION}]
788@item --unique[=@var{SECTION}]
789Creates a separate output section for every input section matching
790@var{SECTION}, or if the optional wildcard @var{SECTION} argument is
791missing, for every orphan input section. An orphan section is one not
792specifically mentioned in a linker script. You may use this option
793multiple times on the command line; It prevents the normal merging of
794input sections with the same name, overriding output section assignments
795in a linker script.
a854a4a7 796
252b5132
RH
797@kindex -v
798@kindex -V
799@kindex --version
800@cindex version
801@item -v
802@itemx --version
803@itemx -V
ff5dcc92 804Display the version number for @command{ld}. The @option{-V} option also
252b5132
RH
805lists the supported emulations.
806
807@kindex -x
808@kindex --discard-all
809@cindex deleting local symbols
810@item -x
811@itemx --discard-all
812Delete all local symbols.
813
814@kindex -X
815@kindex --discard-locals
816@cindex local symbols, deleting
817@cindex L, deleting symbols beginning
a1ab1d2a 818@item -X
252b5132
RH
819@itemx --discard-locals
820Delete all temporary local symbols. For most targets, this is all local
821symbols whose names begin with @samp{L}.
822
823@kindex -y @var{symbol}
824@kindex --trace-symbol=@var{symbol}
825@cindex symbol tracing
826@item -y @var{symbol}
827@itemx --trace-symbol=@var{symbol}
828Print the name of each linked file in which @var{symbol} appears. This
829option may be given any number of times. On many systems it is necessary
830to prepend an underscore.
831
832This option is useful when you have an undefined symbol in your link but
833don't know where the reference is coming from.
834
835@kindex -Y @var{path}
836@item -Y @var{path}
837Add @var{path} to the default library search path. This option exists
838for Solaris compatibility.
839
840@kindex -z @var{keyword}
841@item -z @var{keyword}
e0ee487b
L
842The recognized keywords are @code{initfirst}, @code{interpose},
843@code{loadfltr}, @code{nodefaultlib}, @code{nodelete}, @code{nodlopen},
8bd621d8
AM
844@code{nodump}, @code{now}, @code{origin}, @code{combreloc}, @code{nocombreloc}
845and @code{nocopyreloc}.
846The other keywords are
e0ee487b
L
847ignored for Solaris compatibility. @code{initfirst} marks the object
848to be initialized first at runtime before any other objects.
849@code{interpose} marks the object that its symbol table interposes
850before all symbols but the primary executable. @code{loadfltr} marks
851the object that its filtees be processed immediately at runtime.
852@code{nodefaultlib} marks the object that the search for dependencies
853of this object will ignore any default library search paths.
854@code{nodelete} marks the object shouldn't be unloaded at runtime.
855@code{nodlopen} marks the object not available to @code{dlopen}.
856@code{nodump} marks the object can not be dumped by @code{dldump}.
857@code{now} marks the object with the non-lazy runtime binding.
858@code{origin} marks the object may contain $ORIGIN.
a1ab1d2a 859@code{defs} disallows undefined symbols.
db6751f2
JJ
860@code{combreloc} combines multiple reloc sections and sorts them
861to make dynamic symbol lookup caching possible.
862@code{nocombreloc} disables multiple reloc sections combining.
8bd621d8 863@code{nocopyreloc} disables production of copy relocs.
252b5132
RH
864
865@kindex -(
866@cindex groups of archives
867@item -( @var{archives} -)
868@itemx --start-group @var{archives} --end-group
869The @var{archives} should be a list of archive files. They may be
870either explicit file names, or @samp{-l} options.
871
872The specified archives are searched repeatedly until no new undefined
873references are created. Normally, an archive is searched only once in
874the order that it is specified on the command line. If a symbol in that
875archive is needed to resolve an undefined symbol referred to by an
876object in an archive that appears later on the command line, the linker
877would not be able to resolve that reference. By grouping the archives,
878they all be searched repeatedly until all possible references are
879resolved.
880
881Using this option has a significant performance cost. It is best to use
882it only when there are unavoidable circular references between two or
883more archives.
884
885@kindex -assert @var{keyword}
886@item -assert @var{keyword}
887This option is ignored for SunOS compatibility.
888
889@kindex -Bdynamic
890@kindex -dy
891@kindex -call_shared
892@item -Bdynamic
893@itemx -dy
894@itemx -call_shared
895Link against dynamic libraries. This is only meaningful on platforms
896for which shared libraries are supported. This option is normally the
897default on such platforms. The different variants of this option are
898for compatibility with various systems. You may use this option
899multiple times on the command line: it affects library searching for
ff5dcc92 900@option{-l} options which follow it.
252b5132 901
a1ab1d2a
UD
902@kindex -Bgroup
903@item -Bgroup
904Set the @code{DF_1_GROUP} flag in the @code{DT_FLAGS_1} entry in the dynamic
905section. This causes the runtime linker to handle lookups in this
906object and its dependencies to be performed only inside the group.
ff5dcc92 907@option{--no-undefined} is implied. This option is only meaningful on ELF
a1ab1d2a
UD
908platforms which support shared libraries.
909
252b5132
RH
910@kindex -Bstatic
911@kindex -dn
912@kindex -non_shared
913@kindex -static
a1ab1d2a 914@item -Bstatic
252b5132
RH
915@itemx -dn
916@itemx -non_shared
917@itemx -static
918Do not link against shared libraries. This is only meaningful on
919platforms for which shared libraries are supported. The different
920variants of this option are for compatibility with various systems. You
921may use this option multiple times on the command line: it affects
ff5dcc92 922library searching for @option{-l} options which follow it.
252b5132
RH
923
924@kindex -Bsymbolic
925@item -Bsymbolic
926When creating a shared library, bind references to global symbols to the
927definition within the shared library, if any. Normally, it is possible
928for a program linked against a shared library to override the definition
929within the shared library. This option is only meaningful on ELF
930platforms which support shared libraries.
931
932@kindex --check-sections
933@kindex --no-check-sections
934@item --check-sections
308b1ffd 935@itemx --no-check-sections
252b5132
RH
936Asks the linker @emph{not} to check section addresses after they have
937been assigned to see if there any overlaps. Normally the linker will
938perform this check, and if it finds any overlaps it will produce
939suitable error messages. The linker does know about, and does make
940allowances for sections in overlays. The default behaviour can be
941restored by using the command line switch @samp{--check-sections}.
942
943@cindex cross reference table
944@kindex --cref
945@item --cref
946Output a cross reference table. If a linker map file is being
947generated, the cross reference table is printed to the map file.
948Otherwise, it is printed on the standard output.
949
950The format of the table is intentionally simple, so that it may be
951easily processed by a script if necessary. The symbols are printed out,
952sorted by name. For each symbol, a list of file names is given. If the
953symbol is defined, the first file listed is the location of the
954definition. The remaining files contain references to the symbol.
955
4818e05f
AM
956@cindex common allocation
957@kindex --no-define-common
958@item --no-define-common
959This option inhibits the assignment of addresses to common symbols.
960The script command @code{INHIBIT_COMMON_ALLOCATION} has the same effect.
961@xref{Miscellaneous Commands}.
962
963The @samp{--no-define-common} option allows decoupling
964the decision to assign addresses to Common symbols from the choice
965of the output file type; otherwise a non-Relocatable output type
966forces assigning addresses to Common symbols.
967Using @samp{--no-define-common} allows Common symbols that are referenced
968from a shared library to be assigned addresses only in the main program.
969This eliminates the unused duplicate space in the shared library,
970and also prevents any possible confusion over resolving to the wrong
971duplicate when there are many dynamic modules with specialized search
972paths for runtime symbol resolution.
973
252b5132
RH
974@cindex symbols, from command line
975@kindex --defsym @var{symbol}=@var{exp}
976@item --defsym @var{symbol}=@var{expression}
977Create a global symbol in the output file, containing the absolute
978address given by @var{expression}. You may use this option as many
979times as necessary to define multiple symbols in the command line. A
980limited form of arithmetic is supported for the @var{expression} in this
981context: you may give a hexadecimal constant or the name of an existing
982symbol, or use @code{+} and @code{-} to add or subtract hexadecimal
983constants or symbols. If you need more elaborate expressions, consider
984using the linker command language from a script (@pxref{Assignments,,
985Assignment: Symbol Definitions}). @emph{Note:} there should be no white
986space between @var{symbol}, the equals sign (``@key{=}''), and
987@var{expression}.
988
989@cindex demangling, from command line
28c309a2 990@kindex --demangle[=@var{style}]
252b5132 991@kindex --no-demangle
28c309a2 992@item --demangle[=@var{style}]
252b5132
RH
993@itemx --no-demangle
994These options control whether to demangle symbol names in error messages
995and other output. When the linker is told to demangle, it tries to
996present symbol names in a readable fashion: it strips leading
997underscores if they are used by the object file format, and converts C++
a1ab1d2a
UD
998mangled symbol names into user readable names. Different compilers have
999different mangling styles. The optional demangling style argument can be used
1000to choose an appropriate demangling style for your compiler. The linker will
28c309a2
NC
1001demangle by default unless the environment variable @samp{COLLECT_NO_DEMANGLE}
1002is set. These options may be used to override the default.
252b5132
RH
1003
1004@cindex dynamic linker, from command line
506eee22 1005@kindex -I@var{file}
252b5132
RH
1006@kindex --dynamic-linker @var{file}
1007@item --dynamic-linker @var{file}
1008Set the name of the dynamic linker. This is only meaningful when
1009generating dynamically linked ELF executables. The default dynamic
1010linker is normally correct; don't use this unless you know what you are
1011doing.
1012
1013@cindex MIPS embedded PIC code
1014@kindex --embedded-relocs
1015@item --embedded-relocs
1016This option is only meaningful when linking MIPS embedded PIC code,
1017generated by the -membedded-pic option to the @sc{gnu} compiler and
1018assembler. It causes the linker to create a table which may be used at
1019runtime to relocate any data which was statically initialized to pointer
1020values. See the code in testsuite/ld-empic for details.
1021
7ce691ae
C
1022
1023@kindex --fatal-warnings
1024@item --fatal-warnings
1025Treat all warnings as errors.
1026
252b5132
RH
1027@kindex --force-exe-suffix
1028@item --force-exe-suffix
1029Make sure that an output file has a .exe suffix.
1030
1031If a successfully built fully linked output file does not have a
1032@code{.exe} or @code{.dll} suffix, this option forces the linker to copy
1033the output file to one of the same name with a @code{.exe} suffix. This
1034option is useful when using unmodified Unix makefiles on a Microsoft
1035Windows host, since some versions of Windows won't run an image unless
1036it ends in a @code{.exe} suffix.
1037
1038@kindex --gc-sections
1039@kindex --no-gc-sections
1040@cindex garbage collection
1041@item --no-gc-sections
1042@itemx --gc-sections
1043Enable garbage collection of unused input sections. It is ignored on
1044targets that do not support this option. This option is not compatible
1045with @samp{-r}, nor should it be used with dynamic linking. The default
1046behaviour (of not performing this garbage collection) can be restored by
1047specifying @samp{--no-gc-sections} on the command line.
1048
1049@cindex help
1050@cindex usage
1051@kindex --help
1052@item --help
1053Print a summary of the command-line options on the standard output and exit.
1054
ea20a7da
CC
1055@kindex --target-help
1056@item --target-help
1057Print a summary of all target specific options on the standard output and exit.
1058
252b5132
RH
1059@kindex -Map
1060@item -Map @var{mapfile}
1061Print a link map to the file @var{mapfile}. See the description of the
1062@samp{-M} option, above.
1063
1064@cindex memory usage
1065@kindex --no-keep-memory
1066@item --no-keep-memory
ff5dcc92
SC
1067@command{ld} normally optimizes for speed over memory usage by caching the
1068symbol tables of input files in memory. This option tells @command{ld} to
252b5132 1069instead optimize for memory usage, by rereading the symbol tables as
ff5dcc92 1070necessary. This may be required if @command{ld} runs out of memory space
252b5132
RH
1071while linking a large executable.
1072
1073@kindex --no-undefined
a1ab1d2a 1074@kindex -z defs
252b5132 1075@item --no-undefined
a1ab1d2a 1076@itemx -z defs
252b5132 1077Normally when creating a non-symbolic shared library, undefined symbols
a1ab1d2a 1078are allowed and left to be resolved by the runtime loader. These options
252b5132
RH
1079disallows such undefined symbols.
1080
b79e8c78
NC
1081@kindex --allow-shlib-undefined
1082@item --allow-shlib-undefined
1083Allow undefined symbols in shared objects even when --no-undefined is
1084set. The net result will be that undefined symbols in regular objects
1085will still trigger an error, but undefined symbols in shared objects
1086will be ignored. The implementation of no_undefined makes the
1087assumption that the runtime linker will choke on undefined symbols.
1088However there is at least one system (BeOS) where undefined symbols in
1089shared libraries is normal since the kernel patches them at load time to
1090select which function is most appropriate for the current architecture.
1091I.E. dynamically select an appropriate memset function. Apparently it
1092is also normal for HPPA shared libraries to have undefined symbols.
1093
252b5132
RH
1094@kindex --no-warn-mismatch
1095@item --no-warn-mismatch
ff5dcc92 1096Normally @command{ld} will give an error if you try to link together input
252b5132
RH
1097files that are mismatched for some reason, perhaps because they have
1098been compiled for different processors or for different endiannesses.
ff5dcc92 1099This option tells @command{ld} that it should silently permit such possible
252b5132
RH
1100errors. This option should only be used with care, in cases when you
1101have taken some special action that ensures that the linker errors are
1102inappropriate.
1103
1104@kindex --no-whole-archive
1105@item --no-whole-archive
ff5dcc92 1106Turn off the effect of the @option{--whole-archive} option for subsequent
252b5132
RH
1107archive files.
1108
1109@cindex output file after errors
1110@kindex --noinhibit-exec
1111@item --noinhibit-exec
1112Retain the executable output file whenever it is still usable.
1113Normally, the linker will not produce an output file if it encounters
1114errors during the link process; it exits without writing an output file
1115when it issues any error whatsoever.
1116
1117@ifclear SingleFormat
1118@kindex --oformat
1119@item --oformat @var{output-format}
ff5dcc92
SC
1120@command{ld} may be configured to support more than one kind of object
1121file. If your @command{ld} is configured this way, you can use the
252b5132 1122@samp{--oformat} option to specify the binary format for the output
ff5dcc92
SC
1123object file. Even when @command{ld} is configured to support alternative
1124object formats, you don't usually need to specify this, as @command{ld}
252b5132
RH
1125should be configured to produce as a default output format the most
1126usual format on each machine. @var{output-format} is a text string, the
1127name of a particular format supported by the BFD libraries. (You can
1128list the available binary formats with @samp{objdump -i}.) The script
1129command @code{OUTPUT_FORMAT} can also specify the output format, but
1130this option overrides it. @xref{BFD}.
1131@end ifclear
1132
1133@kindex -qmagic
1134@item -qmagic
1135This option is ignored for Linux compatibility.
1136
1137@kindex -Qy
1138@item -Qy
1139This option is ignored for SVR4 compatibility.
1140
1141@kindex --relax
1142@cindex synthesizing linker
1143@cindex relaxing addressing modes
1144@item --relax
a1ab1d2a 1145An option with machine dependent effects.
252b5132
RH
1146@ifset GENERIC
1147This option is only supported on a few targets.
1148@end ifset
1149@ifset H8300
ff5dcc92 1150@xref{H8/300,,@command{ld} and the H8/300}.
252b5132
RH
1151@end ifset
1152@ifset I960
ff5dcc92 1153@xref{i960,, @command{ld} and the Intel 960 family}.
252b5132
RH
1154@end ifset
1155
1156
1157On some platforms, the @samp{--relax} option performs global
1158optimizations that become possible when the linker resolves addressing
1159in the program, such as relaxing address modes and synthesizing new
1160instructions in the output object file.
1161
1162On some platforms these link time global optimizations may make symbolic
1163debugging of the resulting executable impossible.
1164@ifset GENERIC
1165This is known to be
1166the case for the Matsushita MN10200 and MN10300 family of processors.
1167@end ifset
1168
1169@ifset GENERIC
1170On platforms where this is not supported, @samp{--relax} is accepted,
1171but ignored.
1172@end ifset
1173
1174@cindex retaining specified symbols
1175@cindex stripping all but some symbols
1176@cindex symbols, retaining selectively
1177@item --retain-symbols-file @var{filename}
1178Retain @emph{only} the symbols listed in the file @var{filename},
1179discarding all others. @var{filename} is simply a flat file, with one
1180symbol name per line. This option is especially useful in environments
1181@ifset GENERIC
1182(such as VxWorks)
1183@end ifset
1184where a large global symbol table is accumulated gradually, to conserve
1185run-time memory.
1186
1187@samp{--retain-symbols-file} does @emph{not} discard undefined symbols,
1188or symbols needed for relocations.
1189
1190You may only specify @samp{--retain-symbols-file} once in the command
1191line. It overrides @samp{-s} and @samp{-S}.
1192
1193@ifset GENERIC
1194@item -rpath @var{dir}
1195@cindex runtime library search path
1196@kindex -rpath
1197Add a directory to the runtime library search path. This is used when
ff5dcc92 1198linking an ELF executable with shared objects. All @option{-rpath}
252b5132 1199arguments are concatenated and passed to the runtime linker, which uses
ff5dcc92 1200them to locate shared objects at runtime. The @option{-rpath} option is
252b5132
RH
1201also used when locating shared objects which are needed by shared
1202objects explicitly included in the link; see the description of the
ff5dcc92 1203@option{-rpath-link} option. If @option{-rpath} is not used when linking an
252b5132
RH
1204ELF executable, the contents of the environment variable
1205@code{LD_RUN_PATH} will be used if it is defined.
1206
ff5dcc92 1207The @option{-rpath} option may also be used on SunOS. By default, on
252b5132 1208SunOS, the linker will form a runtime search patch out of all the
ff5dcc92
SC
1209@option{-L} options it is given. If a @option{-rpath} option is used, the
1210runtime search path will be formed exclusively using the @option{-rpath}
1211options, ignoring the @option{-L} options. This can be useful when using
1212gcc, which adds many @option{-L} options which may be on NFS mounted
252b5132
RH
1213filesystems.
1214
ff5dcc92 1215For compatibility with other ELF linkers, if the @option{-R} option is
252b5132 1216followed by a directory name, rather than a file name, it is treated as
ff5dcc92 1217the @option{-rpath} option.
252b5132
RH
1218@end ifset
1219
1220@ifset GENERIC
1221@cindex link-time runtime library search path
1222@kindex -rpath-link
1223@item -rpath-link @var{DIR}
1224When using ELF or SunOS, one shared library may require another. This
1225happens when an @code{ld -shared} link includes a shared library as one
1226of the input files.
1227
1228When the linker encounters such a dependency when doing a non-shared,
1229non-relocatable link, it will automatically try to locate the required
1230shared library and include it in the link, if it is not included
ff5dcc92 1231explicitly. In such a case, the @option{-rpath-link} option
252b5132 1232specifies the first set of directories to search. The
ff5dcc92 1233@option{-rpath-link} option may specify a sequence of directory names
252b5132
RH
1234either by specifying a list of names separated by colons, or by
1235appearing multiple times.
1236
28c309a2
NC
1237This option should be used with caution as it overrides the search path
1238that may have been hard compiled into a shared library. In such a case it
1239is possible to use unintentionally a different search path than the
1240runtime linker would do.
1241
252b5132
RH
1242The linker uses the following search paths to locate required shared
1243libraries.
1244@enumerate
1245@item
ff5dcc92 1246Any directories specified by @option{-rpath-link} options.
252b5132 1247@item
ff5dcc92
SC
1248Any directories specified by @option{-rpath} options. The difference
1249between @option{-rpath} and @option{-rpath-link} is that directories
1250specified by @option{-rpath} options are included in the executable and
1251used at runtime, whereas the @option{-rpath-link} option is only effective
dcb0bd0e 1252at link time. It is for the native linker only.
252b5132 1253@item
ff5dcc92 1254On an ELF system, if the @option{-rpath} and @code{rpath-link} options
252b5132 1255were not used, search the contents of the environment variable
dcb0bd0e 1256@code{LD_RUN_PATH}. It is for the native linker only.
252b5132 1257@item
ff5dcc92
SC
1258On SunOS, if the @option{-rpath} option was not used, search any
1259directories specified using @option{-L} options.
252b5132
RH
1260@item
1261For a native linker, the contents of the environment variable
1262@code{LD_LIBRARY_PATH}.
1263@item
ec4eb78a
L
1264For a native ELF linker, the directories in @code{DT_RUNPATH} or
1265@code{DT_RPATH} of a shared library are searched for shared
1266libraries needed by it. The @code{DT_RPATH} entries are ignored if
1267@code{DT_RUNPATH} entries exist.
1268@item
252b5132
RH
1269The default directories, normally @file{/lib} and @file{/usr/lib}.
1270@item
1271For a native linker on an ELF system, if the file @file{/etc/ld.so.conf}
1272exists, the list of directories found in that file.
1273@end enumerate
1274
1275If the required shared library is not found, the linker will issue a
1276warning and continue with the link.
1277@end ifset
1278
1279@kindex -shared
1280@kindex -Bshareable
1281@item -shared
1282@itemx -Bshareable
1283@cindex shared libraries
1284Create a shared library. This is currently only supported on ELF, XCOFF
1285and SunOS platforms. On SunOS, the linker will automatically create a
ff5dcc92 1286shared library if the @option{-e} option is not used and there are
252b5132
RH
1287undefined symbols in the link.
1288
1289@item --sort-common
1290@kindex --sort-common
ff5dcc92 1291This option tells @command{ld} to sort the common symbols by size when it
252b5132 1292places them in the appropriate output sections. First come all the one
563e308f 1293byte symbols, then all the two byte, then all the four byte, and then
252b5132
RH
1294everything else. This is to prevent gaps between symbols due to
1295alignment constraints.
1296
1297@kindex --split-by-file
a854a4a7 1298@item --split-by-file [@var{size}]
ff5dcc92 1299Similar to @option{--split-by-reloc} but creates a new output section for
a854a4a7
AM
1300each input file when @var{size} is reached. @var{size} defaults to a
1301size of 1 if not given.
252b5132
RH
1302
1303@kindex --split-by-reloc
a854a4a7
AM
1304@item --split-by-reloc [@var{count}]
1305Tries to creates extra sections in the output file so that no single
252b5132 1306output section in the file contains more than @var{count} relocations.
a854a4a7 1307This is useful when generating huge relocatable files for downloading into
252b5132
RH
1308certain real time kernels with the COFF object file format; since COFF
1309cannot represent more than 65535 relocations in a single section. Note
1310that this will fail to work with object file formats which do not
1311support arbitrary sections. The linker will not split up individual
1312input sections for redistribution, so if a single input section contains
1313more than @var{count} relocations one output section will contain that
a854a4a7 1314many relocations. @var{count} defaults to a value of 32768.
252b5132
RH
1315
1316@kindex --stats
1317@item --stats
1318Compute and display statistics about the operation of the linker, such
1319as execution time and memory usage.
1320
1321@kindex --traditional-format
1322@cindex traditional format
1323@item --traditional-format
ff5dcc92
SC
1324For some targets, the output of @command{ld} is different in some ways from
1325the output of some existing linker. This switch requests @command{ld} to
252b5132
RH
1326use the traditional format instead.
1327
1328@cindex dbx
ff5dcc92 1329For example, on SunOS, @command{ld} combines duplicate entries in the
252b5132
RH
1330symbol string table. This can reduce the size of an output file with
1331full debugging information by over 30 percent. Unfortunately, the SunOS
1332@code{dbx} program can not read the resulting program (@code{gdb} has no
ff5dcc92 1333trouble). The @samp{--traditional-format} switch tells @command{ld} to not
252b5132
RH
1334combine duplicate entries.
1335
176355da
NC
1336@kindex --section-start @var{sectionname}=@var{org}
1337@item --section-start @var{sectionname}=@var{org}
1338Locate a section in the output file at the absolute
1339address given by @var{org}. You may use this option as many
1340times as necessary to locate multiple sections in the command
1341line.
1342@var{org} must be a single hexadecimal integer;
1343for compatibility with other linkers, you may omit the leading
1344@samp{0x} usually associated with hexadecimal values. @emph{Note:} there
1345should be no white space between @var{sectionname}, the equals
1346sign (``@key{=}''), and @var{org}.
1347
252b5132
RH
1348@kindex -Tbss @var{org}
1349@kindex -Tdata @var{org}
1350@kindex -Ttext @var{org}
1351@cindex segment origins, cmd line
1352@item -Tbss @var{org}
1353@itemx -Tdata @var{org}
1354@itemx -Ttext @var{org}
1355Use @var{org} as the starting address for---respectively---the
1356@code{bss}, @code{data}, or the @code{text} segment of the output file.
1357@var{org} must be a single hexadecimal integer;
1358for compatibility with other linkers, you may omit the leading
1359@samp{0x} usually associated with hexadecimal values.
1360
1361@kindex --verbose
1362@cindex verbose
1363@item --dll-verbose
308b1ffd 1364@itemx --verbose
ff5dcc92 1365Display the version number for @command{ld} and list the linker emulations
252b5132 1366supported. Display which input files can and cannot be opened. Display
b9a8de1e 1367the linker script being used by the linker.
252b5132
RH
1368
1369@kindex --version-script=@var{version-scriptfile}
1370@cindex version script, symbol versions
1371@itemx --version-script=@var{version-scriptfile}
1372Specify the name of a version script to the linker. This is typically
1373used when creating shared libraries to specify additional information
1374about the version heirarchy for the library being created. This option
1375is only meaningful on ELF platforms which support shared libraries.
1376@xref{VERSION}.
1377
7ce691ae 1378@kindex --warn-common
252b5132
RH
1379@cindex warnings, on combining symbols
1380@cindex combining symbols, warnings on
1381@item --warn-common
1382Warn when a common symbol is combined with another common symbol or with
1383a symbol definition. Unix linkers allow this somewhat sloppy practice,
1384but linkers on some other operating systems do not. This option allows
1385you to find potential problems from combining global symbols.
1386Unfortunately, some C libraries use this practice, so you may get some
1387warnings about symbols in the libraries as well as in your programs.
1388
1389There are three kinds of global symbols, illustrated here by C examples:
1390
1391@table @samp
1392@item int i = 1;
1393A definition, which goes in the initialized data section of the output
1394file.
1395
1396@item extern int i;
1397An undefined reference, which does not allocate space.
1398There must be either a definition or a common symbol for the
1399variable somewhere.
1400
1401@item int i;
1402A common symbol. If there are only (one or more) common symbols for a
1403variable, it goes in the uninitialized data area of the output file.
1404The linker merges multiple common symbols for the same variable into a
1405single symbol. If they are of different sizes, it picks the largest
1406size. The linker turns a common symbol into a declaration, if there is
1407a definition of the same variable.
1408@end table
1409
1410The @samp{--warn-common} option can produce five kinds of warnings.
1411Each warning consists of a pair of lines: the first describes the symbol
1412just encountered, and the second describes the previous symbol
1413encountered with the same name. One or both of the two symbols will be
1414a common symbol.
1415
1416@enumerate
1417@item
1418Turning a common symbol into a reference, because there is already a
1419definition for the symbol.
1420@smallexample
1421@var{file}(@var{section}): warning: common of `@var{symbol}'
1422 overridden by definition
1423@var{file}(@var{section}): warning: defined here
1424@end smallexample
1425
1426@item
1427Turning a common symbol into a reference, because a later definition for
1428the symbol is encountered. This is the same as the previous case,
1429except that the symbols are encountered in a different order.
1430@smallexample
1431@var{file}(@var{section}): warning: definition of `@var{symbol}'
1432 overriding common
1433@var{file}(@var{section}): warning: common is here
1434@end smallexample
1435
1436@item
1437Merging a common symbol with a previous same-sized common symbol.
1438@smallexample
1439@var{file}(@var{section}): warning: multiple common
1440 of `@var{symbol}'
1441@var{file}(@var{section}): warning: previous common is here
1442@end smallexample
1443
1444@item
1445Merging a common symbol with a previous larger common symbol.
1446@smallexample
1447@var{file}(@var{section}): warning: common of `@var{symbol}'
1448 overridden by larger common
1449@var{file}(@var{section}): warning: larger common is here
1450@end smallexample
1451
1452@item
1453Merging a common symbol with a previous smaller common symbol. This is
1454the same as the previous case, except that the symbols are
1455encountered in a different order.
1456@smallexample
1457@var{file}(@var{section}): warning: common of `@var{symbol}'
1458 overriding smaller common
1459@var{file}(@var{section}): warning: smaller common is here
1460@end smallexample
1461@end enumerate
1462
1463@kindex --warn-constructors
1464@item --warn-constructors
1465Warn if any global constructors are used. This is only useful for a few
1466object file formats. For formats like COFF or ELF, the linker can not
1467detect the use of global constructors.
1468
1469@kindex --warn-multiple-gp
1470@item --warn-multiple-gp
1471Warn if multiple global pointer values are required in the output file.
1472This is only meaningful for certain processors, such as the Alpha.
1473Specifically, some processors put large-valued constants in a special
1474section. A special register (the global pointer) points into the middle
1475of this section, so that constants can be loaded efficiently via a
1476base-register relative addressing mode. Since the offset in
1477base-register relative mode is fixed and relatively small (e.g., 16
1478bits), this limits the maximum size of the constant pool. Thus, in
1479large programs, it is often necessary to use multiple global pointer
1480values in order to be able to address all possible constants. This
1481option causes a warning to be issued whenever this case occurs.
1482
1483@kindex --warn-once
1484@cindex warnings, on undefined symbols
1485@cindex undefined symbols, warnings on
1486@item --warn-once
1487Only warn once for each undefined symbol, rather than once per module
1488which refers to it.
1489
1490@kindex --warn-section-align
1491@cindex warnings, on section alignment
1492@cindex section alignment, warnings on
1493@item --warn-section-align
1494Warn if the address of an output section is changed because of
1495alignment. Typically, the alignment will be set by an input section.
1496The address will only be changed if it not explicitly specified; that
1497is, if the @code{SECTIONS} command does not specify a start address for
1498the section (@pxref{SECTIONS}).
1499
1500@kindex --whole-archive
1501@cindex including an entire archive
1502@item --whole-archive
1503For each archive mentioned on the command line after the
ff5dcc92 1504@option{--whole-archive} option, include every object file in the archive
252b5132
RH
1505in the link, rather than searching the archive for the required object
1506files. This is normally used to turn an archive file into a shared
1507library, forcing every object to be included in the resulting shared
1508library. This option may be used more than once.
1509
7ec229ce 1510Two notes when using this option from gcc: First, gcc doesn't know
ff5dcc92
SC
1511about this option, so you have to use @option{-Wl,-whole-archive}.
1512Second, don't forget to use @option{-Wl,-no-whole-archive} after your
7ec229ce
DD
1513list of archives, because gcc will add its own list of archives to
1514your link and you may not want this flag to affect those as well.
1515
252b5132
RH
1516@kindex --wrap
1517@item --wrap @var{symbol}
1518Use a wrapper function for @var{symbol}. Any undefined reference to
1519@var{symbol} will be resolved to @code{__wrap_@var{symbol}}. Any
1520undefined reference to @code{__real_@var{symbol}} will be resolved to
1521@var{symbol}.
1522
1523This can be used to provide a wrapper for a system function. The
1524wrapper function should be called @code{__wrap_@var{symbol}}. If it
1525wishes to call the system function, it should call
1526@code{__real_@var{symbol}}.
1527
1528Here is a trivial example:
1529
1530@smallexample
1531void *
1532__wrap_malloc (int c)
1533@{
1534 printf ("malloc called with %ld\n", c);
1535 return __real_malloc (c);
1536@}
1537@end smallexample
1538
ff5dcc92 1539If you link other code with this file using @option{--wrap malloc}, then
252b5132
RH
1540all calls to @code{malloc} will call the function @code{__wrap_malloc}
1541instead. The call to @code{__real_malloc} in @code{__wrap_malloc} will
1542call the real @code{malloc} function.
1543
1544You may wish to provide a @code{__real_malloc} function as well, so that
ff5dcc92 1545links without the @option{--wrap} option will succeed. If you do this,
252b5132
RH
1546you should not put the definition of @code{__real_malloc} in the same
1547file as @code{__wrap_malloc}; if you do, the assembler may resolve the
1548call before the linker has a chance to wrap it to @code{malloc}.
1549
6c1439be
L
1550@kindex --enable-new-dtags
1551@kindex --disable-new-dtags
1552@item --enable-new-dtags
1553@itemx --disable-new-dtags
1554This linker can create the new dynamic tags in ELF. But the older ELF
1555systems may not understand them. If you specify
ff5dcc92
SC
1556@option{--enable-new-dtags}, the dynamic tags will be created as needed.
1557If you specify @option{--disable-new-dtags}, no new dynamic tags will be
6c1439be
L
1558created. By default, the new dynamic tags are not created. Note that
1559those options are only available for ELF systems.
1560
252b5132
RH
1561@end table
1562
0285c67d
NC
1563@c man end
1564
252b5132
RH
1565@subsection Options specific to i386 PE targets
1566
0285c67d
NC
1567@c man begin OPTIONS
1568
ff5dcc92 1569The i386 PE linker supports the @option{-shared} option, which causes
252b5132
RH
1570the output to be a dynamically linked library (DLL) instead of a
1571normal executable. You should name the output @code{*.dll} when you
1572use this option. In addition, the linker fully supports the standard
1573@code{*.def} files, which may be specified on the linker command line
1574like an object file (in fact, it should precede archives it exports
1575symbols from, to ensure that they get linked in, just like a normal
1576object file).
1577
1578In addition to the options common to all targets, the i386 PE linker
1579support additional command line options that are specific to the i386
1580PE target. Options that take values may be separated from their
1581values by either a space or an equals sign.
1582
ff5dcc92 1583@table @gcctabopt
252b5132
RH
1584
1585@kindex --add-stdcall-alias
1586@item --add-stdcall-alias
1587If given, symbols with a stdcall suffix (@@@var{nn}) will be exported
1588as-is and also with the suffix stripped.
1589
1590@kindex --base-file
1591@item --base-file @var{file}
1592Use @var{file} as the name of a file in which to save the base
1593addresses of all the relocations needed for generating DLLs with
1594@file{dlltool}.
1595
1596@kindex --dll
1597@item --dll
1598Create a DLL instead of a regular executable. You may also use
ff5dcc92 1599@option{-shared} or specify a @code{LIBRARY} in a given @code{.def}
252b5132
RH
1600file.
1601
1602@kindex --enable-stdcall-fixup
1603@kindex --disable-stdcall-fixup
1604@item --enable-stdcall-fixup
1605@itemx --disable-stdcall-fixup
1606If the link finds a symbol that it cannot resolve, it will attempt to
1607do "fuzzy linking" by looking for another defined symbol that differs
1608only in the format of the symbol name (cdecl vs stdcall) and will
1609resolve that symbol by linking to the match. For example, the
1610undefined symbol @code{_foo} might be linked to the function
1611@code{_foo@@12}, or the undefined symbol @code{_bar@@16} might be linked
1612to the function @code{_bar}. When the linker does this, it prints a
1613warning, since it normally should have failed to link, but sometimes
1614import libraries generated from third-party dlls may need this feature
ff5dcc92 1615to be usable. If you specify @option{--enable-stdcall-fixup}, this
252b5132 1616feature is fully enabled and warnings are not printed. If you specify
ff5dcc92 1617@option{--disable-stdcall-fixup}, this feature is disabled and such
252b5132
RH
1618mismatches are considered to be errors.
1619
1620@cindex DLLs, creating
1621@kindex --export-all-symbols
1622@item --export-all-symbols
1623If given, all global symbols in the objects used to build a DLL will
1624be exported by the DLL. Note that this is the default if there
1625otherwise wouldn't be any exported symbols. When symbols are
1626explicitly exported via DEF files or implicitly exported via function
1627attributes, the default is to not export anything else unless this
1628option is given. Note that the symbols @code{DllMain@@12},
b044cda1
CW
1629@code{DllEntryPoint@@0}, @code{DllMainCRTStartup@@12}, and
1630@code{impure_ptr} will not be automatically
1631exported. Also, symbols imported from other DLLs will not be
1632re-exported, nor will symbols specifying the DLL's internal layout
1633such as those beginning with @code{_head_} or ending with
1634@code{_iname}. In addition, no symbols from @code{libgcc},
1635@code{libstd++}, @code{libmingw32}, or @code{crtX.o} will be exported.
1636Symbols whose names begin with @code{__rtti_} or @code{__builtin_} will
1637not be exported, to help with C++ DLLs. Finally, there is an
1638extensive list of cygwin-private symbols that are not exported
1639(obviously, this applies on when building DLLs for cygwin targets).
1640These cygwin-excludes are: @code{_cygwin_dll_entry@@12},
1641@code{_cygwin_crt0_common@@8}, @code{_cygwin_noncygwin_dll_entry@@12},
1642@code{_fmode}, @code{_impure_ptr}, @code{cygwin_attach_dll},
1643@code{cygwin_premain0}, @code{cygwin_premain1}, @code{cygwin_premain2},
1644@code{cygwin_premain3}, and @code{environ}.
252b5132
RH
1645
1646@kindex --exclude-symbols
1d0a3c9c 1647@item --exclude-symbols @var{symbol},@var{symbol},...
252b5132
RH
1648Specifies a list of symbols which should not be automatically
1649exported. The symbol names may be delimited by commas or colons.
1650
1651@kindex --file-alignment
1652@item --file-alignment
1653Specify the file alignment. Sections in the file will always begin at
1654file offsets which are multiples of this number. This defaults to
1655512.
1656
1657@cindex heap size
1658@kindex --heap
1659@item --heap @var{reserve}
1660@itemx --heap @var{reserve},@var{commit}
1661Specify the amount of memory to reserve (and optionally commit) to be
1662used as heap for this program. The default is 1Mb reserved, 4K
1663committed.
1664
1665@cindex image base
1666@kindex --image-base
1667@item --image-base @var{value}
1668Use @var{value} as the base address of your program or dll. This is
1669the lowest memory location that will be used when your program or dll
1670is loaded. To reduce the need to relocate and improve performance of
1671your dlls, each should have a unique base address and not overlap any
1672other dlls. The default is 0x400000 for executables, and 0x10000000
1673for dlls.
1674
1675@kindex --kill-at
1676@item --kill-at
1677If given, the stdcall suffixes (@@@var{nn}) will be stripped from
1678symbols before they are exported.
1679
1680@kindex --major-image-version
1681@item --major-image-version @var{value}
1682Sets the major number of the "image version". Defaults to 1.
1683
1684@kindex --major-os-version
1685@item --major-os-version @var{value}
1686Sets the major number of the "os version". Defaults to 4.
1687
1688@kindex --major-subsystem-version
1689@item --major-subsystem-version @var{value}
1690Sets the major number of the "subsystem version". Defaults to 4.
1691
1692@kindex --minor-image-version
1693@item --minor-image-version @var{value}
1694Sets the minor number of the "image version". Defaults to 0.
1695
1696@kindex --minor-os-version
1697@item --minor-os-version @var{value}
1698Sets the minor number of the "os version". Defaults to 0.
1699
1700@kindex --minor-subsystem-version
1701@item --minor-subsystem-version @var{value}
1702Sets the minor number of the "subsystem version". Defaults to 0.
1703
1704@cindex DEF files, creating
1705@cindex DLLs, creating
1706@kindex --output-def
1707@item --output-def @var{file}
1708The linker will create the file @var{file} which will contain a DEF
1709file corresponding to the DLL the linker is generating. This DEF file
1710(which should be called @code{*.def}) may be used to create an import
1711library with @code{dlltool} or may be used as a reference to
1712automatically or implicitly exported symbols.
1713
b044cda1
CW
1714@cindex DLLs, creating
1715@kindex --out-implib
1716@item --out-implib @var{file}
1717The linker will create the file @var{file} which will contain an
1718import lib corresponding to the DLL the linker is generating. This
1719import lib (which should be called @code{*.dll.a} or @code{*.a}
1720may be used to link clients against the generated DLL; this behavior
1721makes it possible to skip a separate @code{dlltool} import library
1722creation step.
1723
1724@kindex --enable-auto-image-base
1725@item --enable-auto-image-base
1726Automatically choose the image base for DLLs, unless one is specified
1727using the @code{--image-base} argument. By using a hash generated
1728from the dllname to create unique image bases for each DLL, in-memory
1729collisions and relocations which can delay program execution are
1730avoided.
1731
1732@kindex --disable-auto-image-base
1733@item --disable-auto-image-base
1734Do not automatically generate a unique image base. If there is no
1735user-specified image base (@code{--image-base}) then use the platform
1736default.
1737
1738@cindex DLLs, linking to
1739@kindex --dll-search-prefix
1740@item --dll-search-prefix @var{string}
1741When linking dynamically to a dll without an import library, i
1742search for @code{<string><basename>.dll} in preference to
1743@code{lib<basename>.dll}. This behavior allows easy distinction
1744between DLLs built for the various "subplatforms": native, cygwin,
1745uwin, pw, etc. For instance, cygwin DLLs typically use
1746@code{--dll-search-prefix=cyg}.
1747
1748@kindex --enable-auto-import
1749@item --enable-auto-import
0d888aac 1750Do sophisticated linking of @code{_symbol} to @code{__imp__symbol} for
b044cda1 1751DATA imports from DLLs, and create the necessary thunking symbols when
0d888aac
CW
1752building the DLLs with those DATA exports. This generally will 'just
1753work' -- but sometimes you may see this message:
1754
1755"variable '<var>' can't be auto-imported. Please read the
1756documentation for ld's @code{--enable-auto-import} for details."
1757
1758This message occurs when some (sub)expression accesses an address
1759ultimately given by the sum of two constants (Win32 import tables only
1760allow one). Instances where this may occur include accesses to member
1761fields of struct variables imported from a DLL, as well as using a
2f8d8971
NC
1762constant index into an array variable imported from a DLL. Any
1763multiword variable (arrays, structs, long long, etc) may trigger
1764this error condition. However, regardless of the exact data type
1765of the offending exported variable, ld will always detect it, issue
1766the warning, and exit.
1767
1768There are several ways to address this difficulty, regardless of the
1769data type of the exported variable:
0d888aac
CW
1770
1771One solution is to force one of the 'constants' to be a variable --
1772that is, unknown and un-optimizable at compile time. For arrays,
1773there are two possibilities: a) make the indexee (the array's address)
1774a variable, or b) make the 'constant' index a variable. Thus:
1775
1776@example
1777extern type extern_array[];
1778extern_array[1] -->
1779 @{ volatile type *t=extern_array; t[1] @}
1780@end example
1781
1782or
1783
1784@example
1785extern type extern_array[];
1786extern_array[1] -->
1787 @{ volatile int t=1; extern_array[t] @}
1788@end example
1789
2f8d8971
NC
1790For structs (and most other multiword data types) the only option
1791is to make the struct itself (or the long long, or the ...) variable:
0d888aac
CW
1792
1793@example
1794extern struct s extern_struct;
1795extern_struct.field -->
1796 @{ volatile struct s *t=&extern_struct; t->field @}
1797@end example
1798
c406afaf
NC
1799or
1800
1801@example
1802extern long long extern_ll;
1803extern_ll -->
1804 @{ volatile long long * local_ll=&extern_ll; *local_ll @}
1805@end example
1806
0d888aac
CW
1807A second method of dealing with this difficulty is to abandon
1808'auto-import' for the offending symbol and mark it with
1809@code{__declspec(dllimport)}. However, in practice that
1810requires using compile-time #defines to indicate whether you are
1811building a DLL, building client code that will link to the DLL, or
1812merely building/linking to a static library. In making the choice
1813between the various methods of resolving the 'direct address with
1814constant offset' problem, you should consider typical real-world usage:
1815
1816Original:
1817@example
1818--foo.h
1819extern int arr[];
1820--foo.c
1821#include "foo.h"
1822void main(int argc, char **argv)@{
1823 printf("%d\n",arr[1]);
1824@}
1825@end example
1826
1827Solution 1:
1828@example
1829--foo.h
1830extern int arr[];
1831--foo.c
1832#include "foo.h"
1833void main(int argc, char **argv)@{
1834 /* This workaround is for win32 and cygwin; do not "optimize" */
1835 volatile int *parr = arr;
1836 printf("%d\n",parr[1]);
1837@}
1838@end example
1839
1840Solution 2:
1841@example
1842--foo.h
1843/* Note: auto-export is assumed (no __declspec(dllexport)) */
1844#if (defined(_WIN32) || defined(__CYGWIN__)) && \
1845 !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
1846#define FOO_IMPORT __declspec(dllimport)
1847#else
1848#define FOO_IMPORT
1849#endif
1850extern FOO_IMPORT int arr[];
1851--foo.c
1852#include "foo.h"
1853void main(int argc, char **argv)@{
1854 printf("%d\n",arr[1]);
1855@}
1856@end example
1857
1858A third way to avoid this problem is to re-code your
1859library to use a functional interface rather than a data interface
1860for the offending variables (e.g. set_foo() and get_foo() accessor
1861functions).
b044cda1
CW
1862
1863@kindex --disable-auto-import
1864@item --disable-auto-import
1865Do not attempt to do sophisticalted linking of @code{_symbol} to
1866@code{__imp__symbol} for DATA imports from DLLs.
1867
1868@kindex --enable-extra-pe-debug
1869@item --enable-extra-pe-debug
1870Show additional debug info related to auto-import symbol thunking.
1871
252b5132
RH
1872@kindex --section-alignment
1873@item --section-alignment
1874Sets the section alignment. Sections in memory will always begin at
1875addresses which are a multiple of this number. Defaults to 0x1000.
1876
1877@cindex stack size
1878@kindex --stack
1879@item --stack @var{reserve}
1880@itemx --stack @var{reserve},@var{commit}
1881Specify the amount of memory to reserve (and optionally commit) to be
559e4713 1882used as stack for this program. The default is 2Mb reserved, 4K
252b5132
RH
1883committed.
1884
1885@kindex --subsystem
1886@item --subsystem @var{which}
1887@itemx --subsystem @var{which}:@var{major}
1888@itemx --subsystem @var{which}:@var{major}.@var{minor}
1889Specifies the subsystem under which your program will execute. The
1890legal values for @var{which} are @code{native}, @code{windows},
1891@code{console}, and @code{posix}. You may optionally set the
1892subsystem version also.
1893
1894@end table
1895
0285c67d
NC
1896@c man end
1897
252b5132
RH
1898@ifset UsesEnvVars
1899@node Environment
1900@section Environment Variables
1901
0285c67d
NC
1902@c man begin ENVIRONMENT
1903
ff5dcc92 1904You can change the behavior of @command{ld} with the environment variables
252b5132
RH
1905@code{GNUTARGET}, @code{LDEMULATION}, and @code{COLLECT_NO_DEMANGLE}.
1906
1907@kindex GNUTARGET
1908@cindex default input format
1909@code{GNUTARGET} determines the input-file object format if you don't
1910use @samp{-b} (or its synonym @samp{--format}). Its value should be one
1911of the BFD names for an input format (@pxref{BFD}). If there is no
ff5dcc92 1912@code{GNUTARGET} in the environment, @command{ld} uses the natural format
252b5132
RH
1913of the target. If @code{GNUTARGET} is set to @code{default} then BFD
1914attempts to discover the input format by examining binary input files;
1915this method often succeeds, but there are potential ambiguities, since
1916there is no method of ensuring that the magic number used to specify
1917object-file formats is unique. However, the configuration procedure for
1918BFD on each system places the conventional format for that system first
1919in the search-list, so ambiguities are resolved in favor of convention.
1920
1921@kindex LDEMULATION
1922@cindex default emulation
1923@cindex emulation, default
1924@code{LDEMULATION} determines the default emulation if you don't use the
1925@samp{-m} option. The emulation can affect various aspects of linker
1926behaviour, particularly the default linker script. You can list the
1927available emulations with the @samp{--verbose} or @samp{-V} options. If
1928the @samp{-m} option is not used, and the @code{LDEMULATION} environment
1929variable is not defined, the default emulation depends upon how the
1930linker was configured.
252b5132
RH
1931
1932@kindex COLLECT_NO_DEMANGLE
1933@cindex demangling, default
1934Normally, the linker will default to demangling symbols. However, if
1935@code{COLLECT_NO_DEMANGLE} is set in the environment, then it will
1936default to not demangling symbols. This environment variable is used in
1937a similar fashion by the @code{gcc} linker wrapper program. The default
1938may be overridden by the @samp{--demangle} and @samp{--no-demangle}
1939options.
1940
0285c67d
NC
1941@c man end
1942@end ifset
1943
252b5132
RH
1944@node Scripts
1945@chapter Linker Scripts
1946
1947@cindex scripts
1948@cindex linker scripts
1949@cindex command files
1950Every link is controlled by a @dfn{linker script}. This script is
1951written in the linker command language.
1952
1953The main purpose of the linker script is to describe how the sections in
1954the input files should be mapped into the output file, and to control
1955the memory layout of the output file. Most linker scripts do nothing
1956more than this. However, when necessary, the linker script can also
1957direct the linker to perform many other operations, using the commands
1958described below.
1959
1960The linker always uses a linker script. If you do not supply one
1961yourself, the linker will use a default script that is compiled into the
1962linker executable. You can use the @samp{--verbose} command line option
1963to display the default linker script. Certain command line options,
1964such as @samp{-r} or @samp{-N}, will affect the default linker script.
1965
1966You may supply your own linker script by using the @samp{-T} command
1967line option. When you do this, your linker script will replace the
1968default linker script.
1969
1970You may also use linker scripts implicitly by naming them as input files
1971to the linker, as though they were files to be linked. @xref{Implicit
1972Linker Scripts}.
1973
1974@menu
1975* Basic Script Concepts:: Basic Linker Script Concepts
1976* Script Format:: Linker Script Format
1977* Simple Example:: Simple Linker Script Example
1978* Simple Commands:: Simple Linker Script Commands
1979* Assignments:: Assigning Values to Symbols
1980* SECTIONS:: SECTIONS Command
1981* MEMORY:: MEMORY Command
1982* PHDRS:: PHDRS Command
1983* VERSION:: VERSION Command
1984* Expressions:: Expressions in Linker Scripts
1985* Implicit Linker Scripts:: Implicit Linker Scripts
1986@end menu
1987
1988@node Basic Script Concepts
1989@section Basic Linker Script Concepts
1990@cindex linker script concepts
1991We need to define some basic concepts and vocabulary in order to
1992describe the linker script language.
1993
1994The linker combines input files into a single output file. The output
1995file and each input file are in a special data format known as an
1996@dfn{object file format}. Each file is called an @dfn{object file}.
1997The output file is often called an @dfn{executable}, but for our
1998purposes we will also call it an object file. Each object file has,
1999among other things, a list of @dfn{sections}. We sometimes refer to a
2000section in an input file as an @dfn{input section}; similarly, a section
2001in the output file is an @dfn{output section}.
2002
2003Each section in an object file has a name and a size. Most sections
2004also have an associated block of data, known as the @dfn{section
2005contents}. A section may be marked as @dfn{loadable}, which mean that
2006the contents should be loaded into memory when the output file is run.
2007A section with no contents may be @dfn{allocatable}, which means that an
2008area in memory should be set aside, but nothing in particular should be
2009loaded there (in some cases this memory must be zeroed out). A section
2010which is neither loadable nor allocatable typically contains some sort
2011of debugging information.
2012
2013Every loadable or allocatable output section has two addresses. The
2014first is the @dfn{VMA}, or virtual memory address. This is the address
2015the section will have when the output file is run. The second is the
2016@dfn{LMA}, or load memory address. This is the address at which the
2017section will be loaded. In most cases the two addresses will be the
2018same. An example of when they might be different is when a data section
2019is loaded into ROM, and then copied into RAM when the program starts up
2020(this technique is often used to initialize global variables in a ROM
2021based system). In this case the ROM address would be the LMA, and the
2022RAM address would be the VMA.
2023
2024You can see the sections in an object file by using the @code{objdump}
2025program with the @samp{-h} option.
2026
2027Every object file also has a list of @dfn{symbols}, known as the
2028@dfn{symbol table}. A symbol may be defined or undefined. Each symbol
2029has a name, and each defined symbol has an address, among other
2030information. If you compile a C or C++ program into an object file, you
2031will get a defined symbol for every defined function and global or
2032static variable. Every undefined function or global variable which is
2033referenced in the input file will become an undefined symbol.
2034
2035You can see the symbols in an object file by using the @code{nm}
2036program, or by using the @code{objdump} program with the @samp{-t}
2037option.
2038
2039@node Script Format
2040@section Linker Script Format
2041@cindex linker script format
2042Linker scripts are text files.
2043
2044You write a linker script as a series of commands. Each command is
2045either a keyword, possibly followed by arguments, or an assignment to a
2046symbol. You may separate commands using semicolons. Whitespace is
2047generally ignored.
2048
2049Strings such as file or format names can normally be entered directly.
2050If the file name contains a character such as a comma which would
2051otherwise serve to separate file names, you may put the file name in
2052double quotes. There is no way to use a double quote character in a
2053file name.
2054
2055You may include comments in linker scripts just as in C, delimited by
2056@samp{/*} and @samp{*/}. As in C, comments are syntactically equivalent
2057to whitespace.
2058
2059@node Simple Example
2060@section Simple Linker Script Example
2061@cindex linker script example
2062@cindex example of linker script
2063Many linker scripts are fairly simple.
2064
2065The simplest possible linker script has just one command:
2066@samp{SECTIONS}. You use the @samp{SECTIONS} command to describe the
2067memory layout of the output file.
2068
2069The @samp{SECTIONS} command is a powerful command. Here we will
2070describe a simple use of it. Let's assume your program consists only of
2071code, initialized data, and uninitialized data. These will be in the
2072@samp{.text}, @samp{.data}, and @samp{.bss} sections, respectively.
2073Let's assume further that these are the only sections which appear in
2074your input files.
2075
2076For this example, let's say that the code should be loaded at address
20770x10000, and that the data should start at address 0x8000000. Here is a
2078linker script which will do that:
2079@smallexample
2080SECTIONS
2081@{
2082 . = 0x10000;
2083 .text : @{ *(.text) @}
2084 . = 0x8000000;
2085 .data : @{ *(.data) @}
2086 .bss : @{ *(.bss) @}
2087@}
2088@end smallexample
2089
2090You write the @samp{SECTIONS} command as the keyword @samp{SECTIONS},
2091followed by a series of symbol assignments and output section
2092descriptions enclosed in curly braces.
2093
252b5132
RH
2094The first line inside the @samp{SECTIONS} command of the above example
2095sets the value of the special symbol @samp{.}, which is the location
2096counter. If you do not specify the address of an output section in some
2097other way (other ways are described later), the address is set from the
2098current value of the location counter. The location counter is then
2099incremented by the size of the output section. At the start of the
2100@samp{SECTIONS} command, the location counter has the value @samp{0}.
2101
2102The second line defines an output section, @samp{.text}. The colon is
2103required syntax which may be ignored for now. Within the curly braces
2104after the output section name, you list the names of the input sections
2105which should be placed into this output section. The @samp{*} is a
2106wildcard which matches any file name. The expression @samp{*(.text)}
2107means all @samp{.text} input sections in all input files.
2108
2109Since the location counter is @samp{0x10000} when the output section
2110@samp{.text} is defined, the linker will set the address of the
2111@samp{.text} section in the output file to be @samp{0x10000}.
2112
2113The remaining lines define the @samp{.data} and @samp{.bss} sections in
2114the output file. The linker will place the @samp{.data} output section
2115at address @samp{0x8000000}. After the linker places the @samp{.data}
2116output section, the value of the location counter will be
2117@samp{0x8000000} plus the size of the @samp{.data} output section. The
2118effect is that the linker will place the @samp{.bss} output section
2119immediately after the @samp{.data} output section in memory
2120
2121The linker will ensure that each output section has the required
2122alignment, by increasing the location counter if necessary. In this
2123example, the specified addresses for the @samp{.text} and @samp{.data}
2124sections will probably satisfy any alignment constraints, but the linker
2125may have to create a small gap between the @samp{.data} and @samp{.bss}
2126sections.
2127
2128That's it! That's a simple and complete linker script.
2129
2130@node Simple Commands
2131@section Simple Linker Script Commands
2132@cindex linker script simple commands
2133In this section we describe the simple linker script commands.
2134
2135@menu
2136* Entry Point:: Setting the entry point
2137* File Commands:: Commands dealing with files
2138@ifclear SingleFormat
2139* Format Commands:: Commands dealing with object file formats
2140@end ifclear
2141
2142* Miscellaneous Commands:: Other linker script commands
2143@end menu
2144
2145@node Entry Point
2146@subsection Setting the entry point
2147@kindex ENTRY(@var{symbol})
2148@cindex start of execution
2149@cindex first instruction
2150@cindex entry point
2151The first instruction to execute in a program is called the @dfn{entry
2152point}. You can use the @code{ENTRY} linker script command to set the
2153entry point. The argument is a symbol name:
2154@smallexample
2155ENTRY(@var{symbol})
2156@end smallexample
2157
2158There are several ways to set the entry point. The linker will set the
2159entry point by trying each of the following methods in order, and
2160stopping when one of them succeeds:
2161@itemize @bullet
a1ab1d2a 2162@item
252b5132 2163the @samp{-e} @var{entry} command-line option;
a1ab1d2a 2164@item
252b5132 2165the @code{ENTRY(@var{symbol})} command in a linker script;
a1ab1d2a 2166@item
252b5132 2167the value of the symbol @code{start}, if defined;
a1ab1d2a 2168@item
252b5132 2169the address of the first byte of the @samp{.text} section, if present;
a1ab1d2a 2170@item
252b5132
RH
2171The address @code{0}.
2172@end itemize
2173
2174@node File Commands
2175@subsection Commands dealing with files
2176@cindex linker script file commands
2177Several linker script commands deal with files.
2178
2179@table @code
2180@item INCLUDE @var{filename}
2181@kindex INCLUDE @var{filename}
2182@cindex including a linker script
2183Include the linker script @var{filename} at this point. The file will
2184be searched for in the current directory, and in any directory specified
ff5dcc92 2185with the @option{-L} option. You can nest calls to @code{INCLUDE} up to
252b5132
RH
218610 levels deep.
2187
2188@item INPUT(@var{file}, @var{file}, @dots{})
2189@itemx INPUT(@var{file} @var{file} @dots{})
2190@kindex INPUT(@var{files})
2191@cindex input files in linker scripts
2192@cindex input object files in linker scripts
2193@cindex linker script input object files
2194The @code{INPUT} command directs the linker to include the named files
2195in the link, as though they were named on the command line.
2196
2197For example, if you always want to include @file{subr.o} any time you do
2198a link, but you can't be bothered to put it on every link command line,
2199then you can put @samp{INPUT (subr.o)} in your linker script.
2200
2201In fact, if you like, you can list all of your input files in the linker
2202script, and then invoke the linker with nothing but a @samp{-T} option.
2203
2204The linker will first try to open the file in the current directory. If
2205it is not found, the linker will search through the archive library
2206search path. See the description of @samp{-L} in @ref{Options,,Command
2207Line Options}.
2208
ff5dcc92 2209If you use @samp{INPUT (-l@var{file})}, @command{ld} will transform the
252b5132
RH
2210name to @code{lib@var{file}.a}, as with the command line argument
2211@samp{-l}.
2212
2213When you use the @code{INPUT} command in an implicit linker script, the
2214files will be included in the link at the point at which the linker
2215script file is included. This can affect archive searching.
2216
2217@item GROUP(@var{file}, @var{file}, @dots{})
2218@itemx GROUP(@var{file} @var{file} @dots{})
2219@kindex GROUP(@var{files})
2220@cindex grouping input files
2221The @code{GROUP} command is like @code{INPUT}, except that the named
2222files should all be archives, and they are searched repeatedly until no
2223new undefined references are created. See the description of @samp{-(}
2224in @ref{Options,,Command Line Options}.
2225
2226@item OUTPUT(@var{filename})
2227@kindex OUTPUT(@var{filename})
2228@cindex output file name in linker scripot
2229The @code{OUTPUT} command names the output file. Using
2230@code{OUTPUT(@var{filename})} in the linker script is exactly like using
2231@samp{-o @var{filename}} on the command line (@pxref{Options,,Command
2232Line Options}). If both are used, the command line option takes
2233precedence.
2234
2235You can use the @code{OUTPUT} command to define a default name for the
2236output file other than the usual default of @file{a.out}.
2237
2238@item SEARCH_DIR(@var{path})
2239@kindex SEARCH_DIR(@var{path})
2240@cindex library search path in linker script
2241@cindex archive search path in linker script
2242@cindex search path in linker script
2243The @code{SEARCH_DIR} command adds @var{path} to the list of paths where
ff5dcc92 2244@command{ld} looks for archive libraries. Using
252b5132
RH
2245@code{SEARCH_DIR(@var{path})} is exactly like using @samp{-L @var{path}}
2246on the command line (@pxref{Options,,Command Line Options}). If both
2247are used, then the linker will search both paths. Paths specified using
2248the command line option are searched first.
2249
2250@item STARTUP(@var{filename})
2251@kindex STARTUP(@var{filename})
2252@cindex first input file
2253The @code{STARTUP} command is just like the @code{INPUT} command, except
2254that @var{filename} will become the first input file to be linked, as
2255though it were specified first on the command line. This may be useful
2256when using a system in which the entry point is always the start of the
2257first file.
2258@end table
2259
2260@ifclear SingleFormat
2261@node Format Commands
2262@subsection Commands dealing with object file formats
2263A couple of linker script commands deal with object file formats.
2264
2265@table @code
2266@item OUTPUT_FORMAT(@var{bfdname})
2267@itemx OUTPUT_FORMAT(@var{default}, @var{big}, @var{little})
2268@kindex OUTPUT_FORMAT(@var{bfdname})
2269@cindex output file format in linker script
2270The @code{OUTPUT_FORMAT} command names the BFD format to use for the
2271output file (@pxref{BFD}). Using @code{OUTPUT_FORMAT(@var{bfdname})} is
2272exactly like using @samp{-oformat @var{bfdname}} on the command line
2273(@pxref{Options,,Command Line Options}). If both are used, the command
2274line option takes precedence.
2275
2276You can use @code{OUTPUT_FORMAT} with three arguments to use different
2277formats based on the @samp{-EB} and @samp{-EL} command line options.
2278This permits the linker script to set the output format based on the
2279desired endianness.
2280
2281If neither @samp{-EB} nor @samp{-EL} are used, then the output format
2282will be the first argument, @var{default}. If @samp{-EB} is used, the
2283output format will be the second argument, @var{big}. If @samp{-EL} is
2284used, the output format will be the third argument, @var{little}.
2285
2286For example, the default linker script for the MIPS ELF target uses this
2287command:
2288@smallexample
2289OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
2290@end smallexample
2291This says that the default format for the output file is
2292@samp{elf32-bigmips}, but if the user uses the @samp{-EL} command line
2293option, the output file will be created in the @samp{elf32-littlemips}
2294format.
2295
2296@item TARGET(@var{bfdname})
2297@kindex TARGET(@var{bfdname})
2298@cindex input file format in linker script
2299The @code{TARGET} command names the BFD format to use when reading input
2300files. It affects subsequent @code{INPUT} and @code{GROUP} commands.
2301This command is like using @samp{-b @var{bfdname}} on the command line
2302(@pxref{Options,,Command Line Options}). If the @code{TARGET} command
2303is used but @code{OUTPUT_FORMAT} is not, then the last @code{TARGET}
2304command is also used to set the format for the output file. @xref{BFD}.
2305@end table
2306@end ifclear
2307
2308@node Miscellaneous Commands
2309@subsection Other linker script commands
2310There are a few other linker scripts commands.
2311
2312@table @code
2313@item ASSERT(@var{exp}, @var{message})
2314@kindex ASSERT
2315@cindex assertion in linker script
2316Ensure that @var{exp} is non-zero. If it is zero, then exit the linker
2317with an error code, and print @var{message}.
2318
2319@item EXTERN(@var{symbol} @var{symbol} @dots{})
2320@kindex EXTERN
2321@cindex undefined symbol in linker script
2322Force @var{symbol} to be entered in the output file as an undefined
2323symbol. Doing this may, for example, trigger linking of additional
2324modules from standard libraries. You may list several @var{symbol}s for
2325each @code{EXTERN}, and you may use @code{EXTERN} multiple times. This
2326command has the same effect as the @samp{-u} command-line option.
2327
2328@item FORCE_COMMON_ALLOCATION
2329@kindex FORCE_COMMON_ALLOCATION
2330@cindex common allocation in linker script
2331This command has the same effect as the @samp{-d} command-line option:
ff5dcc92 2332to make @command{ld} assign space to common symbols even if a relocatable
252b5132
RH
2333output file is specified (@samp{-r}).
2334
4818e05f
AM
2335@item INHIBIT_COMMON_ALLOCATION
2336@kindex INHIBIT_COMMON_ALLOCATION
2337@cindex common allocation in linker script
2338This command has the same effect as the @samp{--no-define-common}
2339command-line option: to make @code{ld} omit the assignment of addresses
2340to common symbols even for a non-relocatable output file.
2341
252b5132
RH
2342@item NOCROSSREFS(@var{section} @var{section} @dots{})
2343@kindex NOCROSSREFS(@var{sections})
2344@cindex cross references
ff5dcc92 2345This command may be used to tell @command{ld} to issue an error about any
252b5132
RH
2346references among certain output sections.
2347
2348In certain types of programs, particularly on embedded systems when
2349using overlays, when one section is loaded into memory, another section
2350will not be. Any direct references between the two sections would be
2351errors. For example, it would be an error if code in one section called
2352a function defined in the other section.
2353
2354The @code{NOCROSSREFS} command takes a list of output section names. If
ff5dcc92 2355@command{ld} detects any cross references between the sections, it reports
252b5132
RH
2356an error and returns a non-zero exit status. Note that the
2357@code{NOCROSSREFS} command uses output section names, not input section
2358names.
2359
2360@ifclear SingleFormat
2361@item OUTPUT_ARCH(@var{bfdarch})
2362@kindex OUTPUT_ARCH(@var{bfdarch})
2363@cindex machine architecture
2364@cindex architecture
2365Specify a particular output machine architecture. The argument is one
2366of the names used by the BFD library (@pxref{BFD}). You can see the
2367architecture of an object file by using the @code{objdump} program with
2368the @samp{-f} option.
2369@end ifclear
2370@end table
2371
2372@node Assignments
2373@section Assigning Values to Symbols
2374@cindex assignment in scripts
2375@cindex symbol definition, scripts
2376@cindex variables, defining
2377You may assign a value to a symbol in a linker script. This will define
2378the symbol as a global symbol.
2379
2380@menu
2381* Simple Assignments:: Simple Assignments
2382* PROVIDE:: PROVIDE
2383@end menu
2384
2385@node Simple Assignments
2386@subsection Simple Assignments
2387
2388You may assign to a symbol using any of the C assignment operators:
2389
2390@table @code
2391@item @var{symbol} = @var{expression} ;
2392@itemx @var{symbol} += @var{expression} ;
2393@itemx @var{symbol} -= @var{expression} ;
2394@itemx @var{symbol} *= @var{expression} ;
2395@itemx @var{symbol} /= @var{expression} ;
2396@itemx @var{symbol} <<= @var{expression} ;
2397@itemx @var{symbol} >>= @var{expression} ;
2398@itemx @var{symbol} &= @var{expression} ;
2399@itemx @var{symbol} |= @var{expression} ;
2400@end table
2401
2402The first case will define @var{symbol} to the value of
2403@var{expression}. In the other cases, @var{symbol} must already be
2404defined, and the value will be adjusted accordingly.
2405
2406The special symbol name @samp{.} indicates the location counter. You
2407may only use this within a @code{SECTIONS} command.
2408
2409The semicolon after @var{expression} is required.
2410
2411Expressions are defined below; see @ref{Expressions}.
2412
2413You may write symbol assignments as commands in their own right, or as
2414statements within a @code{SECTIONS} command, or as part of an output
2415section description in a @code{SECTIONS} command.
2416
2417The section of the symbol will be set from the section of the
2418expression; for more information, see @ref{Expression Section}.
2419
2420Here is an example showing the three different places that symbol
2421assignments may be used:
2422
2423@smallexample
2424floating_point = 0;
2425SECTIONS
2426@{
2427 .text :
2428 @{
2429 *(.text)
2430 _etext = .;
2431 @}
156e34dd 2432 _bdata = (. + 3) & ~ 3;
252b5132
RH
2433 .data : @{ *(.data) @}
2434@}
2435@end smallexample
2436@noindent
2437In this example, the symbol @samp{floating_point} will be defined as
2438zero. The symbol @samp{_etext} will be defined as the address following
2439the last @samp{.text} input section. The symbol @samp{_bdata} will be
2440defined as the address following the @samp{.text} output section aligned
2441upward to a 4 byte boundary.
2442
2443@node PROVIDE
2444@subsection PROVIDE
2445@cindex PROVIDE
2446In some cases, it is desirable for a linker script to define a symbol
2447only if it is referenced and is not defined by any object included in
2448the link. For example, traditional linkers defined the symbol
2449@samp{etext}. However, ANSI C requires that the user be able to use
2450@samp{etext} as a function name without encountering an error. The
2451@code{PROVIDE} keyword may be used to define a symbol, such as
2452@samp{etext}, only if it is referenced but not defined. The syntax is
2453@code{PROVIDE(@var{symbol} = @var{expression})}.
2454
2455Here is an example of using @code{PROVIDE} to define @samp{etext}:
2456@smallexample
2457SECTIONS
2458@{
2459 .text :
2460 @{
2461 *(.text)
2462 _etext = .;
2463 PROVIDE(etext = .);
2464 @}
2465@}
2466@end smallexample
2467
2468In this example, if the program defines @samp{_etext} (with a leading
2469underscore), the linker will give a multiple definition error. If, on
2470the other hand, the program defines @samp{etext} (with no leading
2471underscore), the linker will silently use the definition in the program.
2472If the program references @samp{etext} but does not define it, the
2473linker will use the definition in the linker script.
2474
2475@node SECTIONS
2476@section SECTIONS command
2477@kindex SECTIONS
2478The @code{SECTIONS} command tells the linker how to map input sections
2479into output sections, and how to place the output sections in memory.
2480
2481The format of the @code{SECTIONS} command is:
2482@smallexample
2483SECTIONS
2484@{
2485 @var{sections-command}
2486 @var{sections-command}
2487 @dots{}
2488@}
2489@end smallexample
2490
2491Each @var{sections-command} may of be one of the following:
2492
2493@itemize @bullet
2494@item
2495an @code{ENTRY} command (@pxref{Entry Point,,Entry command})
2496@item
2497a symbol assignment (@pxref{Assignments})
2498@item
2499an output section description
2500@item
2501an overlay description
2502@end itemize
2503
2504The @code{ENTRY} command and symbol assignments are permitted inside the
2505@code{SECTIONS} command for convenience in using the location counter in
2506those commands. This can also make the linker script easier to
2507understand because you can use those commands at meaningful points in
2508the layout of the output file.
2509
2510Output section descriptions and overlay descriptions are described
2511below.
2512
2513If you do not use a @code{SECTIONS} command in your linker script, the
2514linker will place each input section into an identically named output
2515section in the order that the sections are first encountered in the
2516input files. If all input sections are present in the first file, for
2517example, the order of sections in the output file will match the order
2518in the first input file. The first section will be at address zero.
2519
2520@menu
2521* Output Section Description:: Output section description
2522* Output Section Name:: Output section name
2523* Output Section Address:: Output section address
2524* Input Section:: Input section description
2525* Output Section Data:: Output section data
2526* Output Section Keywords:: Output section keywords
2527* Output Section Discarding:: Output section discarding
2528* Output Section Attributes:: Output section attributes
2529* Overlay Description:: Overlay description
2530@end menu
2531
2532@node Output Section Description
2533@subsection Output section description
2534The full description of an output section looks like this:
2535@smallexample
a1ab1d2a 2536@group
252b5132
RH
2537@var{section} [@var{address}] [(@var{type})] : [AT(@var{lma})]
2538 @{
2539 @var{output-section-command}
2540 @var{output-section-command}
2541 @dots{}
562d3460 2542 @} [>@var{region}] [AT>@var{lma_region}] [:@var{phdr} :@var{phdr} @dots{}] [=@var{fillexp}]
252b5132
RH
2543@end group
2544@end smallexample
2545
2546Most output sections do not use most of the optional section attributes.
2547
2548The whitespace around @var{section} is required, so that the section
2549name is unambiguous. The colon and the curly braces are also required.
2550The line breaks and other white space are optional.
2551
2552Each @var{output-section-command} may be one of the following:
2553
2554@itemize @bullet
2555@item
2556a symbol assignment (@pxref{Assignments})
2557@item
2558an input section description (@pxref{Input Section})
2559@item
2560data values to include directly (@pxref{Output Section Data})
2561@item
2562a special output section keyword (@pxref{Output Section Keywords})
2563@end itemize
2564
2565@node Output Section Name
2566@subsection Output section name
2567@cindex name, section
2568@cindex section name
2569The name of the output section is @var{section}. @var{section} must
2570meet the constraints of your output format. In formats which only
2571support a limited number of sections, such as @code{a.out}, the name
2572must be one of the names supported by the format (@code{a.out}, for
2573example, allows only @samp{.text}, @samp{.data} or @samp{.bss}). If the
2574output format supports any number of sections, but with numbers and not
2575names (as is the case for Oasys), the name should be supplied as a
2576quoted numeric string. A section name may consist of any sequence of
2577characters, but a name which contains any unusual characters such as
2578commas must be quoted.
2579
2580The output section name @samp{/DISCARD/} is special; @ref{Output Section
2581Discarding}.
2582
2583@node Output Section Address
2584@subsection Output section address
2585@cindex address, section
2586@cindex section address
2587The @var{address} is an expression for the VMA (the virtual memory
2588address) of the output section. If you do not provide @var{address},
2589the linker will set it based on @var{region} if present, or otherwise
2590based on the current value of the location counter.
2591
2592If you provide @var{address}, the address of the output section will be
2593set to precisely that. If you provide neither @var{address} nor
2594@var{region}, then the address of the output section will be set to the
2595current value of the location counter aligned to the alignment
2596requirements of the output section. The alignment requirement of the
2597output section is the strictest alignment of any input section contained
2598within the output section.
2599
2600For example,
2601@smallexample
2602.text . : @{ *(.text) @}
2603@end smallexample
2604@noindent
2605and
2606@smallexample
2607.text : @{ *(.text) @}
2608@end smallexample
2609@noindent
2610are subtly different. The first will set the address of the
2611@samp{.text} output section to the current value of the location
2612counter. The second will set it to the current value of the location
2613counter aligned to the strictest alignment of a @samp{.text} input
2614section.
2615
2616The @var{address} may be an arbitrary expression; @ref{Expressions}.
2617For example, if you want to align the section on a 0x10 byte boundary,
2618so that the lowest four bits of the section address are zero, you could
2619do something like this:
2620@smallexample
2621.text ALIGN(0x10) : @{ *(.text) @}
2622@end smallexample
2623@noindent
2624This works because @code{ALIGN} returns the current location counter
2625aligned upward to the specified value.
2626
2627Specifying @var{address} for a section will change the value of the
2628location counter.
2629
2630@node Input Section
2631@subsection Input section description
2632@cindex input sections
2633@cindex mapping input sections to output sections
2634The most common output section command is an input section description.
2635
2636The input section description is the most basic linker script operation.
2637You use output sections to tell the linker how to lay out your program
2638in memory. You use input section descriptions to tell the linker how to
2639map the input files into your memory layout.
2640
2641@menu
2642* Input Section Basics:: Input section basics
2643* Input Section Wildcards:: Input section wildcard patterns
2644* Input Section Common:: Input section for common symbols
2645* Input Section Keep:: Input section and garbage collection
2646* Input Section Example:: Input section example
2647@end menu
2648
2649@node Input Section Basics
2650@subsubsection Input section basics
2651@cindex input section basics
2652An input section description consists of a file name optionally followed
2653by a list of section names in parentheses.
2654
2655The file name and the section name may be wildcard patterns, which we
2656describe further below (@pxref{Input Section Wildcards}).
2657
2658The most common input section description is to include all input
2659sections with a particular name in the output section. For example, to
2660include all input @samp{.text} sections, you would write:
2661@smallexample
2662*(.text)
2663@end smallexample
2664@noindent
18625d54
CM
2665Here the @samp{*} is a wildcard which matches any file name. To exclude a list
2666of files from matching the file name wildcard, EXCLUDE_FILE may be used to
2667match all files except the ones specified in the EXCLUDE_FILE list. For
2668example:
252b5132 2669@smallexample
765b7cbe 2670(*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors))
252b5132 2671@end smallexample
765b7cbe
JB
2672will cause all .ctors sections from all files except @file{crtend.o} and
2673@file{otherfile.o} to be included.
252b5132
RH
2674
2675There are two ways to include more than one section:
2676@smallexample
2677*(.text .rdata)
2678*(.text) *(.rdata)
2679@end smallexample
2680@noindent
2681The difference between these is the order in which the @samp{.text} and
2682@samp{.rdata} input sections will appear in the output section. In the
b6bf44ba
AM
2683first example, they will be intermingled, appearing in the same order as
2684they are found in the linker input. In the second example, all
252b5132
RH
2685@samp{.text} input sections will appear first, followed by all
2686@samp{.rdata} input sections.
2687
2688You can specify a file name to include sections from a particular file.
2689You would do this if one or more of your files contain special data that
2690needs to be at a particular location in memory. For example:
2691@smallexample
2692data.o(.data)
2693@end smallexample
2694
2695If you use a file name without a list of sections, then all sections in
2696the input file will be included in the output section. This is not
2697commonly done, but it may by useful on occasion. For example:
2698@smallexample
2699data.o
2700@end smallexample
2701
2702When you use a file name which does not contain any wild card
2703characters, the linker will first see if you also specified the file
2704name on the linker command line or in an @code{INPUT} command. If you
2705did not, the linker will attempt to open the file as an input file, as
2706though it appeared on the command line. Note that this differs from an
2707@code{INPUT} command, because the linker will not search for the file in
2708the archive search path.
2709
2710@node Input Section Wildcards
2711@subsubsection Input section wildcard patterns
2712@cindex input section wildcards
2713@cindex wildcard file name patterns
2714@cindex file name wildcard patterns
2715@cindex section name wildcard patterns
2716In an input section description, either the file name or the section
2717name or both may be wildcard patterns.
2718
2719The file name of @samp{*} seen in many examples is a simple wildcard
2720pattern for the file name.
2721
2722The wildcard patterns are like those used by the Unix shell.
2723
2724@table @samp
2725@item *
2726matches any number of characters
2727@item ?
2728matches any single character
2729@item [@var{chars}]
2730matches a single instance of any of the @var{chars}; the @samp{-}
2731character may be used to specify a range of characters, as in
2732@samp{[a-z]} to match any lower case letter
2733@item \
2734quotes the following character
2735@end table
2736
2737When a file name is matched with a wildcard, the wildcard characters
2738will not match a @samp{/} character (used to separate directory names on
2739Unix). A pattern consisting of a single @samp{*} character is an
2740exception; it will always match any file name, whether it contains a
2741@samp{/} or not. In a section name, the wildcard characters will match
2742a @samp{/} character.
2743
2744File name wildcard patterns only match files which are explicitly
2745specified on the command line or in an @code{INPUT} command. The linker
2746does not search directories to expand wildcards.
2747
2748If a file name matches more than one wildcard pattern, or if a file name
2749appears explicitly and is also matched by a wildcard pattern, the linker
2750will use the first match in the linker script. For example, this
2751sequence of input section descriptions is probably in error, because the
2752@file{data.o} rule will not be used:
2753@smallexample
2754.data : @{ *(.data) @}
2755.data1 : @{ data.o(.data) @}
2756@end smallexample
2757
2758@cindex SORT
2759Normally, the linker will place files and sections matched by wildcards
2760in the order in which they are seen during the link. You can change
2761this by using the @code{SORT} keyword, which appears before a wildcard
2762pattern in parentheses (e.g., @code{SORT(.text*)}). When the
2763@code{SORT} keyword is used, the linker will sort the files or sections
2764into ascending order by name before placing them in the output file.
2765
2766If you ever get confused about where input sections are going, use the
2767@samp{-M} linker option to generate a map file. The map file shows
2768precisely how input sections are mapped to output sections.
2769
2770This example shows how wildcard patterns might be used to partition
2771files. This linker script directs the linker to place all @samp{.text}
2772sections in @samp{.text} and all @samp{.bss} sections in @samp{.bss}.
2773The linker will place the @samp{.data} section from all files beginning
2774with an upper case character in @samp{.DATA}; for all other files, the
2775linker will place the @samp{.data} section in @samp{.data}.
2776@smallexample
2777@group
2778SECTIONS @{
2779 .text : @{ *(.text) @}
2780 .DATA : @{ [A-Z]*(.data) @}
2781 .data : @{ *(.data) @}
2782 .bss : @{ *(.bss) @}
2783@}
2784@end group
2785@end smallexample
2786
2787@node Input Section Common
2788@subsubsection Input section for common symbols
2789@cindex common symbol placement
2790@cindex uninitialized data placement
2791A special notation is needed for common symbols, because in many object
2792file formats common symbols do not have a particular input section. The
2793linker treats common symbols as though they are in an input section
2794named @samp{COMMON}.
2795
2796You may use file names with the @samp{COMMON} section just as with any
2797other input sections. You can use this to place common symbols from a
2798particular input file in one section while common symbols from other
2799input files are placed in another section.
2800
2801In most cases, common symbols in input files will be placed in the
2802@samp{.bss} section in the output file. For example:
2803@smallexample
2804.bss @{ *(.bss) *(COMMON) @}
2805@end smallexample
2806
2807@cindex scommon section
2808@cindex small common symbols
2809Some object file formats have more than one type of common symbol. For
2810example, the MIPS ELF object file format distinguishes standard common
2811symbols and small common symbols. In this case, the linker will use a
2812different special section name for other types of common symbols. In
2813the case of MIPS ELF, the linker uses @samp{COMMON} for standard common
2814symbols and @samp{.scommon} for small common symbols. This permits you
2815to map the different types of common symbols into memory at different
2816locations.
2817
2818@cindex [COMMON]
2819You will sometimes see @samp{[COMMON]} in old linker scripts. This
2820notation is now considered obsolete. It is equivalent to
2821@samp{*(COMMON)}.
2822
2823@node Input Section Keep
2824@subsubsection Input section and garbage collection
2825@cindex KEEP
2826@cindex garbage collection
2827When link-time garbage collection is in use (@samp{--gc-sections}),
a1ab1d2a 2828it is often useful to mark sections that should not be eliminated.
252b5132
RH
2829This is accomplished by surrounding an input section's wildcard entry
2830with @code{KEEP()}, as in @code{KEEP(*(.init))} or
2831@code{KEEP(SORT(*)(.ctors))}.
2832
2833@node Input Section Example
2834@subsubsection Input section example
2835The following example is a complete linker script. It tells the linker
2836to read all of the sections from file @file{all.o} and place them at the
2837start of output section @samp{outputa} which starts at location
2838@samp{0x10000}. All of section @samp{.input1} from file @file{foo.o}
2839follows immediately, in the same output section. All of section
2840@samp{.input2} from @file{foo.o} goes into output section
2841@samp{outputb}, followed by section @samp{.input1} from @file{foo1.o}.
2842All of the remaining @samp{.input1} and @samp{.input2} sections from any
2843files are written to output section @samp{outputc}.
2844
2845@smallexample
2846@group
2847SECTIONS @{
2848 outputa 0x10000 :
2849 @{
2850 all.o
2851 foo.o (.input1)
2852 @}
2853 outputb :
2854 @{
2855 foo.o (.input2)
2856 foo1.o (.input1)
2857 @}
2858 outputc :
2859 @{
2860 *(.input1)
2861 *(.input2)
2862 @}
2863@}
2864@end group
a1ab1d2a 2865@end smallexample
252b5132
RH
2866
2867@node Output Section Data
2868@subsection Output section data
2869@cindex data
2870@cindex section data
2871@cindex output section data
2872@kindex BYTE(@var{expression})
2873@kindex SHORT(@var{expression})
2874@kindex LONG(@var{expression})
2875@kindex QUAD(@var{expression})
2876@kindex SQUAD(@var{expression})
2877You can include explicit bytes of data in an output section by using
2878@code{BYTE}, @code{SHORT}, @code{LONG}, @code{QUAD}, or @code{SQUAD} as
2879an output section command. Each keyword is followed by an expression in
2880parentheses providing the value to store (@pxref{Expressions}). The
2881value of the expression is stored at the current value of the location
2882counter.
2883
2884The @code{BYTE}, @code{SHORT}, @code{LONG}, and @code{QUAD} commands
2885store one, two, four, and eight bytes (respectively). After storing the
2886bytes, the location counter is incremented by the number of bytes
2887stored.
2888
2889For example, this will store the byte 1 followed by the four byte value
2890of the symbol @samp{addr}:
2891@smallexample
2892BYTE(1)
2893LONG(addr)
2894@end smallexample
2895
2896When using a 64 bit host or target, @code{QUAD} and @code{SQUAD} are the
2897same; they both store an 8 byte, or 64 bit, value. When both host and
2898target are 32 bits, an expression is computed as 32 bits. In this case
2899@code{QUAD} stores a 32 bit value zero extended to 64 bits, and
2900@code{SQUAD} stores a 32 bit value sign extended to 64 bits.
2901
2902If the object file format of the output file has an explicit endianness,
2903which is the normal case, the value will be stored in that endianness.
2904When the object file format does not have an explicit endianness, as is
2905true of, for example, S-records, the value will be stored in the
2906endianness of the first input object file.
2907
2b5fc1f5
NC
2908Note - these commands only work inside a section description and not
2909between them, so the following will produce an error from the linker:
2910@smallexample
2911SECTIONS @{@ .text : @{@ *(.text) @}@ LONG(1) .data : @{@ *(.data) @}@ @}@
2912@end smallexample
2913whereas this will work:
2914@smallexample
2915SECTIONS @{@ .text : @{@ *(.text) ; LONG(1) @}@ .data : @{@ *(.data) @}@ @}@
2916@end smallexample
2917
252b5132
RH
2918@kindex FILL(@var{expression})
2919@cindex holes, filling
2920@cindex unspecified memory
2921You may use the @code{FILL} command to set the fill pattern for the
2922current section. It is followed by an expression in parentheses. Any
2923otherwise unspecified regions of memory within the section (for example,
2924gaps left due to the required alignment of input sections) are filled
563e308f 2925with the four least significant bytes of the expression, repeated as
252b5132
RH
2926necessary. A @code{FILL} statement covers memory locations after the
2927point at which it occurs in the section definition; by including more
2928than one @code{FILL} statement, you can have different fill patterns in
2929different parts of an output section.
2930
2931This example shows how to fill unspecified regions of memory with the
563e308f 2932value @samp{0x90}:
252b5132 2933@smallexample
563e308f 2934FILL(0x90909090)
252b5132
RH
2935@end smallexample
2936
2937The @code{FILL} command is similar to the @samp{=@var{fillexp}} output
2938section attribute (@pxref{Output Section Fill}), but it only affects the
2939part of the section following the @code{FILL} command, rather than the
2940entire section. If both are used, the @code{FILL} command takes
2941precedence.
2942
2943@node Output Section Keywords
2944@subsection Output section keywords
2945There are a couple of keywords which can appear as output section
2946commands.
2947
2948@table @code
2949@kindex CREATE_OBJECT_SYMBOLS
2950@cindex input filename symbols
2951@cindex filename symbols
2952@item CREATE_OBJECT_SYMBOLS
2953The command tells the linker to create a symbol for each input file.
2954The name of each symbol will be the name of the corresponding input
2955file. The section of each symbol will be the output section in which
2956the @code{CREATE_OBJECT_SYMBOLS} command appears.
2957
2958This is conventional for the a.out object file format. It is not
2959normally used for any other object file format.
2960
2961@kindex CONSTRUCTORS
2962@cindex C++ constructors, arranging in link
2963@cindex constructors, arranging in link
2964@item CONSTRUCTORS
2965When linking using the a.out object file format, the linker uses an
2966unusual set construct to support C++ global constructors and
2967destructors. When linking object file formats which do not support
2968arbitrary sections, such as ECOFF and XCOFF, the linker will
2969automatically recognize C++ global constructors and destructors by name.
2970For these object file formats, the @code{CONSTRUCTORS} command tells the
2971linker to place constructor information in the output section where the
2972@code{CONSTRUCTORS} command appears. The @code{CONSTRUCTORS} command is
2973ignored for other object file formats.
2974
2975The symbol @w{@code{__CTOR_LIST__}} marks the start of the global
2976constructors, and the symbol @w{@code{__DTOR_LIST}} marks the end. The
2977first word in the list is the number of entries, followed by the address
2978of each constructor or destructor, followed by a zero word. The
2979compiler must arrange to actually run the code. For these object file
2980formats @sc{gnu} C++ normally calls constructors from a subroutine
2981@code{__main}; a call to @code{__main} is automatically inserted into
2982the startup code for @code{main}. @sc{gnu} C++ normally runs
2983destructors either by using @code{atexit}, or directly from the function
2984@code{exit}.
2985
2986For object file formats such as @code{COFF} or @code{ELF} which support
2987arbitrary section names, @sc{gnu} C++ will normally arrange to put the
2988addresses of global constructors and destructors into the @code{.ctors}
2989and @code{.dtors} sections. Placing the following sequence into your
2990linker script will build the sort of table which the @sc{gnu} C++
2991runtime code expects to see.
2992
2993@smallexample
2994 __CTOR_LIST__ = .;
2995 LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
2996 *(.ctors)
2997 LONG(0)
2998 __CTOR_END__ = .;
2999 __DTOR_LIST__ = .;
3000 LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
3001 *(.dtors)
3002 LONG(0)
3003 __DTOR_END__ = .;
3004@end smallexample
3005
3006If you are using the @sc{gnu} C++ support for initialization priority,
3007which provides some control over the order in which global constructors
3008are run, you must sort the constructors at link time to ensure that they
3009are executed in the correct order. When using the @code{CONSTRUCTORS}
3010command, use @samp{SORT(CONSTRUCTORS)} instead. When using the
3011@code{.ctors} and @code{.dtors} sections, use @samp{*(SORT(.ctors))} and
3012@samp{*(SORT(.dtors))} instead of just @samp{*(.ctors)} and
3013@samp{*(.dtors)}.
3014
3015Normally the compiler and linker will handle these issues automatically,
3016and you will not need to concern yourself with them. However, you may
3017need to consider this if you are using C++ and writing your own linker
3018scripts.
3019
3020@end table
3021
3022@node Output Section Discarding
3023@subsection Output section discarding
3024@cindex discarding sections
3025@cindex sections, discarding
3026@cindex removing sections
3027The linker will not create output section which do not have any
3028contents. This is for convenience when referring to input sections that
3029may or may not be present in any of the input files. For example:
3030@smallexample
3031.foo @{ *(.foo) @}
3032@end smallexample
3033@noindent
3034will only create a @samp{.foo} section in the output file if there is a
3035@samp{.foo} section in at least one input file.
3036
3037If you use anything other than an input section description as an output
3038section command, such as a symbol assignment, then the output section
3039will always be created, even if there are no matching input sections.
3040
3041@cindex /DISCARD/
3042The special output section name @samp{/DISCARD/} may be used to discard
3043input sections. Any input sections which are assigned to an output
3044section named @samp{/DISCARD/} are not included in the output file.
3045
3046@node Output Section Attributes
3047@subsection Output section attributes
3048@cindex output section attributes
3049We showed above that the full description of an output section looked
3050like this:
3051@smallexample
a1ab1d2a 3052@group
252b5132
RH
3053@var{section} [@var{address}] [(@var{type})] : [AT(@var{lma})]
3054 @{
3055 @var{output-section-command}
3056 @var{output-section-command}
3057 @dots{}
562d3460 3058 @} [>@var{region}] [AT>@var{lma_region}] [:@var{phdr} :@var{phdr} @dots{}] [=@var{fillexp}]
252b5132
RH
3059@end group
3060@end smallexample
3061We've already described @var{section}, @var{address}, and
3062@var{output-section-command}. In this section we will describe the
3063remaining section attributes.
3064
a1ab1d2a 3065@menu
252b5132
RH
3066* Output Section Type:: Output section type
3067* Output Section LMA:: Output section LMA
3068* Output Section Region:: Output section region
3069* Output Section Phdr:: Output section phdr
3070* Output Section Fill:: Output section fill
3071@end menu
3072
3073@node Output Section Type
3074@subsubsection Output section type
3075Each output section may have a type. The type is a keyword in
3076parentheses. The following types are defined:
3077
3078@table @code
3079@item NOLOAD
3080The section should be marked as not loadable, so that it will not be
3081loaded into memory when the program is run.
3082@item DSECT
3083@itemx COPY
3084@itemx INFO
3085@itemx OVERLAY
3086These type names are supported for backward compatibility, and are
3087rarely used. They all have the same effect: the section should be
3088marked as not allocatable, so that no memory is allocated for the
3089section when the program is run.
3090@end table
3091
3092@kindex NOLOAD
3093@cindex prevent unnecessary loading
3094@cindex loading, preventing
3095The linker normally sets the attributes of an output section based on
3096the input sections which map into it. You can override this by using
3097the section type. For example, in the script sample below, the
3098@samp{ROM} section is addressed at memory location @samp{0} and does not
3099need to be loaded when the program is run. The contents of the
3100@samp{ROM} section will appear in the linker output file as usual.
3101@smallexample
3102@group
3103SECTIONS @{
3104 ROM 0 (NOLOAD) : @{ @dots{} @}
3105 @dots{}
3106@}
3107@end group
3108@end smallexample
3109
3110@node Output Section LMA
3111@subsubsection Output section LMA
562d3460 3112@kindex AT>@var{lma_region}
252b5132
RH
3113@kindex AT(@var{lma})
3114@cindex load address
3115@cindex section load address
3116Every section has a virtual address (VMA) and a load address (LMA); see
3117@ref{Basic Script Concepts}. The address expression which may appear in
3118an output section description sets the VMA (@pxref{Output Section
3119Address}).
3120
3121The linker will normally set the LMA equal to the VMA. You can change
3122that by using the @code{AT} keyword. The expression @var{lma} that
562d3460
TW
3123follows the @code{AT} keyword specifies the load address of the
3124section. Alternatively, with @samp{AT>@var{lma_region}} expression,
3125you may specify a memory region for the section's load address. @xref{MEMORY}.
252b5132
RH
3126
3127@cindex ROM initialized data
3128@cindex initialized data in ROM
3129This feature is designed to make it easy to build a ROM image. For
3130example, the following linker script creates three output sections: one
3131called @samp{.text}, which starts at @code{0x1000}, one called
3132@samp{.mdata}, which is loaded at the end of the @samp{.text} section
3133even though its VMA is @code{0x2000}, and one called @samp{.bss} to hold
3134uninitialized data at address @code{0x3000}. The symbol @code{_data} is
3135defined with the value @code{0x2000}, which shows that the location
3136counter holds the VMA value, not the LMA value.
3137
3138@smallexample
3139@group
3140SECTIONS
3141 @{
3142 .text 0x1000 : @{ *(.text) _etext = . ; @}
a1ab1d2a 3143 .mdata 0x2000 :
252b5132
RH
3144 AT ( ADDR (.text) + SIZEOF (.text) )
3145 @{ _data = . ; *(.data); _edata = . ; @}
3146 .bss 0x3000 :
3147 @{ _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;@}
3148@}
3149@end group
3150@end smallexample
3151
3152The run-time initialization code for use with a program generated with
3153this linker script would include something like the following, to copy
3154the initialized data from the ROM image to its runtime address. Notice
3155how this code takes advantage of the symbols defined by the linker
3156script.
3157
3158@smallexample
3159@group
3160extern char _etext, _data, _edata, _bstart, _bend;
3161char *src = &_etext;
3162char *dst = &_data;
3163
3164/* ROM has data at end of text; copy it. */
3165while (dst < &_edata) @{
3166 *dst++ = *src++;
3167@}
3168
3169/* Zero bss */
3170for (dst = &_bstart; dst< &_bend; dst++)
3171 *dst = 0;
3172@end group
3173@end smallexample
3174
3175@node Output Section Region
3176@subsubsection Output section region
3177@kindex >@var{region}
3178@cindex section, assigning to memory region
3179@cindex memory regions and sections
3180You can assign a section to a previously defined region of memory by
3181using @samp{>@var{region}}. @xref{MEMORY}.
3182
3183Here is a simple example:
3184@smallexample
3185@group
3186MEMORY @{ rom : ORIGIN = 0x1000, LENGTH = 0x1000 @}
3187SECTIONS @{ ROM : @{ *(.text) @} >rom @}
3188@end group
3189@end smallexample
3190
3191@node Output Section Phdr
3192@subsubsection Output section phdr
3193@kindex :@var{phdr}
3194@cindex section, assigning to program header
3195@cindex program headers and sections
3196You can assign a section to a previously defined program segment by
3197using @samp{:@var{phdr}}. @xref{PHDRS}. If a section is assigned to
3198one or more segments, then all subsequent allocated sections will be
3199assigned to those segments as well, unless they use an explicitly
3200@code{:@var{phdr}} modifier. You can use @code{:NONE} to tell the
3201linker to not put the section in any segment at all.
3202
3203Here is a simple example:
3204@smallexample
3205@group
3206PHDRS @{ text PT_LOAD ; @}
3207SECTIONS @{ .text : @{ *(.text) @} :text @}
3208@end group
3209@end smallexample
3210
3211@node Output Section Fill
3212@subsubsection Output section fill
3213@kindex =@var{fillexp}
3214@cindex section fill pattern
3215@cindex fill pattern, entire section
3216You can set the fill pattern for an entire section by using
3217@samp{=@var{fillexp}}. @var{fillexp} is an expression
3218(@pxref{Expressions}). Any otherwise unspecified regions of memory
3219within the output section (for example, gaps left due to the required
563e308f 3220alignment of input sections) will be filled with the four least
252b5132
RH
3221significant bytes of the value, repeated as necessary.
3222
3223You can also change the fill value with a @code{FILL} command in the
3224output section commands; see @ref{Output Section Data}.
3225
3226Here is a simple example:
3227@smallexample
3228@group
563e308f 3229SECTIONS @{ .text : @{ *(.text) @} =0x90909090 @}
252b5132
RH
3230@end group
3231@end smallexample
3232
3233@node Overlay Description
3234@subsection Overlay description
3235@kindex OVERLAY
3236@cindex overlays
3237An overlay description provides an easy way to describe sections which
3238are to be loaded as part of a single memory image but are to be run at
3239the same memory address. At run time, some sort of overlay manager will
3240copy the overlaid sections in and out of the runtime memory address as
3241required, perhaps by simply manipulating addressing bits. This approach
3242can be useful, for example, when a certain region of memory is faster
3243than another.
3244
3245Overlays are described using the @code{OVERLAY} command. The
3246@code{OVERLAY} command is used within a @code{SECTIONS} command, like an
3247output section description. The full syntax of the @code{OVERLAY}
3248command is as follows:
3249@smallexample
3250@group
3251OVERLAY [@var{start}] : [NOCROSSREFS] [AT ( @var{ldaddr} )]
3252 @{
3253 @var{secname1}
3254 @{
3255 @var{output-section-command}
3256 @var{output-section-command}
3257 @dots{}
3258 @} [:@var{phdr}@dots{}] [=@var{fill}]
3259 @var{secname2}
3260 @{
3261 @var{output-section-command}
3262 @var{output-section-command}
3263 @dots{}
3264 @} [:@var{phdr}@dots{}] [=@var{fill}]
3265 @dots{}
3266 @} [>@var{region}] [:@var{phdr}@dots{}] [=@var{fill}]
3267@end group
3268@end smallexample
3269
3270Everything is optional except @code{OVERLAY} (a keyword), and each
3271section must have a name (@var{secname1} and @var{secname2} above). The
3272section definitions within the @code{OVERLAY} construct are identical to
3273those within the general @code{SECTIONS} contruct (@pxref{SECTIONS}),
3274except that no addresses and no memory regions may be defined for
3275sections within an @code{OVERLAY}.
3276
3277The sections are all defined with the same starting address. The load
3278addresses of the sections are arranged such that they are consecutive in
3279memory starting at the load address used for the @code{OVERLAY} as a
3280whole (as with normal section definitions, the load address is optional,
3281and defaults to the start address; the start address is also optional,
3282and defaults to the current value of the location counter).
3283
3284If the @code{NOCROSSREFS} keyword is used, and there any references
3285among the sections, the linker will report an error. Since the sections
3286all run at the same address, it normally does not make sense for one
3287section to refer directly to another. @xref{Miscellaneous Commands,
3288NOCROSSREFS}.
3289
3290For each section within the @code{OVERLAY}, the linker automatically
3291defines two symbols. The symbol @code{__load_start_@var{secname}} is
3292defined as the starting load address of the section. The symbol
3293@code{__load_stop_@var{secname}} is defined as the final load address of
3294the section. Any characters within @var{secname} which are not legal
3295within C identifiers are removed. C (or assembler) code may use these
3296symbols to move the overlaid sections around as necessary.
3297
3298At the end of the overlay, the value of the location counter is set to
3299the start address of the overlay plus the size of the largest section.
3300
3301Here is an example. Remember that this would appear inside a
3302@code{SECTIONS} construct.
3303@smallexample
3304@group
3305 OVERLAY 0x1000 : AT (0x4000)
3306 @{
3307 .text0 @{ o1/*.o(.text) @}
3308 .text1 @{ o2/*.o(.text) @}
3309 @}
3310@end group
3311@end smallexample
3312@noindent
3313This will define both @samp{.text0} and @samp{.text1} to start at
3314address 0x1000. @samp{.text0} will be loaded at address 0x4000, and
3315@samp{.text1} will be loaded immediately after @samp{.text0}. The
3316following symbols will be defined: @code{__load_start_text0},
3317@code{__load_stop_text0}, @code{__load_start_text1},
3318@code{__load_stop_text1}.
3319
3320C code to copy overlay @code{.text1} into the overlay area might look
3321like the following.
3322
3323@smallexample
3324@group
3325 extern char __load_start_text1, __load_stop_text1;
3326 memcpy ((char *) 0x1000, &__load_start_text1,
3327 &__load_stop_text1 - &__load_start_text1);
3328@end group
3329@end smallexample
3330
3331Note that the @code{OVERLAY} command is just syntactic sugar, since
3332everything it does can be done using the more basic commands. The above
3333example could have been written identically as follows.
3334
3335@smallexample
3336@group
3337 .text0 0x1000 : AT (0x4000) @{ o1/*.o(.text) @}
3338 __load_start_text0 = LOADADDR (.text0);
3339 __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0);
3340 .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) @{ o2/*.o(.text) @}
3341 __load_start_text1 = LOADADDR (.text1);
3342 __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1);
3343 . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
3344@end group
3345@end smallexample
3346
3347@node MEMORY
3348@section MEMORY command
3349@kindex MEMORY
3350@cindex memory regions
3351@cindex regions of memory
3352@cindex allocating memory
3353@cindex discontinuous memory
3354The linker's default configuration permits allocation of all available
3355memory. You can override this by using the @code{MEMORY} command.
3356
3357The @code{MEMORY} command describes the location and size of blocks of
3358memory in the target. You can use it to describe which memory regions
3359may be used by the linker, and which memory regions it must avoid. You
3360can then assign sections to particular memory regions. The linker will
3361set section addresses based on the memory regions, and will warn about
3362regions that become too full. The linker will not shuffle sections
3363around to fit into the available regions.
3364
3365A linker script may contain at most one use of the @code{MEMORY}
3366command. However, you can define as many blocks of memory within it as
3367you wish. The syntax is:
3368@smallexample
3369@group
a1ab1d2a 3370MEMORY
252b5132
RH
3371 @{
3372 @var{name} [(@var{attr})] : ORIGIN = @var{origin}, LENGTH = @var{len}
3373 @dots{}
3374 @}
3375@end group
3376@end smallexample
3377
3378The @var{name} is a name used in the linker script to refer to the
3379region. The region name has no meaning outside of the linker script.
3380Region names are stored in a separate name space, and will not conflict
3381with symbol names, file names, or section names. Each memory region
3382must have a distinct name.
3383
3384@cindex memory region attributes
3385The @var{attr} string is an optional list of attributes that specify
3386whether to use a particular memory region for an input section which is
3387not explicitly mapped in the linker script. As described in
3388@ref{SECTIONS}, if you do not specify an output section for some input
3389section, the linker will create an output section with the same name as
3390the input section. If you define region attributes, the linker will use
3391them to select the memory region for the output section that it creates.
3392
3393The @var{attr} string must consist only of the following characters:
3394@table @samp
3395@item R
3396Read-only section
3397@item W
3398Read/write section
3399@item X
3400Executable section
3401@item A
3402Allocatable section
3403@item I
3404Initialized section
3405@item L
3406Same as @samp{I}
3407@item !
3408Invert the sense of any of the preceding attributes
3409@end table
3410
3411If a unmapped section matches any of the listed attributes other than
3412@samp{!}, it will be placed in the memory region. The @samp{!}
3413attribute reverses this test, so that an unmapped section will be placed
3414in the memory region only if it does not match any of the listed
3415attributes.
3416
3417@kindex ORIGIN =
3418@kindex o =
3419@kindex org =
3420The @var{origin} is an expression for the start address of the memory
3421region. The expression must evaluate to a constant before memory
3422allocation is performed, which means that you may not use any section
3423relative symbols. The keyword @code{ORIGIN} may be abbreviated to
3424@code{org} or @code{o} (but not, for example, @code{ORG}).
3425
3426@kindex LENGTH =
3427@kindex len =
3428@kindex l =
3429The @var{len} is an expression for the size in bytes of the memory
3430region. As with the @var{origin} expression, the expression must
3431evaluate to a constant before memory allocation is performed. The
3432keyword @code{LENGTH} may be abbreviated to @code{len} or @code{l}.
3433
3434In the following example, we specify that there are two memory regions
3435available for allocation: one starting at @samp{0} for 256 kilobytes,
3436and the other starting at @samp{0x40000000} for four megabytes. The
3437linker will place into the @samp{rom} memory region every section which
3438is not explicitly mapped into a memory region, and is either read-only
3439or executable. The linker will place other sections which are not
3440explicitly mapped into a memory region into the @samp{ram} memory
3441region.
3442
3443@smallexample
3444@group
a1ab1d2a 3445MEMORY
252b5132
RH
3446 @{
3447 rom (rx) : ORIGIN = 0, LENGTH = 256K
3448 ram (!rx) : org = 0x40000000, l = 4M
3449 @}
3450@end group
3451@end smallexample
3452
3453Once you define a memory region, you can direct the linker to place
3454specific output sections into that memory region by using the
3455@samp{>@var{region}} output section attribute. For example, if you have
3456a memory region named @samp{mem}, you would use @samp{>mem} in the
3457output section definition. @xref{Output Section Region}. If no address
3458was specified for the output section, the linker will set the address to
3459the next available address within the memory region. If the combined
3460output sections directed to a memory region are too large for the
3461region, the linker will issue an error message.
3462
3463@node PHDRS
3464@section PHDRS Command
3465@kindex PHDRS
3466@cindex program headers
3467@cindex ELF program headers
3468@cindex program segments
3469@cindex segments, ELF
3470The ELF object file format uses @dfn{program headers}, also knows as
3471@dfn{segments}. The program headers describe how the program should be
3472loaded into memory. You can print them out by using the @code{objdump}
3473program with the @samp{-p} option.
3474
3475When you run an ELF program on a native ELF system, the system loader
3476reads the program headers in order to figure out how to load the
3477program. This will only work if the program headers are set correctly.
3478This manual does not describe the details of how the system loader
3479interprets program headers; for more information, see the ELF ABI.
3480
3481The linker will create reasonable program headers by default. However,
3482in some cases, you may need to specify the program headers more
3483precisely. You may use the @code{PHDRS} command for this purpose. When
3484the linker sees the @code{PHDRS} command in the linker script, it will
3485not create any program headers other than the ones specified.
3486
3487The linker only pays attention to the @code{PHDRS} command when
3488generating an ELF output file. In other cases, the linker will simply
3489ignore @code{PHDRS}.
3490
3491This is the syntax of the @code{PHDRS} command. The words @code{PHDRS},
3492@code{FILEHDR}, @code{AT}, and @code{FLAGS} are keywords.
3493
3494@smallexample
3495@group
3496PHDRS
3497@{
3498 @var{name} @var{type} [ FILEHDR ] [ PHDRS ] [ AT ( @var{address} ) ]
3499 [ FLAGS ( @var{flags} ) ] ;
3500@}
3501@end group
3502@end smallexample
3503
3504The @var{name} is used only for reference in the @code{SECTIONS} command
3505of the linker script. It is not put into the output file. Program
3506header names are stored in a separate name space, and will not conflict
3507with symbol names, file names, or section names. Each program header
3508must have a distinct name.
3509
3510Certain program header types describe segments of memory which the
3511system loader will load from the file. In the linker script, you
3512specify the contents of these segments by placing allocatable output
3513sections in the segments. You use the @samp{:@var{phdr}} output section
3514attribute to place a section in a particular segment. @xref{Output
3515Section Phdr}.
3516
3517It is normal to put certain sections in more than one segment. This
3518merely implies that one segment of memory contains another. You may
3519repeat @samp{:@var{phdr}}, using it once for each segment which should
3520contain the section.
3521
3522If you place a section in one or more segments using @samp{:@var{phdr}},
3523then the linker will place all subsequent allocatable sections which do
3524not specify @samp{:@var{phdr}} in the same segments. This is for
3525convenience, since generally a whole set of contiguous sections will be
3526placed in a single segment. You can use @code{:NONE} to override the
3527default segment and tell the linker to not put the section in any
3528segment at all.
3529
3530@kindex FILEHDR
3531@kindex PHDRS
3532You may use the @code{FILEHDR} and @code{PHDRS} keywords appear after
3533the program header type to further describe the contents of the segment.
3534The @code{FILEHDR} keyword means that the segment should include the ELF
3535file header. The @code{PHDRS} keyword means that the segment should
3536include the ELF program headers themselves.
3537
3538The @var{type} may be one of the following. The numbers indicate the
3539value of the keyword.
3540
3541@table @asis
3542@item @code{PT_NULL} (0)
3543Indicates an unused program header.
3544
3545@item @code{PT_LOAD} (1)
3546Indicates that this program header describes a segment to be loaded from
3547the file.
3548
3549@item @code{PT_DYNAMIC} (2)
3550Indicates a segment where dynamic linking information can be found.
3551
3552@item @code{PT_INTERP} (3)
3553Indicates a segment where the name of the program interpreter may be
3554found.
3555
3556@item @code{PT_NOTE} (4)
3557Indicates a segment holding note information.
3558
3559@item @code{PT_SHLIB} (5)
3560A reserved program header type, defined but not specified by the ELF
3561ABI.
3562
3563@item @code{PT_PHDR} (6)
3564Indicates a segment where the program headers may be found.
3565
3566@item @var{expression}
3567An expression giving the numeric type of the program header. This may
3568be used for types not defined above.
3569@end table
3570
3571You can specify that a segment should be loaded at a particular address
3572in memory by using an @code{AT} expression. This is identical to the
3573@code{AT} command used as an output section attribute (@pxref{Output
3574Section LMA}). The @code{AT} command for a program header overrides the
3575output section attribute.
3576
3577The linker will normally set the segment flags based on the sections
3578which comprise the segment. You may use the @code{FLAGS} keyword to
3579explicitly specify the segment flags. The value of @var{flags} must be
3580an integer. It is used to set the @code{p_flags} field of the program
3581header.
3582
3583Here is an example of @code{PHDRS}. This shows a typical set of program
3584headers used on a native ELF system.
3585
3586@example
3587@group
3588PHDRS
3589@{
3590 headers PT_PHDR PHDRS ;
3591 interp PT_INTERP ;
3592 text PT_LOAD FILEHDR PHDRS ;
3593 data PT_LOAD ;
3594 dynamic PT_DYNAMIC ;
3595@}
3596
3597SECTIONS
3598@{
3599 . = SIZEOF_HEADERS;
3600 .interp : @{ *(.interp) @} :text :interp
3601 .text : @{ *(.text) @} :text
3602 .rodata : @{ *(.rodata) @} /* defaults to :text */
3603 @dots{}
3604 . = . + 0x1000; /* move to a new page in memory */
3605 .data : @{ *(.data) @} :data
3606 .dynamic : @{ *(.dynamic) @} :data :dynamic
3607 @dots{}
3608@}
3609@end group
3610@end example
3611
3612@node VERSION
3613@section VERSION Command
3614@kindex VERSION @{script text@}
3615@cindex symbol versions
3616@cindex version script
3617@cindex versions of symbols
3618The linker supports symbol versions when using ELF. Symbol versions are
3619only useful when using shared libraries. The dynamic linker can use
3620symbol versions to select a specific version of a function when it runs
3621a program that may have been linked against an earlier version of the
3622shared library.
3623
3624You can include a version script directly in the main linker script, or
3625you can supply the version script as an implicit linker script. You can
3626also use the @samp{--version-script} linker option.
3627
3628The syntax of the @code{VERSION} command is simply
3629@smallexample
3630VERSION @{ version-script-commands @}
3631@end smallexample
3632
3633The format of the version script commands is identical to that used by
3634Sun's linker in Solaris 2.5. The version script defines a tree of
3635version nodes. You specify the node names and interdependencies in the
3636version script. You can specify which symbols are bound to which
3637version nodes, and you can reduce a specified set of symbols to local
3638scope so that they are not globally visible outside of the shared
3639library.
3640
3641The easiest way to demonstrate the version script language is with a few
3642examples.
3643
3644@smallexample
3645VERS_1.1 @{
3646 global:
3647 foo1;
3648 local:
a1ab1d2a
UD
3649 old*;
3650 original*;
3651 new*;
252b5132
RH
3652@};
3653
3654VERS_1.2 @{
3655 foo2;
3656@} VERS_1.1;
3657
3658VERS_2.0 @{
3659 bar1; bar2;
3660@} VERS_1.2;
3661@end smallexample
3662
3663This example version script defines three version nodes. The first
3664version node defined is @samp{VERS_1.1}; it has no other dependencies.
3665The script binds the symbol @samp{foo1} to @samp{VERS_1.1}. It reduces
3666a number of symbols to local scope so that they are not visible outside
3667of the shared library.
3668
3669Next, the version script defines node @samp{VERS_1.2}. This node
3670depends upon @samp{VERS_1.1}. The script binds the symbol @samp{foo2}
3671to the version node @samp{VERS_1.2}.
3672
3673Finally, the version script defines node @samp{VERS_2.0}. This node
3674depends upon @samp{VERS_1.2}. The scripts binds the symbols @samp{bar1}
3675and @samp{bar2} are bound to the version node @samp{VERS_2.0}.
3676
3677When the linker finds a symbol defined in a library which is not
3678specifically bound to a version node, it will effectively bind it to an
3679unspecified base version of the library. You can bind all otherwise
3680unspecified symbols to a given version node by using @samp{global: *}
3681somewhere in the version script.
3682
3683The names of the version nodes have no specific meaning other than what
3684they might suggest to the person reading them. The @samp{2.0} version
3685could just as well have appeared in between @samp{1.1} and @samp{1.2}.
3686However, this would be a confusing way to write a version script.
3687
6b9b879a
JJ
3688Node name can be omited, provided it is the only version node
3689in the version script. Such version script doesn't assign any versions to
3690symbols, only selects which symbols will be globally visible out and which
3691won't.
3692
3693@smallexample
3694@{ global: foo; bar; local: *; @}
3695#end smallexample
3696
252b5132
RH
3697When you link an application against a shared library that has versioned
3698symbols, the application itself knows which version of each symbol it
3699requires, and it also knows which version nodes it needs from each
3700shared library it is linked against. Thus at runtime, the dynamic
3701loader can make a quick check to make sure that the libraries you have
3702linked against do in fact supply all of the version nodes that the
3703application will need to resolve all of the dynamic symbols. In this
3704way it is possible for the dynamic linker to know with certainty that
3705all external symbols that it needs will be resolvable without having to
3706search for each symbol reference.
3707
3708The symbol versioning is in effect a much more sophisticated way of
3709doing minor version checking that SunOS does. The fundamental problem
3710that is being addressed here is that typically references to external
3711functions are bound on an as-needed basis, and are not all bound when
3712the application starts up. If a shared library is out of date, a
3713required interface may be missing; when the application tries to use
3714that interface, it may suddenly and unexpectedly fail. With symbol
3715versioning, the user will get a warning when they start their program if
3716the libraries being used with the application are too old.
3717
3718There are several GNU extensions to Sun's versioning approach. The
3719first of these is the ability to bind a symbol to a version node in the
3720source file where the symbol is defined instead of in the versioning
3721script. This was done mainly to reduce the burden on the library
3722maintainer. You can do this by putting something like:
3723@smallexample
3724__asm__(".symver original_foo,foo@@VERS_1.1");
3725@end smallexample
3726@noindent
3727in the C source file. This renames the function @samp{original_foo} to
3728be an alias for @samp{foo} bound to the version node @samp{VERS_1.1}.
3729The @samp{local:} directive can be used to prevent the symbol
3730@samp{original_foo} from being exported.
3731
3732The second GNU extension is to allow multiple versions of the same
3733function to appear in a given shared library. In this way you can make
3734an incompatible change to an interface without increasing the major
3735version number of the shared library, while still allowing applications
3736linked against the old interface to continue to function.
3737
3738To do this, you must use multiple @samp{.symver} directives in the
3739source file. Here is an example:
3740
3741@smallexample
3742__asm__(".symver original_foo,foo@@");
3743__asm__(".symver old_foo,foo@@VERS_1.1");
3744__asm__(".symver old_foo1,foo@@VERS_1.2");
3745__asm__(".symver new_foo,foo@@@@VERS_2.0");
3746@end smallexample
3747
3748In this example, @samp{foo@@} represents the symbol @samp{foo} bound to the
3749unspecified base version of the symbol. The source file that contains this
3750example would define 4 C functions: @samp{original_foo}, @samp{old_foo},
3751@samp{old_foo1}, and @samp{new_foo}.
3752
3753When you have multiple definitions of a given symbol, there needs to be
3754some way to specify a default version to which external references to
3755this symbol will be bound. You can do this with the
3756@samp{foo@@@@VERS_2.0} type of @samp{.symver} directive. You can only
3757declare one version of a symbol as the default in this manner; otherwise
3758you would effectively have multiple definitions of the same symbol.
3759
3760If you wish to bind a reference to a specific version of the symbol
3761within the shared library, you can use the aliases of convenience
3762(i.e. @samp{old_foo}), or you can use the @samp{.symver} directive to
3763specifically bind to an external version of the function in question.
3764
cb840a31
L
3765You can also specify the language in the version script:
3766
3767@smallexample
3768VERSION extern "lang" @{ version-script-commands @}
3769@end smallexample
3770
3771The supported @samp{lang}s are @samp{C}, @samp{C++}, and @samp{Java}.
3772The linker will iterate over the list of symbols at the link time and
3773demangle them according to @samp{lang} before matching them to the
3774patterns specified in @samp{version-script-commands}.
3775
252b5132
RH
3776@node Expressions
3777@section Expressions in Linker Scripts
3778@cindex expressions
3779@cindex arithmetic
3780The syntax for expressions in the linker script language is identical to
3781that of C expressions. All expressions are evaluated as integers. All
3782expressions are evaluated in the same size, which is 32 bits if both the
3783host and target are 32 bits, and is otherwise 64 bits.
3784
3785You can use and set symbol values in expressions.
3786
3787The linker defines several special purpose builtin functions for use in
3788expressions.
3789
3790@menu
3791* Constants:: Constants
3792* Symbols:: Symbol Names
3793* Location Counter:: The Location Counter
3794* Operators:: Operators
3795* Evaluation:: Evaluation
3796* Expression Section:: The Section of an Expression
3797* Builtin Functions:: Builtin Functions
3798@end menu
3799
3800@node Constants
3801@subsection Constants
3802@cindex integer notation
3803@cindex constants in linker scripts
3804All constants are integers.
3805
3806As in C, the linker considers an integer beginning with @samp{0} to be
3807octal, and an integer beginning with @samp{0x} or @samp{0X} to be
3808hexadecimal. The linker considers other integers to be decimal.
3809
3810@cindex scaled integers
3811@cindex K and M integer suffixes
3812@cindex M and K integer suffixes
3813@cindex suffixes for integers
3814@cindex integer suffixes
3815In addition, you can use the suffixes @code{K} and @code{M} to scale a
3816constant by
3817@c TEXI2ROFF-KILL
3818@ifinfo
3819@c END TEXI2ROFF-KILL
3820@code{1024} or @code{1024*1024}
3821@c TEXI2ROFF-KILL
3822@end ifinfo
3823@tex
3824${\rm 1024}$ or ${\rm 1024}^2$
3825@end tex
3826@c END TEXI2ROFF-KILL
3827respectively. For example, the following all refer to the same quantity:
3828@smallexample
3829 _fourk_1 = 4K;
3830 _fourk_2 = 4096;
3831 _fourk_3 = 0x1000;
3832@end smallexample
3833
3834@node Symbols
3835@subsection Symbol Names
3836@cindex symbol names
3837@cindex names
3838@cindex quoted symbol names
3839@kindex "
3840Unless quoted, symbol names start with a letter, underscore, or period
3841and may include letters, digits, underscores, periods, and hyphens.
3842Unquoted symbol names must not conflict with any keywords. You can
3843specify a symbol which contains odd characters or has the same name as a
3844keyword by surrounding the symbol name in double quotes:
3845@smallexample
3846 "SECTION" = 9;
3847 "with a space" = "also with a space" + 10;
3848@end smallexample
3849
3850Since symbols can contain many non-alphabetic characters, it is safest
3851to delimit symbols with spaces. For example, @samp{A-B} is one symbol,
3852whereas @samp{A - B} is an expression involving subtraction.
3853
3854@node Location Counter
3855@subsection The Location Counter
3856@kindex .
3857@cindex dot
3858@cindex location counter
3859@cindex current output location
3860The special linker variable @dfn{dot} @samp{.} always contains the
3861current output location counter. Since the @code{.} always refers to a
3862location in an output section, it may only appear in an expression
3863within a @code{SECTIONS} command. The @code{.} symbol may appear
3864anywhere that an ordinary symbol is allowed in an expression.
3865
3866@cindex holes
3867Assigning a value to @code{.} will cause the location counter to be
3868moved. This may be used to create holes in the output section. The
3869location counter may never be moved backwards.
3870
3871@smallexample
3872SECTIONS
3873@{
3874 output :
3875 @{
3876 file1(.text)
3877 . = . + 1000;
3878 file2(.text)
3879 . += 1000;
3880 file3(.text)
563e308f 3881 @} = 0x12345678;
252b5132
RH
3882@}
3883@end smallexample
3884@noindent
3885In the previous example, the @samp{.text} section from @file{file1} is
3886located at the beginning of the output section @samp{output}. It is
3887followed by a 1000 byte gap. Then the @samp{.text} section from
3888@file{file2} appears, also with a 1000 byte gap following before the
563e308f 3889@samp{.text} section from @file{file3}. The notation @samp{= 0x12345678}
252b5132
RH
3890specifies what data to write in the gaps (@pxref{Output Section Fill}).
3891
5c6bbab8
NC
3892@cindex dot inside sections
3893Note: @code{.} actually refers to the byte offset from the start of the
3894current containing object. Normally this is the @code{SECTIONS}
3895statement, whoes start address is 0, hence @code{.} can be used as an
3896absolute address. If @code{.} is used inside a section description
3897however, it refers to the byte offset from the start of that section,
3898not an absolute address. Thus in a script like this:
3899
3900@smallexample
3901SECTIONS
3902@{
3903 . = 0x100
3904 .text: @{
3905 *(.text)
3906 . = 0x200
3907 @}
3908 . = 0x500
3909 .data: @{
3910 *(.data)
3911 . += 0x600
3912 @}
3913@}
3914@end smallexample
3915
3916The @samp{.text} section will be assigned a starting address of 0x100
3917and a size of exactly 0x200 bytes, even if there is not enough data in
3918the @samp{.text} input sections to fill this area. (If there is too
3919much data, an error will be produced because this would be an attempt to
3920move @code{.} backwards). The @samp{.data} section will start at 0x500
3921and it will have an extra 0x600 bytes worth of space after the end of
3922the values from the @samp{.data} input sections and before the end of
3923the @samp{.data} output section itself.
3924
252b5132
RH
3925@need 2000
3926@node Operators
3927@subsection Operators
3928@cindex operators for arithmetic
3929@cindex arithmetic operators
3930@cindex precedence in expressions
3931The linker recognizes the standard C set of arithmetic operators, with
3932the standard bindings and precedence levels:
3933@c TEXI2ROFF-KILL
3934@ifinfo
3935@c END TEXI2ROFF-KILL
3936@smallexample
3937precedence associativity Operators Notes
3938(highest)
39391 left ! - ~ (1)
39402 left * / %
39413 left + -
39424 left >> <<
39435 left == != > < <= >=
39446 left &
39457 left |
39468 left &&
39479 left ||
394810 right ? :
394911 right &= += -= *= /= (2)
3950(lowest)
3951@end smallexample
3952Notes:
a1ab1d2a 3953(1) Prefix operators
252b5132
RH
3954(2) @xref{Assignments}.
3955@c TEXI2ROFF-KILL
3956@end ifinfo
3957@tex
3958\vskip \baselineskip
3959%"lispnarrowing" is the extra indent used generally for smallexample
3960\hskip\lispnarrowing\vbox{\offinterlineskip
3961\hrule
3962\halign
3963{\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ {\tt #}\ \hfil&\vrule#\cr
3964height2pt&\omit&&\omit&&\omit&\cr
3965&Precedence&& Associativity &&{\rm Operators}&\cr
3966height2pt&\omit&&\omit&&\omit&\cr
3967\noalign{\hrule}
3968height2pt&\omit&&\omit&&\omit&\cr
3969&highest&&&&&\cr
3970% '176 is tilde, '~' in tt font
a1ab1d2a 3971&1&&left&&\qquad- \char'176\ !\qquad\dag&\cr
252b5132
RH
3972&2&&left&&* / \%&\cr
3973&3&&left&&+ -&\cr
3974&4&&left&&>> <<&\cr
3975&5&&left&&== != > < <= >=&\cr
3976&6&&left&&\&&\cr
3977&7&&left&&|&\cr
3978&8&&left&&{\&\&}&\cr
3979&9&&left&&||&\cr
3980&10&&right&&? :&\cr
3981&11&&right&&\qquad\&= += -= *= /=\qquad\ddag&\cr
3982&lowest&&&&&\cr
3983height2pt&\omit&&\omit&&\omit&\cr}
3984\hrule}
3985@end tex
3986@iftex
3987{
3988@obeylines@parskip=0pt@parindent=0pt
3989@dag@quad Prefix operators.
3990@ddag@quad @xref{Assignments}.
3991}
3992@end iftex
3993@c END TEXI2ROFF-KILL
3994
3995@node Evaluation
3996@subsection Evaluation
3997@cindex lazy evaluation
3998@cindex expression evaluation order
3999The linker evaluates expressions lazily. It only computes the value of
4000an expression when absolutely necessary.
4001
4002The linker needs some information, such as the value of the start
4003address of the first section, and the origins and lengths of memory
4004regions, in order to do any linking at all. These values are computed
4005as soon as possible when the linker reads in the linker script.
4006
4007However, other values (such as symbol values) are not known or needed
4008until after storage allocation. Such values are evaluated later, when
4009other information (such as the sizes of output sections) is available
4010for use in the symbol assignment expression.
4011
4012The sizes of sections cannot be known until after allocation, so
4013assignments dependent upon these are not performed until after
4014allocation.
4015
4016Some expressions, such as those depending upon the location counter
4017@samp{.}, must be evaluated during section allocation.
4018
4019If the result of an expression is required, but the value is not
4020available, then an error results. For example, a script like the
4021following
4022@smallexample
4023@group
4024SECTIONS
4025 @{
a1ab1d2a 4026 .text 9+this_isnt_constant :
252b5132
RH
4027 @{ *(.text) @}
4028 @}
4029@end group
4030@end smallexample
4031@noindent
4032will cause the error message @samp{non constant expression for initial
4033address}.
4034
4035@node Expression Section
4036@subsection The Section of an Expression
4037@cindex expression sections
4038@cindex absolute expressions
4039@cindex relative expressions
4040@cindex absolute and relocatable symbols
4041@cindex relocatable and absolute symbols
4042@cindex symbols, relocatable and absolute
4043When the linker evaluates an expression, the result is either absolute
4044or relative to some section. A relative expression is expressed as a
4045fixed offset from the base of a section.
4046
4047The position of the expression within the linker script determines
4048whether it is absolute or relative. An expression which appears within
4049an output section definition is relative to the base of the output
4050section. An expression which appears elsewhere will be absolute.
4051
4052A symbol set to a relative expression will be relocatable if you request
4053relocatable output using the @samp{-r} option. That means that a
4054further link operation may change the value of the symbol. The symbol's
4055section will be the section of the relative expression.
4056
4057A symbol set to an absolute expression will retain the same value
4058through any further link operation. The symbol will be absolute, and
4059will not have any particular associated section.
4060
4061You can use the builtin function @code{ABSOLUTE} to force an expression
4062to be absolute when it would otherwise be relative. For example, to
4063create an absolute symbol set to the address of the end of the output
4064section @samp{.data}:
4065@smallexample
4066SECTIONS
4067 @{
4068 .data : @{ *(.data) _edata = ABSOLUTE(.); @}
4069 @}
4070@end smallexample
4071@noindent
4072If @samp{ABSOLUTE} were not used, @samp{_edata} would be relative to the
4073@samp{.data} section.
4074
4075@node Builtin Functions
4076@subsection Builtin Functions
4077@cindex functions in expressions
4078The linker script language includes a number of builtin functions for
4079use in linker script expressions.
4080
4081@table @code
4082@item ABSOLUTE(@var{exp})
4083@kindex ABSOLUTE(@var{exp})
4084@cindex expression, absolute
4085Return the absolute (non-relocatable, as opposed to non-negative) value
4086of the expression @var{exp}. Primarily useful to assign an absolute
4087value to a symbol within a section definition, where symbol values are
4088normally section relative. @xref{Expression Section}.
4089
4090@item ADDR(@var{section})
4091@kindex ADDR(@var{section})
4092@cindex section address in expression
4093Return the absolute address (the VMA) of the named @var{section}. Your
4094script must previously have defined the location of that section. In
4095the following example, @code{symbol_1} and @code{symbol_2} are assigned
4096identical values:
4097@smallexample
4098@group
4099SECTIONS @{ @dots{}
4100 .output1 :
a1ab1d2a 4101 @{
252b5132
RH
4102 start_of_output_1 = ABSOLUTE(.);
4103 @dots{}
4104 @}
4105 .output :
4106 @{
4107 symbol_1 = ADDR(.output1);
4108 symbol_2 = start_of_output_1;
4109 @}
4110@dots{} @}
4111@end group
4112@end smallexample
4113
4114@item ALIGN(@var{exp})
4115@kindex ALIGN(@var{exp})
4116@cindex round up location counter
4117@cindex align location counter
4118Return the location counter (@code{.}) aligned to the next @var{exp}
4119boundary. @var{exp} must be an expression whose value is a power of
4120two. This is equivalent to
4121@smallexample
4122(. + @var{exp} - 1) & ~(@var{exp} - 1)
4123@end smallexample
4124
4125@code{ALIGN} doesn't change the value of the location counter---it just
4126does arithmetic on it. Here is an example which aligns the output
4127@code{.data} section to the next @code{0x2000} byte boundary after the
4128preceding section and sets a variable within the section to the next
4129@code{0x8000} boundary after the input sections:
4130@smallexample
4131@group
4132SECTIONS @{ @dots{}
4133 .data ALIGN(0x2000): @{
4134 *(.data)
4135 variable = ALIGN(0x8000);
4136 @}
4137@dots{} @}
4138@end group
4139@end smallexample
4140@noindent
4141The first use of @code{ALIGN} in this example specifies the location of
4142a section because it is used as the optional @var{address} attribute of
4143a section definition (@pxref{Output Section Address}). The second use
4144of @code{ALIGN} is used to defines the value of a symbol.
4145
4146The builtin function @code{NEXT} is closely related to @code{ALIGN}.
4147
4148@item BLOCK(@var{exp})
4149@kindex BLOCK(@var{exp})
4150This is a synonym for @code{ALIGN}, for compatibility with older linker
4151scripts. It is most often seen when setting the address of an output
4152section.
4153
4154@item DEFINED(@var{symbol})
4155@kindex DEFINED(@var{symbol})
4156@cindex symbol defaults
4157Return 1 if @var{symbol} is in the linker global symbol table and is
4158defined, otherwise return 0. You can use this function to provide
4159default values for symbols. For example, the following script fragment
4160shows how to set a global symbol @samp{begin} to the first location in
4161the @samp{.text} section---but if a symbol called @samp{begin} already
4162existed, its value is preserved:
4163
4164@smallexample
4165@group
4166SECTIONS @{ @dots{}
4167 .text : @{
4168 begin = DEFINED(begin) ? begin : . ;
4169 @dots{}
4170 @}
4171 @dots{}
4172@}
4173@end group
4174@end smallexample
4175
4176@item LOADADDR(@var{section})
4177@kindex LOADADDR(@var{section})
4178@cindex section load address in expression
4179Return the absolute LMA of the named @var{section}. This is normally
4180the same as @code{ADDR}, but it may be different if the @code{AT}
4181attribute is used in the output section definition (@pxref{Output
4182Section LMA}).
4183
4184@kindex MAX
4185@item MAX(@var{exp1}, @var{exp2})
4186Returns the maximum of @var{exp1} and @var{exp2}.
4187
4188@kindex MIN
4189@item MIN(@var{exp1}, @var{exp2})
4190Returns the minimum of @var{exp1} and @var{exp2}.
4191
4192@item NEXT(@var{exp})
4193@kindex NEXT(@var{exp})
4194@cindex unallocated address, next
4195Return the next unallocated address that is a multiple of @var{exp}.
4196This function is closely related to @code{ALIGN(@var{exp})}; unless you
4197use the @code{MEMORY} command to define discontinuous memory for the
4198output file, the two functions are equivalent.
4199
4200@item SIZEOF(@var{section})
4201@kindex SIZEOF(@var{section})
4202@cindex section size
4203Return the size in bytes of the named @var{section}, if that section has
4204been allocated. If the section has not been allocated when this is
4205evaluated, the linker will report an error. In the following example,
4206@code{symbol_1} and @code{symbol_2} are assigned identical values:
4207@smallexample
4208@group
4209SECTIONS@{ @dots{}
4210 .output @{
4211 .start = . ;
4212 @dots{}
4213 .end = . ;
4214 @}
4215 symbol_1 = .end - .start ;
4216 symbol_2 = SIZEOF(.output);
4217@dots{} @}
4218@end group
4219@end smallexample
4220
4221@item SIZEOF_HEADERS
4222@itemx sizeof_headers
4223@kindex SIZEOF_HEADERS
4224@cindex header size
4225Return the size in bytes of the output file's headers. This is
4226information which appears at the start of the output file. You can use
4227this number when setting the start address of the first section, if you
4228choose, to facilitate paging.
4229
4230@cindex not enough room for program headers
4231@cindex program headers, not enough room
4232When producing an ELF output file, if the linker script uses the
4233@code{SIZEOF_HEADERS} builtin function, the linker must compute the
4234number of program headers before it has determined all the section
4235addresses and sizes. If the linker later discovers that it needs
4236additional program headers, it will report an error @samp{not enough
4237room for program headers}. To avoid this error, you must avoid using
4238the @code{SIZEOF_HEADERS} function, or you must rework your linker
4239script to avoid forcing the linker to use additional program headers, or
4240you must define the program headers yourself using the @code{PHDRS}
4241command (@pxref{PHDRS}).
4242@end table
4243
4244@node Implicit Linker Scripts
4245@section Implicit Linker Scripts
4246@cindex implicit linker scripts
4247If you specify a linker input file which the linker can not recognize as
4248an object file or an archive file, it will try to read the file as a
4249linker script. If the file can not be parsed as a linker script, the
4250linker will report an error.
4251
4252An implicit linker script will not replace the default linker script.
4253
4254Typically an implicit linker script would contain only symbol
4255assignments, or the @code{INPUT}, @code{GROUP}, or @code{VERSION}
4256commands.
4257
4258Any input files read because of an implicit linker script will be read
4259at the position in the command line where the implicit linker script was
4260read. This can affect archive searching.
4261
4262@ifset GENERIC
4263@node Machine Dependent
4264@chapter Machine Dependent Features
4265
4266@cindex machine dependencies
ff5dcc92
SC
4267@command{ld} has additional features on some platforms; the following
4268sections describe them. Machines where @command{ld} has no additional
252b5132
RH
4269functionality are not listed.
4270
4271@menu
4272* H8/300:: @code{ld} and the H8/300
4273* i960:: @code{ld} and the Intel 960 family
4274* ARM:: @code{ld} and the ARM family
47d89dba 4275* HPPA ELF32:: @code{ld} and HPPA 32-bit ELF
3c3bdf30
NC
4276@ifset MMIX
4277* MMIX:: @code{ld} and MMIX
4278@end ifset
74459f0e 4279@ifset TICOFF
ff5dcc92 4280* TI COFF:: @command{ld} and TI COFF
74459f0e 4281@end ifset
252b5132
RH
4282@end menu
4283@end ifset
4284
4285@c FIXME! This could use @raisesections/@lowersections, but there seems to be a conflict
4286@c between those and node-defaulting.
4287@ifset H8300
4288@ifclear GENERIC
4289@raisesections
4290@end ifclear
4291
4292@node H8/300
ff5dcc92 4293@section @command{ld} and the H8/300
252b5132
RH
4294
4295@cindex H8/300 support
ff5dcc92 4296For the H8/300, @command{ld} can perform these global optimizations when
252b5132
RH
4297you specify the @samp{--relax} command-line option.
4298
4299@table @emph
4300@cindex relaxing on H8/300
4301@item relaxing address modes
ff5dcc92 4302@command{ld} finds all @code{jsr} and @code{jmp} instructions whose
252b5132
RH
4303targets are within eight bits, and turns them into eight-bit
4304program-counter relative @code{bsr} and @code{bra} instructions,
4305respectively.
4306
4307@cindex synthesizing on H8/300
4308@item synthesizing instructions
4309@c FIXME: specifically mov.b, or any mov instructions really?
ff5dcc92 4310@command{ld} finds all @code{mov.b} instructions which use the
252b5132
RH
4311sixteen-bit absolute address form, but refer to the top
4312page of memory, and changes them to use the eight-bit address form.
4313(That is: the linker turns @samp{mov.b @code{@@}@var{aa}:16} into
4314@samp{mov.b @code{@@}@var{aa}:8} whenever the address @var{aa} is in the
4315top page of memory).
4316@end table
4317
4318@ifclear GENERIC
4319@lowersections
4320@end ifclear
4321@end ifset
4322
4323@ifclear GENERIC
4324@ifset Hitachi
4325@c This stuff is pointless to say unless you're especially concerned
4326@c with Hitachi chips; don't enable it for generic case, please.
4327@node Hitachi
ff5dcc92 4328@chapter @command{ld} and other Hitachi chips
252b5132 4329
ff5dcc92 4330@command{ld} also supports the H8/300H, the H8/500, and the Hitachi SH. No
252b5132
RH
4331special features, commands, or command-line options are required for
4332these chips.
4333@end ifset
4334@end ifclear
4335
4336@ifset I960
4337@ifclear GENERIC
4338@raisesections
4339@end ifclear
4340
4341@node i960
ff5dcc92 4342@section @command{ld} and the Intel 960 family
252b5132
RH
4343
4344@cindex i960 support
4345
4346You can use the @samp{-A@var{architecture}} command line option to
4347specify one of the two-letter names identifying members of the 960
4348family; the option specifies the desired output target, and warns of any
4349incompatible instructions in the input files. It also modifies the
4350linker's search strategy for archive libraries, to support the use of
4351libraries specific to each particular architecture, by including in the
4352search loop names suffixed with the string identifying the architecture.
4353
ff5dcc92 4354For example, if your @command{ld} command line included @w{@samp{-ACA}} as
252b5132
RH
4355well as @w{@samp{-ltry}}, the linker would look (in its built-in search
4356paths, and in any paths you specify with @samp{-L}) for a library with
4357the names
4358
4359@smallexample
4360@group
4361try
4362libtry.a
4363tryca
4364libtryca.a
4365@end group
4366@end smallexample
4367
4368@noindent
4369The first two possibilities would be considered in any event; the last
4370two are due to the use of @w{@samp{-ACA}}.
4371
4372You can meaningfully use @samp{-A} more than once on a command line, since
4373the 960 architecture family allows combination of target architectures; each
4374use will add another pair of name variants to search for when @w{@samp{-l}}
4375specifies a library.
4376
ff5dcc92 4377@cindex @option{--relax} on i960
252b5132 4378@cindex relaxing on i960
ff5dcc92
SC
4379@command{ld} supports the @samp{--relax} option for the i960 family. If
4380you specify @samp{--relax}, @command{ld} finds all @code{balx} and
252b5132
RH
4381@code{calx} instructions whose targets are within 24 bits, and turns
4382them into 24-bit program-counter relative @code{bal} and @code{cal}
ff5dcc92 4383instructions, respectively. @command{ld} also turns @code{cal}
252b5132
RH
4384instructions into @code{bal} instructions when it determines that the
4385target subroutine is a leaf routine (that is, the target subroutine does
4386not itself call any subroutines).
4387
4388@ifclear GENERIC
4389@lowersections
4390@end ifclear
4391@end ifset
4392
4393@ifclear GENERIC
4394@raisesections
4395@end ifclear
4396
4397@node ARM
ff5dcc92 4398@section @command{ld}'s support for interworking between ARM and Thumb code
252b5132
RH
4399
4400@cindex ARM interworking support
6f798e5c 4401@kindex --support-old-code
ff5dcc92 4402For the ARM, @command{ld} will generate code stubs to allow functions calls
252b5132
RH
4403betweem ARM and Thumb code. These stubs only work with code that has
4404been compiled and assembled with the @samp{-mthumb-interwork} command
4405line option. If it is necessary to link with old ARM object files or
4406libraries, which have not been compiled with the -mthumb-interwork
4407option then the @samp{--support-old-code} command line switch should be
4408given to the linker. This will make it generate larger stub functions
4409which will work with non-interworking aware ARM code. Note, however,
4410the linker does not support generating stubs for function calls to
4411non-interworking aware Thumb code.
4412
6f798e5c
NC
4413@cindex thumb entry point
4414@cindex entry point, thumb
4415@kindex --thumb-entry=@var{entry}
4416The @samp{--thumb-entry} switch is a duplicate of the generic
a1ab1d2a 4417@samp{--entry} switch, in that it sets the program's starting address.
6f798e5c
NC
4418But it also sets the bottom bit of the address, so that it can be
4419branched to using a BX instruction, and the program will start
4420executing in Thumb mode straight away.
4421
47d89dba 4422@node HPPA ELF32
ff5dcc92 4423@section @command{ld} and HPPA 32-bit ELF support
47d89dba
AM
4424@cindex HPPA multiple sub-space stubs
4425@kindex --multi-subspace
ff5dcc92 4426When generating a shared library, @command{ld} will by default generate
47d89dba 4427import stubs suitable for use with a single sub-space application.
ff5dcc92 4428The @samp{--multi-subspace} switch causes @command{ld} to generate export
47d89dba
AM
4429stubs, and different (larger) import stubs suitable for use with
4430multiple sub-spaces.
4431
4432@cindex HPPA stub grouping
4433@kindex --stub-group-size=@var{N}
ff5dcc92 4434Long branch stubs and import/export stubs are placed by @command{ld} in
47d89dba
AM
4435stub sections located between groups of input sections.
4436@samp{--stub-group-size} specifies the maximum size of a group of input
4437sections handled by one stub section. Since branch offsets are signed,
4438a stub section may serve two groups of input sections, one group before
4439the stub section, and one group after it. However, when using
4440conditional branches that require stubs, it may be better (for branch
4441prediction) that stub sections only serve one group of input sections.
4442A negative value for @samp{N} chooses this scheme, ensuring that
4443branches to stubs always use a negative offset. Two special values of
4444@samp{N} are recognized, @samp{1} and @samp{-1}. These both instruct
ff5dcc92 4445@command{ld} to automatically size input section groups for the branch types
47d89dba
AM
4446detected, with the same behaviour regarding stub placement as other
4447positive or negative values of @samp{N} respectively.
4448
4449Note that @samp{--stub-group-size} does not split input sections. A
4450single input section larger than the group size specified will of course
4451create a larger group (of one section). If input sections are too
4452large, it may not be possible for a branch to reach its stub.
4453
3c3bdf30
NC
4454@ifset MMIX
4455@node MMIX
4456@section @code{ld} and MMIX
4457For MMIX, there is choice of generating @code{ELF} object files or
4458@code{mmo} object files when linking. The simulator @code{mmix}
4459understands the @code{mmo} format. The binutils @code{objcopy} utility
4460can translate between the two formats.
4461
4462There is one special section, the @samp{.MMIX.reg_contents} section.
4463Contents in this section is assumed to correspond to that of global
4464registers, and symbols referring to it are translated to special symbols,
4465equal to registers. In a final link, the start address of the
4466@samp{.MMIX.reg_contents} section corresponds to the first allocated
4467global register multiplied by 8. Register @code{$255} is not included in
4468this section; it is always set to the program entry, which is at the
4469symbol @code{Main} for @code{mmo} files.
4470
4471Symbols with the prefix @code{__.MMIX.start.}, for example
4472@code{__.MMIX.start..text} and @code{__.MMIX.start..data} are special;
4473there must be only one each, even if they are local. The default linker
4474script uses these to set the default start address of a section.
4475
4476Initial and trailing multiples of zero-valued 32-bit words in a section,
4477are left out from an mmo file.
4478@end ifset
4479
74459f0e
TW
4480@ifset TICOFF
4481@node TI COFF
ff5dcc92 4482@section @command{ld}'s support for various TI COFF versions
74459f0e
TW
4483@cindex TI COFF versions
4484@kindex --format=@var{version}
4485The @samp{--format} switch allows selection of one of the various
4486TI COFF versions. The latest of this writing is 2; versions 0 and 1 are
4487also supported. The TI COFF versions also vary in header byte-order
ff5dcc92 4488format; @command{ld} will read any version or byte order, but the output
74459f0e
TW
4489header format depends on the default specified by the specific target.
4490@end ifset
4491
252b5132
RH
4492@ifclear GENERIC
4493@lowersections
4494@end ifclear
4495
4496@ifclear SingleFormat
4497@node BFD
4498@chapter BFD
4499
4500@cindex back end
4501@cindex object file management
4502@cindex object formats available
4503@kindex objdump -i
4504The linker accesses object and archive files using the BFD libraries.
4505These libraries allow the linker to use the same routines to operate on
4506object files whatever the object file format. A different object file
4507format can be supported simply by creating a new BFD back end and adding
4508it to the library. To conserve runtime memory, however, the linker and
4509associated tools are usually configured to support only a subset of the
4510object file formats available. You can use @code{objdump -i}
4511(@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}) to
4512list all the formats available for your configuration.
4513
4514@cindex BFD requirements
4515@cindex requirements for BFD
4516As with most implementations, BFD is a compromise between
4517several conflicting requirements. The major factor influencing
4518BFD design was efficiency: any time used converting between
4519formats is time which would not have been spent had BFD not
4520been involved. This is partly offset by abstraction payback; since
4521BFD simplifies applications and back ends, more time and care
4522may be spent optimizing algorithms for a greater speed.
4523
4524One minor artifact of the BFD solution which you should bear in
4525mind is the potential for information loss. There are two places where
4526useful information can be lost using the BFD mechanism: during
4527conversion and during output. @xref{BFD information loss}.
4528
4529@menu
4530* BFD outline:: How it works: an outline of BFD
4531@end menu
4532
4533@node BFD outline
4534@section How it works: an outline of BFD
4535@cindex opening object files
4536@include bfdsumm.texi
4537@end ifclear
4538
4539@node Reporting Bugs
4540@chapter Reporting Bugs
ff5dcc92
SC
4541@cindex bugs in @command{ld}
4542@cindex reporting bugs in @command{ld}
252b5132 4543
ff5dcc92 4544Your bug reports play an essential role in making @command{ld} reliable.
252b5132
RH
4545
4546Reporting a bug may help you by bringing a solution to your problem, or
4547it may not. But in any case the principal function of a bug report is
ff5dcc92 4548to help the entire community by making the next version of @command{ld}
252b5132 4549work better. Bug reports are your contribution to the maintenance of
ff5dcc92 4550@command{ld}.
252b5132
RH
4551
4552In order for a bug report to serve its purpose, you must include the
4553information that enables us to fix the bug.
4554
4555@menu
4556* Bug Criteria:: Have you found a bug?
4557* Bug Reporting:: How to report bugs
4558@end menu
4559
4560@node Bug Criteria
4561@section Have you found a bug?
4562@cindex bug criteria
4563
4564If you are not sure whether you have found a bug, here are some guidelines:
4565
4566@itemize @bullet
4567@cindex fatal signal
4568@cindex linker crash
4569@cindex crash of linker
4570@item
4571If the linker gets a fatal signal, for any input whatever, that is a
ff5dcc92 4572@command{ld} bug. Reliable linkers never crash.
252b5132
RH
4573
4574@cindex error on valid input
4575@item
ff5dcc92 4576If @command{ld} produces an error message for valid input, that is a bug.
252b5132
RH
4577
4578@cindex invalid input
4579@item
ff5dcc92 4580If @command{ld} does not produce an error message for invalid input, that
252b5132
RH
4581may be a bug. In the general case, the linker can not verify that
4582object files are correct.
4583
4584@item
4585If you are an experienced user of linkers, your suggestions for
ff5dcc92 4586improvement of @command{ld} are welcome in any case.
252b5132
RH
4587@end itemize
4588
4589@node Bug Reporting
4590@section How to report bugs
4591@cindex bug reports
ff5dcc92 4592@cindex @command{ld} bugs, reporting
252b5132
RH
4593
4594A number of companies and individuals offer support for @sc{gnu}
ff5dcc92 4595products. If you obtained @command{ld} from a support organization, we
252b5132
RH
4596recommend you contact that organization first.
4597
4598You can find contact information for many support companies and
4599individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
4600distribution.
4601
ff5dcc92 4602Otherwise, send bug reports for @command{ld} to
d7ed7ca6 4603@samp{bug-binutils@@gnu.org}.
252b5132
RH
4604
4605The fundamental principle of reporting bugs usefully is this:
4606@strong{report all the facts}. If you are not sure whether to state a
4607fact or leave it out, state it!
4608
4609Often people omit facts because they think they know what causes the
4610problem and assume that some details do not matter. Thus, you might
4611assume that the name of a symbol you use in an example does not matter.
4612Well, probably it does not, but one cannot be sure. Perhaps the bug is
4613a stray memory reference which happens to fetch from the location where
4614that name is stored in memory; perhaps, if the name were different, the
4615contents of that location would fool the linker into doing the right
4616thing despite the bug. Play it safe and give a specific, complete
4617example. That is the easiest thing for you to do, and the most helpful.
4618
4619Keep in mind that the purpose of a bug report is to enable us to fix the bug if
4620it is new to us. Therefore, always write your bug reports on the assumption
4621that the bug has not been reported previously.
4622
4623Sometimes people give a few sketchy facts and ask, ``Does this ring a
4624bell?'' Those bug reports are useless, and we urge everyone to
4625@emph{refuse to respond to them} except to chide the sender to report
4626bugs properly.
4627
4628To enable us to fix the bug, you should include all these things:
4629
4630@itemize @bullet
4631@item
ff5dcc92 4632The version of @command{ld}. @command{ld} announces it if you start it with
252b5132
RH
4633the @samp{--version} argument.
4634
4635Without this, we will not know whether there is any point in looking for
ff5dcc92 4636the bug in the current version of @command{ld}.
252b5132
RH
4637
4638@item
ff5dcc92 4639Any patches you may have applied to the @command{ld} source, including any
252b5132
RH
4640patches made to the @code{BFD} library.
4641
4642@item
4643The type of machine you are using, and the operating system name and
4644version number.
4645
4646@item
ff5dcc92 4647What compiler (and its version) was used to compile @command{ld}---e.g.
252b5132
RH
4648``@code{gcc-2.7}''.
4649
4650@item
4651The command arguments you gave the linker to link your example and
4652observe the bug. To guarantee you will not omit something important,
4653list them all. A copy of the Makefile (or the output from make) is
4654sufficient.
4655
4656If we were to try to guess the arguments, we would probably guess wrong
4657and then we might not encounter the bug.
4658
4659@item
4660A complete input file, or set of input files, that will reproduce the
4661bug. It is generally most helpful to send the actual object files,
4662uuencoded if necessary to get them through the mail system. Making them
4663available for anonymous FTP is not as good, but may be the only
4664reasonable choice for large object files.
4665
4666If the source files were assembled using @code{gas} or compiled using
4667@code{gcc}, then it may be OK to send the source files rather than the
4668object files. In this case, be sure to say exactly what version of
4669@code{gas} or @code{gcc} was used to produce the object files. Also say
4670how @code{gas} or @code{gcc} were configured.
4671
4672@item
4673A description of what behavior you observe that you believe is
4674incorrect. For example, ``It gets a fatal signal.''
4675
ff5dcc92 4676Of course, if the bug is that @command{ld} gets a fatal signal, then we
252b5132
RH
4677will certainly notice it. But if the bug is incorrect output, we might
4678not notice unless it is glaringly wrong. You might as well not give us
4679a chance to make a mistake.
4680
4681Even if the problem you experience is a fatal signal, you should still
4682say so explicitly. Suppose something strange is going on, such as, your
ff5dcc92 4683copy of @command{ld} is out of synch, or you have encountered a bug in the
252b5132
RH
4684C library on your system. (This has happened!) Your copy might crash
4685and ours would not. If you told us to expect a crash, then when ours
4686fails to crash, we would know that the bug was not happening for us. If
4687you had not told us to expect a crash, then we would not be able to draw
4688any conclusion from our observations.
4689
4690@item
ff5dcc92 4691If you wish to suggest changes to the @command{ld} source, send us context
252b5132
RH
4692diffs, as generated by @code{diff} with the @samp{-u}, @samp{-c}, or
4693@samp{-p} option. Always send diffs from the old file to the new file.
ff5dcc92 4694If you even discuss something in the @command{ld} source, refer to it by
252b5132
RH
4695context, not by line number.
4696
4697The line numbers in our development sources will not match those in your
4698sources. Your line numbers would convey no useful information to us.
4699@end itemize
4700
4701Here are some things that are not necessary:
4702
4703@itemize @bullet
4704@item
4705A description of the envelope of the bug.
4706
4707Often people who encounter a bug spend a lot of time investigating
4708which changes to the input file will make the bug go away and which
4709changes will not affect it.
4710
4711This is often time consuming and not very useful, because the way we
4712will find the bug is by running a single example under the debugger
4713with breakpoints, not by pure deduction from a series of examples.
4714We recommend that you save your time for something else.
4715
4716Of course, if you can find a simpler example to report @emph{instead}
4717of the original one, that is a convenience for us. Errors in the
4718output will be easier to spot, running under the debugger will take
4719less time, and so on.
4720
4721However, simplification is not vital; if you do not want to do this,
4722report the bug anyway and send us the entire test case you used.
4723
4724@item
4725A patch for the bug.
4726
4727A patch for the bug does help us if it is a good one. But do not omit
4728the necessary information, such as the test case, on the assumption that
4729a patch is all we need. We might see problems with your patch and decide
4730to fix the problem another way, or we might not understand it at all.
4731
ff5dcc92 4732Sometimes with a program as complicated as @command{ld} it is very hard to
252b5132
RH
4733construct an example that will make the program follow a certain path
4734through the code. If you do not send us the example, we will not be
4735able to construct one, so we will not be able to verify that the bug is
4736fixed.
4737
4738And if we cannot understand what bug you are trying to fix, or why your
4739patch should be an improvement, we will not install it. A test case will
4740help us to understand.
4741
4742@item
4743A guess about what the bug is or what it depends on.
4744
4745Such guesses are usually wrong. Even we cannot guess right about such
4746things without first using the debugger to find the facts.
4747@end itemize
4748
4749@node MRI
4750@appendix MRI Compatible Script Files
4751@cindex MRI compatibility
ff5dcc92
SC
4752To aid users making the transition to @sc{gnu} @command{ld} from the MRI
4753linker, @command{ld} can use MRI compatible linker scripts as an
252b5132
RH
4754alternative to the more general-purpose linker scripting language
4755described in @ref{Scripts}. MRI compatible linker scripts have a much
4756simpler command set than the scripting language otherwise used with
ff5dcc92 4757@command{ld}. @sc{gnu} @command{ld} supports the most commonly used MRI
252b5132
RH
4758linker commands; these commands are described here.
4759
4760In general, MRI scripts aren't of much use with the @code{a.out} object
4761file format, since it only has three sections and MRI scripts lack some
4762features to make use of them.
4763
4764You can specify a file containing an MRI-compatible script using the
4765@samp{-c} command-line option.
4766
4767Each command in an MRI-compatible script occupies its own line; each
4768command line starts with the keyword that identifies the command (though
4769blank lines are also allowed for punctuation). If a line of an
ff5dcc92 4770MRI-compatible script begins with an unrecognized keyword, @command{ld}
252b5132
RH
4771issues a warning message, but continues processing the script.
4772
4773Lines beginning with @samp{*} are comments.
4774
4775You can write these commands using all upper-case letters, or all
4776lower case; for example, @samp{chip} is the same as @samp{CHIP}.
4777The following list shows only the upper-case form of each command.
4778
4779@table @code
4780@cindex @code{ABSOLUTE} (MRI)
4781@item ABSOLUTE @var{secname}
4782@itemx ABSOLUTE @var{secname}, @var{secname}, @dots{} @var{secname}
ff5dcc92 4783Normally, @command{ld} includes in the output file all sections from all
252b5132
RH
4784the input files. However, in an MRI-compatible script, you can use the
4785@code{ABSOLUTE} command to restrict the sections that will be present in
4786your output program. If the @code{ABSOLUTE} command is used at all in a
4787script, then only the sections named explicitly in @code{ABSOLUTE}
4788commands will appear in the linker output. You can still use other
4789input sections (whatever you select on the command line, or using
4790@code{LOAD}) to resolve addresses in the output file.
4791
4792@cindex @code{ALIAS} (MRI)
4793@item ALIAS @var{out-secname}, @var{in-secname}
4794Use this command to place the data from input section @var{in-secname}
4795in a section called @var{out-secname} in the linker output file.
4796
4797@var{in-secname} may be an integer.
4798
4799@cindex @code{ALIGN} (MRI)
4800@item ALIGN @var{secname} = @var{expression}
4801Align the section called @var{secname} to @var{expression}. The
4802@var{expression} should be a power of two.
4803
4804@cindex @code{BASE} (MRI)
4805@item BASE @var{expression}
4806Use the value of @var{expression} as the lowest address (other than
4807absolute addresses) in the output file.
4808
4809@cindex @code{CHIP} (MRI)
4810@item CHIP @var{expression}
4811@itemx CHIP @var{expression}, @var{expression}
4812This command does nothing; it is accepted only for compatibility.
4813
4814@cindex @code{END} (MRI)
4815@item END
4816This command does nothing whatever; it's only accepted for compatibility.
4817
4818@cindex @code{FORMAT} (MRI)
4819@item FORMAT @var{output-format}
4820Similar to the @code{OUTPUT_FORMAT} command in the more general linker
a1ab1d2a 4821language, but restricted to one of these output formats:
252b5132
RH
4822
4823@enumerate
a1ab1d2a 4824@item
252b5132
RH
4825S-records, if @var{output-format} is @samp{S}
4826
4827@item
4828IEEE, if @var{output-format} is @samp{IEEE}
4829
4830@item
4831COFF (the @samp{coff-m68k} variant in BFD), if @var{output-format} is
4832@samp{COFF}
4833@end enumerate
4834
4835@cindex @code{LIST} (MRI)
4836@item LIST @var{anything}@dots{}
4837Print (to the standard output file) a link map, as produced by the
ff5dcc92 4838@command{ld} command-line option @samp{-M}.
252b5132
RH
4839
4840The keyword @code{LIST} may be followed by anything on the
4841same line, with no change in its effect.
4842
4843@cindex @code{LOAD} (MRI)
4844@item LOAD @var{filename}
4845@itemx LOAD @var{filename}, @var{filename}, @dots{} @var{filename}
4846Include one or more object file @var{filename} in the link; this has the
ff5dcc92 4847same effect as specifying @var{filename} directly on the @command{ld}
252b5132
RH
4848command line.
4849
4850@cindex @code{NAME} (MRI)
4851@item NAME @var{output-name}
ff5dcc92 4852@var{output-name} is the name for the program produced by @command{ld}; the
252b5132
RH
4853MRI-compatible command @code{NAME} is equivalent to the command-line
4854option @samp{-o} or the general script language command @code{OUTPUT}.
4855
4856@cindex @code{ORDER} (MRI)
4857@item ORDER @var{secname}, @var{secname}, @dots{} @var{secname}
4858@itemx ORDER @var{secname} @var{secname} @var{secname}
ff5dcc92 4859Normally, @command{ld} orders the sections in its output file in the
252b5132
RH
4860order in which they first appear in the input files. In an MRI-compatible
4861script, you can override this ordering with the @code{ORDER} command. The
4862sections you list with @code{ORDER} will appear first in your output
4863file, in the order specified.
4864
4865@cindex @code{PUBLIC} (MRI)
4866@item PUBLIC @var{name}=@var{expression}
4867@itemx PUBLIC @var{name},@var{expression}
4868@itemx PUBLIC @var{name} @var{expression}
4869Supply a value (@var{expression}) for external symbol
4870@var{name} used in the linker input files.
4871
4872@cindex @code{SECT} (MRI)
4873@item SECT @var{secname}, @var{expression}
4874@itemx SECT @var{secname}=@var{expression}
4875@itemx SECT @var{secname} @var{expression}
4876You can use any of these three forms of the @code{SECT} command to
4877specify the start address (@var{expression}) for section @var{secname}.
4878If you have more than one @code{SECT} statement for the same
4879@var{secname}, only the @emph{first} sets the start address.
4880@end table
4881
704c465c
NC
4882@node GNU Free Documentation License
4883@appendix GNU Free Documentation License
4884@cindex GNU Free Documentation License
4885
4886 GNU Free Documentation License
a1ab1d2a 4887
704c465c
NC
4888 Version 1.1, March 2000
4889
4890 Copyright (C) 2000 Free Software Foundation, Inc.
4891 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
a1ab1d2a 4892
704c465c
NC
4893 Everyone is permitted to copy and distribute verbatim copies
4894 of this license document, but changing it is not allowed.
4895
4896
48970. PREAMBLE
4898
4899The purpose of this License is to make a manual, textbook, or other
4900written document "free" in the sense of freedom: to assure everyone
4901the effective freedom to copy and redistribute it, with or without
4902modifying it, either commercially or noncommercially. Secondarily,
4903this License preserves for the author and publisher a way to get
4904credit for their work, while not being considered responsible for
4905modifications made by others.
4906
4907This License is a kind of "copyleft", which means that derivative
4908works of the document must themselves be free in the same sense. It
4909complements the GNU General Public License, which is a copyleft
4910license designed for free software.
4911
4912We have designed this License in order to use it for manuals for free
4913software, because free software needs free documentation: a free
4914program should come with manuals providing the same freedoms that the
4915software does. But this License is not limited to software manuals;
4916it can be used for any textual work, regardless of subject matter or
4917whether it is published as a printed book. We recommend this License
4918principally for works whose purpose is instruction or reference.
4919
4920
49211. APPLICABILITY AND DEFINITIONS
4922
4923This License applies to any manual or other work that contains a
4924notice placed by the copyright holder saying it can be distributed
4925under the terms of this License. The "Document", below, refers to any
4926such manual or work. Any member of the public is a licensee, and is
4927addressed as "you".
4928
4929A "Modified Version" of the Document means any work containing the
4930Document or a portion of it, either copied verbatim, or with
4931modifications and/or translated into another language.
4932
4933A "Secondary Section" is a named appendix or a front-matter section of
4934the Document that deals exclusively with the relationship of the
4935publishers or authors of the Document to the Document's overall subject
4936(or to related matters) and contains nothing that could fall directly
4937within that overall subject. (For example, if the Document is in part a
4938textbook of mathematics, a Secondary Section may not explain any
4939mathematics.) The relationship could be a matter of historical
4940connection with the subject or with related matters, or of legal,
4941commercial, philosophical, ethical or political position regarding
4942them.
4943
4944The "Invariant Sections" are certain Secondary Sections whose titles
4945are designated, as being those of Invariant Sections, in the notice
4946that says that the Document is released under this License.
4947
4948The "Cover Texts" are certain short passages of text that are listed,
4949as Front-Cover Texts or Back-Cover Texts, in the notice that says that
4950the Document is released under this License.
4951
4952A "Transparent" copy of the Document means a machine-readable copy,
4953represented in a format whose specification is available to the
4954general public, whose contents can be viewed and edited directly and
4955straightforwardly with generic text editors or (for images composed of
4956pixels) generic paint programs or (for drawings) some widely available
4957drawing editor, and that is suitable for input to text formatters or
4958for automatic translation to a variety of formats suitable for input
4959to text formatters. A copy made in an otherwise Transparent file
4960format whose markup has been designed to thwart or discourage
4961subsequent modification by readers is not Transparent. A copy that is
4962not "Transparent" is called "Opaque".
4963
4964Examples of suitable formats for Transparent copies include plain
4965ASCII without markup, Texinfo input format, LaTeX input format, SGML
4966or XML using a publicly available DTD, and standard-conforming simple
4967HTML designed for human modification. Opaque formats include
4968PostScript, PDF, proprietary formats that can be read and edited only
4969by proprietary word processors, SGML or XML for which the DTD and/or
4970processing tools are not generally available, and the
4971machine-generated HTML produced by some word processors for output
4972purposes only.
4973
4974The "Title Page" means, for a printed book, the title page itself,
4975plus such following pages as are needed to hold, legibly, the material
4976this License requires to appear in the title page. For works in
4977formats which do not have any title page as such, "Title Page" means
4978the text near the most prominent appearance of the work's title,
4979preceding the beginning of the body of the text.
4980
4981
49822. VERBATIM COPYING
4983
4984You may copy and distribute the Document in any medium, either
4985commercially or noncommercially, provided that this License, the
4986copyright notices, and the license notice saying this License applies
4987to the Document are reproduced in all copies, and that you add no other
4988conditions whatsoever to those of this License. You may not use
4989technical measures to obstruct or control the reading or further
4990copying of the copies you make or distribute. However, you may accept
4991compensation in exchange for copies. If you distribute a large enough
4992number of copies you must also follow the conditions in section 3.
4993
4994You may also lend copies, under the same conditions stated above, and
4995you may publicly display copies.
4996
4997
49983. COPYING IN QUANTITY
4999
5000If you publish printed copies of the Document numbering more than 100,
5001and the Document's license notice requires Cover Texts, you must enclose
5002the copies in covers that carry, clearly and legibly, all these Cover
5003Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
5004the back cover. Both covers must also clearly and legibly identify
5005you as the publisher of these copies. The front cover must present
5006the full title with all words of the title equally prominent and
5007visible. You may add other material on the covers in addition.
5008Copying with changes limited to the covers, as long as they preserve
5009the title of the Document and satisfy these conditions, can be treated
5010as verbatim copying in other respects.
5011
5012If the required texts for either cover are too voluminous to fit
5013legibly, you should put the first ones listed (as many as fit
5014reasonably) on the actual cover, and continue the rest onto adjacent
5015pages.
5016
5017If you publish or distribute Opaque copies of the Document numbering
5018more than 100, you must either include a machine-readable Transparent
5019copy along with each Opaque copy, or state in or with each Opaque copy
5020a publicly-accessible computer-network location containing a complete
5021Transparent copy of the Document, free of added material, which the
5022general network-using public has access to download anonymously at no
5023charge using public-standard network protocols. If you use the latter
5024option, you must take reasonably prudent steps, when you begin
5025distribution of Opaque copies in quantity, to ensure that this
5026Transparent copy will remain thus accessible at the stated location
5027until at least one year after the last time you distribute an Opaque
5028copy (directly or through your agents or retailers) of that edition to
5029the public.
5030
5031It is requested, but not required, that you contact the authors of the
5032Document well before redistributing any large number of copies, to give
5033them a chance to provide you with an updated version of the Document.
5034
5035
50364. MODIFICATIONS
5037
5038You may copy and distribute a Modified Version of the Document under
5039the conditions of sections 2 and 3 above, provided that you release
5040the Modified Version under precisely this License, with the Modified
5041Version filling the role of the Document, thus licensing distribution
5042and modification of the Modified Version to whoever possesses a copy
5043of it. In addition, you must do these things in the Modified Version:
5044
5045A. Use in the Title Page (and on the covers, if any) a title distinct
5046 from that of the Document, and from those of previous versions
5047 (which should, if there were any, be listed in the History section
5048 of the Document). You may use the same title as a previous version
5049 if the original publisher of that version gives permission.
5050B. List on the Title Page, as authors, one or more persons or entities
5051 responsible for authorship of the modifications in the Modified
5052 Version, together with at least five of the principal authors of the
5053 Document (all of its principal authors, if it has less than five).
5054C. State on the Title page the name of the publisher of the
5055 Modified Version, as the publisher.
5056D. Preserve all the copyright notices of the Document.
5057E. Add an appropriate copyright notice for your modifications
5058 adjacent to the other copyright notices.
5059F. Include, immediately after the copyright notices, a license notice
5060 giving the public permission to use the Modified Version under the
5061 terms of this License, in the form shown in the Addendum below.
5062G. Preserve in that license notice the full lists of Invariant Sections
5063 and required Cover Texts given in the Document's license notice.
5064H. Include an unaltered copy of this License.
5065I. Preserve the section entitled "History", and its title, and add to
5066 it an item stating at least the title, year, new authors, and
5067 publisher of the Modified Version as given on the Title Page. If
5068 there is no section entitled "History" in the Document, create one
5069 stating the title, year, authors, and publisher of the Document as
5070 given on its Title Page, then add an item describing the Modified
5071 Version as stated in the previous sentence.
5072J. Preserve the network location, if any, given in the Document for
5073 public access to a Transparent copy of the Document, and likewise
5074 the network locations given in the Document for previous versions
5075 it was based on. These may be placed in the "History" section.
5076 You may omit a network location for a work that was published at
5077 least four years before the Document itself, or if the original
5078 publisher of the version it refers to gives permission.
5079K. In any section entitled "Acknowledgements" or "Dedications",
5080 preserve the section's title, and preserve in the section all the
5081 substance and tone of each of the contributor acknowledgements
5082 and/or dedications given therein.
5083L. Preserve all the Invariant Sections of the Document,
5084 unaltered in their text and in their titles. Section numbers
5085 or the equivalent are not considered part of the section titles.
5086M. Delete any section entitled "Endorsements". Such a section
5087 may not be included in the Modified Version.
5088N. Do not retitle any existing section as "Endorsements"
5089 or to conflict in title with any Invariant Section.
5090
5091If the Modified Version includes new front-matter sections or
5092appendices that qualify as Secondary Sections and contain no material
5093copied from the Document, you may at your option designate some or all
5094of these sections as invariant. To do this, add their titles to the
5095list of Invariant Sections in the Modified Version's license notice.
5096These titles must be distinct from any other section titles.
5097
5098You may add a section entitled "Endorsements", provided it contains
5099nothing but endorsements of your Modified Version by various
5100parties--for example, statements of peer review or that the text has
5101been approved by an organization as the authoritative definition of a
5102standard.
5103
5104You may add a passage of up to five words as a Front-Cover Text, and a
5105passage of up to 25 words as a Back-Cover Text, to the end of the list
5106of Cover Texts in the Modified Version. Only one passage of
5107Front-Cover Text and one of Back-Cover Text may be added by (or
5108through arrangements made by) any one entity. If the Document already
5109includes a cover text for the same cover, previously added by you or
5110by arrangement made by the same entity you are acting on behalf of,
5111you may not add another; but you may replace the old one, on explicit
5112permission from the previous publisher that added the old one.
5113
5114The author(s) and publisher(s) of the Document do not by this License
5115give permission to use their names for publicity for or to assert or
5116imply endorsement of any Modified Version.
5117
5118
51195. COMBINING DOCUMENTS
5120
5121You may combine the Document with other documents released under this
5122License, under the terms defined in section 4 above for modified
5123versions, provided that you include in the combination all of the
5124Invariant Sections of all of the original documents, unmodified, and
5125list them all as Invariant Sections of your combined work in its
5126license notice.
5127
5128The combined work need only contain one copy of this License, and
5129multiple identical Invariant Sections may be replaced with a single
5130copy. If there are multiple Invariant Sections with the same name but
5131different contents, make the title of each such section unique by
5132adding at the end of it, in parentheses, the name of the original
5133author or publisher of that section if known, or else a unique number.
5134Make the same adjustment to the section titles in the list of
5135Invariant Sections in the license notice of the combined work.
5136
5137In the combination, you must combine any sections entitled "History"
5138in the various original documents, forming one section entitled
5139"History"; likewise combine any sections entitled "Acknowledgements",
5140and any sections entitled "Dedications". You must delete all sections
5141entitled "Endorsements."
5142
5143
51446. COLLECTIONS OF DOCUMENTS
5145
5146You may make a collection consisting of the Document and other documents
5147released under this License, and replace the individual copies of this
5148License in the various documents with a single copy that is included in
5149the collection, provided that you follow the rules of this License for
5150verbatim copying of each of the documents in all other respects.
5151
5152You may extract a single document from such a collection, and distribute
5153it individually under this License, provided you insert a copy of this
5154License into the extracted document, and follow this License in all
5155other respects regarding verbatim copying of that document.
5156
5157
51587. AGGREGATION WITH INDEPENDENT WORKS
5159
5160A compilation of the Document or its derivatives with other separate
5161and independent documents or works, in or on a volume of a storage or
5162distribution medium, does not as a whole count as a Modified Version
5163of the Document, provided no compilation copyright is claimed for the
5164compilation. Such a compilation is called an "aggregate", and this
5165License does not apply to the other self-contained works thus compiled
5166with the Document, on account of their being thus compiled, if they
5167are not themselves derivative works of the Document.
5168
5169If the Cover Text requirement of section 3 is applicable to these
5170copies of the Document, then if the Document is less than one quarter
5171of the entire aggregate, the Document's Cover Texts may be placed on
5172covers that surround only the Document within the aggregate.
5173Otherwise they must appear on covers around the whole aggregate.
5174
5175
51768. TRANSLATION
5177
5178Translation is considered a kind of modification, so you may
5179distribute translations of the Document under the terms of section 4.
5180Replacing Invariant Sections with translations requires special
5181permission from their copyright holders, but you may include
5182translations of some or all Invariant Sections in addition to the
5183original versions of these Invariant Sections. You may include a
5184translation of this License provided that you also include the
5185original English version of this License. In case of a disagreement
5186between the translation and the original English version of this
5187License, the original English version will prevail.
5188
5189
51909. TERMINATION
5191
5192You may not copy, modify, sublicense, or distribute the Document except
5193as expressly provided for under this License. Any other attempt to
5194copy, modify, sublicense or distribute the Document is void, and will
5195automatically terminate your rights under this License. However,
5196parties who have received copies, or rights, from you under this
5197License will not have their licenses terminated so long as such
5198parties remain in full compliance.
5199
5200
520110. FUTURE REVISIONS OF THIS LICENSE
5202
5203The Free Software Foundation may publish new, revised versions
5204of the GNU Free Documentation License from time to time. Such new
5205versions will be similar in spirit to the present version, but may
5206differ in detail to address new problems or concerns. See
5207http://www.gnu.org/copyleft/.
5208
5209Each version of the License is given a distinguishing version number.
5210If the Document specifies that a particular numbered version of this
5211License "or any later version" applies to it, you have the option of
5212following the terms and conditions either of that specified version or
5213of any later version that has been published (not as a draft) by the
5214Free Software Foundation. If the Document does not specify a version
5215number of this License, you may choose any version ever published (not
5216as a draft) by the Free Software Foundation.
5217
5218
5219ADDENDUM: How to use this License for your documents
5220
5221To use this License in a document you have written, include a copy of
5222the License in the document and put the following copyright and
5223license notices just after the title page:
5224
5225@smallexample
5226 Copyright (c) YEAR YOUR NAME.
5227 Permission is granted to copy, distribute and/or modify this document
5228 under the terms of the GNU Free Documentation License, Version 1.1
5229 or any later version published by the Free Software Foundation;
5230 with the Invariant Sections being LIST THEIR TITLES, with the
5231 Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
5232 A copy of the license is included in the section entitled "GNU
5233 Free Documentation License".
5234@end smallexample
5235
5236If you have no Invariant Sections, write "with no Invariant Sections"
5237instead of saying which ones are invariant. If you have no
5238Front-Cover Texts, write "no Front-Cover Texts" instead of
5239"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
5240
5241If your document contains nontrivial examples of program code, we
5242recommend releasing these examples in parallel under your choice of
5243free software license, such as the GNU General Public License,
5244to permit their use in free software.
5245
252b5132
RH
5246@node Index
5247@unnumbered Index
5248
5249@printindex cp
5250
5251@tex
5252% I think something like @colophon should be in texinfo. In the
5253% meantime:
5254\long\def\colophon{\hbox to0pt{}\vfill
5255\centerline{The body of this manual is set in}
5256\centerline{\fontname\tenrm,}
5257\centerline{with headings in {\bf\fontname\tenbf}}
5258\centerline{and examples in {\tt\fontname\tentt}.}
5259\centerline{{\it\fontname\tenit\/} and}
5260\centerline{{\sl\fontname\tensl\/}}
5261\centerline{are used for emphasis.}\vfill}
5262\page\colophon
5263% Blame: doc@cygnus.com, 28mar91.
5264@end tex
5265
5266
5267@contents
5268@bye