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