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