PR 9805
[platform/upstream/binutils.git] / ld / ld.texinfo
1 \input texinfo
2 @setfilename ld.info
3 @c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 @c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
5 @c Free Software Foundation, Inc.
6 @syncodeindex ky cp
7 @c man begin INCLUDE
8 @include configdoc.texi
9 @c (configdoc.texi is generated by the Makefile)
10 @include bfdver.texi
11 @c man end
12
13 @c @smallbook
14
15 @macro gcctabopt{body}
16 @code{\body\}
17 @end macro
18
19 @c man begin NAME
20 @ifset man
21 @c Configure for the generation of man pages
22 @set UsesEnvVars
23 @set GENERIC
24 @set ARM
25 @set H8300
26 @set HPPA
27 @set I960
28 @set M68HC11
29 @set M68K
30 @set MMIX
31 @set MSP430
32 @set POWERPC
33 @set POWERPC64
34 @set Renesas
35 @set SPU
36 @set TICOFF
37 @set WIN32
38 @set XTENSA
39 @end ifset
40 @c man end
41
42 @ifinfo
43 @format
44 START-INFO-DIR-ENTRY
45 * Ld: (ld).                       The GNU linker.
46 END-INFO-DIR-ENTRY
47 @end format
48 @end ifinfo
49
50 @copying
51 This file documents the @sc{gnu} linker LD
52 @ifset VERSION_PACKAGE
53 @value{VERSION_PACKAGE}
54 @end ifset
55 version @value{VERSION}.
56
57 Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
58 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
59
60 Permission is granted to copy, distribute and/or modify this document
61 under the terms of the GNU Free Documentation License, Version 1.3
62 or any later version published by the Free Software Foundation;
63 with no Invariant Sections, with no Front-Cover Texts, and with no
64 Back-Cover Texts.  A copy of the license is included in the
65 section entitled ``GNU Free Documentation License''.
66 @end copying
67 @iftex
68 @finalout
69 @setchapternewpage odd
70 @settitle The GNU linker
71 @titlepage
72 @title The GNU linker
73 @sp 1
74 @subtitle @code{ld}
75 @ifset VERSION_PACKAGE
76 @subtitle @value{VERSION_PACKAGE}
77 @end ifset
78 @subtitle Version @value{VERSION}
79 @author Steve Chamberlain
80 @author Ian Lance Taylor
81 @page
82
83 @tex
84 {\parskip=0pt
85 \hfill Red Hat Inc\par
86 \hfill nickc\@credhat.com, doc\@redhat.com\par
87 \hfill {\it The GNU linker}\par
88 \hfill Edited by Jeffrey Osier (jeffrey\@cygnus.com)\par
89 }
90 \global\parindent=0pt % Steve likes it this way.
91 @end tex
92
93 @vskip 0pt plus 1filll
94 @c man begin COPYRIGHT
95 Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
96 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
97
98 Permission is granted to copy, distribute and/or modify this document
99 under the terms of the GNU Free Documentation License, Version 1.3
100 or any later version published by the Free Software Foundation;
101 with no Invariant Sections, with no Front-Cover Texts, and with no
102 Back-Cover Texts.  A copy of the license is included in the
103 section entitled ``GNU Free Documentation License''.
104 @c man end
105
106 @end titlepage
107 @end iftex
108 @contents
109 @c FIXME: Talk about importance of *order* of args, cmds to linker!
110
111 @ifnottex
112 @node Top
113 @top LD
114 This file documents the @sc{gnu} linker ld
115 @ifset VERSION_PACKAGE
116 @value{VERSION_PACKAGE}
117 @end ifset
118 version @value{VERSION}.
119
120 This document is distributed under the terms of the GNU Free
121 Documentation License version 1.3.  A copy of the license is included
122 in the section entitled ``GNU Free Documentation License''.
123
124 @menu
125 * Overview::                    Overview
126 * Invocation::                  Invocation
127 * Scripts::                     Linker Scripts
128 @ifset GENERIC
129 * Machine Dependent::           Machine Dependent Features
130 @end ifset
131 @ifclear GENERIC
132 @ifset H8300
133 * H8/300::                      ld and the H8/300
134 @end ifset
135 @ifset Renesas
136 * Renesas::                     ld and other Renesas micros
137 @end ifset
138 @ifset I960
139 * i960::                        ld and the Intel 960 family
140 @end ifset
141 @ifset ARM
142 * ARM::                         ld and the ARM family
143 @end ifset
144 @ifset HPPA
145 * HPPA ELF32::                  ld and HPPA 32-bit ELF
146 @end ifset
147 @ifset M68HC11
148 * M68HC11/68HC12::              ld and the Motorola 68HC11 and 68HC12 families
149 @end ifset
150 @ifset M68K
151 * M68K::                        ld and Motorola 68K family
152 @end ifset
153 @ifset POWERPC
154 * PowerPC ELF32::               ld and PowerPC 32-bit ELF Support
155 @end ifset
156 @ifset POWERPC64
157 * PowerPC64 ELF64::             ld and PowerPC64 64-bit ELF Support
158 @end ifset
159 @ifset SPU
160 * SPU ELF::                     ld and SPU ELF Support
161 @end ifset
162 @ifset TICOFF
163 * TI COFF::                     ld and the TI COFF
164 @end ifset
165 @ifset WIN32
166 * Win32::                       ld and WIN32 (cygwin/mingw)
167 @end ifset
168 @ifset XTENSA
169 * Xtensa::                      ld and Xtensa Processors
170 @end ifset
171 @end ifclear
172 @ifclear SingleFormat
173 * BFD::                         BFD
174 @end ifclear
175 @c Following blank line required for remaining bug in makeinfo conds/menus
176
177 * Reporting Bugs::              Reporting Bugs
178 * MRI::                         MRI Compatible Script Files
179 * GNU Free Documentation License::  GNU Free Documentation License
180 * LD Index::                       LD Index
181 @end menu
182 @end ifnottex
183
184 @node Overview
185 @chapter Overview
186
187 @cindex @sc{gnu} linker
188 @cindex what is this?
189
190 @ifset man
191 @c man begin SYNOPSIS
192 ld [@b{options}] @var{objfile} @dots{}
193 @c man end
194
195 @c man begin SEEALSO
196 ar(1), nm(1), objcopy(1), objdump(1), readelf(1) and
197 the Info entries for @file{binutils} and
198 @file{ld}.
199 @c man end
200 @end ifset
201
202 @c man begin DESCRIPTION
203
204 @command{ld} combines a number of object and archive files, relocates
205 their data and ties up symbol references. Usually the last step in
206 compiling a program is to run @command{ld}.
207
208 @command{ld} accepts Linker Command Language files written in
209 a superset of AT&T's Link Editor Command Language syntax,
210 to provide explicit and total control over the linking process.
211
212 @ifset man
213 @c For the man only
214 This man page does not describe the command language; see the
215 @command{ld} entry in @code{info} for full details on the command
216 language and on other aspects of the GNU linker.
217 @end ifset
218
219 @ifclear SingleFormat
220 This version of @command{ld} uses the general purpose BFD libraries
221 to operate on object files. This allows @command{ld} to read, combine, and
222 write object files in many different formats---for example, COFF or
223 @code{a.out}.  Different formats may be linked together to produce any
224 available kind of object file.  @xref{BFD}, for more information.
225 @end ifclear
226
227 Aside from its flexibility, the @sc{gnu} linker is more helpful than other
228 linkers in providing diagnostic information.  Many linkers abandon
229 execution immediately upon encountering an error; whenever possible,
230 @command{ld} continues executing, allowing you to identify other errors
231 (or, in some cases, to get an output file in spite of the error).
232
233 @c man end
234
235 @node Invocation
236 @chapter Invocation
237
238 @c man begin DESCRIPTION
239
240 The @sc{gnu} linker @command{ld} is meant to cover a broad range of situations,
241 and to be as compatible as possible with other linkers.  As a result,
242 you have many choices to control its behavior.
243
244 @c man end
245
246 @ifset UsesEnvVars
247 @menu
248 * Options::                     Command Line Options
249 * Environment::                 Environment Variables
250 @end menu
251
252 @node Options
253 @section Command Line Options
254 @end ifset
255
256 @cindex command line
257 @cindex options
258
259 @c man begin OPTIONS
260
261 The linker supports a plethora of command-line options, but in actual
262 practice few of them are used in any particular context.
263 @cindex standard Unix system
264 For instance, a frequent use of @command{ld} is to link standard Unix
265 object files on a standard, supported Unix system.  On such a system, to
266 link a file @code{hello.o}:
267
268 @smallexample
269 ld -o @var{output} /lib/crt0.o hello.o -lc
270 @end smallexample
271
272 This tells @command{ld} to produce a file called @var{output} as the
273 result of linking the file @code{/lib/crt0.o} with @code{hello.o} and
274 the library @code{libc.a}, which will come from the standard search
275 directories.  (See the discussion of the @samp{-l} option below.)
276
277 Some of the command-line options to @command{ld} may be specified at any
278 point in the command line.  However, options which refer to files, such
279 as @samp{-l} or @samp{-T}, cause the file to be read at the point at
280 which the option appears in the command line, relative to the object
281 files and other file options.  Repeating non-file options with a
282 different argument will either have no further effect, or override prior
283 occurrences (those further to the left on the command line) of that
284 option.  Options which may be meaningfully specified more than once are
285 noted in the descriptions below.
286
287 @cindex object files
288 Non-option arguments are object files or archives which are to be linked
289 together.  They may follow, precede, or be mixed in with command-line
290 options, except that an object file argument may not be placed between
291 an option and its argument.
292
293 Usually the linker is invoked with at least one object file, but you can
294 specify other forms of binary input files using @samp{-l}, @samp{-R},
295 and the script command language.  If @emph{no} binary input files at all
296 are specified, the linker does not produce any output, and issues the
297 message @samp{No input files}.
298
299 If the linker cannot recognize the format of an object file, it will
300 assume that it is a linker script.  A script specified in this way
301 augments the main linker script used for the link (either the default
302 linker script or the one specified by using @samp{-T}).  This feature
303 permits the linker to link against a file which appears to be an object
304 or an archive, but actually merely defines some symbol values, or uses
305 @code{INPUT} or @code{GROUP} to load other objects.  Specifying a
306 script in this way merely augments the main linker script, with the
307 extra commands placed after the main script; use the @samp{-T} option
308 to replace the default linker script entirely, but note the effect of
309 the @code{INSERT} command.  @xref{Scripts}.
310
311 For options whose names are a single letter,
312 option arguments must either follow the option letter without intervening
313 whitespace, or be given as separate arguments immediately following the
314 option that requires them.
315
316 For options whose names are multiple letters, either one dash or two can
317 precede the option name; for example, @samp{-trace-symbol} and
318 @samp{--trace-symbol} are equivalent.  Note---there is one exception to
319 this rule.  Multiple letter options that start with a lower case 'o' can
320 only be preceded by two dashes.  This is to reduce confusion with the
321 @samp{-o} option.  So for example @samp{-omagic} sets the output file
322 name to @samp{magic} whereas @samp{--omagic} sets the NMAGIC flag on the
323 output.
324
325 Arguments to multiple-letter options must either be separated from the
326 option name by an equals sign, or be given as separate arguments
327 immediately following the option that requires them.  For example,
328 @samp{--trace-symbol foo} and @samp{--trace-symbol=foo} are equivalent.
329 Unique abbreviations of the names of multiple-letter options are
330 accepted.
331
332 Note---if the linker is being invoked indirectly, via a compiler driver
333 (e.g. @samp{gcc}) then all the linker command line options should be
334 prefixed by @samp{-Wl,} (or whatever is appropriate for the particular
335 compiler driver) like this:
336
337 @smallexample
338   gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
339 @end smallexample
340
341 This is important, because otherwise the compiler driver program may
342 silently drop the linker options, resulting in a bad link.
343
344 Here is a table of the generic command line switches accepted by the GNU
345 linker:
346
347 @table @gcctabopt
348 @include at-file.texi
349
350 @kindex -a@var{keyword}
351 @item -a@var{keyword}
352 This option is supported for HP/UX compatibility.  The @var{keyword}
353 argument must be one of the strings @samp{archive}, @samp{shared}, or
354 @samp{default}.  @samp{-aarchive} is functionally equivalent to
355 @samp{-Bstatic}, and the other two keywords are functionally equivalent
356 to @samp{-Bdynamic}.  This option may be used any number of times.
357
358 @ifset I960
359 @cindex architectures
360 @kindex -A@var{arch}
361 @item -A@var{architecture}
362 @kindex --architecture=@var{arch}
363 @itemx --architecture=@var{architecture}
364 In the current release of @command{ld}, this option is useful only for the
365 Intel 960 family of architectures.  In that @command{ld} configuration, the
366 @var{architecture} argument identifies the particular architecture in
367 the 960 family, enabling some safeguards and modifying the
368 archive-library search path.  @xref{i960,,@command{ld} and the Intel 960
369 family}, for details.
370
371 Future releases of @command{ld} may support similar functionality for
372 other architecture families.
373 @end ifset
374
375 @ifclear SingleFormat
376 @cindex binary input format
377 @kindex -b @var{format}
378 @kindex --format=@var{format}
379 @cindex input format
380 @cindex input format
381 @item -b @var{input-format}
382 @itemx --format=@var{input-format}
383 @command{ld} may be configured to support more than one kind of object
384 file.  If your @command{ld} is configured this way, you can use the
385 @samp{-b} option to specify the binary format for input object files
386 that follow this option on the command line.  Even when @command{ld} is
387 configured to support alternative object formats, you don't usually need
388 to specify this, as @command{ld} should be configured to expect as a
389 default input format the most usual format on each machine.
390 @var{input-format} is a text string, the name of a particular format
391 supported by the BFD libraries.  (You can list the available binary
392 formats with @samp{objdump -i}.)
393 @xref{BFD}.
394
395 You may want to use this option if you are linking files with an unusual
396 binary format.  You can also use @samp{-b} to switch formats explicitly (when
397 linking object files of different formats), by including
398 @samp{-b @var{input-format}} before each group of object files in a
399 particular format.
400
401 The default format is taken from the environment variable
402 @code{GNUTARGET}.
403 @ifset UsesEnvVars
404 @xref{Environment}.
405 @end ifset
406 You can also define the input format from a script, using the command
407 @code{TARGET};
408 @ifclear man
409 see @ref{Format Commands}.
410 @end ifclear
411 @end ifclear
412
413 @kindex -c @var{MRI-cmdfile}
414 @kindex --mri-script=@var{MRI-cmdfile}
415 @cindex compatibility, MRI
416 @item -c @var{MRI-commandfile}
417 @itemx --mri-script=@var{MRI-commandfile}
418 For compatibility with linkers produced by MRI, @command{ld} accepts script
419 files written in an alternate, restricted command language, described in
420 @ifclear man
421 @ref{MRI,,MRI Compatible Script Files}.
422 @end ifclear
423 @ifset man
424 the MRI Compatible Script Files section of GNU ld documentation.
425 @end ifset
426 Introduce MRI script files with
427 the option @samp{-c}; use the @samp{-T} option to run linker
428 scripts written in the general-purpose @command{ld} scripting language.
429 If @var{MRI-cmdfile} does not exist, @command{ld} looks for it in the directories
430 specified by any @samp{-L} options.
431
432 @cindex common allocation
433 @kindex -d
434 @kindex -dc
435 @kindex -dp
436 @item -d
437 @itemx -dc
438 @itemx -dp
439 These three options are equivalent; multiple forms are supported for
440 compatibility with other linkers.  They assign space to common symbols
441 even if a relocatable output file is specified (with @samp{-r}).  The
442 script command @code{FORCE_COMMON_ALLOCATION} has the same effect.
443 @xref{Miscellaneous Commands}.
444
445 @cindex entry point, from command line
446 @kindex -e @var{entry}
447 @kindex --entry=@var{entry}
448 @item -e @var{entry}
449 @itemx --entry=@var{entry}
450 Use @var{entry} as the explicit symbol for beginning execution of your
451 program, rather than the default entry point.  If there is no symbol
452 named @var{entry}, the linker will try to parse @var{entry} as a number,
453 and use that as the entry address (the number will be interpreted in
454 base 10; you may use a leading @samp{0x} for base 16, or a leading
455 @samp{0} for base 8).  @xref{Entry Point}, for a discussion of defaults
456 and other ways of specifying the entry point.
457
458 @kindex --exclude-libs
459 @item --exclude-libs @var{lib},@var{lib},...
460 Specifies a list of archive libraries from which symbols should not be automatically
461 exported.  The library names may be delimited by commas or colons.  Specifying
462 @code{--exclude-libs ALL} excludes symbols in all archive libraries from
463 automatic export.  This option is available only for the i386 PE targeted
464 port of the linker and for ELF targeted ports.  For i386 PE, symbols
465 explicitly listed in a .def file are still exported, regardless of this
466 option.  For ELF targeted ports, symbols affected by this option will
467 be treated as hidden.
468
469 @kindex --exclude-modules-for-implib
470 @item --exclude-modules-for-implib @var{module},@var{module},...
471 Specifies a list of object files or archive members, from which symbols
472 should not be automatically exported, but which should be copied wholesale
473 into the import library being generated during the link.  The module names
474 may be delimited by commas or colons, and must match exactly the filenames
475 used by @command{ld} to open the files; for archive members, this is simply
476 the member name, but for object files the name listed must include and
477 match precisely any path used to specify the input file on the linker's
478 command-line.  This option is available only for the i386 PE targeted port
479 of the linker.  Symbols explicitly listed in a .def file are still exported,
480 regardless of this option.
481
482 @cindex dynamic symbol table
483 @kindex -E
484 @kindex --export-dynamic
485 @item -E
486 @itemx --export-dynamic
487 When creating a dynamically linked executable, add all symbols to the
488 dynamic symbol table.  The dynamic symbol table is the set of symbols
489 which are visible from dynamic objects at run time.
490
491 If you do not use this option, the dynamic symbol table will normally
492 contain only those symbols which are referenced by some dynamic object
493 mentioned in the link.
494
495 If you use @code{dlopen} to load a dynamic object which needs to refer
496 back to the symbols defined by the program, rather than some other
497 dynamic object, then you will probably need to use this option when
498 linking the program itself.
499
500 You can also use the dynamic list to control what symbols should
501 be added to the dynamic symbol table if the output format supports it.
502 See the description of @samp{--dynamic-list}.
503
504 @ifclear SingleFormat
505 @cindex big-endian objects
506 @cindex endianness
507 @kindex -EB
508 @item -EB
509 Link big-endian objects.  This affects the default output format.
510
511 @cindex little-endian objects
512 @kindex -EL
513 @item -EL
514 Link little-endian objects.  This affects the default output format.
515 @end ifclear
516
517 @kindex -f
518 @kindex --auxiliary
519 @item -f
520 @itemx --auxiliary @var{name}
521 When creating an ELF shared object, set the internal DT_AUXILIARY field
522 to the specified name.  This tells the dynamic linker that the symbol
523 table of the shared object should be used as an auxiliary filter on the
524 symbol table of the shared object @var{name}.
525
526 If you later link a program against this filter object, then, when you
527 run the program, the dynamic linker will see the DT_AUXILIARY field.  If
528 the dynamic linker resolves any symbols from the filter object, it will
529 first check whether there is a definition in the shared object
530 @var{name}.  If there is one, it will be used instead of the definition
531 in the filter object.  The shared object @var{name} need not exist.
532 Thus the shared object @var{name} may be used to provide an alternative
533 implementation of certain functions, perhaps for debugging or for
534 machine specific performance.
535
536 This option may be specified more than once.  The DT_AUXILIARY entries
537 will be created in the order in which they appear on the command line.
538
539 @kindex -F
540 @kindex --filter
541 @item -F @var{name}
542 @itemx --filter @var{name}
543 When creating an ELF shared object, set the internal DT_FILTER field to
544 the specified name.  This tells the dynamic linker that the symbol table
545 of the shared object which is being created should be used as a filter
546 on the symbol table of the shared object @var{name}.
547
548 If you later link a program against this filter object, then, when you
549 run the program, the dynamic linker will see the DT_FILTER field.  The
550 dynamic linker will resolve symbols according to the symbol table of the
551 filter object as usual, but it will actually link to the definitions
552 found in the shared object @var{name}.  Thus the filter object can be
553 used to select a subset of the symbols provided by the object
554 @var{name}.
555
556 Some older linkers used the @option{-F} option throughout a compilation
557 toolchain for specifying object-file format for both input and output
558 object files.
559 @ifclear SingleFormat
560 The @sc{gnu} linker uses other mechanisms for this purpose: the
561 @option{-b}, @option{--format}, @option{--oformat} options, the
562 @code{TARGET} command in linker scripts, and the @code{GNUTARGET}
563 environment variable.
564 @end ifclear
565 The @sc{gnu} linker will ignore the @option{-F} option when not
566 creating an ELF shared object.
567
568 @cindex finalization function
569 @kindex -fini
570 @item -fini @var{name}
571 When creating an ELF executable or shared object, call NAME when the
572 executable or shared object is unloaded, by setting DT_FINI to the
573 address of the function.  By default, the linker uses @code{_fini} as
574 the function to call.
575
576 @kindex -g
577 @item -g
578 Ignored.  Provided for compatibility with other tools.
579
580 @kindex -G
581 @kindex --gpsize
582 @cindex object size
583 @item -G@var{value}
584 @itemx --gpsize=@var{value}
585 Set the maximum size of objects to be optimized using the GP register to
586 @var{size}.  This is only meaningful for object file formats such as
587 MIPS ECOFF which supports putting large and small objects into different
588 sections.  This is ignored for other object file formats.
589
590 @cindex runtime library name
591 @kindex -h@var{name}
592 @kindex -soname=@var{name}
593 @item -h@var{name}
594 @itemx -soname=@var{name}
595 When creating an ELF shared object, set the internal DT_SONAME field to
596 the specified name.  When an executable is linked with a shared object
597 which has a DT_SONAME field, then when the executable is run the dynamic
598 linker will attempt to load the shared object specified by the DT_SONAME
599 field rather than the using the file name given to the linker.
600
601 @kindex -i
602 @cindex incremental link
603 @item -i
604 Perform an incremental link (same as option @samp{-r}).
605
606 @cindex initialization function
607 @kindex -init
608 @item -init @var{name}
609 When creating an ELF executable or shared object, call NAME when the
610 executable or shared object is loaded, by setting DT_INIT to the address
611 of the function.  By default, the linker uses @code{_init} as the
612 function to call.
613
614 @cindex archive files, from cmd line
615 @kindex -l@var{namespec}
616 @kindex --library=@var{namespec}
617 @item -l@var{namespec}
618 @itemx --library=@var{namespec}
619 Add the archive or object file specified by @var{namespec} to the
620 list of files to link.  This option may be used any number of times.
621 If @var{namespec} is of the form @file{:@var{filename}}, @command{ld}
622 will search the library path for a file called @var{filename}, otherise it
623 will search the library path for a file called @file{lib@var{namespec}.a}.
624
625 On systems which support shared libraries, @command{ld} may also search for
626 files other than @file{lib@var{namespec}.a}.  Specifically, on ELF
627 and SunOS systems, @command{ld} will search a directory for a library
628 called @file{lib@var{namespec}.so} before searching for one called
629 @file{lib@var{namespec}.a}.  (By convention, a @code{.so} extension
630 indicates a shared library.)  Note that this behavior does not apply
631 to @file{:@var{filename}}, which always specifies a file called
632 @var{filename}.
633
634 The linker will search an archive only once, at the location where it is
635 specified on the command line.  If the archive defines a symbol which
636 was undefined in some object which appeared before the archive on the
637 command line, the linker will include the appropriate file(s) from the
638 archive.  However, an undefined symbol in an object appearing later on
639 the command line will not cause the linker to search the archive again.
640
641 See the @option{-(} option for a way to force the linker to search
642 archives multiple times.
643
644 You may list the same archive multiple times on the command line.
645
646 @ifset GENERIC
647 This type of archive searching is standard for Unix linkers.  However,
648 if you are using @command{ld} on AIX, note that it is different from the
649 behaviour of the AIX linker.
650 @end ifset
651
652 @cindex search directory, from cmd line
653 @kindex -L@var{dir}
654 @kindex --library-path=@var{dir}
655 @item -L@var{searchdir}
656 @itemx --library-path=@var{searchdir}
657 Add path @var{searchdir} to the list of paths that @command{ld} will search
658 for archive libraries and @command{ld} control scripts.  You may use this
659 option any number of times.  The directories are searched in the order
660 in which they are specified on the command line.  Directories specified
661 on the command line are searched before the default directories.  All
662 @option{-L} options apply to all @option{-l} options, regardless of the
663 order in which the options appear.
664
665 If @var{searchdir} begins with @code{=}, then the @code{=} will be replaced
666 by the @dfn{sysroot prefix}, a path specified when the linker is configured.
667
668 @ifset UsesEnvVars
669 The default set of paths searched (without being specified with
670 @samp{-L}) depends on which emulation mode @command{ld} is using, and in
671 some cases also on how it was configured.  @xref{Environment}.
672 @end ifset
673
674 The paths can also be specified in a link script with the
675 @code{SEARCH_DIR} command.  Directories specified this way are searched
676 at the point in which the linker script appears in the command line.
677
678 @cindex emulation
679 @kindex -m @var{emulation}
680 @item -m@var{emulation}
681 Emulate the @var{emulation} linker.  You can list the available
682 emulations with the @samp{--verbose} or @samp{-V} options.
683
684 If the @samp{-m} option is not used, the emulation is taken from the
685 @code{LDEMULATION} environment variable, if that is defined.
686
687 Otherwise, the default emulation depends upon how the linker was
688 configured.
689
690 @cindex link map
691 @kindex -M
692 @kindex --print-map
693 @item -M
694 @itemx --print-map
695 Print a link map to the standard output.  A link map provides
696 information about the link, including the following:
697
698 @itemize @bullet
699 @item
700 Where object files are mapped into memory.
701 @item
702 How common symbols are allocated.
703 @item
704 All archive members included in the link, with a mention of the symbol
705 which caused the archive member to be brought in.
706 @item
707 The values assigned to symbols.
708
709 Note - symbols whose values are computed by an expression which
710 involves a reference to a previous value of the same symbol may not
711 have correct result displayed in the link map.  This is because the
712 linker discards intermediate results and only retains the final value
713 of an expression.  Under such circumstances the linker will display
714 the final value enclosed by square brackets.  Thus for example a
715 linker script containing:
716
717 @smallexample
718    foo = 1
719    foo = foo * 4
720    foo = foo + 8
721 @end smallexample
722
723 will produce the following output in the link map if the @option{-M}
724 option is used:
725
726 @smallexample
727    0x00000001                foo = 0x1
728    [0x0000000c]                foo = (foo * 0x4)
729    [0x0000000c]                foo = (foo + 0x8)
730 @end smallexample
731
732 See @ref{Expressions} for more information about expressions in linker
733 scripts.
734 @end itemize
735
736 @kindex -n
737 @cindex read-only text
738 @cindex NMAGIC
739 @kindex --nmagic
740 @item -n
741 @itemx --nmagic
742 Turn off page alignment of sections, and mark the output as
743 @code{NMAGIC} if possible.
744
745 @kindex -N
746 @kindex --omagic
747 @cindex read/write from cmd line
748 @cindex OMAGIC
749 @item -N
750 @itemx --omagic
751 Set the text and data sections to be readable and writable.  Also, do
752 not page-align the data segment, and disable linking against shared
753 libraries.  If the output format supports Unix style magic numbers,
754 mark the output as @code{OMAGIC}. Note: Although a writable text section
755 is allowed for PE-COFF targets, it does not conform to the format
756 specification published by Microsoft.
757
758 @kindex --no-omagic
759 @cindex OMAGIC
760 @item --no-omagic
761 This option negates most of the effects of the @option{-N} option.  It
762 sets the text section to be read-only, and forces the data segment to
763 be page-aligned.  Note - this option does not enable linking against
764 shared libraries.  Use @option{-Bdynamic} for this.
765
766 @kindex -o @var{output}
767 @kindex --output=@var{output}
768 @cindex naming the output file
769 @item -o @var{output}
770 @itemx --output=@var{output}
771 Use @var{output} as the name for the program produced by @command{ld}; if this
772 option is not specified, the name @file{a.out} is used by default.  The
773 script command @code{OUTPUT} can also specify the output file name.
774
775 @kindex -O @var{level}
776 @cindex generating optimized output
777 @item -O @var{level}
778 If @var{level} is a numeric values greater than zero @command{ld} optimizes
779 the output.  This might take significantly longer and therefore probably
780 should only be enabled for the final binary.  At the moment this
781 option only affects ELF shared library generation.  Future releases of
782 the linker may make more use of this option.  Also currently there is
783 no difference in the linker's behaviour for different non-zero values
784 of this option.  Again this may change with future releases.
785
786 @kindex -q
787 @kindex --emit-relocs
788 @cindex retain relocations in final executable
789 @item -q
790 @itemx --emit-relocs
791 Leave relocation sections and contents in fully linked executables.
792 Post link analysis and optimization tools may need this information in
793 order to perform correct modifications of executables.  This results
794 in larger executables.
795
796 This option is currently only supported on ELF platforms.
797
798 @kindex --force-dynamic
799 @cindex forcing the creation of dynamic sections
800 @item --force-dynamic
801 Force the output file to have dynamic sections.  This option is specific
802 to VxWorks targets.
803
804 @cindex partial link
805 @cindex relocatable output
806 @kindex -r
807 @kindex --relocatable
808 @item -r
809 @itemx --relocatable
810 Generate relocatable output---i.e., generate an output file that can in
811 turn serve as input to @command{ld}.  This is often called @dfn{partial
812 linking}.  As a side effect, in environments that support standard Unix
813 magic numbers, this option also sets the output file's magic number to
814 @code{OMAGIC}.
815 @c ; see @option{-N}.
816 If this option is not specified, an absolute file is produced.  When
817 linking C++ programs, this option @emph{will not} resolve references to
818 constructors; to do that, use @samp{-Ur}.
819
820 When an input file does not have the same format as the output file,
821 partial linking is only supported if that input file does not contain any
822 relocations.  Different output formats can have further restrictions; for
823 example some @code{a.out}-based formats do not support partial linking
824 with input files in other formats at all.
825
826 This option does the same thing as @samp{-i}.
827
828 @kindex -R @var{file}
829 @kindex --just-symbols=@var{file}
830 @cindex symbol-only input
831 @item -R @var{filename}
832 @itemx --just-symbols=@var{filename}
833 Read symbol names and their addresses from @var{filename}, but do not
834 relocate it or include it in the output.  This allows your output file
835 to refer symbolically to absolute locations of memory defined in other
836 programs.  You may use this option more than once.
837
838 For compatibility with other ELF linkers, if the @option{-R} option is
839 followed by a directory name, rather than a file name, it is treated as
840 the @option{-rpath} option.
841
842 @kindex -s
843 @kindex --strip-all
844 @cindex strip all symbols
845 @item -s
846 @itemx --strip-all
847 Omit all symbol information from the output file.
848
849 @kindex -S
850 @kindex --strip-debug
851 @cindex strip debugger symbols
852 @item -S
853 @itemx --strip-debug
854 Omit debugger symbol information (but not all symbols) from the output file.
855
856 @kindex -t
857 @kindex --trace
858 @cindex input files, displaying
859 @item -t
860 @itemx --trace
861 Print the names of the input files as @command{ld} processes them.
862
863 @kindex -T @var{script}
864 @kindex --script=@var{script}
865 @cindex script files
866 @item -T @var{scriptfile}
867 @itemx --script=@var{scriptfile}
868 Use @var{scriptfile} as the linker script.  This script replaces
869 @command{ld}'s default linker script (rather than adding to it), so
870 @var{commandfile} must specify everything necessary to describe the
871 output file.  @xref{Scripts}.  If @var{scriptfile} does not exist in
872 the current directory, @code{ld} looks for it in the directories
873 specified by any preceding @samp{-L} options.  Multiple @samp{-T}
874 options accumulate.
875
876 @kindex -dT @var{script}
877 @kindex --default-script=@var{script}
878 @cindex script files
879 @item -dT @var{scriptfile}
880 @itemx --default-script=@var{scriptfile}
881 Use @var{scriptfile} as the default linker script.  @xref{Scripts}.
882
883 This option is similar to the @option{--script} option except that
884 processing of the script is delayed until after the rest of the
885 command line has been processed.  This allows options placed after the
886 @option{--default-script} option on the command line to affect the
887 behaviour of the linker script, which can be important when the linker
888 command line cannot be directly controlled by the user.  (eg because
889 the command line is being constructed by another tool, such as
890 @samp{gcc}).
891
892 @kindex -u @var{symbol}
893 @kindex --undefined=@var{symbol}
894 @cindex undefined symbol
895 @item -u @var{symbol}
896 @itemx --undefined=@var{symbol}
897 Force @var{symbol} to be entered in the output file as an undefined
898 symbol.  Doing this may, for example, trigger linking of additional
899 modules from standard libraries.  @samp{-u} may be repeated with
900 different option arguments to enter additional undefined symbols.  This
901 option is equivalent to the @code{EXTERN} linker script command.
902
903 @kindex -Ur
904 @cindex constructors
905 @item -Ur
906 For anything other than C++ programs, this option is equivalent to
907 @samp{-r}: it generates relocatable output---i.e., an output file that can in
908 turn serve as input to @command{ld}.  When linking C++ programs, @samp{-Ur}
909 @emph{does} resolve references to constructors, unlike @samp{-r}.
910 It does not work to use @samp{-Ur} on files that were themselves linked
911 with @samp{-Ur}; once the constructor table has been built, it cannot
912 be added to.  Use @samp{-Ur} only for the last partial link, and
913 @samp{-r} for the others.
914
915 @kindex --unique[=@var{SECTION}]
916 @item --unique[=@var{SECTION}]
917 Creates a separate output section for every input section matching
918 @var{SECTION}, or if the optional wildcard @var{SECTION} argument is
919 missing, for every orphan input section.  An orphan section is one not
920 specifically mentioned in a linker script.  You may use this option
921 multiple times on the command line;  It prevents the normal merging of
922 input sections with the same name, overriding output section assignments
923 in a linker script.
924
925 @kindex -v
926 @kindex -V
927 @kindex --version
928 @cindex version
929 @item -v
930 @itemx --version
931 @itemx -V
932 Display the version number for @command{ld}.  The @option{-V} option also
933 lists the supported emulations.
934
935 @kindex -x
936 @kindex --discard-all
937 @cindex deleting local symbols
938 @item -x
939 @itemx --discard-all
940 Delete all local symbols.
941
942 @kindex -X
943 @kindex --discard-locals
944 @cindex local symbols, deleting
945 @item -X
946 @itemx --discard-locals
947 Delete all temporary local symbols.  (These symbols start with
948 system-specific local label prefixes, typically @samp{.L} for ELF systems
949 or @samp{L} for traditional a.out systems.)
950
951 @kindex -y @var{symbol}
952 @kindex --trace-symbol=@var{symbol}
953 @cindex symbol tracing
954 @item -y @var{symbol}
955 @itemx --trace-symbol=@var{symbol}
956 Print the name of each linked file in which @var{symbol} appears.  This
957 option may be given any number of times.  On many systems it is necessary
958 to prepend an underscore.
959
960 This option is useful when you have an undefined symbol in your link but
961 don't know where the reference is coming from.
962
963 @kindex -Y @var{path}
964 @item -Y @var{path}
965 Add @var{path} to the default library search path.  This option exists
966 for Solaris compatibility.
967
968 @kindex -z @var{keyword}
969 @item -z @var{keyword}
970 The recognized keywords are:
971 @table @samp
972
973 @item combreloc
974 Combines multiple reloc sections and sorts them to make dynamic symbol
975 lookup caching possible.
976
977 @item defs
978 Disallows undefined symbols in object files.  Undefined symbols in
979 shared libraries are still allowed.
980
981 @item execstack
982 Marks the object as requiring executable stack.
983
984 @item initfirst
985 This option is only meaningful when building a shared object.
986 It marks the object so that its runtime initialization will occur
987 before the runtime initialization of any other objects brought into
988 the process at the same time.  Similarly the runtime finalization of
989 the object will occur after the runtime finalization of any other
990 objects.
991
992 @item interpose
993 Marks the object that its symbol table interposes before all symbols
994 but the primary executable.
995
996 @item lazy
997 When generating an executable or shared library, mark it to tell the
998 dynamic linker to defer function call resolution to the point when
999 the function is called (lazy binding), rather than at load time.
1000 Lazy binding is the default.
1001
1002 @item loadfltr
1003 Marks  the object that its filters be processed immediately at
1004 runtime.
1005
1006 @item muldefs
1007 Allows multiple definitions.
1008
1009 @item nocombreloc
1010 Disables multiple reloc sections combining.
1011
1012 @item nocopyreloc
1013 Disables production of copy relocs.
1014
1015 @item nodefaultlib
1016 Marks the object that the search for dependencies of this object will
1017 ignore any default library search paths.
1018
1019 @item nodelete
1020 Marks the object shouldn't be unloaded at runtime.
1021
1022 @item nodlopen
1023 Marks the object not available to @code{dlopen}.
1024
1025 @item nodump
1026 Marks the object can not be dumped by @code{dldump}.
1027
1028 @item noexecstack
1029 Marks the object as not requiring executable stack.
1030
1031 @item norelro
1032 Don't create an ELF @code{PT_GNU_RELRO} segment header in the object.
1033
1034 @item now
1035 When generating an executable or shared library, mark it to tell the
1036 dynamic linker to resolve all symbols when the program is started, or
1037 when the shared library is linked to using dlopen, instead of
1038 deferring function call resolution to the point when the function is
1039 first called.
1040
1041 @item origin
1042 Marks the object may contain $ORIGIN.
1043
1044 @item relro
1045 Create an ELF @code{PT_GNU_RELRO} segment header in the object.
1046
1047 @item max-page-size=@var{value}
1048 Set the emulation maximum page size to @var{value}.
1049
1050 @item common-page-size=@var{value}
1051 Set the emulation common page size to @var{value}.
1052
1053 @end table
1054
1055 Other keywords are ignored for Solaris compatibility.
1056
1057 @kindex -(
1058 @cindex groups of archives
1059 @item -( @var{archives} -)
1060 @itemx --start-group @var{archives} --end-group
1061 The @var{archives} should be a list of archive files.  They may be
1062 either explicit file names, or @samp{-l} options.
1063
1064 The specified archives are searched repeatedly until no new undefined
1065 references are created.  Normally, an archive is searched only once in
1066 the order that it is specified on the command line.  If a symbol in that
1067 archive is needed to resolve an undefined symbol referred to by an
1068 object in an archive that appears later on the command line, the linker
1069 would not be able to resolve that reference.  By grouping the archives,
1070 they all be searched repeatedly until all possible references are
1071 resolved.
1072
1073 Using this option has a significant performance cost.  It is best to use
1074 it only when there are unavoidable circular references between two or
1075 more archives.
1076
1077 @kindex --accept-unknown-input-arch
1078 @kindex --no-accept-unknown-input-arch
1079 @item --accept-unknown-input-arch
1080 @itemx --no-accept-unknown-input-arch
1081 Tells the linker to accept input files whose architecture cannot be
1082 recognised.  The assumption is that the user knows what they are doing
1083 and deliberately wants to link in these unknown input files.  This was
1084 the default behaviour of the linker, before release 2.14.  The default
1085 behaviour from release 2.14 onwards is to reject such input files, and
1086 so the @samp{--accept-unknown-input-arch} option has been added to
1087 restore the old behaviour.
1088
1089 @kindex --as-needed
1090 @kindex --no-as-needed
1091 @item --as-needed
1092 @itemx --no-as-needed
1093 This option affects ELF DT_NEEDED tags for dynamic libraries mentioned
1094 on the command line after the @option{--as-needed} option.  Normally,
1095 the linker will add a DT_NEEDED tag for each dynamic library mentioned
1096 on the command line, regardless of whether the library is actually
1097 needed.  @option{--as-needed} causes a DT_NEEDED tag to only be emitted
1098 for a library that satisfies a symbol reference from regular objects
1099 which is undefined at the point that the library was linked, or, if
1100 the library is not found in the DT_NEEDED lists of other libraries
1101 linked up to that point, a reference from another dynamic library.
1102 @option{--no-as-needed} restores the default behaviour.
1103
1104 @kindex --add-needed
1105 @kindex --no-add-needed
1106 @item --add-needed
1107 @itemx --no-add-needed
1108 This option affects the treatment of dynamic libraries from ELF
1109 DT_NEEDED tags in dynamic libraries mentioned on the command line after
1110 the @option{--no-add-needed} option.  Normally, the linker will add
1111 a DT_NEEDED tag for each dynamic library from DT_NEEDED tags.
1112 @option{--no-add-needed} causes DT_NEEDED tags will never be emitted
1113 for those libraries from DT_NEEDED tags. @option{--add-needed} restores
1114 the default behaviour.
1115
1116 @kindex -assert @var{keyword}
1117 @item -assert @var{keyword}
1118 This option is ignored for SunOS compatibility.
1119
1120 @kindex -Bdynamic
1121 @kindex -dy
1122 @kindex -call_shared
1123 @item -Bdynamic
1124 @itemx -dy
1125 @itemx -call_shared
1126 Link against dynamic libraries.  This is only meaningful on platforms
1127 for which shared libraries are supported.  This option is normally the
1128 default on such platforms.  The different variants of this option are
1129 for compatibility with various systems.  You may use this option
1130 multiple times on the command line: it affects library searching for
1131 @option{-l} options which follow it.
1132
1133 @kindex -Bgroup
1134 @item -Bgroup
1135 Set the @code{DF_1_GROUP} flag in the @code{DT_FLAGS_1} entry in the dynamic
1136 section.  This causes the runtime linker to handle lookups in this
1137 object and its dependencies to be performed only inside the group.
1138 @option{--unresolved-symbols=report-all} is implied.  This option is
1139 only meaningful on ELF platforms which support shared libraries.
1140
1141 @kindex -Bstatic
1142 @kindex -dn
1143 @kindex -non_shared
1144 @kindex -static
1145 @item -Bstatic
1146 @itemx -dn
1147 @itemx -non_shared
1148 @itemx -static
1149 Do not link against shared libraries.  This is only meaningful on
1150 platforms for which shared libraries are supported.  The different
1151 variants of this option are for compatibility with various systems.  You
1152 may use this option multiple times on the command line: it affects
1153 library searching for @option{-l} options which follow it.  This
1154 option also implies @option{--unresolved-symbols=report-all}.  This
1155 option can be used with @option{-shared}.  Doing so means that a
1156 shared library is being created but that all of the library's external
1157 references must be resolved by pulling in entries from static
1158 libraries.
1159
1160 @kindex -Bsymbolic
1161 @item -Bsymbolic
1162 When creating a shared library, bind references to global symbols to the
1163 definition within the shared library, if any.  Normally, it is possible
1164 for a program linked against a shared library to override the definition
1165 within the shared library.  This option is only meaningful on ELF
1166 platforms which support shared libraries.
1167
1168 @kindex -Bsymbolic-functions
1169 @item -Bsymbolic-functions
1170 When creating a shared library, bind references to global function
1171 symbols to the definition within the shared library, if any.
1172 This option is only meaningful on ELF platforms which support shared
1173 libraries.
1174
1175 @kindex --dynamic-list=@var{dynamic-list-file}
1176 @item --dynamic-list=@var{dynamic-list-file}
1177 Specify the name of a dynamic list file to the linker.  This is
1178 typically used when creating shared libraries to specify a list of
1179 global symbols whose references shouldn't be bound to the definition
1180 within the shared library, or creating dynamically linked executables
1181 to specify a list of symbols which should be added to the symbol table
1182 in the executable.  This option is only meaningful on ELF platforms
1183 which support shared libraries.
1184
1185 The format of the dynamic list is the same as the version node without
1186 scope and node name.  See @ref{VERSION} for more information.
1187
1188 @kindex --dynamic-list-data
1189 @item --dynamic-list-data
1190 Include all global data symbols to the dynamic list.
1191
1192 @kindex --dynamic-list-cpp-new
1193 @item --dynamic-list-cpp-new
1194 Provide the builtin dynamic list for C++ operator new and delete.  It
1195 is mainly useful for building shared libstdc++.
1196
1197 @kindex --dynamic-list-cpp-typeinfo
1198 @item --dynamic-list-cpp-typeinfo
1199 Provide the builtin dynamic list for C++ runtime type identification.
1200
1201 @kindex --check-sections
1202 @kindex --no-check-sections
1203 @item --check-sections
1204 @itemx --no-check-sections
1205 Asks the linker @emph{not} to check section addresses after they have
1206 been assigned to see if there are any overlaps.  Normally the linker will
1207 perform this check, and if it finds any overlaps it will produce
1208 suitable error messages.  The linker does know about, and does make
1209 allowances for sections in overlays.  The default behaviour can be
1210 restored by using the command line switch @option{--check-sections}.
1211 Section overlap is not usually checked for relocatable links.  You can
1212 force checking in that case by using the @option{--check-sections}
1213 option.
1214
1215 @cindex cross reference table
1216 @kindex --cref
1217 @item --cref
1218 Output a cross reference table.  If a linker map file is being
1219 generated, the cross reference table is printed to the map file.
1220 Otherwise, it is printed on the standard output.
1221
1222 The format of the table is intentionally simple, so that it may be
1223 easily processed by a script if necessary.  The symbols are printed out,
1224 sorted by name.  For each symbol, a list of file names is given.  If the
1225 symbol is defined, the first file listed is the location of the
1226 definition.  The remaining files contain references to the symbol.
1227
1228 @cindex common allocation
1229 @kindex --no-define-common
1230 @item --no-define-common
1231 This option inhibits the assignment of addresses to common symbols.
1232 The script command @code{INHIBIT_COMMON_ALLOCATION} has the same effect.
1233 @xref{Miscellaneous Commands}.
1234
1235 The @samp{--no-define-common} option allows decoupling
1236 the decision to assign addresses to Common symbols from the choice
1237 of the output file type; otherwise a non-Relocatable output type
1238 forces assigning addresses to Common symbols.
1239 Using @samp{--no-define-common} allows Common symbols that are referenced
1240 from a shared library to be assigned addresses only in the main program.
1241 This eliminates the unused duplicate space in the shared library,
1242 and also prevents any possible confusion over resolving to the wrong
1243 duplicate when there are many dynamic modules with specialized search
1244 paths for runtime symbol resolution.
1245
1246 @cindex symbols, from command line
1247 @kindex --defsym @var{symbol}=@var{exp}
1248 @item --defsym @var{symbol}=@var{expression}
1249 Create a global symbol in the output file, containing the absolute
1250 address given by @var{expression}.  You may use this option as many
1251 times as necessary to define multiple symbols in the command line.  A
1252 limited form of arithmetic is supported for the @var{expression} in this
1253 context: you may give a hexadecimal constant or the name of an existing
1254 symbol, or use @code{+} and @code{-} to add or subtract hexadecimal
1255 constants or symbols.  If you need more elaborate expressions, consider
1256 using the linker command language from a script (@pxref{Assignments,,
1257 Assignment: Symbol Definitions}).  @emph{Note:} there should be no white
1258 space between @var{symbol}, the equals sign (``@key{=}''), and
1259 @var{expression}.
1260
1261 @cindex demangling, from command line
1262 @kindex --demangle[=@var{style}]
1263 @kindex --no-demangle
1264 @item --demangle[=@var{style}]
1265 @itemx --no-demangle
1266 These options control whether to demangle symbol names in error messages
1267 and other output.  When the linker is told to demangle, it tries to
1268 present symbol names in a readable fashion: it strips leading
1269 underscores if they are used by the object file format, and converts C++
1270 mangled symbol names into user readable names.  Different compilers have
1271 different mangling styles.  The optional demangling style argument can be used
1272 to choose an appropriate demangling style for your compiler.  The linker will
1273 demangle by default unless the environment variable @samp{COLLECT_NO_DEMANGLE}
1274 is set.  These options may be used to override the default.
1275
1276 @cindex dynamic linker, from command line
1277 @kindex -I@var{file}
1278 @kindex --dynamic-linker @var{file}
1279 @item --dynamic-linker @var{file}
1280 Set the name of the dynamic linker.  This is only meaningful when
1281 generating dynamically linked ELF executables.  The default dynamic
1282 linker is normally correct; don't use this unless you know what you are
1283 doing.
1284
1285 @kindex --fatal-warnings
1286 @kindex --no-fatal-warnings
1287 @item --fatal-warnings
1288 @itemx --no-fatal-warnings
1289 Treat all warnings as errors.  The default behaviour can be restored
1290 with the option @option{--no-fatal-warnings}.
1291
1292 @kindex --force-exe-suffix
1293 @item  --force-exe-suffix
1294 Make sure that an output file has a .exe suffix.
1295
1296 If a successfully built fully linked output file does not have a
1297 @code{.exe} or @code{.dll} suffix, this option forces the linker to copy
1298 the output file to one of the same name with a @code{.exe} suffix. This
1299 option is useful when using unmodified Unix makefiles on a Microsoft
1300 Windows host, since some versions of Windows won't run an image unless
1301 it ends in a @code{.exe} suffix.
1302
1303 @kindex --gc-sections
1304 @kindex --no-gc-sections
1305 @cindex garbage collection
1306 @item --gc-sections
1307 @itemx --no-gc-sections
1308 Enable garbage collection of unused input sections.  It is ignored on
1309 targets that do not support this option.  The default behaviour (of not
1310 performing this garbage collection) can be restored by specifying
1311 @samp{--no-gc-sections} on the command line.
1312
1313 @samp{--gc-sections} decides which input sections are used by
1314 examining symbols and relocations.  The section containing the entry
1315 symbol and all sections containing symbols undefined on the
1316 command-line will be kept, as will sections containing symbols
1317 referenced by dynamic objects.  Note that when building shared
1318 libraries, the linker must assume that any visible symbol is
1319 referenced.  Once this initial set of sections has been determined,
1320 the linker recursively marks as used any section referenced by their
1321 relocations.  See @samp{--entry} and @samp{--undefined}.
1322
1323 This option can be set when doing a partial link (enabled with option
1324 @samp{-r}).  In this case the root of symbols kept must be explicitely 
1325 specified either by an @samp{--entry} or @samp{--undefined} option or by
1326 a @code{ENTRY} command in the linker script.
1327
1328 @kindex --print-gc-sections
1329 @kindex --no-print-gc-sections
1330 @cindex garbage collection
1331 @item --print-gc-sections
1332 @itemx --no-print-gc-sections
1333 List all sections removed by garbage collection.  The listing is
1334 printed on stderr.  This option is only effective if garbage
1335 collection has been enabled via the @samp{--gc-sections}) option.  The
1336 default behaviour (of not listing the sections that are removed) can
1337 be restored by specifying @samp{--no-print-gc-sections} on the command
1338 line.
1339
1340 @cindex help
1341 @cindex usage
1342 @kindex --help
1343 @item --help
1344 Print a summary of the command-line options on the standard output and exit.
1345
1346 @kindex --target-help
1347 @item --target-help
1348 Print a summary of all target specific options on the standard output and exit.
1349
1350 @kindex -Map
1351 @item -Map @var{mapfile}
1352 Print a link map to the file @var{mapfile}.  See the description of the
1353 @option{-M} option, above.
1354
1355 @cindex memory usage
1356 @kindex --no-keep-memory
1357 @item --no-keep-memory
1358 @command{ld} normally optimizes for speed over memory usage by caching the
1359 symbol tables of input files in memory.  This option tells @command{ld} to
1360 instead optimize for memory usage, by rereading the symbol tables as
1361 necessary.  This may be required if @command{ld} runs out of memory space
1362 while linking a large executable.
1363
1364 @kindex --no-undefined
1365 @kindex -z defs
1366 @item --no-undefined
1367 @itemx -z defs
1368 Report unresolved symbol references from regular object files.  This
1369 is done even if the linker is creating a non-symbolic shared library.
1370 The switch @option{--[no-]allow-shlib-undefined} controls the
1371 behaviour for reporting unresolved references found in shared
1372 libraries being linked in.
1373
1374 @kindex --allow-multiple-definition
1375 @kindex -z muldefs
1376 @item --allow-multiple-definition
1377 @itemx -z muldefs
1378 Normally when a symbol is defined multiple times, the linker will
1379 report a fatal error. These options allow multiple definitions and the
1380 first definition will be used.
1381
1382 @kindex --allow-shlib-undefined
1383 @kindex --no-allow-shlib-undefined
1384 @item --allow-shlib-undefined
1385 @itemx --no-allow-shlib-undefined
1386 Allows or disallows undefined symbols in shared libraries.
1387 This switch is similar to @option{--no-undefined} except that it
1388 determines the behaviour when the undefined symbols are in a
1389 shared library rather than a regular object file.  It does not affect
1390 how undefined symbols in regular object files are handled.
1391
1392 The default behaviour is to report errors for any undefined symbols
1393 referenced in shared libraries if the linker is being used to create
1394 an executable, but to allow them if the linker is being used to create
1395 a shared library.
1396
1397 The reasons for allowing undefined symbol references in shared
1398 libraries specified at link time are that:
1399
1400 @itemize @bullet
1401 @item
1402 A shared library specified at link time may not be the same as the one
1403 that is available at load time, so the symbol might actually be
1404 resolvable at load time.
1405 @item
1406 There are some operating systems, eg BeOS and HPPA, where undefined
1407 symbols in shared libraries are normal.
1408
1409 The BeOS kernel for example patches shared libraries at load time to
1410 select whichever function is most appropriate for the current
1411 architecture.  This is used, for example, to dynamically select an
1412 appropriate memset function.
1413 @end itemize
1414
1415 @kindex --no-undefined-version
1416 @item --no-undefined-version
1417 Normally when a symbol has an undefined version, the linker will ignore
1418 it. This option disallows symbols with undefined version and a fatal error
1419 will be issued instead.
1420
1421 @kindex --default-symver
1422 @item --default-symver
1423 Create and use a default symbol version (the soname) for unversioned
1424 exported symbols.
1425
1426 @kindex --default-imported-symver
1427 @item --default-imported-symver
1428 Create and use a default symbol version (the soname) for unversioned
1429 imported symbols.
1430
1431 @kindex --no-warn-mismatch
1432 @item --no-warn-mismatch
1433 Normally @command{ld} will give an error if you try to link together input
1434 files that are mismatched for some reason, perhaps because they have
1435 been compiled for different processors or for different endiannesses.
1436 This option tells @command{ld} that it should silently permit such possible
1437 errors.  This option should only be used with care, in cases when you
1438 have taken some special action that ensures that the linker errors are
1439 inappropriate.
1440
1441 @kindex --no-warn-search-mismatch
1442 @item --no-warn-search-mismatch
1443 Normally @command{ld} will give a warning if it finds an incompatible
1444 library during a library search.  This option silences the warning.
1445
1446 @kindex --no-whole-archive
1447 @item --no-whole-archive
1448 Turn off the effect of the @option{--whole-archive} option for subsequent
1449 archive files.
1450
1451 @cindex output file after errors
1452 @kindex --noinhibit-exec
1453 @item --noinhibit-exec
1454 Retain the executable output file whenever it is still usable.
1455 Normally, the linker will not produce an output file if it encounters
1456 errors during the link process; it exits without writing an output file
1457 when it issues any error whatsoever.
1458
1459 @kindex -nostdlib
1460 @item -nostdlib
1461 Only search library directories explicitly specified on the
1462 command line.  Library directories specified in linker scripts
1463 (including linker scripts specified on the command line) are ignored.
1464
1465 @ifclear SingleFormat
1466 @kindex --oformat
1467 @item --oformat @var{output-format}
1468 @command{ld} may be configured to support more than one kind of object
1469 file.  If your @command{ld} is configured this way, you can use the
1470 @samp{--oformat} option to specify the binary format for the output
1471 object file.  Even when @command{ld} is configured to support alternative
1472 object formats, you don't usually need to specify this, as @command{ld}
1473 should be configured to produce as a default output format the most
1474 usual format on each machine.  @var{output-format} is a text string, the
1475 name of a particular format supported by the BFD libraries.  (You can
1476 list the available binary formats with @samp{objdump -i}.)  The script
1477 command @code{OUTPUT_FORMAT} can also specify the output format, but
1478 this option overrides it.  @xref{BFD}.
1479 @end ifclear
1480
1481 @kindex -pie
1482 @kindex --pic-executable
1483 @item -pie
1484 @itemx --pic-executable
1485 @cindex position independent executables
1486 Create a position independent executable.  This is currently only supported on
1487 ELF platforms.  Position independent executables are similar to shared
1488 libraries in that they are relocated by the dynamic linker to the virtual
1489 address the OS chooses for them (which can vary between invocations).  Like
1490 normal dynamically linked executables they can be executed and symbols
1491 defined in the executable cannot be overridden by shared libraries.
1492
1493 @kindex -qmagic
1494 @item -qmagic
1495 This option is ignored for Linux compatibility.
1496
1497 @kindex -Qy
1498 @item -Qy
1499 This option is ignored for SVR4 compatibility.
1500
1501 @kindex --relax
1502 @cindex synthesizing linker
1503 @cindex relaxing addressing modes
1504 @item --relax
1505 An option with machine dependent effects.
1506 @ifset GENERIC
1507 This option is only supported on a few targets.
1508 @end ifset
1509 @ifset H8300
1510 @xref{H8/300,,@command{ld} and the H8/300}.
1511 @end ifset
1512 @ifset I960
1513 @xref{i960,, @command{ld} and the Intel 960 family}.
1514 @end ifset
1515 @ifset XTENSA
1516 @xref{Xtensa,, @command{ld} and Xtensa Processors}.
1517 @end ifset
1518 @ifset M68HC11
1519 @xref{M68HC11/68HC12,,@command{ld} and the 68HC11 and 68HC12}.
1520 @end ifset
1521 @ifset POWERPC
1522 @xref{PowerPC ELF32,,@command{ld} and PowerPC 32-bit ELF Support}.
1523 @end ifset
1524
1525 On some platforms, the @samp{--relax} option performs global
1526 optimizations that become possible when the linker resolves addressing
1527 in the program, such as relaxing address modes and synthesizing new
1528 instructions in the output object file.
1529
1530 On some platforms these link time global optimizations may make symbolic
1531 debugging of the resulting executable impossible.
1532 @ifset GENERIC
1533 This is known to be
1534 the case for the Matsushita MN10200 and MN10300 family of processors.
1535 @end ifset
1536
1537 @ifset GENERIC
1538 On platforms where this is not supported, @samp{--relax} is accepted,
1539 but ignored.
1540 @end ifset
1541
1542 @cindex retaining specified symbols
1543 @cindex stripping all but some symbols
1544 @cindex symbols, retaining selectively
1545 @item --retain-symbols-file @var{filename}
1546 Retain @emph{only} the symbols listed in the file @var{filename},
1547 discarding all others.  @var{filename} is simply a flat file, with one
1548 symbol name per line.  This option is especially useful in environments
1549 @ifset GENERIC
1550 (such as VxWorks)
1551 @end ifset
1552 where a large global symbol table is accumulated gradually, to conserve
1553 run-time memory.
1554
1555 @samp{--retain-symbols-file} does @emph{not} discard undefined symbols,
1556 or symbols needed for relocations.
1557
1558 You may only specify @samp{--retain-symbols-file} once in the command
1559 line.  It overrides @samp{-s} and @samp{-S}.
1560
1561 @ifset GENERIC
1562 @item -rpath @var{dir}
1563 @cindex runtime library search path
1564 @kindex -rpath
1565 Add a directory to the runtime library search path.  This is used when
1566 linking an ELF executable with shared objects.  All @option{-rpath}
1567 arguments are concatenated and passed to the runtime linker, which uses
1568 them to locate shared objects at runtime.  The @option{-rpath} option is
1569 also used when locating shared objects which are needed by shared
1570 objects explicitly included in the link; see the description of the
1571 @option{-rpath-link} option.  If @option{-rpath} is not used when linking an
1572 ELF executable, the contents of the environment variable
1573 @code{LD_RUN_PATH} will be used if it is defined.
1574
1575 The @option{-rpath} option may also be used on SunOS.  By default, on
1576 SunOS, the linker will form a runtime search patch out of all the
1577 @option{-L} options it is given.  If a @option{-rpath} option is used, the
1578 runtime search path will be formed exclusively using the @option{-rpath}
1579 options, ignoring the @option{-L} options.  This can be useful when using
1580 gcc, which adds many @option{-L} options which may be on NFS mounted
1581 file systems.
1582
1583 For compatibility with other ELF linkers, if the @option{-R} option is
1584 followed by a directory name, rather than a file name, it is treated as
1585 the @option{-rpath} option.
1586 @end ifset
1587
1588 @ifset GENERIC
1589 @cindex link-time runtime library search path
1590 @kindex -rpath-link
1591 @item -rpath-link @var{DIR}
1592 When using ELF or SunOS, one shared library may require another.  This
1593 happens when an @code{ld -shared} link includes a shared library as one
1594 of the input files.
1595
1596 When the linker encounters such a dependency when doing a non-shared,
1597 non-relocatable link, it will automatically try to locate the required
1598 shared library and include it in the link, if it is not included
1599 explicitly.  In such a case, the @option{-rpath-link} option
1600 specifies the first set of directories to search.  The
1601 @option{-rpath-link} option may specify a sequence of directory names
1602 either by specifying a list of names separated by colons, or by
1603 appearing multiple times.
1604
1605 This option should be used with caution as it overrides the search path
1606 that may have been hard compiled into a shared library. In such a case it
1607 is possible to use unintentionally a different search path than the
1608 runtime linker would do.
1609
1610 The linker uses the following search paths to locate required shared
1611 libraries:
1612 @enumerate
1613 @item
1614 Any directories specified by @option{-rpath-link} options.
1615 @item
1616 Any directories specified by @option{-rpath} options.  The difference
1617 between @option{-rpath} and @option{-rpath-link} is that directories
1618 specified by @option{-rpath} options are included in the executable and
1619 used at runtime, whereas the @option{-rpath-link} option is only effective
1620 at link time. Searching @option{-rpath} in this way is only supported
1621 by native linkers and cross linkers which have been configured with
1622 the @option{--with-sysroot} option.
1623 @item
1624 On an ELF system, for native linkers, if the @option{-rpath} and
1625 @option{-rpath-link} options were not used, search the contents of the
1626 environment variable @code{LD_RUN_PATH}.
1627 @item
1628 On SunOS, if the @option{-rpath} option was not used, search any
1629 directories specified using @option{-L} options.
1630 @item
1631 For a native linker, the search the contents of the environment
1632 variable @code{LD_LIBRARY_PATH}.
1633 @item
1634 For a native ELF linker, the directories in @code{DT_RUNPATH} or
1635 @code{DT_RPATH} of a shared library are searched for shared
1636 libraries needed by it. The @code{DT_RPATH} entries are ignored if
1637 @code{DT_RUNPATH} entries exist.
1638 @item
1639 The default directories, normally @file{/lib} and @file{/usr/lib}.
1640 @item
1641 For a native linker on an ELF system, if the file @file{/etc/ld.so.conf}
1642 exists, the list of directories found in that file.
1643 @end enumerate
1644
1645 If the required shared library is not found, the linker will issue a
1646 warning and continue with the link.
1647 @end ifset
1648
1649 @kindex -shared
1650 @kindex -Bshareable
1651 @item -shared
1652 @itemx -Bshareable
1653 @cindex shared libraries
1654 Create a shared library.  This is currently only supported on ELF, XCOFF
1655 and SunOS platforms.  On SunOS, the linker will automatically create a
1656 shared library if the @option{-e} option is not used and there are
1657 undefined symbols in the link.
1658
1659 @item --sort-common [= ascending | descending]
1660 @kindex --sort-common
1661 This option tells @command{ld} to sort the common symbols by alignment in
1662 ascending or descending order when it places them in the appropriate output
1663 sections.  The symbol alignments considered are sixteen-byte or larger,
1664 eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps
1665 between symbols due to alignment constraints.  If no sorting order is
1666 specified, then descending order is assumed.
1667
1668 @kindex --sort-section name
1669 @item --sort-section name
1670 This option will apply @code{SORT_BY_NAME} to all wildcard section
1671 patterns in the linker script.
1672
1673 @kindex --sort-section alignment
1674 @item --sort-section alignment
1675 This option will apply @code{SORT_BY_ALIGNMENT} to all wildcard section
1676 patterns in the linker script.
1677
1678 @kindex --split-by-file
1679 @item --split-by-file [@var{size}]
1680 Similar to @option{--split-by-reloc} but creates a new output section for
1681 each input file when @var{size} is reached.  @var{size} defaults to a
1682 size of 1 if not given.
1683
1684 @kindex --split-by-reloc
1685 @item --split-by-reloc [@var{count}]
1686 Tries to creates extra sections in the output file so that no single
1687 output section in the file contains more than @var{count} relocations.
1688 This is useful when generating huge relocatable files for downloading into
1689 certain real time kernels with the COFF object file format; since COFF
1690 cannot represent more than 65535 relocations in a single section.  Note
1691 that this will fail to work with object file formats which do not
1692 support arbitrary sections.  The linker will not split up individual
1693 input sections for redistribution, so if a single input section contains
1694 more than @var{count} relocations one output section will contain that
1695 many relocations.  @var{count} defaults to a value of 32768.
1696
1697 @kindex --stats
1698 @item --stats
1699 Compute and display statistics about the operation of the linker, such
1700 as execution time and memory usage.
1701
1702 @kindex --sysroot
1703 @item --sysroot=@var{directory}
1704 Use @var{directory} as the location of the sysroot, overriding the
1705 configure-time default.  This option is only supported by linkers
1706 that were configured using @option{--with-sysroot}.
1707
1708 @kindex --traditional-format
1709 @cindex traditional format
1710 @item --traditional-format
1711 For some targets, the output of @command{ld} is different in some ways from
1712 the output of some existing linker.  This switch requests @command{ld} to
1713 use the traditional format instead.
1714
1715 @cindex dbx
1716 For example, on SunOS, @command{ld} combines duplicate entries in the
1717 symbol string table.  This can reduce the size of an output file with
1718 full debugging information by over 30 percent.  Unfortunately, the SunOS
1719 @code{dbx} program can not read the resulting program (@code{gdb} has no
1720 trouble).  The @samp{--traditional-format} switch tells @command{ld} to not
1721 combine duplicate entries.
1722
1723 @kindex --section-start @var{sectionname}=@var{org}
1724 @item --section-start @var{sectionname}=@var{org}
1725 Locate a section in the output file at the absolute
1726 address given by @var{org}.  You may use this option as many
1727 times as necessary to locate multiple sections in the command
1728 line.
1729 @var{org} must be a single hexadecimal integer;
1730 for compatibility with other linkers, you may omit the leading
1731 @samp{0x} usually associated with hexadecimal values.  @emph{Note:} there
1732 should be no white space between @var{sectionname}, the equals
1733 sign (``@key{=}''), and @var{org}.
1734
1735 @kindex -Tbss @var{org}
1736 @kindex -Tdata @var{org}
1737 @kindex -Ttext @var{org}
1738 @cindex segment origins, cmd line
1739 @item -Tbss @var{org}
1740 @itemx -Tdata @var{org}
1741 @itemx -Ttext @var{org}
1742 Same as --section-start, with @code{.bss}, @code{.data} or
1743 @code{.text} as the @var{sectionname}.
1744
1745 @kindex -Ttext-segment @var{org}
1746 @itemx -Ttext-segment @var{org}
1747 @cindex text segment origin, cmd line
1748 When creating an ELF executable or shared object, it will set the address
1749 of the first byte of the text segment.
1750
1751 @kindex --unresolved-symbols
1752 @item --unresolved-symbols=@var{method}
1753 Determine how to handle unresolved symbols.  There are four possible
1754 values for @samp{method}:
1755
1756 @table @samp
1757 @item ignore-all
1758 Do not report any unresolved symbols.
1759
1760 @item report-all
1761 Report all unresolved symbols.  This is the default.
1762
1763 @item ignore-in-object-files
1764 Report unresolved symbols that are contained in shared libraries, but
1765 ignore them if they come from regular object files.
1766
1767 @item ignore-in-shared-libs
1768 Report unresolved symbols that come from regular object files, but
1769 ignore them if they come from shared libraries.  This can be useful
1770 when creating a dynamic binary and it is known that all the shared
1771 libraries that it should be referencing are included on the linker's
1772 command line.
1773 @end table
1774
1775 The behaviour for shared libraries on their own can also be controlled
1776 by the @option{--[no-]allow-shlib-undefined} option.
1777
1778 Normally the linker will generate an error message for each reported
1779 unresolved symbol but the option @option{--warn-unresolved-symbols}
1780 can change this to a warning.
1781
1782 @kindex --verbose
1783 @cindex verbose
1784 @item --dll-verbose
1785 @itemx --verbose
1786 Display the version number for @command{ld} and list the linker emulations
1787 supported.  Display which input files can and cannot be opened.  Display
1788 the linker script being used by the linker.
1789
1790 @kindex --version-script=@var{version-scriptfile}
1791 @cindex version script, symbol versions
1792 @itemx --version-script=@var{version-scriptfile}
1793 Specify the name of a version script to the linker.  This is typically
1794 used when creating shared libraries to specify additional information
1795 about the version hierarchy for the library being created.  This option
1796 is only meaningful on ELF platforms which support shared libraries.
1797 @xref{VERSION}.
1798
1799 @kindex --warn-common
1800 @cindex warnings, on combining symbols
1801 @cindex combining symbols, warnings on
1802 @item --warn-common
1803 Warn when a common symbol is combined with another common symbol or with
1804 a symbol definition.  Unix linkers allow this somewhat sloppy practise,
1805 but linkers on some other operating systems do not.  This option allows
1806 you to find potential problems from combining global symbols.
1807 Unfortunately, some C libraries use this practise, so you may get some
1808 warnings about symbols in the libraries as well as in your programs.
1809
1810 There are three kinds of global symbols, illustrated here by C examples:
1811
1812 @table @samp
1813 @item int i = 1;
1814 A definition, which goes in the initialized data section of the output
1815 file.
1816
1817 @item extern int i;
1818 An undefined reference, which does not allocate space.
1819 There must be either a definition or a common symbol for the
1820 variable somewhere.
1821
1822 @item int i;
1823 A common symbol.  If there are only (one or more) common symbols for a
1824 variable, it goes in the uninitialized data area of the output file.
1825 The linker merges multiple common symbols for the same variable into a
1826 single symbol.  If they are of different sizes, it picks the largest
1827 size.  The linker turns a common symbol into a declaration, if there is
1828 a definition of the same variable.
1829 @end table
1830
1831 The @samp{--warn-common} option can produce five kinds of warnings.
1832 Each warning consists of a pair of lines: the first describes the symbol
1833 just encountered, and the second describes the previous symbol
1834 encountered with the same name.  One or both of the two symbols will be
1835 a common symbol.
1836
1837 @enumerate
1838 @item
1839 Turning a common symbol into a reference, because there is already a
1840 definition for the symbol.
1841 @smallexample
1842 @var{file}(@var{section}): warning: common of `@var{symbol}'
1843    overridden by definition
1844 @var{file}(@var{section}): warning: defined here
1845 @end smallexample
1846
1847 @item
1848 Turning a common symbol into a reference, because a later definition for
1849 the symbol is encountered.  This is the same as the previous case,
1850 except that the symbols are encountered in a different order.
1851 @smallexample
1852 @var{file}(@var{section}): warning: definition of `@var{symbol}'
1853    overriding common
1854 @var{file}(@var{section}): warning: common is here
1855 @end smallexample
1856
1857 @item
1858 Merging a common symbol with a previous same-sized common symbol.
1859 @smallexample
1860 @var{file}(@var{section}): warning: multiple common
1861    of `@var{symbol}'
1862 @var{file}(@var{section}): warning: previous common is here
1863 @end smallexample
1864
1865 @item
1866 Merging a common symbol with a previous larger common symbol.
1867 @smallexample
1868 @var{file}(@var{section}): warning: common of `@var{symbol}'
1869    overridden by larger common
1870 @var{file}(@var{section}): warning: larger common is here
1871 @end smallexample
1872
1873 @item
1874 Merging a common symbol with a previous smaller common symbol.  This is
1875 the same as the previous case, except that the symbols are
1876 encountered in a different order.
1877 @smallexample
1878 @var{file}(@var{section}): warning: common of `@var{symbol}'
1879    overriding smaller common
1880 @var{file}(@var{section}): warning: smaller common is here
1881 @end smallexample
1882 @end enumerate
1883
1884 @kindex --warn-constructors
1885 @item --warn-constructors
1886 Warn if any global constructors are used.  This is only useful for a few
1887 object file formats.  For formats like COFF or ELF, the linker can not
1888 detect the use of global constructors.
1889
1890 @kindex --warn-multiple-gp
1891 @item --warn-multiple-gp
1892 Warn if multiple global pointer values are required in the output file.
1893 This is only meaningful for certain processors, such as the Alpha.
1894 Specifically, some processors put large-valued constants in a special
1895 section.  A special register (the global pointer) points into the middle
1896 of this section, so that constants can be loaded efficiently via a
1897 base-register relative addressing mode.  Since the offset in
1898 base-register relative mode is fixed and relatively small (e.g., 16
1899 bits), this limits the maximum size of the constant pool.  Thus, in
1900 large programs, it is often necessary to use multiple global pointer
1901 values in order to be able to address all possible constants.  This
1902 option causes a warning to be issued whenever this case occurs.
1903
1904 @kindex --warn-once
1905 @cindex warnings, on undefined symbols
1906 @cindex undefined symbols, warnings on
1907 @item --warn-once
1908 Only warn once for each undefined symbol, rather than once per module
1909 which refers to it.
1910
1911 @kindex --warn-section-align
1912 @cindex warnings, on section alignment
1913 @cindex section alignment, warnings on
1914 @item --warn-section-align
1915 Warn if the address of an output section is changed because of
1916 alignment.  Typically, the alignment will be set by an input section.
1917 The address will only be changed if it not explicitly specified; that
1918 is, if the @code{SECTIONS} command does not specify a start address for
1919 the section (@pxref{SECTIONS}).
1920
1921 @kindex --warn-shared-textrel
1922 @item --warn-shared-textrel
1923 Warn if the linker adds a DT_TEXTREL to a shared object.
1924
1925 @kindex --warn-unresolved-symbols
1926 @item --warn-unresolved-symbols
1927 If the linker is going to report an unresolved symbol (see the option
1928 @option{--unresolved-symbols}) it will normally generate an error.
1929 This option makes it generate a warning instead.
1930
1931 @kindex --error-unresolved-symbols
1932 @item --error-unresolved-symbols
1933 This restores the linker's default behaviour of generating errors when
1934 it is reporting unresolved symbols.
1935
1936 @kindex --whole-archive
1937 @cindex including an entire archive
1938 @item --whole-archive
1939 For each archive mentioned on the command line after the
1940 @option{--whole-archive} option, include every object file in the archive
1941 in the link, rather than searching the archive for the required object
1942 files.  This is normally used to turn an archive file into a shared
1943 library, forcing every object to be included in the resulting shared
1944 library.  This option may be used more than once.
1945
1946 Two notes when using this option from gcc: First, gcc doesn't know
1947 about this option, so you have to use @option{-Wl,-whole-archive}.
1948 Second, don't forget to use @option{-Wl,-no-whole-archive} after your
1949 list of archives, because gcc will add its own list of archives to
1950 your link and you may not want this flag to affect those as well.
1951
1952 @kindex --wrap
1953 @item --wrap @var{symbol}
1954 Use a wrapper function for @var{symbol}.  Any undefined reference to
1955 @var{symbol} will be resolved to @code{__wrap_@var{symbol}}.  Any
1956 undefined reference to @code{__real_@var{symbol}} will be resolved to
1957 @var{symbol}.
1958
1959 This can be used to provide a wrapper for a system function.  The
1960 wrapper function should be called @code{__wrap_@var{symbol}}.  If it
1961 wishes to call the system function, it should call
1962 @code{__real_@var{symbol}}.
1963
1964 Here is a trivial example:
1965
1966 @smallexample
1967 void *
1968 __wrap_malloc (size_t c)
1969 @{
1970   printf ("malloc called with %zu\n", c);
1971   return __real_malloc (c);
1972 @}
1973 @end smallexample
1974
1975 If you link other code with this file using @option{--wrap malloc}, then
1976 all calls to @code{malloc} will call the function @code{__wrap_malloc}
1977 instead.  The call to @code{__real_malloc} in @code{__wrap_malloc} will
1978 call the real @code{malloc} function.
1979
1980 You may wish to provide a @code{__real_malloc} function as well, so that
1981 links without the @option{--wrap} option will succeed.  If you do this,
1982 you should not put the definition of @code{__real_malloc} in the same
1983 file as @code{__wrap_malloc}; if you do, the assembler may resolve the
1984 call before the linker has a chance to wrap it to @code{malloc}.
1985
1986 @kindex --eh-frame-hdr
1987 @item --eh-frame-hdr
1988 Request creation of @code{.eh_frame_hdr} section and ELF
1989 @code{PT_GNU_EH_FRAME} segment header.
1990
1991 @kindex --enable-new-dtags
1992 @kindex --disable-new-dtags
1993 @item --enable-new-dtags
1994 @itemx --disable-new-dtags
1995 This linker can create the new dynamic tags in ELF. But the older ELF
1996 systems may not understand them. If you specify
1997 @option{--enable-new-dtags}, the dynamic tags will be created as needed.
1998 If you specify @option{--disable-new-dtags}, no new dynamic tags will be
1999 created. By default, the new dynamic tags are not created. Note that
2000 those options are only available for ELF systems.
2001
2002 @kindex --hash-size=@var{number}
2003 @item --hash-size=@var{number}
2004 Set the default size of the linker's hash tables to a prime number
2005 close to @var{number}.  Increasing this value can reduce the length of
2006 time it takes the linker to perform its tasks, at the expense of
2007 increasing the linker's memory requirements.  Similarly reducing this
2008 value can reduce the memory requirements at the expense of speed.
2009
2010 @kindex --hash-style=@var{style}
2011 @item --hash-style=@var{style}
2012 Set the type of linker's hash table(s).  @var{style} can be either
2013 @code{sysv} for classic ELF @code{.hash} section, @code{gnu} for
2014 new style GNU @code{.gnu.hash} section or @code{both} for both
2015 the classic ELF @code{.hash} and new style GNU @code{.gnu.hash}
2016 hash tables.  The default is @code{sysv}.
2017
2018 @kindex --reduce-memory-overheads
2019 @item --reduce-memory-overheads
2020 This option reduces memory requirements at ld runtime, at the expense of
2021 linking speed.  This was introduced to select the old O(n^2) algorithm
2022 for link map file generation, rather than the new O(n) algorithm which uses
2023 about 40% more memory for symbol storage.
2024
2025 Another effect of the switch is to set the default hash table size to
2026 1021, which again saves memory at the cost of lengthening the linker's
2027 run time.  This is not done however if the @option{--hash-size} switch
2028 has been used.
2029
2030 The @option{--reduce-memory-overheads} switch may be also be used to
2031 enable other tradeoffs in future versions of the linker.
2032
2033 @kindex --build-id
2034 @kindex --build-id=@var{style}
2035 @item --build-id
2036 @itemx --build-id=@var{style}
2037 Request creation of @code{.note.gnu.build-id} ELF note section.
2038 The contents of the note are unique bits identifying this linked
2039 file.  @var{style} can be @code{uuid} to use 128 random bits,
2040 @code{sha1} to use a 160-bit @sc{SHA1} hash on the normative
2041 parts of the output contents, @code{md5} to use a 128-bit
2042 @sc{MD5} hash on the normative parts of the output contents, or
2043 @code{0x@var{hexstring}} to use a chosen bit string specified as
2044 an even number of hexadecimal digits (@code{-} and @code{:}
2045 characters between digit pairs are ignored).  If @var{style} is
2046 omitted, @code{sha1} is used.
2047
2048 The @code{md5} and @code{sha1} styles produces an identifier
2049 that is always the same in an identical output file, but will be
2050 unique among all nonidentical output files.  It is not intended
2051 to be compared as a checksum for the file's contents.  A linked
2052 file may be changed later by other tools, but the build ID bit
2053 string identifying the original linked file does not change.
2054
2055 Passing @code{none} for @var{style} disables the setting from any
2056 @code{--build-id} options earlier on the command line.
2057 @end table
2058
2059 @c man end
2060
2061 @subsection Options Specific to i386 PE Targets
2062
2063 @c man begin OPTIONS
2064
2065 The i386 PE linker supports the @option{-shared} option, which causes
2066 the output to be a dynamically linked library (DLL) instead of a
2067 normal executable.  You should name the output @code{*.dll} when you
2068 use this option.  In addition, the linker fully supports the standard
2069 @code{*.def} files, which may be specified on the linker command line
2070 like an object file (in fact, it should precede archives it exports
2071 symbols from, to ensure that they get linked in, just like a normal
2072 object file).
2073
2074 In addition to the options common to all targets, the i386 PE linker
2075 support additional command line options that are specific to the i386
2076 PE target.  Options that take values may be separated from their
2077 values by either a space or an equals sign.
2078
2079 @table @gcctabopt
2080
2081 @kindex --add-stdcall-alias
2082 @item --add-stdcall-alias
2083 If given, symbols with a stdcall suffix (@@@var{nn}) will be exported
2084 as-is and also with the suffix stripped.
2085 [This option is specific to the i386 PE targeted port of the linker]
2086
2087 @kindex --base-file
2088 @item --base-file @var{file}
2089 Use @var{file} as the name of a file in which to save the base
2090 addresses of all the relocations needed for generating DLLs with
2091 @file{dlltool}.
2092 [This is an i386 PE specific option]
2093
2094 @kindex --dll
2095 @item --dll
2096 Create a DLL instead of a regular executable.  You may also use
2097 @option{-shared} or specify a @code{LIBRARY} in a given @code{.def}
2098 file.
2099 [This option is specific to the i386 PE targeted port of the linker]
2100
2101 @kindex --enable-stdcall-fixup
2102 @kindex --disable-stdcall-fixup
2103 @item --enable-stdcall-fixup
2104 @itemx --disable-stdcall-fixup
2105 If the link finds a symbol that it cannot resolve, it will attempt to
2106 do ``fuzzy linking'' by looking for another defined symbol that differs
2107 only in the format of the symbol name (cdecl vs stdcall) and will
2108 resolve that symbol by linking to the match.  For example, the
2109 undefined symbol @code{_foo} might be linked to the function
2110 @code{_foo@@12}, or the undefined symbol @code{_bar@@16} might be linked
2111 to the function @code{_bar}.  When the linker does this, it prints a
2112 warning, since it normally should have failed to link, but sometimes
2113 import libraries generated from third-party dlls may need this feature
2114 to be usable.  If you specify @option{--enable-stdcall-fixup}, this
2115 feature is fully enabled and warnings are not printed.  If you specify
2116 @option{--disable-stdcall-fixup}, this feature is disabled and such
2117 mismatches are considered to be errors.
2118 [This option is specific to the i386 PE targeted port of the linker]
2119
2120 @cindex DLLs, creating
2121 @kindex --export-all-symbols
2122 @item --export-all-symbols
2123 If given, all global symbols in the objects used to build a DLL will
2124 be exported by the DLL.  Note that this is the default if there
2125 otherwise wouldn't be any exported symbols.  When symbols are
2126 explicitly exported via DEF files or implicitly exported via function
2127 attributes, the default is to not export anything else unless this
2128 option is given.  Note that the symbols @code{DllMain@@12},
2129 @code{DllEntryPoint@@0}, @code{DllMainCRTStartup@@12}, and
2130 @code{impure_ptr} will not be automatically
2131 exported.  Also, symbols imported from other DLLs will not be
2132 re-exported, nor will symbols specifying the DLL's internal layout
2133 such as those beginning with @code{_head_} or ending with
2134 @code{_iname}.  In addition, no symbols from @code{libgcc},
2135 @code{libstd++}, @code{libmingw32}, or @code{crtX.o} will be exported.
2136 Symbols whose names begin with @code{__rtti_} or @code{__builtin_} will
2137 not be exported, to help with C++ DLLs.  Finally, there is an
2138 extensive list of cygwin-private symbols that are not exported
2139 (obviously, this applies on when building DLLs for cygwin targets).
2140 These cygwin-excludes are: @code{_cygwin_dll_entry@@12},
2141 @code{_cygwin_crt0_common@@8}, @code{_cygwin_noncygwin_dll_entry@@12},
2142 @code{_fmode}, @code{_impure_ptr}, @code{cygwin_attach_dll},
2143 @code{cygwin_premain0}, @code{cygwin_premain1}, @code{cygwin_premain2},
2144 @code{cygwin_premain3}, and @code{environ}.
2145 [This option is specific to the i386 PE targeted port of the linker]
2146
2147 @kindex --exclude-symbols
2148 @item --exclude-symbols @var{symbol},@var{symbol},...
2149 Specifies a list of symbols which should not be automatically
2150 exported.  The symbol names may be delimited by commas or colons.
2151 [This option is specific to the i386 PE targeted port of the linker]
2152
2153 @kindex --file-alignment
2154 @item --file-alignment
2155 Specify the file alignment.  Sections in the file will always begin at
2156 file offsets which are multiples of this number.  This defaults to
2157 512.
2158 [This option is specific to the i386 PE targeted port of the linker]
2159
2160 @cindex heap size
2161 @kindex --heap
2162 @item --heap @var{reserve}
2163 @itemx --heap @var{reserve},@var{commit}
2164 Specify the number of bytes of memory to reserve (and optionally commit)
2165 to be used as heap for this program.  The default is 1Mb reserved, 4K
2166 committed.
2167 [This option is specific to the i386 PE targeted port of the linker]
2168
2169 @cindex image base
2170 @kindex --image-base
2171 @item --image-base @var{value}
2172 Use @var{value} as the base address of your program or dll.  This is
2173 the lowest memory location that will be used when your program or dll
2174 is loaded.  To reduce the need to relocate and improve performance of
2175 your dlls, each should have a unique base address and not overlap any
2176 other dlls.  The default is 0x400000 for executables, and 0x10000000
2177 for dlls.
2178 [This option is specific to the i386 PE targeted port of the linker]
2179
2180 @kindex --kill-at
2181 @item --kill-at
2182 If given, the stdcall suffixes (@@@var{nn}) will be stripped from
2183 symbols before they are exported.
2184 [This option is specific to the i386 PE targeted port of the linker]
2185
2186 @kindex --large-address-aware
2187 @item --large-address-aware
2188 If given, the appropriate bit in the ``Characteristics'' field of the COFF
2189 header is set to indicate that this executable supports virtual addresses
2190 greater than 2 gigabytes.  This should be used in conjunction with the /3GB
2191 or /USERVA=@var{value} megabytes switch in the ``[operating systems]''
2192 section of the BOOT.INI.  Otherwise, this bit has no effect.
2193 [This option is specific to PE targeted ports of the linker]
2194
2195 @kindex --major-image-version
2196 @item --major-image-version @var{value}
2197 Sets the major number of the ``image version''.  Defaults to 1.
2198 [This option is specific to the i386 PE targeted port of the linker]
2199
2200 @kindex --major-os-version
2201 @item --major-os-version @var{value}
2202 Sets the major number of the ``os version''.  Defaults to 4.
2203 [This option is specific to the i386 PE targeted port of the linker]
2204
2205 @kindex --major-subsystem-version
2206 @item --major-subsystem-version @var{value}
2207 Sets the major number of the ``subsystem version''.  Defaults to 4.
2208 [This option is specific to the i386 PE targeted port of the linker]
2209
2210 @kindex --minor-image-version
2211 @item --minor-image-version @var{value}
2212 Sets the minor number of the ``image version''.  Defaults to 0.
2213 [This option is specific to the i386 PE targeted port of the linker]
2214
2215 @kindex --minor-os-version
2216 @item --minor-os-version @var{value}
2217 Sets the minor number of the ``os version''.  Defaults to 0.
2218 [This option is specific to the i386 PE targeted port of the linker]
2219
2220 @kindex --minor-subsystem-version
2221 @item --minor-subsystem-version @var{value}
2222 Sets the minor number of the ``subsystem version''.  Defaults to 0.
2223 [This option is specific to the i386 PE targeted port of the linker]
2224
2225 @cindex DEF files, creating
2226 @cindex DLLs, creating
2227 @kindex --output-def
2228 @item --output-def @var{file}
2229 The linker will create the file @var{file} which will contain a DEF
2230 file corresponding to the DLL the linker is generating.  This DEF file
2231 (which should be called @code{*.def}) may be used to create an import
2232 library with @code{dlltool} or may be used as a reference to
2233 automatically or implicitly exported symbols.
2234 [This option is specific to the i386 PE targeted port of the linker]
2235
2236 @cindex DLLs, creating
2237 @kindex --out-implib
2238 @item --out-implib @var{file}
2239 The linker will create the file @var{file} which will contain an
2240 import lib corresponding to the DLL the linker is generating. This
2241 import lib (which should be called @code{*.dll.a} or @code{*.a}
2242 may be used to link clients against the generated DLL; this behaviour
2243 makes it possible to skip a separate @code{dlltool} import library
2244 creation step.
2245 [This option is specific to the i386 PE targeted port of the linker]
2246
2247 @kindex --enable-auto-image-base
2248 @item --enable-auto-image-base
2249 Automatically choose the image base for DLLs, unless one is specified
2250 using the @code{--image-base} argument.  By using a hash generated
2251 from the dllname to create unique image bases for each DLL, in-memory
2252 collisions and relocations which can delay program execution are
2253 avoided.
2254 [This option is specific to the i386 PE targeted port of the linker]
2255
2256 @kindex --disable-auto-image-base
2257 @item --disable-auto-image-base
2258 Do not automatically generate a unique image base.  If there is no
2259 user-specified image base (@code{--image-base}) then use the platform
2260 default.
2261 [This option is specific to the i386 PE targeted port of the linker]
2262
2263 @cindex DLLs, linking to
2264 @kindex --dll-search-prefix
2265 @item --dll-search-prefix @var{string}
2266 When linking dynamically to a dll without an import library,
2267 search for @code{<string><basename>.dll} in preference to
2268 @code{lib<basename>.dll}. This behaviour allows easy distinction
2269 between DLLs built for the various "subplatforms": native, cygwin,
2270 uwin, pw, etc.  For instance, cygwin DLLs typically use
2271 @code{--dll-search-prefix=cyg}.
2272 [This option is specific to the i386 PE targeted port of the linker]
2273
2274 @kindex --enable-auto-import
2275 @item --enable-auto-import
2276 Do sophisticated linking of @code{_symbol} to @code{__imp__symbol} for
2277 DATA imports from DLLs, and create the necessary thunking symbols when
2278 building the import libraries with those DATA exports. Note: Use of the
2279 'auto-import' extension will cause the text section of the image file
2280 to be made writable. This does not conform to the PE-COFF format
2281 specification published by Microsoft.
2282
2283 Note - use of the 'auto-import' extension will also cause read only
2284 data which would normally be placed into the .rdata section to be
2285 placed into the .data section instead.  This is in order to work
2286 around a problem with consts that is described here:
2287 http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
2288
2289 Using 'auto-import' generally will 'just work' -- but sometimes you may
2290 see this message:
2291
2292 "variable '<var>' can't be auto-imported. Please read the
2293 documentation for ld's @code{--enable-auto-import} for details."
2294
2295 This message occurs when some (sub)expression accesses an address
2296 ultimately given by the sum of two constants (Win32 import tables only
2297 allow one).  Instances where this may occur include accesses to member
2298 fields of struct variables imported from a DLL, as well as using a
2299 constant index into an array variable imported from a DLL.  Any
2300 multiword variable (arrays, structs, long long, etc) may trigger
2301 this error condition.  However, regardless of the exact data type
2302 of the offending exported variable, ld will always detect it, issue
2303 the warning, and exit.
2304
2305 There are several ways to address this difficulty, regardless of the
2306 data type of the exported variable:
2307
2308 One way is to use --enable-runtime-pseudo-reloc switch. This leaves the task
2309 of adjusting references in your client code for runtime environment, so
2310 this method works only when runtime environment supports this feature.
2311
2312 A second solution is to force one of the 'constants' to be a variable --
2313 that is, unknown and un-optimizable at compile time.  For arrays,
2314 there are two possibilities: a) make the indexee (the array's address)
2315 a variable, or b) make the 'constant' index a variable.  Thus:
2316
2317 @example
2318 extern type extern_array[];
2319 extern_array[1] -->
2320    @{ volatile type *t=extern_array; t[1] @}
2321 @end example
2322
2323 or
2324
2325 @example
2326 extern type extern_array[];
2327 extern_array[1] -->
2328    @{ volatile int t=1; extern_array[t] @}
2329 @end example
2330
2331 For structs (and most other multiword data types) the only option
2332 is to make the struct itself (or the long long, or the ...) variable:
2333
2334 @example
2335 extern struct s extern_struct;
2336 extern_struct.field -->
2337    @{ volatile struct s *t=&extern_struct; t->field @}
2338 @end example
2339
2340 or
2341
2342 @example
2343 extern long long extern_ll;
2344 extern_ll -->
2345   @{ volatile long long * local_ll=&extern_ll; *local_ll @}
2346 @end example
2347
2348 A third method of dealing with this difficulty is to abandon
2349 'auto-import' for the offending symbol and mark it with
2350 @code{__declspec(dllimport)}.  However, in practise that
2351 requires using compile-time #defines to indicate whether you are
2352 building a DLL, building client code that will link to the DLL, or
2353 merely building/linking to a static library.   In making the choice
2354 between the various methods of resolving the 'direct address with
2355 constant offset' problem, you should consider typical real-world usage:
2356
2357 Original:
2358 @example
2359 --foo.h
2360 extern int arr[];
2361 --foo.c
2362 #include "foo.h"
2363 void main(int argc, char **argv)@{
2364   printf("%d\n",arr[1]);
2365 @}
2366 @end example
2367
2368 Solution 1:
2369 @example
2370 --foo.h
2371 extern int arr[];
2372 --foo.c
2373 #include "foo.h"
2374 void main(int argc, char **argv)@{
2375   /* This workaround is for win32 and cygwin; do not "optimize" */
2376   volatile int *parr = arr;
2377   printf("%d\n",parr[1]);
2378 @}
2379 @end example
2380
2381 Solution 2:
2382 @example
2383 --foo.h
2384 /* Note: auto-export is assumed (no __declspec(dllexport)) */
2385 #if (defined(_WIN32) || defined(__CYGWIN__)) && \
2386   !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
2387 #define FOO_IMPORT __declspec(dllimport)
2388 #else
2389 #define FOO_IMPORT
2390 #endif
2391 extern FOO_IMPORT int arr[];
2392 --foo.c
2393 #include "foo.h"
2394 void main(int argc, char **argv)@{
2395   printf("%d\n",arr[1]);
2396 @}
2397 @end example
2398
2399 A fourth way to avoid this problem is to re-code your
2400 library to use a functional interface rather than a data interface
2401 for the offending variables (e.g. set_foo() and get_foo() accessor
2402 functions).
2403 [This option is specific to the i386 PE targeted port of the linker]
2404
2405 @kindex --disable-auto-import
2406 @item --disable-auto-import
2407 Do not attempt to do sophisticated linking of @code{_symbol} to
2408 @code{__imp__symbol} for DATA imports from DLLs.
2409 [This option is specific to the i386 PE targeted port of the linker]
2410
2411 @kindex --enable-runtime-pseudo-reloc
2412 @item --enable-runtime-pseudo-reloc
2413 If your code contains expressions described in --enable-auto-import section,
2414 that is, DATA imports from DLL with non-zero offset, this switch will create
2415 a vector of 'runtime pseudo relocations' which can be used by runtime
2416 environment to adjust references to such data in your client code.
2417 [This option is specific to the i386 PE targeted port of the linker]
2418
2419 @kindex --disable-runtime-pseudo-reloc
2420 @item --disable-runtime-pseudo-reloc
2421 Do not create pseudo relocations for non-zero offset DATA imports from
2422 DLLs.  This is the default.
2423 [This option is specific to the i386 PE targeted port of the linker]
2424
2425 @kindex --enable-extra-pe-debug
2426 @item --enable-extra-pe-debug
2427 Show additional debug info related to auto-import symbol thunking.
2428 [This option is specific to the i386 PE targeted port of the linker]
2429
2430 @kindex --section-alignment
2431 @item --section-alignment
2432 Sets the section alignment.  Sections in memory will always begin at
2433 addresses which are a multiple of this number.  Defaults to 0x1000.
2434 [This option is specific to the i386 PE targeted port of the linker]
2435
2436 @cindex stack size
2437 @kindex --stack
2438 @item --stack @var{reserve}
2439 @itemx --stack @var{reserve},@var{commit}
2440 Specify the number of bytes of memory to reserve (and optionally commit)
2441 to be used as stack for this program.  The default is 2Mb reserved, 4K
2442 committed.
2443 [This option is specific to the i386 PE targeted port of the linker]
2444
2445 @kindex --subsystem
2446 @item --subsystem @var{which}
2447 @itemx --subsystem @var{which}:@var{major}
2448 @itemx --subsystem @var{which}:@var{major}.@var{minor}
2449 Specifies the subsystem under which your program will execute.  The
2450 legal values for @var{which} are @code{native}, @code{windows},
2451 @code{console}, @code{posix}, and @code{xbox}.  You may optionally set
2452 the subsystem version also.  Numeric values are also accepted for
2453 @var{which}.
2454 [This option is specific to the i386 PE targeted port of the linker]
2455
2456 @end table
2457
2458 @c man end
2459
2460 @ifset M68HC11
2461 @subsection Options specific to Motorola 68HC11 and 68HC12 targets
2462
2463 @c man begin OPTIONS
2464
2465 The 68HC11 and 68HC12 linkers support specific options to control the
2466 memory bank switching mapping and trampoline code generation.
2467
2468 @table @gcctabopt
2469
2470 @kindex --no-trampoline
2471 @item --no-trampoline
2472 This option disables the generation of trampoline. By default a trampoline
2473 is generated for each far function which is called using a @code{jsr}
2474 instruction (this happens when a pointer to a far function is taken).
2475
2476 @kindex --bank-window
2477 @item --bank-window @var{name}
2478 This option indicates to the linker the name of the memory region in
2479 the @samp{MEMORY} specification that describes the memory bank window.
2480 The definition of such region is then used by the linker to compute
2481 paging and addresses within the memory window.
2482
2483 @end table
2484
2485 @c man end
2486 @end ifset
2487
2488 @ifset M68K
2489 @subsection Options specific to Motorola 68K target
2490
2491 @c man begin OPTIONS
2492
2493 The following options are supported to control handling of GOT generation
2494 when linking for 68K targets.
2495
2496 @table @gcctabopt
2497
2498 @kindex --got
2499 @item --got=@var{type}
2500 This option tells the linker which GOT generation scheme to use.
2501 @var{type} should be one of @samp{single}, @samp{negative},
2502 @samp{multigot} or @samp{target}.  For more information refer to the
2503 Info entry for @file{ld}.
2504
2505 @end table
2506
2507 @c man end
2508 @end ifset
2509
2510 @ifset UsesEnvVars
2511 @node Environment
2512 @section Environment Variables
2513
2514 @c man begin ENVIRONMENT
2515
2516 You can change the behaviour of @command{ld} with the environment variables
2517 @ifclear SingleFormat
2518 @code{GNUTARGET},
2519 @end ifclear
2520 @code{LDEMULATION} and @code{COLLECT_NO_DEMANGLE}.
2521
2522 @ifclear SingleFormat
2523 @kindex GNUTARGET
2524 @cindex default input format
2525 @code{GNUTARGET} determines the input-file object format if you don't
2526 use @samp{-b} (or its synonym @samp{--format}).  Its value should be one
2527 of the BFD names for an input format (@pxref{BFD}).  If there is no
2528 @code{GNUTARGET} in the environment, @command{ld} uses the natural format
2529 of the target. If @code{GNUTARGET} is set to @code{default} then BFD
2530 attempts to discover the input format by examining binary input files;
2531 this method often succeeds, but there are potential ambiguities, since
2532 there is no method of ensuring that the magic number used to specify
2533 object-file formats is unique.  However, the configuration procedure for
2534 BFD on each system places the conventional format for that system first
2535 in the search-list, so ambiguities are resolved in favor of convention.
2536 @end ifclear
2537
2538 @kindex LDEMULATION
2539 @cindex default emulation
2540 @cindex emulation, default
2541 @code{LDEMULATION} determines the default emulation if you don't use the
2542 @samp{-m} option.  The emulation can affect various aspects of linker
2543 behaviour, particularly the default linker script.  You can list the
2544 available emulations with the @samp{--verbose} or @samp{-V} options.  If
2545 the @samp{-m} option is not used, and the @code{LDEMULATION} environment
2546 variable is not defined, the default emulation depends upon how the
2547 linker was configured.
2548
2549 @kindex COLLECT_NO_DEMANGLE
2550 @cindex demangling, default
2551 Normally, the linker will default to demangling symbols.  However, if
2552 @code{COLLECT_NO_DEMANGLE} is set in the environment, then it will
2553 default to not demangling symbols.  This environment variable is used in
2554 a similar fashion by the @code{gcc} linker wrapper program.  The default
2555 may be overridden by the @samp{--demangle} and @samp{--no-demangle}
2556 options.
2557
2558 @c man end
2559 @end ifset
2560
2561 @node Scripts
2562 @chapter Linker Scripts
2563
2564 @cindex scripts
2565 @cindex linker scripts
2566 @cindex command files
2567 Every link is controlled by a @dfn{linker script}.  This script is
2568 written in the linker command language.
2569
2570 The main purpose of the linker script is to describe how the sections in
2571 the input files should be mapped into the output file, and to control
2572 the memory layout of the output file.  Most linker scripts do nothing
2573 more than this.  However, when necessary, the linker script can also
2574 direct the linker to perform many other operations, using the commands
2575 described below.
2576
2577 The linker always uses a linker script.  If you do not supply one
2578 yourself, the linker will use a default script that is compiled into the
2579 linker executable.  You can use the @samp{--verbose} command line option
2580 to display the default linker script.  Certain command line options,
2581 such as @samp{-r} or @samp{-N}, will affect the default linker script.
2582
2583 You may supply your own linker script by using the @samp{-T} command
2584 line option.  When you do this, your linker script will replace the
2585 default linker script.
2586
2587 You may also use linker scripts implicitly by naming them as input files
2588 to the linker, as though they were files to be linked.  @xref{Implicit
2589 Linker Scripts}.
2590
2591 @menu
2592 * Basic Script Concepts::       Basic Linker Script Concepts
2593 * Script Format::               Linker Script Format
2594 * Simple Example::              Simple Linker Script Example
2595 * Simple Commands::             Simple Linker Script Commands
2596 * Assignments::                 Assigning Values to Symbols
2597 * SECTIONS::                    SECTIONS Command
2598 * MEMORY::                      MEMORY Command
2599 * PHDRS::                       PHDRS Command
2600 * VERSION::                     VERSION Command
2601 * Expressions::                 Expressions in Linker Scripts
2602 * Implicit Linker Scripts::     Implicit Linker Scripts
2603 @end menu
2604
2605 @node Basic Script Concepts
2606 @section Basic Linker Script Concepts
2607 @cindex linker script concepts
2608 We need to define some basic concepts and vocabulary in order to
2609 describe the linker script language.
2610
2611 The linker combines input files into a single output file.  The output
2612 file and each input file are in a special data format known as an
2613 @dfn{object file format}.  Each file is called an @dfn{object file}.
2614 The output file is often called an @dfn{executable}, but for our
2615 purposes we will also call it an object file.  Each object file has,
2616 among other things, a list of @dfn{sections}.  We sometimes refer to a
2617 section in an input file as an @dfn{input section}; similarly, a section
2618 in the output file is an @dfn{output section}.
2619
2620 Each section in an object file has a name and a size.  Most sections
2621 also have an associated block of data, known as the @dfn{section
2622 contents}.  A section may be marked as @dfn{loadable}, which mean that
2623 the contents should be loaded into memory when the output file is run.
2624 A section with no contents may be @dfn{allocatable}, which means that an
2625 area in memory should be set aside, but nothing in particular should be
2626 loaded there (in some cases this memory must be zeroed out).  A section
2627 which is neither loadable nor allocatable typically contains some sort
2628 of debugging information.
2629
2630 Every loadable or allocatable output section has two addresses.  The
2631 first is the @dfn{VMA}, or virtual memory address.  This is the address
2632 the section will have when the output file is run.  The second is the
2633 @dfn{LMA}, or load memory address.  This is the address at which the
2634 section will be loaded.  In most cases the two addresses will be the
2635 same.  An example of when they might be different is when a data section
2636 is loaded into ROM, and then copied into RAM when the program starts up
2637 (this technique is often used to initialize global variables in a ROM
2638 based system).  In this case the ROM address would be the LMA, and the
2639 RAM address would be the VMA.
2640
2641 You can see the sections in an object file by using the @code{objdump}
2642 program with the @samp{-h} option.
2643
2644 Every object file also has a list of @dfn{symbols}, known as the
2645 @dfn{symbol table}.  A symbol may be defined or undefined.  Each symbol
2646 has a name, and each defined symbol has an address, among other
2647 information.  If you compile a C or C++ program into an object file, you
2648 will get a defined symbol for every defined function and global or
2649 static variable.  Every undefined function or global variable which is
2650 referenced in the input file will become an undefined symbol.
2651
2652 You can see the symbols in an object file by using the @code{nm}
2653 program, or by using the @code{objdump} program with the @samp{-t}
2654 option.
2655
2656 @node Script Format
2657 @section Linker Script Format
2658 @cindex linker script format
2659 Linker scripts are text files.
2660
2661 You write a linker script as a series of commands.  Each command is
2662 either a keyword, possibly followed by arguments, or an assignment to a
2663 symbol.  You may separate commands using semicolons.  Whitespace is
2664 generally ignored.
2665
2666 Strings such as file or format names can normally be entered directly.
2667 If the file name contains a character such as a comma which would
2668 otherwise serve to separate file names, you may put the file name in
2669 double quotes.  There is no way to use a double quote character in a
2670 file name.
2671
2672 You may include comments in linker scripts just as in C, delimited by
2673 @samp{/*} and @samp{*/}.  As in C, comments are syntactically equivalent
2674 to whitespace.
2675
2676 @node Simple Example
2677 @section Simple Linker Script Example
2678 @cindex linker script example
2679 @cindex example of linker script
2680 Many linker scripts are fairly simple.
2681
2682 The simplest possible linker script has just one command:
2683 @samp{SECTIONS}.  You use the @samp{SECTIONS} command to describe the
2684 memory layout of the output file.
2685
2686 The @samp{SECTIONS} command is a powerful command.  Here we will
2687 describe a simple use of it.  Let's assume your program consists only of
2688 code, initialized data, and uninitialized data.  These will be in the
2689 @samp{.text}, @samp{.data}, and @samp{.bss} sections, respectively.
2690 Let's assume further that these are the only sections which appear in
2691 your input files.
2692
2693 For this example, let's say that the code should be loaded at address
2694 0x10000, and that the data should start at address 0x8000000.  Here is a
2695 linker script which will do that:
2696 @smallexample
2697 SECTIONS
2698 @{
2699   . = 0x10000;
2700   .text : @{ *(.text) @}
2701   . = 0x8000000;
2702   .data : @{ *(.data) @}
2703   .bss : @{ *(.bss) @}
2704 @}
2705 @end smallexample
2706
2707 You write the @samp{SECTIONS} command as the keyword @samp{SECTIONS},
2708 followed by a series of symbol assignments and output section
2709 descriptions enclosed in curly braces.
2710
2711 The first line inside the @samp{SECTIONS} command of the above example
2712 sets the value of the special symbol @samp{.}, which is the location
2713 counter.  If you do not specify the address of an output section in some
2714 other way (other ways are described later), the address is set from the
2715 current value of the location counter.  The location counter is then
2716 incremented by the size of the output section.  At the start of the
2717 @samp{SECTIONS} command, the location counter has the value @samp{0}.
2718
2719 The second line defines an output section, @samp{.text}.  The colon is
2720 required syntax which may be ignored for now.  Within the curly braces
2721 after the output section name, you list the names of the input sections
2722 which should be placed into this output section.  The @samp{*} is a
2723 wildcard which matches any file name.  The expression @samp{*(.text)}
2724 means all @samp{.text} input sections in all input files.
2725
2726 Since the location counter is @samp{0x10000} when the output section
2727 @samp{.text} is defined, the linker will set the address of the
2728 @samp{.text} section in the output file to be @samp{0x10000}.
2729
2730 The remaining lines define the @samp{.data} and @samp{.bss} sections in
2731 the output file.  The linker will place the @samp{.data} output section
2732 at address @samp{0x8000000}.  After the linker places the @samp{.data}
2733 output section, the value of the location counter will be
2734 @samp{0x8000000} plus the size of the @samp{.data} output section.  The
2735 effect is that the linker will place the @samp{.bss} output section
2736 immediately after the @samp{.data} output section in memory.
2737
2738 The linker will ensure that each output section has the required
2739 alignment, by increasing the location counter if necessary.  In this
2740 example, the specified addresses for the @samp{.text} and @samp{.data}
2741 sections will probably satisfy any alignment constraints, but the linker
2742 may have to create a small gap between the @samp{.data} and @samp{.bss}
2743 sections.
2744
2745 That's it!  That's a simple and complete linker script.
2746
2747 @node Simple Commands
2748 @section Simple Linker Script Commands
2749 @cindex linker script simple commands
2750 In this section we describe the simple linker script commands.
2751
2752 @menu
2753 * Entry Point::                 Setting the entry point
2754 * File Commands::               Commands dealing with files
2755 @ifclear SingleFormat
2756 * Format Commands::             Commands dealing with object file formats
2757 @end ifclear
2758
2759 * Miscellaneous Commands::      Other linker script commands
2760 @end menu
2761
2762 @node Entry Point
2763 @subsection Setting the Entry Point
2764 @kindex ENTRY(@var{symbol})
2765 @cindex start of execution
2766 @cindex first instruction
2767 @cindex entry point
2768 The first instruction to execute in a program is called the @dfn{entry
2769 point}.  You can use the @code{ENTRY} linker script command to set the
2770 entry point.  The argument is a symbol name:
2771 @smallexample
2772 ENTRY(@var{symbol})
2773 @end smallexample
2774
2775 There are several ways to set the entry point.  The linker will set the
2776 entry point by trying each of the following methods in order, and
2777 stopping when one of them succeeds:
2778 @itemize @bullet
2779 @item
2780 the @samp{-e} @var{entry} command-line option;
2781 @item
2782 the @code{ENTRY(@var{symbol})} command in a linker script;
2783 @item
2784 the value of the symbol @code{start}, if defined;
2785 @item
2786 the address of the first byte of the @samp{.text} section, if present;
2787 @item
2788 The address @code{0}.
2789 @end itemize
2790
2791 @node File Commands
2792 @subsection Commands Dealing with Files
2793 @cindex linker script file commands
2794 Several linker script commands deal with files.
2795
2796 @table @code
2797 @item INCLUDE @var{filename}
2798 @kindex INCLUDE @var{filename}
2799 @cindex including a linker script
2800 Include the linker script @var{filename} at this point.  The file will
2801 be searched for in the current directory, and in any directory specified
2802 with the @option{-L} option.  You can nest calls to @code{INCLUDE} up to
2803 10 levels deep.
2804
2805 You can place @code{INCLUDE} directives at the top level, in @code{MEMORY} or
2806 @code{SECTIONS} commands, or in output section descriptions.
2807
2808 @item INPUT(@var{file}, @var{file}, @dots{})
2809 @itemx INPUT(@var{file} @var{file} @dots{})
2810 @kindex INPUT(@var{files})
2811 @cindex input files in linker scripts
2812 @cindex input object files in linker scripts
2813 @cindex linker script input object files
2814 The @code{INPUT} command directs the linker to include the named files
2815 in the link, as though they were named on the command line.
2816
2817 For example, if you always want to include @file{subr.o} any time you do
2818 a link, but you can't be bothered to put it on every link command line,
2819 then you can put @samp{INPUT (subr.o)} in your linker script.
2820
2821 In fact, if you like, you can list all of your input files in the linker
2822 script, and then invoke the linker with nothing but a @samp{-T} option.
2823
2824 In case a @dfn{sysroot prefix} is configured, and the filename starts
2825 with the @samp{/} character, and the script being processed was
2826 located inside the @dfn{sysroot prefix}, the filename will be looked
2827 for in the @dfn{sysroot prefix}.  Otherwise, the linker will try to
2828 open the file in the current directory.  If it is not found, the
2829 linker will search through the archive library search path.  See the
2830 description of @samp{-L} in @ref{Options,,Command Line Options}.
2831
2832 If you use @samp{INPUT (-l@var{file})}, @command{ld} will transform the
2833 name to @code{lib@var{file}.a}, as with the command line argument
2834 @samp{-l}.
2835
2836 When you use the @code{INPUT} command in an implicit linker script, the
2837 files will be included in the link at the point at which the linker
2838 script file is included.  This can affect archive searching.
2839
2840 @item GROUP(@var{file}, @var{file}, @dots{})
2841 @itemx GROUP(@var{file} @var{file} @dots{})
2842 @kindex GROUP(@var{files})
2843 @cindex grouping input files
2844 The @code{GROUP} command is like @code{INPUT}, except that the named
2845 files should all be archives, and they are searched repeatedly until no
2846 new undefined references are created.  See the description of @samp{-(}
2847 in @ref{Options,,Command Line Options}.
2848
2849 @item AS_NEEDED(@var{file}, @var{file}, @dots{})
2850 @itemx AS_NEEDED(@var{file} @var{file} @dots{})
2851 @kindex AS_NEEDED(@var{files})
2852 This construct can appear only inside of the @code{INPUT} or @code{GROUP}
2853 commands, among other filenames.  The files listed will be handled
2854 as if they appear directly in the @code{INPUT} or @code{GROUP} commands,
2855 with the exception of ELF shared libraries, that will be added only
2856 when they are actually needed.  This construct essentially enables
2857 @option{--as-needed} option for all the files listed inside of it
2858 and restores previous @option{--as-needed} resp. @option{--no-as-needed}
2859 setting afterwards.
2860
2861 @item OUTPUT(@var{filename})
2862 @kindex OUTPUT(@var{filename})
2863 @cindex output file name in linker script
2864 The @code{OUTPUT} command names the output file.  Using
2865 @code{OUTPUT(@var{filename})} in the linker script is exactly like using
2866 @samp{-o @var{filename}} on the command line (@pxref{Options,,Command
2867 Line Options}).  If both are used, the command line option takes
2868 precedence.
2869
2870 You can use the @code{OUTPUT} command to define a default name for the
2871 output file other than the usual default of @file{a.out}.
2872
2873 @item SEARCH_DIR(@var{path})
2874 @kindex SEARCH_DIR(@var{path})
2875 @cindex library search path in linker script
2876 @cindex archive search path in linker script
2877 @cindex search path in linker script
2878 The @code{SEARCH_DIR} command adds @var{path} to the list of paths where
2879 @command{ld} looks for archive libraries.  Using
2880 @code{SEARCH_DIR(@var{path})} is exactly like using @samp{-L @var{path}}
2881 on the command line (@pxref{Options,,Command Line Options}).  If both
2882 are used, then the linker will search both paths.  Paths specified using
2883 the command line option are searched first.
2884
2885 @item STARTUP(@var{filename})
2886 @kindex STARTUP(@var{filename})
2887 @cindex first input file
2888 The @code{STARTUP} command is just like the @code{INPUT} command, except
2889 that @var{filename} will become the first input file to be linked, as
2890 though it were specified first on the command line.  This may be useful
2891 when using a system in which the entry point is always the start of the
2892 first file.
2893 @end table
2894
2895 @ifclear SingleFormat
2896 @node Format Commands
2897 @subsection Commands Dealing with Object File Formats
2898 A couple of linker script commands deal with object file formats.
2899
2900 @table @code
2901 @item OUTPUT_FORMAT(@var{bfdname})
2902 @itemx OUTPUT_FORMAT(@var{default}, @var{big}, @var{little})
2903 @kindex OUTPUT_FORMAT(@var{bfdname})
2904 @cindex output file format in linker script
2905 The @code{OUTPUT_FORMAT} command names the BFD format to use for the
2906 output file (@pxref{BFD}).  Using @code{OUTPUT_FORMAT(@var{bfdname})} is
2907 exactly like using @samp{--oformat @var{bfdname}} on the command line
2908 (@pxref{Options,,Command Line Options}).  If both are used, the command
2909 line option takes precedence.
2910
2911 You can use @code{OUTPUT_FORMAT} with three arguments to use different
2912 formats based on the @samp{-EB} and @samp{-EL} command line options.
2913 This permits the linker script to set the output format based on the
2914 desired endianness.
2915
2916 If neither @samp{-EB} nor @samp{-EL} are used, then the output format
2917 will be the first argument, @var{default}.  If @samp{-EB} is used, the
2918 output format will be the second argument, @var{big}.  If @samp{-EL} is
2919 used, the output format will be the third argument, @var{little}.
2920
2921 For example, the default linker script for the MIPS ELF target uses this
2922 command:
2923 @smallexample
2924 OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
2925 @end smallexample
2926 This says that the default format for the output file is
2927 @samp{elf32-bigmips}, but if the user uses the @samp{-EL} command line
2928 option, the output file will be created in the @samp{elf32-littlemips}
2929 format.
2930
2931 @item TARGET(@var{bfdname})
2932 @kindex TARGET(@var{bfdname})
2933 @cindex input file format in linker script
2934 The @code{TARGET} command names the BFD format to use when reading input
2935 files.  It affects subsequent @code{INPUT} and @code{GROUP} commands.
2936 This command is like using @samp{-b @var{bfdname}} on the command line
2937 (@pxref{Options,,Command Line Options}).  If the @code{TARGET} command
2938 is used but @code{OUTPUT_FORMAT} is not, then the last @code{TARGET}
2939 command is also used to set the format for the output file.  @xref{BFD}.
2940 @end table
2941 @end ifclear
2942
2943 @node Miscellaneous Commands
2944 @subsection Other Linker Script Commands
2945 There are a few other linker scripts commands.
2946
2947 @table @code
2948 @item ASSERT(@var{exp}, @var{message})
2949 @kindex ASSERT
2950 @cindex assertion in linker script
2951 Ensure that @var{exp} is non-zero.  If it is zero, then exit the linker
2952 with an error code, and print @var{message}.
2953
2954 @item EXTERN(@var{symbol} @var{symbol} @dots{})
2955 @kindex EXTERN
2956 @cindex undefined symbol in linker script
2957 Force @var{symbol} to be entered in the output file as an undefined
2958 symbol.  Doing this may, for example, trigger linking of additional
2959 modules from standard libraries.  You may list several @var{symbol}s for
2960 each @code{EXTERN}, and you may use @code{EXTERN} multiple times.  This
2961 command has the same effect as the @samp{-u} command-line option.
2962
2963 @item FORCE_COMMON_ALLOCATION
2964 @kindex FORCE_COMMON_ALLOCATION
2965 @cindex common allocation in linker script
2966 This command has the same effect as the @samp{-d} command-line option:
2967 to make @command{ld} assign space to common symbols even if a relocatable
2968 output file is specified (@samp{-r}).
2969
2970 @item INHIBIT_COMMON_ALLOCATION
2971 @kindex INHIBIT_COMMON_ALLOCATION
2972 @cindex common allocation in linker script
2973 This command has the same effect as the @samp{--no-define-common}
2974 command-line option: to make @code{ld} omit the assignment of addresses
2975 to common symbols even for a non-relocatable output file.
2976
2977 @item INSERT [ AFTER | BEFORE ] @var{output_section}
2978 @kindex INSERT
2979 @cindex insert user script into default script
2980 This command is typically used in a script specified by @samp{-T} to
2981 augment the default @code{SECTIONS} with, for example, overlays.  It
2982 inserts all prior linker script statements after (or before)
2983 @var{output_section}, and also causes @samp{-T} to not override the
2984 default linker script.  The exact insertion point is as for orphan
2985 sections.  @xref{Location Counter}.  The insertion happens after the
2986 linker has mapped input sections to output sections.  Prior to the
2987 insertion, since @samp{-T} scripts are parsed before the default
2988 linker script, statements in the @samp{-T} script occur before the
2989 default linker script statements in the internal linker representation
2990 of the script.  In particular, input section assignments will be made
2991 to @samp{-T} output sections before those in the default script.  Here
2992 is an example of how a @samp{-T} script using @code{INSERT} might look:
2993
2994 @smallexample
2995 SECTIONS
2996 @{
2997   OVERLAY :
2998   @{
2999     .ov1 @{ ov1*(.text) @}
3000     .ov2 @{ ov2*(.text) @}
3001   @}
3002 @}
3003 INSERT AFTER .text;
3004 @end smallexample
3005
3006 @item NOCROSSREFS(@var{section} @var{section} @dots{})
3007 @kindex NOCROSSREFS(@var{sections})
3008 @cindex cross references
3009 This command may be used to tell @command{ld} to issue an error about any
3010 references among certain output sections.
3011
3012 In certain types of programs, particularly on embedded systems when
3013 using overlays, when one section is loaded into memory, another section
3014 will not be.  Any direct references between the two sections would be
3015 errors.  For example, it would be an error if code in one section called
3016 a function defined in the other section.
3017
3018 The @code{NOCROSSREFS} command takes a list of output section names.  If
3019 @command{ld} detects any cross references between the sections, it reports
3020 an error and returns a non-zero exit status.  Note that the
3021 @code{NOCROSSREFS} command uses output section names, not input section
3022 names.
3023
3024 @ifclear SingleFormat
3025 @item OUTPUT_ARCH(@var{bfdarch})
3026 @kindex OUTPUT_ARCH(@var{bfdarch})
3027 @cindex machine architecture
3028 @cindex architecture
3029 Specify a particular output machine architecture.  The argument is one
3030 of the names used by the BFD library (@pxref{BFD}).  You can see the
3031 architecture of an object file by using the @code{objdump} program with
3032 the @samp{-f} option.
3033 @end ifclear
3034 @end table
3035
3036 @node Assignments
3037 @section Assigning Values to Symbols
3038 @cindex assignment in scripts
3039 @cindex symbol definition, scripts
3040 @cindex variables, defining
3041 You may assign a value to a symbol in a linker script.  This will define
3042 the symbol and place it into the symbol table with a global scope.
3043
3044 @menu
3045 * Simple Assignments::          Simple Assignments
3046 * PROVIDE::                     PROVIDE
3047 * PROVIDE_HIDDEN::              PROVIDE_HIDDEN
3048 * Source Code Reference::       How to use a linker script defined symbol in source code
3049 @end menu
3050
3051 @node Simple Assignments
3052 @subsection Simple Assignments
3053
3054 You may assign to a symbol using any of the C assignment operators:
3055
3056 @table @code
3057 @item @var{symbol} = @var{expression} ;
3058 @itemx @var{symbol} += @var{expression} ;
3059 @itemx @var{symbol} -= @var{expression} ;
3060 @itemx @var{symbol} *= @var{expression} ;
3061 @itemx @var{symbol} /= @var{expression} ;
3062 @itemx @var{symbol} <<= @var{expression} ;
3063 @itemx @var{symbol} >>= @var{expression} ;
3064 @itemx @var{symbol} &= @var{expression} ;
3065 @itemx @var{symbol} |= @var{expression} ;
3066 @end table
3067
3068 The first case will define @var{symbol} to the value of
3069 @var{expression}.  In the other cases, @var{symbol} must already be
3070 defined, and the value will be adjusted accordingly.
3071
3072 The special symbol name @samp{.} indicates the location counter.  You
3073 may only use this within a @code{SECTIONS} command.  @xref{Location Counter}.
3074
3075 The semicolon after @var{expression} is required.
3076
3077 Expressions are defined below; see @ref{Expressions}.
3078
3079 You may write symbol assignments as commands in their own right, or as
3080 statements within a @code{SECTIONS} command, or as part of an output
3081 section description in a @code{SECTIONS} command.
3082
3083 The section of the symbol will be set from the section of the
3084 expression; for more information, see @ref{Expression Section}.
3085
3086 Here is an example showing the three different places that symbol
3087 assignments may be used:
3088
3089 @smallexample
3090 floating_point = 0;
3091 SECTIONS
3092 @{
3093   .text :
3094     @{
3095       *(.text)
3096       _etext = .;
3097     @}
3098   _bdata = (. + 3) & ~ 3;
3099   .data : @{ *(.data) @}
3100 @}
3101 @end smallexample
3102 @noindent
3103 In this example, the symbol @samp{floating_point} will be defined as
3104 zero.  The symbol @samp{_etext} will be defined as the address following
3105 the last @samp{.text} input section.  The symbol @samp{_bdata} will be
3106 defined as the address following the @samp{.text} output section aligned
3107 upward to a 4 byte boundary.
3108
3109 @node PROVIDE
3110 @subsection PROVIDE
3111 @cindex PROVIDE
3112 In some cases, it is desirable for a linker script to define a symbol
3113 only if it is referenced and is not defined by any object included in
3114 the link.  For example, traditional linkers defined the symbol
3115 @samp{etext}.  However, ANSI C requires that the user be able to use
3116 @samp{etext} as a function name without encountering an error.  The
3117 @code{PROVIDE} keyword may be used to define a symbol, such as
3118 @samp{etext}, only if it is referenced but not defined.  The syntax is
3119 @code{PROVIDE(@var{symbol} = @var{expression})}.
3120
3121 Here is an example of using @code{PROVIDE} to define @samp{etext}:
3122 @smallexample
3123 SECTIONS
3124 @{
3125   .text :
3126     @{
3127       *(.text)
3128       _etext = .;
3129       PROVIDE(etext = .);
3130     @}
3131 @}
3132 @end smallexample
3133
3134 In this example, if the program defines @samp{_etext} (with a leading
3135 underscore), the linker will give a multiple definition error.  If, on
3136 the other hand, the program defines @samp{etext} (with no leading
3137 underscore), the linker will silently use the definition in the program.
3138 If the program references @samp{etext} but does not define it, the
3139 linker will use the definition in the linker script.
3140
3141 @node PROVIDE_HIDDEN
3142 @subsection PROVIDE_HIDDEN
3143 @cindex PROVIDE_HIDDEN
3144 Similar to @code{PROVIDE}.  For ELF targeted ports, the symbol will be
3145 hidden and won't be exported.
3146
3147 @node Source Code Reference
3148 @subsection Source Code Reference
3149
3150 Accessing a linker script defined variable from source code is not
3151 intuitive.  In particular a linker script symbol is not equivalent to
3152 a variable declaration in a high level language, it is instead a
3153 symbol that does not have a value.
3154
3155 Before going further, it is important to note that compilers often
3156 transform names in the source code into different names when they are
3157 stored in the symbol table.  For example, Fortran compilers commonly
3158 prepend or append an underscore, and C++ performs extensive @samp{name
3159 mangling}.  Therefore there might be a discrepancy between the name
3160 of a variable as it is used in source code and the name of the same
3161 variable as it is defined in a linker script.  For example in C a
3162 linker script variable might be referred to as:
3163
3164 @smallexample
3165   extern int foo;
3166 @end smallexample
3167
3168 But in the linker script it might be defined as:
3169
3170 @smallexample
3171   _foo = 1000;
3172 @end smallexample
3173
3174 In the remaining examples however it is assumed that no name
3175 transformation has taken place.
3176
3177 When a symbol is declared in a high level language such as C, two
3178 things happen.  The first is that the compiler reserves enough space
3179 in the program's memory to hold the @emph{value} of the symbol.  The
3180 second is that the compiler creates an entry in the program's symbol
3181 table which holds the symbol's @emph{address}.  ie the symbol table
3182 contains the address of the block of memory holding the symbol's
3183 value.  So for example the following C declaration, at file scope:
3184
3185 @smallexample
3186   int foo = 1000;
3187 @end smallexample
3188
3189 creates a entry called @samp{foo} in the symbol table.  This entry
3190 holds the address of an @samp{int} sized block of memory where the
3191 number 1000 is initially stored.
3192
3193 When a program references a symbol the compiler generates code that
3194 first accesses the symbol table to find the address of the symbol's
3195 memory block and then code to read the value from that memory block.
3196 So:
3197
3198 @smallexample
3199   foo = 1;
3200 @end smallexample
3201
3202 looks up the symbol @samp{foo} in the symbol table, gets the address
3203 associated with this symbol and then writes the value 1 into that
3204 address.  Whereas:
3205
3206 @smallexample
3207   int * a = & foo;
3208 @end smallexample
3209
3210 looks up the symbol @samp{foo} in the symbol table, gets it address
3211 and then copies this address into the block of memory associated with
3212 the variable @samp{a}.
3213
3214 Linker scripts symbol declarations, by contrast, create an entry in
3215 the symbol table but do not assign any memory to them.  Thus they are
3216 an address without a value.  So for example the linker script definition:
3217
3218 @smallexample
3219   foo = 1000;
3220 @end smallexample
3221
3222 creates an entry in the symbol table called @samp{foo} which holds
3223 the address of memory location 1000, but nothing special is stored at
3224 address 1000.  This means that you cannot access the @emph{value} of a
3225 linker script defined symbol - it has no value - all you can do is
3226 access the @emph{address} of a linker script defined symbol.
3227
3228 Hence when you are using a linker script defined symbol in source code
3229 you should always take the address of the symbol, and never attempt to
3230 use its value.  For example suppose you want to copy the contents of a
3231 section of memory called .ROM into a section called .FLASH and the
3232 linker script contains these declarations:
3233
3234 @smallexample
3235 @group
3236   start_of_ROM   = .ROM;
3237   end_of_ROM     = .ROM + sizeof (.ROM) - 1;
3238   start_of_FLASH = .FLASH;
3239 @end group
3240 @end smallexample
3241
3242 Then the C source code to perform the copy would be:
3243
3244 @smallexample
3245 @group
3246   extern char start_of_ROM, end_of_ROM, start_of_FLASH;
3247
3248   memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM);
3249 @end group
3250 @end smallexample
3251
3252 Note the use of the @samp{&} operators.  These are correct.
3253
3254 @node SECTIONS
3255 @section SECTIONS Command
3256 @kindex SECTIONS
3257 The @code{SECTIONS} command tells the linker how to map input sections
3258 into output sections, and how to place the output sections in memory.
3259
3260 The format of the @code{SECTIONS} command is:
3261 @smallexample
3262 SECTIONS
3263 @{
3264   @var{sections-command}
3265   @var{sections-command}
3266   @dots{}
3267 @}
3268 @end smallexample
3269
3270 Each @var{sections-command} may of be one of the following:
3271
3272 @itemize @bullet
3273 @item
3274 an @code{ENTRY} command (@pxref{Entry Point,,Entry command})
3275 @item
3276 a symbol assignment (@pxref{Assignments})
3277 @item
3278 an output section description
3279 @item
3280 an overlay description
3281 @end itemize
3282
3283 The @code{ENTRY} command and symbol assignments are permitted inside the
3284 @code{SECTIONS} command for convenience in using the location counter in
3285 those commands.  This can also make the linker script easier to
3286 understand because you can use those commands at meaningful points in
3287 the layout of the output file.
3288
3289 Output section descriptions and overlay descriptions are described
3290 below.
3291
3292 If you do not use a @code{SECTIONS} command in your linker script, the
3293 linker will place each input section into an identically named output
3294 section in the order that the sections are first encountered in the
3295 input files.  If all input sections are present in the first file, for
3296 example, the order of sections in the output file will match the order
3297 in the first input file.  The first section will be at address zero.
3298
3299 @menu
3300 * Output Section Description::  Output section description
3301 * Output Section Name::         Output section name
3302 * Output Section Address::      Output section address
3303 * Input Section::               Input section description
3304 * Output Section Data::         Output section data
3305 * Output Section Keywords::     Output section keywords
3306 * Output Section Discarding::   Output section discarding
3307 * Output Section Attributes::   Output section attributes
3308 * Overlay Description::         Overlay description
3309 @end menu
3310
3311 @node Output Section Description
3312 @subsection Output Section Description
3313 The full description of an output section looks like this:
3314 @smallexample
3315 @group
3316 @var{section} [@var{address}] [(@var{type})] :
3317   [AT(@var{lma})] [ALIGN(@var{section_align})] [SUBALIGN(@var{subsection_align})]
3318   @{
3319     @var{output-section-command}
3320     @var{output-section-command}
3321     @dots{}
3322   @} [>@var{region}] [AT>@var{lma_region}] [:@var{phdr} :@var{phdr} @dots{}] [=@var{fillexp}]
3323 @end group
3324 @end smallexample
3325
3326 Most output sections do not use most of the optional section attributes.
3327
3328 The whitespace around @var{section} is required, so that the section
3329 name is unambiguous.  The colon and the curly braces are also required.
3330 The line breaks and other white space are optional.
3331
3332 Each @var{output-section-command} may be one of the following:
3333
3334 @itemize @bullet
3335 @item
3336 a symbol assignment (@pxref{Assignments})
3337 @item
3338 an input section description (@pxref{Input Section})
3339 @item
3340 data values to include directly (@pxref{Output Section Data})
3341 @item
3342 a special output section keyword (@pxref{Output Section Keywords})
3343 @end itemize
3344
3345 @node Output Section Name
3346 @subsection Output Section Name
3347 @cindex name, section
3348 @cindex section name
3349 The name of the output section is @var{section}.  @var{section} must
3350 meet the constraints of your output format.  In formats which only
3351 support a limited number of sections, such as @code{a.out}, the name
3352 must be one of the names supported by the format (@code{a.out}, for
3353 example, allows only @samp{.text}, @samp{.data} or @samp{.bss}). If the
3354 output format supports any number of sections, but with numbers and not
3355 names (as is the case for Oasys), the name should be supplied as a
3356 quoted numeric string.  A section name may consist of any sequence of
3357 characters, but a name which contains any unusual characters such as
3358 commas must be quoted.
3359
3360 The output section name @samp{/DISCARD/} is special; @ref{Output Section
3361 Discarding}.
3362
3363 @node Output Section Address
3364 @subsection Output Section Address
3365 @cindex address, section
3366 @cindex section address
3367 The @var{address} is an expression for the VMA (the virtual memory
3368 address) of the output section.  If you do not provide @var{address},
3369 the linker will set it based on @var{region} if present, or otherwise
3370 based on the current value of the location counter.
3371
3372 If you provide @var{address}, the address of the output section will be
3373 set to precisely that.  If you provide neither @var{address} nor
3374 @var{region}, then the address of the output section will be set to the
3375 current value of the location counter aligned to the alignment
3376 requirements of the output section.  The alignment requirement of the
3377 output section is the strictest alignment of any input section contained
3378 within the output section.
3379
3380 For example,
3381 @smallexample
3382 .text . : @{ *(.text) @}
3383 @end smallexample
3384 @noindent
3385 and
3386 @smallexample
3387 .text : @{ *(.text) @}
3388 @end smallexample
3389 @noindent
3390 are subtly different.  The first will set the address of the
3391 @samp{.text} output section to the current value of the location
3392 counter.  The second will set it to the current value of the location
3393 counter aligned to the strictest alignment of a @samp{.text} input
3394 section.
3395
3396 The @var{address} may be an arbitrary expression; @ref{Expressions}.
3397 For example, if you want to align the section on a 0x10 byte boundary,
3398 so that the lowest four bits of the section address are zero, you could
3399 do something like this:
3400 @smallexample
3401 .text ALIGN(0x10) : @{ *(.text) @}
3402 @end smallexample
3403 @noindent
3404 This works because @code{ALIGN} returns the current location counter
3405 aligned upward to the specified value.
3406
3407 Specifying @var{address} for a section will change the value of the
3408 location counter.
3409
3410 @node Input Section
3411 @subsection Input Section Description
3412 @cindex input sections
3413 @cindex mapping input sections to output sections
3414 The most common output section command is an input section description.
3415
3416 The input section description is the most basic linker script operation.
3417 You use output sections to tell the linker how to lay out your program
3418 in memory.  You use input section descriptions to tell the linker how to
3419 map the input files into your memory layout.
3420
3421 @menu
3422 * Input Section Basics::        Input section basics
3423 * Input Section Wildcards::     Input section wildcard patterns
3424 * Input Section Common::        Input section for common symbols
3425 * Input Section Keep::          Input section and garbage collection
3426 * Input Section Example::       Input section example
3427 @end menu
3428
3429 @node Input Section Basics
3430 @subsubsection Input Section Basics
3431 @cindex input section basics
3432 An input section description consists of a file name optionally followed
3433 by a list of section names in parentheses.
3434
3435 The file name and the section name may be wildcard patterns, which we
3436 describe further below (@pxref{Input Section Wildcards}).
3437
3438 The most common input section description is to include all input
3439 sections with a particular name in the output section.  For example, to
3440 include all input @samp{.text} sections, you would write:
3441 @smallexample
3442 *(.text)
3443 @end smallexample
3444 @noindent
3445 Here the @samp{*} is a wildcard which matches any file name.  To exclude a list
3446 of files from matching the file name wildcard, EXCLUDE_FILE may be used to
3447 match all files except the ones specified in the EXCLUDE_FILE list.  For
3448 example:
3449 @smallexample
3450 *(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)
3451 @end smallexample
3452 will cause all .ctors sections from all files except @file{crtend.o} and
3453 @file{otherfile.o} to be included.
3454
3455 There are two ways to include more than one section:
3456 @smallexample
3457 *(.text .rdata)
3458 *(.text) *(.rdata)
3459 @end smallexample
3460 @noindent
3461 The difference between these is the order in which the @samp{.text} and
3462 @samp{.rdata} input sections will appear in the output section.  In the
3463 first example, they will be intermingled, appearing in the same order as
3464 they are found in the linker input.  In the second example, all
3465 @samp{.text} input sections will appear first, followed by all
3466 @samp{.rdata} input sections.
3467
3468 You can specify a file name to include sections from a particular file.
3469 You would do this if one or more of your files contain special data that
3470 needs to be at a particular location in memory.  For example:
3471 @smallexample
3472 data.o(.data)
3473 @end smallexample
3474
3475 You can also specify files within archives by writing a pattern
3476 matching the archive, a colon, then the pattern matching the file,
3477 with no whitespace around the colon.
3478
3479 @table @samp
3480 @item archive:file
3481 matches file within archive
3482 @item archive:
3483 matches the whole archive
3484 @item :file
3485 matches file but not one in an archive
3486 @end table
3487
3488 Either one or both of @samp{archive} and @samp{file} can contain shell
3489 wildcards.  On DOS based file systems, the linker will assume that a
3490 single letter followed by a colon is a drive specifier, so
3491 @samp{c:myfile.o} is a simple file specification, not @samp{myfile.o}
3492 within an archive called @samp{c}.  @samp{archive:file} filespecs may
3493 also be used within an @code{EXCLUDE_FILE} list, but may not appear in
3494 other linker script contexts.  For instance, you cannot extract a file
3495 from an archive by using @samp{archive:file} in an @code{INPUT}
3496 command.
3497
3498 If you use a file name without a list of sections, then all sections in
3499 the input file will be included in the output section.  This is not
3500 commonly done, but it may by useful on occasion.  For example:
3501 @smallexample
3502 data.o
3503 @end smallexample
3504
3505 When you use a file name which is not an @samp{archive:file} specifier
3506 and does not contain any wild card
3507 characters, the linker will first see if you also specified the file
3508 name on the linker command line or in an @code{INPUT} command.  If you
3509 did not, the linker will attempt to open the file as an input file, as
3510 though it appeared on the command line.  Note that this differs from an
3511 @code{INPUT} command, because the linker will not search for the file in
3512 the archive search path.
3513
3514 @node Input Section Wildcards
3515 @subsubsection Input Section Wildcard Patterns
3516 @cindex input section wildcards
3517 @cindex wildcard file name patterns
3518 @cindex file name wildcard patterns
3519 @cindex section name wildcard patterns
3520 In an input section description, either the file name or the section
3521 name or both may be wildcard patterns.
3522
3523 The file name of @samp{*} seen in many examples is a simple wildcard
3524 pattern for the file name.
3525
3526 The wildcard patterns are like those used by the Unix shell.
3527
3528 @table @samp
3529 @item *
3530 matches any number of characters
3531 @item ?
3532 matches any single character
3533 @item [@var{chars}]
3534 matches a single instance of any of the @var{chars}; the @samp{-}
3535 character may be used to specify a range of characters, as in
3536 @samp{[a-z]} to match any lower case letter
3537 @item \
3538 quotes the following character
3539 @end table
3540
3541 When a file name is matched with a wildcard, the wildcard characters
3542 will not match a @samp{/} character (used to separate directory names on
3543 Unix).  A pattern consisting of a single @samp{*} character is an
3544 exception; it will always match any file name, whether it contains a
3545 @samp{/} or not.  In a section name, the wildcard characters will match
3546 a @samp{/} character.
3547
3548 File name wildcard patterns only match files which are explicitly
3549 specified on the command line or in an @code{INPUT} command.  The linker
3550 does not search directories to expand wildcards.
3551
3552 If a file name matches more than one wildcard pattern, or if a file name
3553 appears explicitly and is also matched by a wildcard pattern, the linker
3554 will use the first match in the linker script.  For example, this
3555 sequence of input section descriptions is probably in error, because the
3556 @file{data.o} rule will not be used:
3557 @smallexample
3558 .data : @{ *(.data) @}
3559 .data1 : @{ data.o(.data) @}
3560 @end smallexample
3561
3562 @cindex SORT_BY_NAME
3563 Normally, the linker will place files and sections matched by wildcards
3564 in the order in which they are seen during the link.  You can change
3565 this by using the @code{SORT_BY_NAME} keyword, which appears before a wildcard
3566 pattern in parentheses (e.g., @code{SORT_BY_NAME(.text*)}).  When the
3567 @code{SORT_BY_NAME} keyword is used, the linker will sort the files or sections
3568 into ascending order by name before placing them in the output file.
3569
3570 @cindex SORT_BY_ALIGNMENT
3571 @code{SORT_BY_ALIGNMENT} is very similar to @code{SORT_BY_NAME}. The
3572 difference is @code{SORT_BY_ALIGNMENT} will sort sections into
3573 ascending order by alignment before placing them in the output file.
3574
3575 @cindex SORT
3576 @code{SORT} is an alias for @code{SORT_BY_NAME}.
3577
3578 When there are nested section sorting commands in linker script, there
3579 can be at most 1 level of nesting for section sorting commands.
3580
3581 @enumerate
3582 @item
3583 @code{SORT_BY_NAME} (@code{SORT_BY_ALIGNMENT} (wildcard section pattern)).
3584 It will sort the input sections by name first, then by alignment if 2
3585 sections have the same name.
3586 @item
3587 @code{SORT_BY_ALIGNMENT} (@code{SORT_BY_NAME} (wildcard section pattern)).
3588 It will sort the input sections by alignment first, then by name if 2
3589 sections have the same alignment.
3590 @item
3591 @code{SORT_BY_NAME} (@code{SORT_BY_NAME} (wildcard section pattern)) is
3592 treated the same as @code{SORT_BY_NAME} (wildcard section pattern).
3593 @item
3594 @code{SORT_BY_ALIGNMENT} (@code{SORT_BY_ALIGNMENT} (wildcard section pattern))
3595 is treated the same as @code{SORT_BY_ALIGNMENT} (wildcard section pattern).
3596 @item
3597 All other nested section sorting commands are invalid.
3598 @end enumerate
3599
3600 When both command line section sorting option and linker script
3601 section sorting command are used, section sorting command always
3602 takes precedence over the command line option.
3603
3604 If the section sorting command in linker script isn't nested, the
3605 command line option will make the section sorting command to be
3606 treated as nested sorting command.
3607
3608 @enumerate
3609 @item
3610 @code{SORT_BY_NAME} (wildcard section pattern ) with
3611 @option{--sort-sections alignment} is equivalent to
3612 @code{SORT_BY_NAME} (@code{SORT_BY_ALIGNMENT} (wildcard section pattern)).
3613 @item
3614 @code{SORT_BY_ALIGNMENT} (wildcard section pattern) with
3615 @option{--sort-section name} is equivalent to
3616 @code{SORT_BY_ALIGNMENT} (@code{SORT_BY_NAME} (wildcard section pattern)).
3617 @end enumerate
3618
3619 If the section sorting command in linker script is nested, the
3620 command line option will be ignored.
3621
3622 If you ever get confused about where input sections are going, use the
3623 @samp{-M} linker option to generate a map file.  The map file shows
3624 precisely how input sections are mapped to output sections.
3625
3626 This example shows how wildcard patterns might be used to partition
3627 files.  This linker script directs the linker to place all @samp{.text}
3628 sections in @samp{.text} and all @samp{.bss} sections in @samp{.bss}.
3629 The linker will place the @samp{.data} section from all files beginning
3630 with an upper case character in @samp{.DATA}; for all other files, the
3631 linker will place the @samp{.data} section in @samp{.data}.
3632 @smallexample
3633 @group
3634 SECTIONS @{
3635   .text : @{ *(.text) @}
3636   .DATA : @{ [A-Z]*(.data) @}
3637   .data : @{ *(.data) @}
3638   .bss : @{ *(.bss) @}
3639 @}
3640 @end group
3641 @end smallexample
3642
3643 @node Input Section Common
3644 @subsubsection Input Section for Common Symbols
3645 @cindex common symbol placement
3646 @cindex uninitialized data placement
3647 A special notation is needed for common symbols, because in many object
3648 file formats common symbols do not have a particular input section.  The
3649 linker treats common symbols as though they are in an input section
3650 named @samp{COMMON}.
3651
3652 You may use file names with the @samp{COMMON} section just as with any
3653 other input sections.  You can use this to place common symbols from a
3654 particular input file in one section while common symbols from other
3655 input files are placed in another section.
3656
3657 In most cases, common symbols in input files will be placed in the
3658 @samp{.bss} section in the output file.  For example:
3659 @smallexample
3660 .bss @{ *(.bss) *(COMMON) @}
3661 @end smallexample
3662
3663 @cindex scommon section
3664 @cindex small common symbols
3665 Some object file formats have more than one type of common symbol.  For
3666 example, the MIPS ELF object file format distinguishes standard common
3667 symbols and small common symbols.  In this case, the linker will use a
3668 different special section name for other types of common symbols.  In
3669 the case of MIPS ELF, the linker uses @samp{COMMON} for standard common
3670 symbols and @samp{.scommon} for small common symbols.  This permits you
3671 to map the different types of common symbols into memory at different
3672 locations.
3673
3674 @cindex [COMMON]
3675 You will sometimes see @samp{[COMMON]} in old linker scripts.  This
3676 notation is now considered obsolete.  It is equivalent to
3677 @samp{*(COMMON)}.
3678
3679 @node Input Section Keep
3680 @subsubsection Input Section and Garbage Collection
3681 @cindex KEEP
3682 @cindex garbage collection
3683 When link-time garbage collection is in use (@samp{--gc-sections}),
3684 it is often useful to mark sections that should not be eliminated.
3685 This is accomplished by surrounding an input section's wildcard entry
3686 with @code{KEEP()}, as in @code{KEEP(*(.init))} or
3687 @code{KEEP(SORT_BY_NAME(*)(.ctors))}.
3688
3689 @node Input Section Example
3690 @subsubsection Input Section Example
3691 The following example is a complete linker script.  It tells the linker
3692 to read all of the sections from file @file{all.o} and place them at the
3693 start of output section @samp{outputa} which starts at location
3694 @samp{0x10000}.  All of section @samp{.input1} from file @file{foo.o}
3695 follows immediately, in the same output section.  All of section
3696 @samp{.input2} from @file{foo.o} goes into output section
3697 @samp{outputb}, followed by section @samp{.input1} from @file{foo1.o}.
3698 All of the remaining @samp{.input1} and @samp{.input2} sections from any
3699 files are written to output section @samp{outputc}.
3700
3701 @smallexample
3702 @group
3703 SECTIONS @{
3704   outputa 0x10000 :
3705     @{
3706     all.o
3707     foo.o (.input1)
3708     @}
3709 @end group
3710 @group
3711   outputb :
3712     @{
3713     foo.o (.input2)
3714     foo1.o (.input1)
3715     @}
3716 @end group
3717 @group
3718   outputc :
3719     @{
3720     *(.input1)
3721     *(.input2)
3722     @}
3723 @}
3724 @end group
3725 @end smallexample
3726
3727 @node Output Section Data
3728 @subsection Output Section Data
3729 @cindex data
3730 @cindex section data
3731 @cindex output section data
3732 @kindex BYTE(@var{expression})
3733 @kindex SHORT(@var{expression})
3734 @kindex LONG(@var{expression})
3735 @kindex QUAD(@var{expression})
3736 @kindex SQUAD(@var{expression})
3737 You can include explicit bytes of data in an output section by using
3738 @code{BYTE}, @code{SHORT}, @code{LONG}, @code{QUAD}, or @code{SQUAD} as
3739 an output section command.  Each keyword is followed by an expression in
3740 parentheses providing the value to store (@pxref{Expressions}).  The
3741 value of the expression is stored at the current value of the location
3742 counter.
3743
3744 The @code{BYTE}, @code{SHORT}, @code{LONG}, and @code{QUAD} commands
3745 store one, two, four, and eight bytes (respectively).  After storing the
3746 bytes, the location counter is incremented by the number of bytes
3747 stored.
3748
3749 For example, this will store the byte 1 followed by the four byte value
3750 of the symbol @samp{addr}:
3751 @smallexample
3752 BYTE(1)
3753 LONG(addr)
3754 @end smallexample
3755
3756 When using a 64 bit host or target, @code{QUAD} and @code{SQUAD} are the
3757 same; they both store an 8 byte, or 64 bit, value.  When both host and
3758 target are 32 bits, an expression is computed as 32 bits.  In this case
3759 @code{QUAD} stores a 32 bit value zero extended to 64 bits, and
3760 @code{SQUAD} stores a 32 bit value sign extended to 64 bits.
3761
3762 If the object file format of the output file has an explicit endianness,
3763 which is the normal case, the value will be stored in that endianness.
3764 When the object file format does not have an explicit endianness, as is
3765 true of, for example, S-records, the value will be stored in the
3766 endianness of the first input object file.
3767
3768 Note---these commands only work inside a section description and not
3769 between them, so the following will produce an error from the linker:
3770 @smallexample
3771 SECTIONS @{@ .text : @{@ *(.text) @}@ LONG(1) .data : @{@ *(.data) @}@ @}@
3772 @end smallexample
3773 whereas this will work:
3774 @smallexample
3775 SECTIONS @{@ .text : @{@ *(.text) ; LONG(1) @}@ .data : @{@ *(.data) @}@ @}@
3776 @end smallexample
3777
3778 @kindex FILL(@var{expression})
3779 @cindex holes, filling
3780 @cindex unspecified memory
3781 You may use the @code{FILL} command to set the fill pattern for the
3782 current section.  It is followed by an expression in parentheses.  Any
3783 otherwise unspecified regions of memory within the section (for example,
3784 gaps left due to the required alignment of input sections) are filled
3785 with the value of the expression, repeated as
3786 necessary.  A @code{FILL} statement covers memory locations after the
3787 point at which it occurs in the section definition; by including more
3788 than one @code{FILL} statement, you can have different fill patterns in
3789 different parts of an output section.
3790
3791 This example shows how to fill unspecified regions of memory with the
3792 value @samp{0x90}:
3793 @smallexample
3794 FILL(0x90909090)
3795 @end smallexample
3796
3797 The @code{FILL} command is similar to the @samp{=@var{fillexp}} output
3798 section attribute, but it only affects the
3799 part of the section following the @code{FILL} command, rather than the
3800 entire section.  If both are used, the @code{FILL} command takes
3801 precedence.  @xref{Output Section Fill}, for details on the fill
3802 expression.
3803
3804 @node Output Section Keywords
3805 @subsection Output Section Keywords
3806 There are a couple of keywords which can appear as output section
3807 commands.
3808
3809 @table @code
3810 @kindex CREATE_OBJECT_SYMBOLS
3811 @cindex input filename symbols
3812 @cindex filename symbols
3813 @item CREATE_OBJECT_SYMBOLS
3814 The command tells the linker to create a symbol for each input file.
3815 The name of each symbol will be the name of the corresponding input
3816 file.  The section of each symbol will be the output section in which
3817 the @code{CREATE_OBJECT_SYMBOLS} command appears.
3818
3819 This is conventional for the a.out object file format.  It is not
3820 normally used for any other object file format.
3821
3822 @kindex CONSTRUCTORS
3823 @cindex C++ constructors, arranging in link
3824 @cindex constructors, arranging in link
3825 @item CONSTRUCTORS
3826 When linking using the a.out object file format, the linker uses an
3827 unusual set construct to support C++ global constructors and
3828 destructors.  When linking object file formats which do not support
3829 arbitrary sections, such as ECOFF and XCOFF, the linker will
3830 automatically recognize C++ global constructors and destructors by name.
3831 For these object file formats, the @code{CONSTRUCTORS} command tells the
3832 linker to place constructor information in the output section where the
3833 @code{CONSTRUCTORS} command appears.  The @code{CONSTRUCTORS} command is
3834 ignored for other object file formats.
3835
3836 The symbol @w{@code{__CTOR_LIST__}} marks the start of the global
3837 constructors, and the symbol @w{@code{__CTOR_END__}} marks the end.
3838 Similarly, @w{@code{__DTOR_LIST__}} and @w{@code{__DTOR_END__}} mark
3839 the start and end of the global destructors.  The
3840 first word in the list is the number of entries, followed by the address
3841 of each constructor or destructor, followed by a zero word.  The
3842 compiler must arrange to actually run the code.  For these object file
3843 formats @sc{gnu} C++ normally calls constructors from a subroutine
3844 @code{__main}; a call to @code{__main} is automatically inserted into
3845 the startup code for @code{main}.  @sc{gnu} C++ normally runs
3846 destructors either by using @code{atexit}, or directly from the function
3847 @code{exit}.
3848
3849 For object file formats such as @code{COFF} or @code{ELF} which support
3850 arbitrary section names, @sc{gnu} C++ will normally arrange to put the
3851 addresses of global constructors and destructors into the @code{.ctors}
3852 and @code{.dtors} sections.  Placing the following sequence into your
3853 linker script will build the sort of table which the @sc{gnu} C++
3854 runtime code expects to see.
3855
3856 @smallexample
3857       __CTOR_LIST__ = .;
3858       LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
3859       *(.ctors)
3860       LONG(0)
3861       __CTOR_END__ = .;
3862       __DTOR_LIST__ = .;
3863       LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
3864       *(.dtors)
3865       LONG(0)
3866       __DTOR_END__ = .;
3867 @end smallexample
3868
3869 If you are using the @sc{gnu} C++ support for initialization priority,
3870 which provides some control over the order in which global constructors
3871 are run, you must sort the constructors at link time to ensure that they
3872 are executed in the correct order.  When using the @code{CONSTRUCTORS}
3873 command, use @samp{SORT_BY_NAME(CONSTRUCTORS)} instead.  When using the
3874 @code{.ctors} and @code{.dtors} sections, use @samp{*(SORT_BY_NAME(.ctors))} and
3875 @samp{*(SORT_BY_NAME(.dtors))} instead of just @samp{*(.ctors)} and
3876 @samp{*(.dtors)}.
3877
3878 Normally the compiler and linker will handle these issues automatically,
3879 and you will not need to concern yourself with them.  However, you may
3880 need to consider this if you are using C++ and writing your own linker
3881 scripts.
3882
3883 @end table
3884
3885 @node Output Section Discarding
3886 @subsection Output Section Discarding
3887 @cindex discarding sections
3888 @cindex sections, discarding
3889 @cindex removing sections
3890 The linker will not create output sections with no contents.  This is
3891 for convenience when referring to input sections that may or may not
3892 be present in any of the input files.  For example:
3893 @smallexample
3894 .foo : @{ *(.foo) @}
3895 @end smallexample
3896 @noindent
3897 will only create a @samp{.foo} section in the output file if there is a
3898 @samp{.foo} section in at least one input file, and if the input
3899 sections are not all empty.  Other link script directives that allocate
3900 space in an output section will also create the output section.
3901
3902 The linker will ignore address assignments (@pxref{Output Section Address})
3903 on discarded output sections, except when the linker script defines
3904 symbols in the output section.  In that case the linker will obey
3905 the address assignments, possibly advancing dot even though the
3906 section is discarded.
3907
3908 @cindex /DISCARD/
3909 The special output section name @samp{/DISCARD/} may be used to discard
3910 input sections.  Any input sections which are assigned to an output
3911 section named @samp{/DISCARD/} are not included in the output file.
3912
3913 @node Output Section Attributes
3914 @subsection Output Section Attributes
3915 @cindex output section attributes
3916 We showed above that the full description of an output section looked
3917 like this:
3918 @smallexample
3919 @group
3920 @var{section} [@var{address}] [(@var{type})] :
3921   [AT(@var{lma})] [ALIGN(@var{section_align})] [SUBALIGN(@var{subsection_align})]
3922   @{
3923     @var{output-section-command}
3924     @var{output-section-command}
3925     @dots{}
3926   @} [>@var{region}] [AT>@var{lma_region}] [:@var{phdr} :@var{phdr} @dots{}] [=@var{fillexp}]
3927 @end group
3928 @end smallexample
3929 We've already described @var{section}, @var{address}, and
3930 @var{output-section-command}.  In this section we will describe the
3931 remaining section attributes.
3932
3933 @menu
3934 * Output Section Type::         Output section type
3935 * Output Section LMA::          Output section LMA
3936 * Forced Output Alignment::     Forced Output Alignment
3937 * Forced Input Alignment::      Forced Input Alignment
3938 * Output Section Region::       Output section region
3939 * Output Section Phdr::         Output section phdr
3940 * Output Section Fill::         Output section fill
3941 @end menu
3942
3943 @node Output Section Type
3944 @subsubsection Output Section Type
3945 Each output section may have a type.  The type is a keyword in
3946 parentheses.  The following types are defined:
3947
3948 @table @code
3949 @item NOLOAD
3950 The section should be marked as not loadable, so that it will not be
3951 loaded into memory when the program is run.
3952 @item DSECT
3953 @itemx COPY
3954 @itemx INFO
3955 @itemx OVERLAY
3956 These type names are supported for backward compatibility, and are
3957 rarely used.  They all have the same effect: the section should be
3958 marked as not allocatable, so that no memory is allocated for the
3959 section when the program is run.
3960 @end table
3961
3962 @kindex NOLOAD
3963 @cindex prevent unnecessary loading
3964 @cindex loading, preventing
3965 The linker normally sets the attributes of an output section based on
3966 the input sections which map into it.  You can override this by using
3967 the section type.  For example, in the script sample below, the
3968 @samp{ROM} section is addressed at memory location @samp{0} and does not
3969 need to be loaded when the program is run.  The contents of the
3970 @samp{ROM} section will appear in the linker output file as usual.
3971 @smallexample
3972 @group
3973 SECTIONS @{
3974   ROM 0 (NOLOAD) : @{ @dots{} @}
3975   @dots{}
3976 @}
3977 @end group
3978 @end smallexample
3979
3980 @node Output Section LMA
3981 @subsubsection Output Section LMA
3982 @kindex AT>@var{lma_region}
3983 @kindex AT(@var{lma})
3984 @cindex load address
3985 @cindex section load address
3986 Every section has a virtual address (VMA) and a load address (LMA); see
3987 @ref{Basic Script Concepts}.  The address expression which may appear in
3988 an output section description sets the VMA (@pxref{Output Section
3989 Address}).
3990
3991 The expression @var{lma} that follows the @code{AT} keyword specifies
3992 the load address of the section.
3993
3994 Alternatively, with @samp{AT>@var{lma_region}} expression, you may
3995 specify a memory region for the section's load address. @xref{MEMORY}.
3996 Note that if the section has not had a VMA assigned to it then the
3997 linker will use the @var{lma_region} as the VMA region as well.
3998
3999 If neither @code{AT} nor @code{AT>} is specified for an allocatable
4000 section, the linker will set the LMA such that the difference between
4001 VMA and LMA for the section is the same as the preceding output
4002 section in the same region.  If there is no preceding output section
4003 or the section is not allocatable, the linker will set the LMA equal
4004 to the VMA.
4005 @xref{Output Section Region}.
4006
4007 @cindex ROM initialized data
4008 @cindex initialized data in ROM
4009 This feature is designed to make it easy to build a ROM image.  For
4010 example, the following linker script creates three output sections: one
4011 called @samp{.text}, which starts at @code{0x1000}, one called
4012 @samp{.mdata}, which is loaded at the end of the @samp{.text} section
4013 even though its VMA is @code{0x2000}, and one called @samp{.bss} to hold
4014 uninitialized data at address @code{0x3000}.  The symbol @code{_data} is
4015 defined with the value @code{0x2000}, which shows that the location
4016 counter holds the VMA value, not the LMA value.
4017
4018 @smallexample
4019 @group
4020 SECTIONS
4021   @{
4022   .text 0x1000 : @{ *(.text) _etext = . ; @}
4023   .mdata 0x2000 :
4024     AT ( ADDR (.text) + SIZEOF (.text) )
4025     @{ _data = . ; *(.data); _edata = . ;  @}
4026   .bss 0x3000 :
4027     @{ _bstart = . ;  *(.bss) *(COMMON) ; _bend = . ;@}
4028 @}
4029 @end group
4030 @end smallexample
4031
4032 The run-time initialization code for use with a program generated with
4033 this linker script would include something like the following, to copy
4034 the initialized data from the ROM image to its runtime address.  Notice
4035 how this code takes advantage of the symbols defined by the linker
4036 script.
4037
4038 @smallexample
4039 @group
4040 extern char _etext, _data, _edata, _bstart, _bend;
4041 char *src = &_etext;
4042 char *dst = &_data;
4043
4044 /* ROM has data at end of text; copy it. */
4045 while (dst < &_edata) @{
4046   *dst++ = *src++;
4047 @}
4048
4049 /* Zero bss */
4050 for (dst = &_bstart; dst< &_bend; dst++)
4051   *dst = 0;
4052 @end group
4053 @end smallexample
4054
4055 @node Forced Output Alignment
4056 @subsubsection Forced Output Alignment
4057 @kindex ALIGN(@var{section_align})
4058 @cindex forcing output section alignment
4059 @cindex output section alignment
4060 You can increase an output section's alignment by using ALIGN.
4061
4062 @node Forced Input Alignment
4063 @subsubsection Forced Input Alignment
4064 @kindex SUBALIGN(@var{subsection_align})
4065 @cindex forcing input section alignment
4066 @cindex input section alignment
4067 You can force input section alignment within an output section by using
4068 SUBALIGN.  The value specified overrides any alignment given by input
4069 sections, whether larger or smaller.
4070
4071 @node Output Section Region
4072 @subsubsection Output Section Region
4073 @kindex >@var{region}
4074 @cindex section, assigning to memory region
4075 @cindex memory regions and sections
4076 You can assign a section to a previously defined region of memory by
4077 using @samp{>@var{region}}.  @xref{MEMORY}.
4078
4079 Here is a simple example:
4080 @smallexample
4081 @group
4082 MEMORY @{ rom : ORIGIN = 0x1000, LENGTH = 0x1000 @}
4083 SECTIONS @{ ROM : @{ *(.text) @} >rom @}
4084 @end group
4085 @end smallexample
4086
4087 @node Output Section Phdr
4088 @subsubsection Output Section Phdr
4089 @kindex :@var{phdr}
4090 @cindex section, assigning to program header
4091 @cindex program headers and sections
4092 You can assign a section to a previously defined program segment by
4093 using @samp{:@var{phdr}}.  @xref{PHDRS}.  If a section is assigned to
4094 one or more segments, then all subsequent allocated sections will be
4095 assigned to those segments as well, unless they use an explicitly
4096 @code{:@var{phdr}} modifier.  You can use @code{:NONE} to tell the
4097 linker to not put the section in any segment at all.
4098
4099 Here is a simple example:
4100 @smallexample
4101 @group
4102 PHDRS @{ text PT_LOAD ; @}
4103 SECTIONS @{ .text : @{ *(.text) @} :text @}
4104 @end group
4105 @end smallexample
4106
4107 @node Output Section Fill
4108 @subsubsection Output Section Fill
4109 @kindex =@var{fillexp}
4110 @cindex section fill pattern
4111 @cindex fill pattern, entire section
4112 You can set the fill pattern for an entire section by using
4113 @samp{=@var{fillexp}}.  @var{fillexp} is an expression
4114 (@pxref{Expressions}).  Any otherwise unspecified regions of memory
4115 within the output section (for example, gaps left due to the required
4116 alignment of input sections) will be filled with the value, repeated as
4117 necessary.  If the fill expression is a simple hex number, ie. a string
4118 of hex digit starting with @samp{0x} and without a trailing @samp{k} or @samp{M}, then
4119 an arbitrarily long sequence of hex digits can be used to specify the
4120 fill pattern;  Leading zeros become part of the pattern too.  For all
4121 other cases, including extra parentheses or a unary @code{+}, the fill
4122 pattern is the four least significant bytes of the value of the
4123 expression.  In all cases, the number is big-endian.
4124
4125 You can also change the fill value with a @code{FILL} command in the
4126 output section commands; (@pxref{Output Section Data}).
4127
4128 Here is a simple example:
4129 @smallexample
4130 @group
4131 SECTIONS @{ .text : @{ *(.text) @} =0x90909090 @}
4132 @end group
4133 @end smallexample
4134
4135 @node Overlay Description
4136 @subsection Overlay Description
4137 @kindex OVERLAY
4138 @cindex overlays
4139 An overlay description provides an easy way to describe sections which
4140 are to be loaded as part of a single memory image but are to be run at
4141 the same memory address.  At run time, some sort of overlay manager will
4142 copy the overlaid sections in and out of the runtime memory address as
4143 required, perhaps by simply manipulating addressing bits.  This approach
4144 can be useful, for example, when a certain region of memory is faster
4145 than another.
4146
4147 Overlays are described using the @code{OVERLAY} command.  The
4148 @code{OVERLAY} command is used within a @code{SECTIONS} command, like an
4149 output section description.  The full syntax of the @code{OVERLAY}
4150 command is as follows:
4151 @smallexample
4152 @group
4153 OVERLAY [@var{start}] : [NOCROSSREFS] [AT ( @var{ldaddr} )]
4154   @{
4155     @var{secname1}
4156       @{
4157         @var{output-section-command}
4158         @var{output-section-command}
4159         @dots{}
4160       @} [:@var{phdr}@dots{}] [=@var{fill}]
4161     @var{secname2}
4162       @{
4163         @var{output-section-command}
4164         @var{output-section-command}
4165         @dots{}
4166       @} [:@var{phdr}@dots{}] [=@var{fill}]
4167     @dots{}
4168   @} [>@var{region}] [:@var{phdr}@dots{}] [=@var{fill}]
4169 @end group
4170 @end smallexample
4171
4172 Everything is optional except @code{OVERLAY} (a keyword), and each
4173 section must have a name (@var{secname1} and @var{secname2} above).  The
4174 section definitions within the @code{OVERLAY} construct are identical to
4175 those within the general @code{SECTIONS} contruct (@pxref{SECTIONS}),
4176 except that no addresses and no memory regions may be defined for
4177 sections within an @code{OVERLAY}.
4178
4179 The sections are all defined with the same starting address.  The load
4180 addresses of the sections are arranged such that they are consecutive in
4181 memory starting at the load address used for the @code{OVERLAY} as a
4182 whole (as with normal section definitions, the load address is optional,
4183 and defaults to the start address; the start address is also optional,
4184 and defaults to the current value of the location counter).
4185
4186 If the @code{NOCROSSREFS} keyword is used, and there any references
4187 among the sections, the linker will report an error.  Since the sections
4188 all run at the same address, it normally does not make sense for one
4189 section to refer directly to another.  @xref{Miscellaneous Commands,
4190 NOCROSSREFS}.
4191
4192 For each section within the @code{OVERLAY}, the linker automatically
4193 provides two symbols.  The symbol @code{__load_start_@var{secname}} is
4194 defined as the starting load address of the section.  The symbol
4195 @code{__load_stop_@var{secname}} is defined as the final load address of
4196 the section.  Any characters within @var{secname} which are not legal
4197 within C identifiers are removed.  C (or assembler) code may use these
4198 symbols to move the overlaid sections around as necessary.
4199
4200 At the end of the overlay, the value of the location counter is set to
4201 the start address of the overlay plus the size of the largest section.
4202
4203 Here is an example.  Remember that this would appear inside a
4204 @code{SECTIONS} construct.
4205 @smallexample
4206 @group
4207   OVERLAY 0x1000 : AT (0x4000)
4208    @{
4209      .text0 @{ o1/*.o(.text) @}
4210      .text1 @{ o2/*.o(.text) @}
4211    @}
4212 @end group
4213 @end smallexample
4214 @noindent
4215 This will define both @samp{.text0} and @samp{.text1} to start at
4216 address 0x1000.  @samp{.text0} will be loaded at address 0x4000, and
4217 @samp{.text1} will be loaded immediately after @samp{.text0}.  The
4218 following symbols will be defined if referenced: @code{__load_start_text0},
4219 @code{__load_stop_text0}, @code{__load_start_text1},
4220 @code{__load_stop_text1}.
4221
4222 C code to copy overlay @code{.text1} into the overlay area might look
4223 like the following.
4224
4225 @smallexample
4226 @group
4227   extern char __load_start_text1, __load_stop_text1;
4228   memcpy ((char *) 0x1000, &__load_start_text1,
4229           &__load_stop_text1 - &__load_start_text1);
4230 @end group
4231 @end smallexample
4232
4233 Note that the @code{OVERLAY} command is just syntactic sugar, since
4234 everything it does can be done using the more basic commands.  The above
4235 example could have been written identically as follows.
4236
4237 @smallexample
4238 @group
4239   .text0 0x1000 : AT (0x4000) @{ o1/*.o(.text) @}
4240   PROVIDE (__load_start_text0 = LOADADDR (.text0));
4241   PROVIDE (__load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0));
4242   .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) @{ o2/*.o(.text) @}
4243   PROVIDE (__load_start_text1 = LOADADDR (.text1));
4244   PROVIDE (__load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1));
4245   . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
4246 @end group
4247 @end smallexample
4248
4249 @node MEMORY
4250 @section MEMORY Command
4251 @kindex MEMORY
4252 @cindex memory regions
4253 @cindex regions of memory
4254 @cindex allocating memory
4255 @cindex discontinuous memory
4256 The linker's default configuration permits allocation of all available
4257 memory.  You can override this by using the @code{MEMORY} command.
4258
4259 The @code{MEMORY} command describes the location and size of blocks of
4260 memory in the target.  You can use it to describe which memory regions
4261 may be used by the linker, and which memory regions it must avoid.  You
4262 can then assign sections to particular memory regions.  The linker will
4263 set section addresses based on the memory regions, and will warn about
4264 regions that become too full.  The linker will not shuffle sections
4265 around to fit into the available regions.
4266
4267 A linker script may contain at most one use of the @code{MEMORY}
4268 command.  However, you can define as many blocks of memory within it as
4269 you wish.  The syntax is:
4270 @smallexample
4271 @group
4272 MEMORY
4273   @{
4274     @var{name} [(@var{attr})] : ORIGIN = @var{origin}, LENGTH = @var{len}
4275     @dots{}
4276   @}
4277 @end group
4278 @end smallexample
4279
4280 The @var{name} is a name used in the linker script to refer to the
4281 region.  The region name has no meaning outside of the linker script.
4282 Region names are stored in a separate name space, and will not conflict
4283 with symbol names, file names, or section names.  Each memory region
4284 must have a distinct name.
4285
4286 @cindex memory region attributes
4287 The @var{attr} string is an optional list of attributes that specify
4288 whether to use a particular memory region for an input section which is
4289 not explicitly mapped in the linker script.  As described in
4290 @ref{SECTIONS}, if you do not specify an output section for some input
4291 section, the linker will create an output section with the same name as
4292 the input section.  If you define region attributes, the linker will use
4293 them to select the memory region for the output section that it creates.
4294
4295 The @var{attr} string must consist only of the following characters:
4296 @table @samp
4297 @item R
4298 Read-only section
4299 @item W
4300 Read/write section
4301 @item X
4302 Executable section
4303 @item A
4304 Allocatable section
4305 @item I
4306 Initialized section
4307 @item L
4308 Same as @samp{I}
4309 @item !
4310 Invert the sense of any of the preceding attributes
4311 @end table
4312
4313 If a unmapped section matches any of the listed attributes other than
4314 @samp{!}, it will be placed in the memory region.  The @samp{!}
4315 attribute reverses this test, so that an unmapped section will be placed
4316 in the memory region only if it does not match any of the listed
4317 attributes.
4318
4319 @kindex ORIGIN =
4320 @kindex o =
4321 @kindex org =
4322 The @var{origin} is an numerical expression for the start address of
4323 the memory region.  The expression must evaluate to a constant and it
4324 cannot involve any symbols.  The keyword @code{ORIGIN} may be
4325 abbreviated to @code{org} or @code{o} (but not, for example,
4326 @code{ORG}).
4327
4328 @kindex LENGTH =
4329 @kindex len =
4330 @kindex l =
4331 The @var{len} is an expression for the size in bytes of the memory
4332 region.  As with the @var{origin} expression, the expression must
4333 be numerical only and must evaluate to a constant.  The keyword
4334 @code{LENGTH} may be abbreviated to @code{len} or @code{l}.
4335
4336 In the following example, we specify that there are two memory regions
4337 available for allocation: one starting at @samp{0} for 256 kilobytes,
4338 and the other starting at @samp{0x40000000} for four megabytes.  The
4339 linker will place into the @samp{rom} memory region every section which
4340 is not explicitly mapped into a memory region, and is either read-only
4341 or executable.  The linker will place other sections which are not
4342 explicitly mapped into a memory region into the @samp{ram} memory
4343 region.
4344
4345 @smallexample
4346 @group
4347 MEMORY
4348   @{
4349     rom (rx)  : ORIGIN = 0, LENGTH = 256K
4350     ram (!rx) : org = 0x40000000, l = 4M
4351   @}
4352 @end group
4353 @end smallexample
4354
4355 Once you define a memory region, you can direct the linker to place
4356 specific output sections into that memory region by using the
4357 @samp{>@var{region}} output section attribute.  For example, if you have
4358 a memory region named @samp{mem}, you would use @samp{>mem} in the
4359 output section definition.  @xref{Output Section Region}.  If no address
4360 was specified for the output section, the linker will set the address to
4361 the next available address within the memory region.  If the combined
4362 output sections directed to a memory region are too large for the
4363 region, the linker will issue an error message.
4364
4365 It is possible to access the origin and length of a memory in an
4366 expression via the @code{ORIGIN(@var{memory})} and
4367 @code{LENGTH(@var{memory})} functions:
4368
4369 @smallexample
4370 @group
4371   _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
4372 @end group
4373 @end smallexample
4374
4375 @node PHDRS
4376 @section PHDRS Command
4377 @kindex PHDRS
4378 @cindex program headers
4379 @cindex ELF program headers
4380 @cindex program segments
4381 @cindex segments, ELF
4382 The ELF object file format uses @dfn{program headers}, also knows as
4383 @dfn{segments}.  The program headers describe how the program should be
4384 loaded into memory.  You can print them out by using the @code{objdump}
4385 program with the @samp{-p} option.
4386
4387 When you run an ELF program on a native ELF system, the system loader
4388 reads the program headers in order to figure out how to load the
4389 program.  This will only work if the program headers are set correctly.
4390 This manual does not describe the details of how the system loader
4391 interprets program headers; for more information, see the ELF ABI.
4392
4393 The linker will create reasonable program headers by default.  However,
4394 in some cases, you may need to specify the program headers more
4395 precisely.  You may use the @code{PHDRS} command for this purpose.  When
4396 the linker sees the @code{PHDRS} command in the linker script, it will
4397 not create any program headers other than the ones specified.
4398
4399 The linker only pays attention to the @code{PHDRS} command when
4400 generating an ELF output file.  In other cases, the linker will simply
4401 ignore @code{PHDRS}.
4402
4403 This is the syntax of the @code{PHDRS} command.  The words @code{PHDRS},
4404 @code{FILEHDR}, @code{AT}, and @code{FLAGS} are keywords.
4405
4406 @smallexample
4407 @group
4408 PHDRS
4409 @{
4410   @var{name} @var{type} [ FILEHDR ] [ PHDRS ] [ AT ( @var{address} ) ]
4411         [ FLAGS ( @var{flags} ) ] ;
4412 @}
4413 @end group
4414 @end smallexample
4415
4416 The @var{name} is used only for reference in the @code{SECTIONS} command
4417 of the linker script.  It is not put into the output file.  Program
4418 header names are stored in a separate name space, and will not conflict
4419 with symbol names, file names, or section names.  Each program header
4420 must have a distinct name.
4421
4422 Certain program header types describe segments of memory which the
4423 system loader will load from the file.  In the linker script, you
4424 specify the contents of these segments by placing allocatable output
4425 sections in the segments.  You use the @samp{:@var{phdr}} output section
4426 attribute to place a section in a particular segment.  @xref{Output
4427 Section Phdr}.
4428
4429 It is normal to put certain sections in more than one segment.  This
4430 merely implies that one segment of memory contains another.  You may
4431 repeat @samp{:@var{phdr}}, using it once for each segment which should
4432 contain the section.
4433
4434 If you place a section in one or more segments using @samp{:@var{phdr}},
4435 then the linker will place all subsequent allocatable sections which do
4436 not specify @samp{:@var{phdr}} in the same segments.  This is for
4437 convenience, since generally a whole set of contiguous sections will be
4438 placed in a single segment.  You can use @code{:NONE} to override the
4439 default segment and tell the linker to not put the section in any
4440 segment at all.
4441
4442 @kindex FILEHDR
4443 @kindex PHDRS
4444 You may use the @code{FILEHDR} and @code{PHDRS} keywords appear after
4445 the program header type to further describe the contents of the segment.
4446 The @code{FILEHDR} keyword means that the segment should include the ELF
4447 file header.  The @code{PHDRS} keyword means that the segment should
4448 include the ELF program headers themselves.
4449
4450 The @var{type} may be one of the following.  The numbers indicate the
4451 value of the keyword.
4452
4453 @table @asis
4454 @item @code{PT_NULL} (0)
4455 Indicates an unused program header.
4456
4457 @item @code{PT_LOAD} (1)
4458 Indicates that this program header describes a segment to be loaded from
4459 the file.
4460
4461 @item @code{PT_DYNAMIC} (2)
4462 Indicates a segment where dynamic linking information can be found.
4463
4464 @item @code{PT_INTERP} (3)
4465 Indicates a segment where the name of the program interpreter may be
4466 found.
4467
4468 @item @code{PT_NOTE} (4)
4469 Indicates a segment holding note information.
4470
4471 @item @code{PT_SHLIB} (5)
4472 A reserved program header type, defined but not specified by the ELF
4473 ABI.
4474
4475 @item @code{PT_PHDR} (6)
4476 Indicates a segment where the program headers may be found.
4477
4478 @item @var{expression}
4479 An expression giving the numeric type of the program header.  This may
4480 be used for types not defined above.
4481 @end table
4482
4483 You can specify that a segment should be loaded at a particular address
4484 in memory by using an @code{AT} expression.  This is identical to the
4485 @code{AT} command used as an output section attribute (@pxref{Output
4486 Section LMA}).  The @code{AT} command for a program header overrides the
4487 output section attribute.
4488
4489 The linker will normally set the segment flags based on the sections
4490 which comprise the segment.  You may use the @code{FLAGS} keyword to
4491 explicitly specify the segment flags.  The value of @var{flags} must be
4492 an integer.  It is used to set the @code{p_flags} field of the program
4493 header.
4494
4495 Here is an example of @code{PHDRS}.  This shows a typical set of program
4496 headers used on a native ELF system.
4497
4498 @example
4499 @group
4500 PHDRS
4501 @{
4502   headers PT_PHDR PHDRS ;
4503   interp PT_INTERP ;
4504   text PT_LOAD FILEHDR PHDRS ;
4505   data PT_LOAD ;
4506   dynamic PT_DYNAMIC ;
4507 @}
4508
4509 SECTIONS
4510 @{
4511   . = SIZEOF_HEADERS;
4512   .interp : @{ *(.interp) @} :text :interp
4513   .text : @{ *(.text) @} :text
4514   .rodata : @{ *(.rodata) @} /* defaults to :text */
4515   @dots{}
4516   . = . + 0x1000; /* move to a new page in memory */
4517   .data : @{ *(.data) @} :data
4518   .dynamic : @{ *(.dynamic) @} :data :dynamic
4519   @dots{}
4520 @}
4521 @end group
4522 @end example
4523
4524 @node VERSION
4525 @section VERSION Command
4526 @kindex VERSION @{script text@}
4527 @cindex symbol versions
4528 @cindex version script
4529 @cindex versions of symbols
4530 The linker supports symbol versions when using ELF.  Symbol versions are
4531 only useful when using shared libraries.  The dynamic linker can use
4532 symbol versions to select a specific version of a function when it runs
4533 a program that may have been linked against an earlier version of the
4534 shared library.
4535
4536 You can include a version script directly in the main linker script, or
4537 you can supply the version script as an implicit linker script.  You can
4538 also use the @samp{--version-script} linker option.
4539
4540 The syntax of the @code{VERSION} command is simply
4541 @smallexample
4542 VERSION @{ version-script-commands @}
4543 @end smallexample
4544
4545 The format of the version script commands is identical to that used by
4546 Sun's linker in Solaris 2.5.  The version script defines a tree of
4547 version nodes.  You specify the node names and interdependencies in the
4548 version script.  You can specify which symbols are bound to which
4549 version nodes, and you can reduce a specified set of symbols to local
4550 scope so that they are not globally visible outside of the shared
4551 library.
4552
4553 The easiest way to demonstrate the version script language is with a few
4554 examples.
4555
4556 @smallexample
4557 VERS_1.1 @{
4558          global:
4559                  foo1;
4560          local:
4561                  old*;
4562                  original*;
4563                  new*;
4564 @};
4565
4566 VERS_1.2 @{
4567                  foo2;
4568 @} VERS_1.1;
4569
4570 VERS_2.0 @{
4571                  bar1; bar2;
4572          extern "C++" @{
4573                  ns::*;
4574                  "int f(int, double)";
4575          @}
4576 @} VERS_1.2;
4577 @end smallexample
4578
4579 This example version script defines three version nodes.  The first
4580 version node defined is @samp{VERS_1.1}; it has no other dependencies.
4581 The script binds the symbol @samp{foo1} to @samp{VERS_1.1}.  It reduces
4582 a number of symbols to local scope so that they are not visible outside
4583 of the shared library; this is done using wildcard patterns, so that any
4584 symbol whose name begins with @samp{old}, @samp{original}, or @samp{new}
4585 is matched.  The wildcard patterns available are the same as those used
4586 in the shell when matching filenames (also known as ``globbing'').
4587 However, if you specify the symbol name inside double quotes, then the
4588 name is treated as literal, rather than as a glob pattern.
4589
4590 Next, the version script defines node @samp{VERS_1.2}.  This node
4591 depends upon @samp{VERS_1.1}.  The script binds the symbol @samp{foo2}
4592 to the version node @samp{VERS_1.2}.
4593
4594 Finally, the version script defines node @samp{VERS_2.0}.  This node
4595 depends upon @samp{VERS_1.2}.  The scripts binds the symbols @samp{bar1}
4596 and @samp{bar2} are bound to the version node @samp{VERS_2.0}.
4597
4598 When the linker finds a symbol defined in a library which is not
4599 specifically bound to a version node, it will effectively bind it to an
4600 unspecified base version of the library.  You can bind all otherwise
4601 unspecified symbols to a given version node by using @samp{global: *;}
4602 somewhere in the version script.  Note that it's slightly crazy to use
4603 wildcards in a global spec except on the last version node.  Global
4604 wildcards elsewhere run the risk of accidentally adding symbols to the
4605 set exported for an old version.  That's wrong since older versions
4606 ought to have a fixed set of symbols.
4607
4608 The names of the version nodes have no specific meaning other than what
4609 they might suggest to the person reading them.  The @samp{2.0} version
4610 could just as well have appeared in between @samp{1.1} and @samp{1.2}.
4611 However, this would be a confusing way to write a version script.
4612
4613 Node name can be omitted, provided it is the only version node
4614 in the version script.  Such version script doesn't assign any versions to
4615 symbols, only selects which symbols will be globally visible out and which
4616 won't.
4617
4618 @smallexample
4619 @{ global: foo; bar; local: *; @};
4620 @end smallexample
4621
4622 When you link an application against a shared library that has versioned
4623 symbols, the application itself knows which version of each symbol it
4624 requires, and it also knows which version nodes it needs from each
4625 shared library it is linked against.  Thus at runtime, the dynamic
4626 loader can make a quick check to make sure that the libraries you have
4627 linked against do in fact supply all of the version nodes that the
4628 application will need to resolve all of the dynamic symbols.  In this
4629 way it is possible for the dynamic linker to know with certainty that
4630 all external symbols that it needs will be resolvable without having to
4631 search for each symbol reference.
4632
4633 The symbol versioning is in effect a much more sophisticated way of
4634 doing minor version checking that SunOS does.  The fundamental problem
4635 that is being addressed here is that typically references to external
4636 functions are bound on an as-needed basis, and are not all bound when
4637 the application starts up.  If a shared library is out of date, a
4638 required interface may be missing; when the application tries to use
4639 that interface, it may suddenly and unexpectedly fail.  With symbol
4640 versioning, the user will get a warning when they start their program if
4641 the libraries being used with the application are too old.
4642
4643 There are several GNU extensions to Sun's versioning approach.  The
4644 first of these is the ability to bind a symbol to a version node in the
4645 source file where the symbol is defined instead of in the versioning
4646 script.  This was done mainly to reduce the burden on the library
4647 maintainer.  You can do this by putting something like:
4648 @smallexample
4649 __asm__(".symver original_foo,foo@@VERS_1.1");
4650 @end smallexample
4651 @noindent
4652 in the C source file.  This renames the function @samp{original_foo} to
4653 be an alias for @samp{foo} bound to the version node @samp{VERS_1.1}.
4654 The @samp{local:} directive can be used to prevent the symbol
4655 @samp{original_foo} from being exported. A @samp{.symver} directive
4656 takes precedence over a version script.
4657
4658 The second GNU extension is to allow multiple versions of the same
4659 function to appear in a given shared library.  In this way you can make
4660 an incompatible change to an interface without increasing the major
4661 version number of the shared library, while still allowing applications
4662 linked against the old interface to continue to function.
4663
4664 To do this, you must use multiple @samp{.symver} directives in the
4665 source file.  Here is an example:
4666
4667 @smallexample
4668 __asm__(".symver original_foo,foo@@");
4669 __asm__(".symver old_foo,foo@@VERS_1.1");
4670 __asm__(".symver old_foo1,foo@@VERS_1.2");
4671 __asm__(".symver new_foo,foo@@@@VERS_2.0");
4672 @end smallexample
4673
4674 In this example, @samp{foo@@} represents the symbol @samp{foo} bound to the
4675 unspecified base version of the symbol.  The source file that contains this
4676 example would define 4 C functions: @samp{original_foo}, @samp{old_foo},
4677 @samp{old_foo1}, and @samp{new_foo}.
4678
4679 When you have multiple definitions of a given symbol, there needs to be
4680 some way to specify a default version to which external references to
4681 this symbol will be bound.  You can do this with the
4682 @samp{foo@@@@VERS_2.0} type of @samp{.symver} directive.  You can only
4683 declare one version of a symbol as the default in this manner; otherwise
4684 you would effectively have multiple definitions of the same symbol.
4685
4686 If you wish to bind a reference to a specific version of the symbol
4687 within the shared library, you can use the aliases of convenience
4688 (i.e., @samp{old_foo}), or you can use the @samp{.symver} directive to
4689 specifically bind to an external version of the function in question.
4690
4691 You can also specify the language in the version script:
4692
4693 @smallexample
4694 VERSION extern "lang" @{ version-script-commands @}
4695 @end smallexample
4696
4697 The supported @samp{lang}s are @samp{C}, @samp{C++}, and @samp{Java}.
4698 The linker will iterate over the list of symbols at the link time and
4699 demangle them according to @samp{lang} before matching them to the
4700 patterns specified in @samp{version-script-commands}.
4701
4702 Demangled names may contains spaces and other special characters.  As
4703 described above, you can use a glob pattern to match demangled names,
4704 or you can use a double-quoted string to match the string exactly.  In
4705 the latter case, be aware that minor differences (such as differing
4706 whitespace) between the version script and the demangler output will
4707 cause a mismatch.  As the exact string generated by the demangler
4708 might change in the future, even if the mangled name does not, you
4709 should check that all of your version directives are behaving as you
4710 expect when you upgrade.
4711
4712 @node Expressions
4713 @section Expressions in Linker Scripts
4714 @cindex expressions
4715 @cindex arithmetic
4716 The syntax for expressions in the linker script language is identical to
4717 that of C expressions.  All expressions are evaluated as integers.  All
4718 expressions are evaluated in the same size, which is 32 bits if both the
4719 host and target are 32 bits, and is otherwise 64 bits.
4720
4721 You can use and set symbol values in expressions.
4722
4723 The linker defines several special purpose builtin functions for use in
4724 expressions.
4725
4726 @menu
4727 * Constants::                   Constants
4728 * Symbols::                     Symbol Names
4729 * Orphan Sections::             Orphan Sections
4730 * Location Counter::            The Location Counter
4731 * Operators::                   Operators
4732 * Evaluation::                  Evaluation
4733 * Expression Section::          The Section of an Expression
4734 * Builtin Functions::           Builtin Functions
4735 @end menu
4736
4737 @node Constants
4738 @subsection Constants
4739 @cindex integer notation
4740 @cindex constants in linker scripts
4741 All constants are integers.
4742
4743 As in C, the linker considers an integer beginning with @samp{0} to be
4744 octal, and an integer beginning with @samp{0x} or @samp{0X} to be
4745 hexadecimal.  Alternatively the linker accepts suffixes of @samp{h} or
4746 @samp{H} for hexadeciaml, @samp{o} or @samp{O} for octal, @samp{b} or
4747 @samp{B} for binary and @samp{d} or @samp{D} for decimal.  Any integer
4748 value without a prefix or a suffix is considered to be decimal.
4749
4750 @cindex scaled integers
4751 @cindex K and M integer suffixes
4752 @cindex M and K integer suffixes
4753 @cindex suffixes for integers
4754 @cindex integer suffixes
4755 In addition, you can use the suffixes @code{K} and @code{M} to scale a
4756 constant by
4757 @c TEXI2ROFF-KILL
4758 @ifnottex
4759 @c END TEXI2ROFF-KILL
4760 @code{1024} or @code{1024*1024}
4761 @c TEXI2ROFF-KILL
4762 @end ifnottex
4763 @tex
4764 ${\rm 1024}$ or ${\rm 1024}^2$
4765 @end tex
4766 @c END TEXI2ROFF-KILL
4767 respectively.  For example, the following
4768 all refer to the same quantity:
4769
4770 @smallexample
4771 _fourk_1 = 4K;
4772 _fourk_2 = 4096;
4773 _fourk_3 = 0x1000;
4774 _fourk_4 = 10000o;
4775 @end smallexample
4776
4777 Note - the @code{K} and @code{M} suffixes cannot be used in
4778 conjunction with the base suffixes mentioned above.
4779
4780 @node Symbols
4781 @subsection Symbol Names
4782 @cindex symbol names
4783 @cindex names
4784 @cindex quoted symbol names
4785 @kindex "
4786 Unless quoted, symbol names start with a letter, underscore, or period
4787 and may include letters, digits, underscores, periods, and hyphens.
4788 Unquoted symbol names must not conflict with any keywords.  You can
4789 specify a symbol which contains odd characters or has the same name as a
4790 keyword by surrounding the symbol name in double quotes:
4791 @smallexample
4792 "SECTION" = 9;
4793 "with a space" = "also with a space" + 10;
4794 @end smallexample
4795
4796 Since symbols can contain many non-alphabetic characters, it is safest
4797 to delimit symbols with spaces.  For example, @samp{A-B} is one symbol,
4798 whereas @samp{A - B} is an expression involving subtraction.
4799
4800 @node Orphan Sections
4801 @subsection Orphan Sections
4802 @cindex orphan
4803 Orphan sections are sections present in the input files which
4804 are not explicitly placed into the output file by the linker
4805 script.  The linker will still copy these sections into the
4806 output file, but it has to guess as to where they should be
4807 placed.  The linker uses a simple heuristic to do this.  It
4808 attempts to place orphan sections after non-orphan sections of the
4809 same attribute, such as code vs data, loadable vs non-loadable, etc.
4810 If there is not enough room to do this then it places
4811 at the end of the file.
4812
4813 For ELF targets, the attribute of the section includes section type as
4814 well as section flag.
4815
4816 If an orphaned section's name is representable as a C identifier then
4817 the linker will automatically @pxref{PROVIDE} two symbols:
4818 __start_SECNAME and __end_SECNAME, where SECNAME is the name of the
4819 section.  These indicate the start address and end address of the
4820 orphaned section respectively.  Note: most section names are not
4821 representable as C identifiers because they contain a @samp{.}
4822 character.
4823
4824 @node Location Counter
4825 @subsection The Location Counter
4826 @kindex .
4827 @cindex dot
4828 @cindex location counter
4829 @cindex current output location
4830 The special linker variable @dfn{dot} @samp{.} always contains the
4831 current output location counter.  Since the @code{.} always refers to a
4832 location in an output section, it may only appear in an expression
4833 within a @code{SECTIONS} command.  The @code{.} symbol may appear
4834 anywhere that an ordinary symbol is allowed in an expression.
4835
4836 @cindex holes
4837 Assigning a value to @code{.} will cause the location counter to be
4838 moved.  This may be used to create holes in the output section.  The
4839 location counter may not be moved backwards inside an output section,
4840 and may not be moved backwards outside of an output section if so
4841 doing creates areas with overlapping LMAs.
4842
4843 @smallexample
4844 SECTIONS
4845 @{
4846   output :
4847     @{
4848       file1(.text)
4849       . = . + 1000;
4850       file2(.text)
4851       . += 1000;
4852       file3(.text)
4853     @} = 0x12345678;
4854 @}
4855 @end smallexample
4856 @noindent
4857 In the previous example, the @samp{.text} section from @file{file1} is
4858 located at the beginning of the output section @samp{output}.  It is
4859 followed by a 1000 byte gap.  Then the @samp{.text} section from
4860 @file{file2} appears, also with a 1000 byte gap following before the
4861 @samp{.text} section from @file{file3}.  The notation @samp{= 0x12345678}
4862 specifies what data to write in the gaps (@pxref{Output Section Fill}).
4863
4864 @cindex dot inside sections
4865 Note: @code{.} actually refers to the byte offset from the start of the
4866 current containing object.  Normally this is the @code{SECTIONS}
4867 statement, whose start address is 0, hence @code{.} can be used as an
4868 absolute address.  If @code{.} is used inside a section description
4869 however, it refers to the byte offset from the start of that section,
4870 not an absolute address.  Thus in a script like this:
4871
4872 @smallexample
4873 SECTIONS
4874 @{
4875     . = 0x100
4876     .text: @{
4877       *(.text)
4878       . = 0x200
4879     @}
4880     . = 0x500
4881     .data: @{
4882       *(.data)
4883       . += 0x600
4884     @}
4885 @}
4886 @end smallexample
4887
4888 The @samp{.text} section will be assigned a starting address of 0x100
4889 and a size of exactly 0x200 bytes, even if there is not enough data in
4890 the @samp{.text} input sections to fill this area.  (If there is too
4891 much data, an error will be produced because this would be an attempt to
4892 move @code{.} backwards).  The @samp{.data} section will start at 0x500
4893 and it will have an extra 0x600 bytes worth of space after the end of
4894 the values from the @samp{.data} input sections and before the end of
4895 the @samp{.data} output section itself.
4896
4897 @cindex dot outside sections
4898 Setting symbols to the value of the location counter outside of an
4899 output section statement can result in unexpected values if the linker
4900 needs to place orphan sections.  For example, given the following:
4901
4902 @smallexample
4903 SECTIONS
4904 @{
4905     start_of_text = . ;
4906     .text: @{ *(.text) @}
4907     end_of_text = . ;
4908
4909     start_of_data = . ;
4910     .data: @{ *(.data) @}
4911     end_of_data = . ;
4912 @}
4913 @end smallexample
4914
4915 If the linker needs to place some input section, e.g. @code{.rodata},
4916 not mentioned in the script, it might choose to place that section
4917 between @code{.text} and @code{.data}.  You might think the linker
4918 should place @code{.rodata} on the blank line in the above script, but
4919 blank lines are of no particular significance to the linker.  As well,
4920 the linker doesn't associate the above symbol names with their
4921 sections.  Instead, it assumes that all assignments or other
4922 statements belong to the previous output section, except for the
4923 special case of an assignment to @code{.}.  I.e., the linker will
4924 place the orphan @code{.rodata} section as if the script was written
4925 as follows:
4926
4927 @smallexample
4928 SECTIONS
4929 @{
4930     start_of_text = . ;
4931     .text: @{ *(.text) @}
4932     end_of_text = . ;
4933
4934     start_of_data = . ;
4935     .rodata: @{ *(.rodata) @}
4936     .data: @{ *(.data) @}
4937     end_of_data = . ;
4938 @}
4939 @end smallexample
4940
4941 This may or may not be the script author's intention for the value of
4942 @code{start_of_data}.  One way to influence the orphan section
4943 placement is to assign the location counter to itself, as the linker
4944 assumes that an assignment to @code{.} is setting the start address of
4945 a following output section and thus should be grouped with that
4946 section.  So you could write:
4947
4948 @smallexample
4949 SECTIONS
4950 @{
4951     start_of_text = . ;
4952     .text: @{ *(.text) @}
4953     end_of_text = . ;
4954
4955     . = . ;
4956     start_of_data = . ;
4957     .data: @{ *(.data) @}
4958     end_of_data = . ;
4959 @}
4960 @end smallexample
4961
4962 Now, the orphan @code{.rodata} section will be placed between
4963 @code{end_of_text} and @code{start_of_data}.
4964
4965 @need 2000
4966 @node Operators
4967 @subsection Operators
4968 @cindex operators for arithmetic
4969 @cindex arithmetic operators
4970 @cindex precedence in expressions
4971 The linker recognizes the standard C set of arithmetic operators, with
4972 the standard bindings and precedence levels:
4973 @c TEXI2ROFF-KILL
4974 @ifnottex
4975 @c END TEXI2ROFF-KILL
4976 @smallexample
4977 precedence      associativity   Operators                Notes
4978 (highest)
4979 1               left            !  -  ~                  (1)
4980 2               left            *  /  %
4981 3               left            +  -
4982 4               left            >>  <<
4983 5               left            ==  !=  >  <  <=  >=
4984 6               left            &
4985 7               left            |
4986 8               left            &&
4987 9               left            ||
4988 10              right           ? :
4989 11              right           &=  +=  -=  *=  /=       (2)
4990 (lowest)
4991 @end smallexample
4992 Notes:
4993 (1) Prefix operators
4994 (2) @xref{Assignments}.
4995 @c TEXI2ROFF-KILL
4996 @end ifnottex
4997 @tex
4998 \vskip \baselineskip
4999 %"lispnarrowing" is the extra indent used generally for smallexample
5000 \hskip\lispnarrowing\vbox{\offinterlineskip
5001 \hrule
5002 \halign
5003 {\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ {\tt #}\ \hfil&\vrule#\cr
5004 height2pt&\omit&&\omit&&\omit&\cr
5005 &Precedence&&  Associativity  &&{\rm Operators}&\cr
5006 height2pt&\omit&&\omit&&\omit&\cr
5007 \noalign{\hrule}
5008 height2pt&\omit&&\omit&&\omit&\cr
5009 &highest&&&&&\cr
5010 % '176 is tilde, '~' in tt font
5011 &1&&left&&\qquad-          \char'176\      !\qquad\dag&\cr
5012 &2&&left&&*          /        \%&\cr
5013 &3&&left&&+          -&\cr
5014 &4&&left&&>>         <<&\cr
5015 &5&&left&&==         !=       >      <      <=      >=&\cr
5016 &6&&left&&\&&\cr
5017 &7&&left&&|&\cr
5018 &8&&left&&{\&\&}&\cr
5019 &9&&left&&||&\cr
5020 &10&&right&&?        :&\cr
5021 &11&&right&&\qquad\&=      +=       -=     *=     /=\qquad\ddag&\cr
5022 &lowest&&&&&\cr
5023 height2pt&\omit&&\omit&&\omit&\cr}
5024 \hrule}
5025 @end tex
5026 @iftex
5027 {
5028 @obeylines@parskip=0pt@parindent=0pt
5029 @dag@quad Prefix operators.
5030 @ddag@quad @xref{Assignments}.
5031 }
5032 @end iftex
5033 @c END TEXI2ROFF-KILL
5034
5035 @node Evaluation
5036 @subsection Evaluation
5037 @cindex lazy evaluation
5038 @cindex expression evaluation order
5039 The linker evaluates expressions lazily.  It only computes the value of
5040 an expression when absolutely necessary.
5041
5042 The linker needs some information, such as the value of the start
5043 address of the first section, and the origins and lengths of memory
5044 regions, in order to do any linking at all.  These values are computed
5045 as soon as possible when the linker reads in the linker script.
5046
5047 However, other values (such as symbol values) are not known or needed
5048 until after storage allocation.  Such values are evaluated later, when
5049 other information (such as the sizes of output sections) is available
5050 for use in the symbol assignment expression.
5051
5052 The sizes of sections cannot be known until after allocation, so
5053 assignments dependent upon these are not performed until after
5054 allocation.
5055
5056 Some expressions, such as those depending upon the location counter
5057 @samp{.}, must be evaluated during section allocation.
5058
5059 If the result of an expression is required, but the value is not
5060 available, then an error results.  For example, a script like the
5061 following
5062 @smallexample
5063 @group
5064 SECTIONS
5065   @{
5066     .text 9+this_isnt_constant :
5067       @{ *(.text) @}
5068   @}
5069 @end group
5070 @end smallexample
5071 @noindent
5072 will cause the error message @samp{non constant expression for initial
5073 address}.
5074
5075 @node Expression Section
5076 @subsection The Section of an Expression
5077 @cindex expression sections
5078 @cindex absolute expressions
5079 @cindex relative expressions
5080 @cindex absolute and relocatable symbols
5081 @cindex relocatable and absolute symbols
5082 @cindex symbols, relocatable and absolute
5083 When the linker evaluates an expression, the result is either absolute
5084 or relative to some section.  A relative expression is expressed as a
5085 fixed offset from the base of a section.
5086
5087 The position of the expression within the linker script determines
5088 whether it is absolute or relative.  An expression which appears within
5089 an output section definition is relative to the base of the output
5090 section.  An expression which appears elsewhere will be absolute.
5091
5092 A symbol set to a relative expression will be relocatable if you request
5093 relocatable output using the @samp{-r} option.  That means that a
5094 further link operation may change the value of the symbol.  The symbol's
5095 section will be the section of the relative expression.
5096
5097 A symbol set to an absolute expression will retain the same value
5098 through any further link operation.  The symbol will be absolute, and
5099 will not have any particular associated section.
5100
5101 You can use the builtin function @code{ABSOLUTE} to force an expression
5102 to be absolute when it would otherwise be relative.  For example, to
5103 create an absolute symbol set to the address of the end of the output
5104 section @samp{.data}:
5105 @smallexample
5106 SECTIONS
5107   @{
5108     .data : @{ *(.data) _edata = ABSOLUTE(.); @}
5109   @}
5110 @end smallexample
5111 @noindent
5112 If @samp{ABSOLUTE} were not used, @samp{_edata} would be relative to the
5113 @samp{.data} section.
5114
5115 @node Builtin Functions
5116 @subsection Builtin Functions
5117 @cindex functions in expressions
5118 The linker script language includes a number of builtin functions for
5119 use in linker script expressions.
5120
5121 @table @code
5122 @item ABSOLUTE(@var{exp})
5123 @kindex ABSOLUTE(@var{exp})
5124 @cindex expression, absolute
5125 Return the absolute (non-relocatable, as opposed to non-negative) value
5126 of the expression @var{exp}.  Primarily useful to assign an absolute
5127 value to a symbol within a section definition, where symbol values are
5128 normally section relative.  @xref{Expression Section}.
5129
5130 @item ADDR(@var{section})
5131 @kindex ADDR(@var{section})
5132 @cindex section address in expression
5133 Return the absolute address (the VMA) of the named @var{section}.  Your
5134 script must previously have defined the location of that section.  In
5135 the following example, @code{symbol_1} and @code{symbol_2} are assigned
5136 identical values:
5137 @smallexample
5138 @group
5139 SECTIONS @{ @dots{}
5140   .output1 :
5141     @{
5142     start_of_output_1 = ABSOLUTE(.);
5143     @dots{}
5144     @}
5145   .output :
5146     @{
5147     symbol_1 = ADDR(.output1);
5148     symbol_2 = start_of_output_1;
5149     @}
5150 @dots{} @}
5151 @end group
5152 @end smallexample
5153
5154 @item ALIGN(@var{align})
5155 @itemx ALIGN(@var{exp},@var{align})
5156 @kindex ALIGN(@var{align})
5157 @kindex ALIGN(@var{exp},@var{align})
5158 @cindex round up location counter
5159 @cindex align location counter
5160 @cindex round up expression
5161 @cindex align expression
5162 Return the location counter (@code{.}) or arbitrary expression aligned
5163 to the next @var{align} boundary.  The single operand @code{ALIGN}
5164 doesn't change the value of the location counter---it just does
5165 arithmetic on it.  The two operand @code{ALIGN} allows an arbitrary
5166 expression to be aligned upwards (@code{ALIGN(@var{align})} is
5167 equivalent to @code{ALIGN(., @var{align})}).
5168
5169 Here is an example which aligns the output @code{.data} section to the
5170 next @code{0x2000} byte boundary after the preceding section and sets a
5171 variable within the section to the next @code{0x8000} boundary after the
5172 input sections:
5173 @smallexample
5174 @group
5175 SECTIONS @{ @dots{}
5176   .data ALIGN(0x2000): @{
5177     *(.data)
5178     variable = ALIGN(0x8000);
5179   @}
5180 @dots{} @}
5181 @end group
5182 @end smallexample
5183 @noindent
5184 The first use of @code{ALIGN} in this example specifies the location of
5185 a section because it is used as the optional @var{address} attribute of
5186 a section definition (@pxref{Output Section Address}).  The second use
5187 of @code{ALIGN} is used to defines the value of a symbol.
5188
5189 The builtin function @code{NEXT} is closely related to @code{ALIGN}.
5190
5191 @item ALIGNOF(@var{section})
5192 @kindex ALIGNOF(@var{section})
5193 @cindex section alignment
5194 Return the alignment in bytes of the named @var{section}, if that section has
5195 been allocated.  If the section has not been allocated when this is
5196 evaluated, the linker will report an error. In the following example,
5197 the alignment of the @code{.output} section is stored as the first
5198 value in that section.
5199 @smallexample
5200 @group
5201 SECTIONS@{ @dots{}
5202   .output @{
5203     LONG (ALIGNOF (.output))
5204     @dots{}
5205     @}
5206 @dots{} @}
5207 @end group
5208 @end smallexample
5209
5210 @item BLOCK(@var{exp})
5211 @kindex BLOCK(@var{exp})
5212 This is a synonym for @code{ALIGN}, for compatibility with older linker
5213 scripts.  It is most often seen when setting the address of an output
5214 section.
5215
5216 @item DATA_SEGMENT_ALIGN(@var{maxpagesize}, @var{commonpagesize})
5217 @kindex DATA_SEGMENT_ALIGN(@var{maxpagesize}, @var{commonpagesize})
5218 This is equivalent to either
5219 @smallexample
5220 (ALIGN(@var{maxpagesize}) + (. & (@var{maxpagesize} - 1)))
5221 @end smallexample
5222 or
5223 @smallexample
5224 (ALIGN(@var{maxpagesize}) + (. & (@var{maxpagesize} - @var{commonpagesize})))
5225 @end smallexample
5226 @noindent
5227 depending on whether the latter uses fewer @var{commonpagesize} sized pages
5228 for the data segment (area between the result of this expression and
5229 @code{DATA_SEGMENT_END}) than the former or not.
5230 If the latter form is used, it means @var{commonpagesize} bytes of runtime
5231 memory will be saved at the expense of up to @var{commonpagesize} wasted
5232 bytes in the on-disk file.
5233
5234 This expression can only be used directly in @code{SECTIONS} commands, not in
5235 any output section descriptions and only once in the linker script.
5236 @var{commonpagesize} should be less or equal to @var{maxpagesize} and should
5237 be the system page size the object wants to be optimized for (while still
5238 working on system page sizes up to @var{maxpagesize}).
5239
5240 @noindent
5241 Example:
5242 @smallexample
5243   . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
5244 @end smallexample
5245
5246 @item DATA_SEGMENT_END(@var{exp})
5247 @kindex DATA_SEGMENT_END(@var{exp})
5248 This defines the end of data segment for @code{DATA_SEGMENT_ALIGN}
5249 evaluation purposes.
5250
5251 @smallexample
5252   . = DATA_SEGMENT_END(.);
5253 @end smallexample
5254
5255 @item DATA_SEGMENT_RELRO_END(@var{offset}, @var{exp})
5256 @kindex DATA_SEGMENT_RELRO_END(@var{offset}, @var{exp})
5257 This defines the end of the @code{PT_GNU_RELRO} segment when
5258 @samp{-z relro} option is used.  Second argument is returned.
5259 When @samp{-z relro} option is not present, @code{DATA_SEGMENT_RELRO_END}
5260 does nothing, otherwise @code{DATA_SEGMENT_ALIGN} is padded so that
5261 @var{exp} + @var{offset} is aligned to the most commonly used page
5262 boundary for particular target.  If present in the linker script,
5263 it must always come in between @code{DATA_SEGMENT_ALIGN} and
5264 @code{DATA_SEGMENT_END}.
5265
5266 @smallexample
5267   . = DATA_SEGMENT_RELRO_END(24, .);
5268 @end smallexample
5269
5270 @item DEFINED(@var{symbol})
5271 @kindex DEFINED(@var{symbol})
5272 @cindex symbol defaults
5273 Return 1 if @var{symbol} is in the linker global symbol table and is
5274 defined before the statement using DEFINED in the script, otherwise
5275 return 0.  You can use this function to provide
5276 default values for symbols.  For example, the following script fragment
5277 shows how to set a global symbol @samp{begin} to the first location in
5278 the @samp{.text} section---but if a symbol called @samp{begin} already
5279 existed, its value is preserved:
5280
5281 @smallexample
5282 @group
5283 SECTIONS @{ @dots{}
5284   .text : @{
5285     begin = DEFINED(begin) ? begin : . ;
5286     @dots{}
5287   @}
5288   @dots{}
5289 @}
5290 @end group
5291 @end smallexample
5292
5293 @item LENGTH(@var{memory})
5294 @kindex LENGTH(@var{memory})
5295 Return the length of the memory region named @var{memory}.
5296
5297 @item LOADADDR(@var{section})
5298 @kindex LOADADDR(@var{section})
5299 @cindex section load address in expression
5300 Return the absolute LMA of the named @var{section}.  This is normally
5301 the same as @code{ADDR}, but it may be different if the @code{AT}
5302 attribute is used in the output section definition (@pxref{Output
5303 Section LMA}).
5304
5305 @kindex MAX
5306 @item MAX(@var{exp1}, @var{exp2})
5307 Returns the maximum of @var{exp1} and @var{exp2}.
5308
5309 @kindex MIN
5310 @item MIN(@var{exp1}, @var{exp2})
5311 Returns the minimum of @var{exp1} and @var{exp2}.
5312
5313 @item NEXT(@var{exp})
5314 @kindex NEXT(@var{exp})
5315 @cindex unallocated address, next
5316 Return the next unallocated address that is a multiple of @var{exp}.
5317 This function is closely related to @code{ALIGN(@var{exp})}; unless you
5318 use the @code{MEMORY} command to define discontinuous memory for the
5319 output file, the two functions are equivalent.
5320
5321 @item ORIGIN(@var{memory})
5322 @kindex ORIGIN(@var{memory})
5323 Return the origin of the memory region named @var{memory}.
5324
5325 @item SEGMENT_START(@var{segment}, @var{default})
5326 @kindex SEGMENT_START(@var{segment}, @var{default})
5327 Return the base address of the named @var{segment}.  If an explicit
5328 value has been given for this segment (with a command-line @samp{-T}
5329 option) that value will be returned; otherwise the value will be
5330 @var{default}.  At present, the @samp{-T} command-line option can only
5331 be used to set the base address for the ``text'', ``data'', and
5332 ``bss'' sections, but you use @code{SEGMENT_START} with any segment
5333 name.
5334
5335 @item SIZEOF(@var{section})
5336 @kindex SIZEOF(@var{section})
5337 @cindex section size
5338 Return the size in bytes of the named @var{section}, if that section has
5339 been allocated.  If the section has not been allocated when this is
5340 evaluated, the linker will report an error.  In the following example,
5341 @code{symbol_1} and @code{symbol_2} are assigned identical values:
5342 @smallexample
5343 @group
5344 SECTIONS@{ @dots{}
5345   .output @{
5346     .start = . ;
5347     @dots{}
5348     .end = . ;
5349     @}
5350   symbol_1 = .end - .start ;
5351   symbol_2 = SIZEOF(.output);
5352 @dots{} @}
5353 @end group
5354 @end smallexample
5355
5356 @item SIZEOF_HEADERS
5357 @itemx sizeof_headers
5358 @kindex SIZEOF_HEADERS
5359 @cindex header size
5360 Return the size in bytes of the output file's headers.  This is
5361 information which appears at the start of the output file.  You can use
5362 this number when setting the start address of the first section, if you
5363 choose, to facilitate paging.
5364
5365 @cindex not enough room for program headers
5366 @cindex program headers, not enough room
5367 When producing an ELF output file, if the linker script uses the
5368 @code{SIZEOF_HEADERS} builtin function, the linker must compute the
5369 number of program headers before it has determined all the section
5370 addresses and sizes.  If the linker later discovers that it needs
5371 additional program headers, it will report an error @samp{not enough
5372 room for program headers}.  To avoid this error, you must avoid using
5373 the @code{SIZEOF_HEADERS} function, or you must rework your linker
5374 script to avoid forcing the linker to use additional program headers, or
5375 you must define the program headers yourself using the @code{PHDRS}
5376 command (@pxref{PHDRS}).
5377 @end table
5378
5379 @node Implicit Linker Scripts
5380 @section Implicit Linker Scripts
5381 @cindex implicit linker scripts
5382 If you specify a linker input file which the linker can not recognize as
5383 an object file or an archive file, it will try to read the file as a
5384 linker script.  If the file can not be parsed as a linker script, the
5385 linker will report an error.
5386
5387 An implicit linker script will not replace the default linker script.
5388
5389 Typically an implicit linker script would contain only symbol
5390 assignments, or the @code{INPUT}, @code{GROUP}, or @code{VERSION}
5391 commands.
5392
5393 Any input files read because of an implicit linker script will be read
5394 at the position in the command line where the implicit linker script was
5395 read.  This can affect archive searching.
5396
5397 @ifset GENERIC
5398 @node Machine Dependent
5399 @chapter Machine Dependent Features
5400
5401 @cindex machine dependencies
5402 @command{ld} has additional features on some platforms; the following
5403 sections describe them.  Machines where @command{ld} has no additional
5404 functionality are not listed.
5405
5406 @menu
5407 @ifset H8300
5408 * H8/300::                      @command{ld} and the H8/300
5409 @end ifset
5410 @ifset I960
5411 * i960::                        @command{ld} and the Intel 960 family
5412 @end ifset
5413 @ifset ARM
5414 * ARM::                         @command{ld} and the ARM family
5415 @end ifset
5416 @ifset HPPA
5417 * HPPA ELF32::                  @command{ld} and HPPA 32-bit ELF
5418 @end ifset
5419 @ifset M68K
5420 * M68K::                        @command{ld} and the Motorola 68K family
5421 @end ifset
5422 @ifset MMIX
5423 * MMIX::                        @command{ld} and MMIX
5424 @end ifset
5425 @ifset MSP430
5426 * MSP430::                      @command{ld} and MSP430
5427 @end ifset
5428 @ifset M68HC11
5429 * M68HC11/68HC12::              @code{ld} and the Motorola 68HC11 and 68HC12 families
5430 @end ifset
5431 @ifset POWERPC
5432 * PowerPC ELF32::               @command{ld} and PowerPC 32-bit ELF Support
5433 @end ifset
5434 @ifset POWERPC64
5435 * PowerPC64 ELF64::             @command{ld} and PowerPC64 64-bit ELF Support
5436 @end ifset
5437 @ifset SPU
5438 * SPU ELF::                     @command{ld} and SPU ELF Support
5439 @end ifset
5440 @ifset TICOFF
5441 * TI COFF::                     @command{ld} and TI COFF
5442 @end ifset
5443 @ifset WIN32
5444 * WIN32::                       @command{ld} and WIN32 (cygwin/mingw)
5445 @end ifset
5446 @ifset XTENSA
5447 * Xtensa::                      @command{ld} and Xtensa Processors
5448 @end ifset
5449 @end menu
5450 @end ifset
5451
5452 @ifset H8300
5453 @ifclear GENERIC
5454 @raisesections
5455 @end ifclear
5456
5457 @node H8/300
5458 @section @command{ld} and the H8/300
5459
5460 @cindex H8/300 support
5461 For the H8/300, @command{ld} can perform these global optimizations when
5462 you specify the @samp{--relax} command-line option.
5463
5464 @table @emph
5465 @cindex relaxing on H8/300
5466 @item relaxing address modes
5467 @command{ld} finds all @code{jsr} and @code{jmp} instructions whose
5468 targets are within eight bits, and turns them into eight-bit
5469 program-counter relative @code{bsr} and @code{bra} instructions,
5470 respectively.
5471
5472 @cindex synthesizing on H8/300
5473 @item synthesizing instructions
5474 @c FIXME: specifically mov.b, or any mov instructions really?
5475 @command{ld} finds all @code{mov.b} instructions which use the
5476 sixteen-bit absolute address form, but refer to the top
5477 page of memory, and changes them to use the eight-bit address form.
5478 (That is: the linker turns @samp{mov.b @code{@@}@var{aa}:16} into
5479 @samp{mov.b @code{@@}@var{aa}:8} whenever the address @var{aa} is in the
5480 top page of memory).
5481
5482 @item bit manipulation instructions
5483 @command{ld} finds all bit manipulation instructions like @code{band, bclr,
5484 biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor}
5485 which use 32 bit and 16 bit absolute address form, but refer to the top
5486 page of memory, and changes them to use the 8 bit address form.
5487 (That is: the linker turns @samp{bset #xx:3,@code{@@}@var{aa}:32} into
5488 @samp{bset #xx:3,@code{@@}@var{aa}:8} whenever the address @var{aa} is in
5489 the top page of memory).
5490
5491 @item system control instructions
5492 @command{ld} finds all @code{ldc.w, stc.w} instructions which use the
5493 32 bit absolute address form, but refer to the top page of memory, and
5494 changes them to use 16 bit address form.
5495 (That is: the linker turns @samp{ldc.w @code{@@}@var{aa}:32,ccr} into
5496 @samp{ldc.w @code{@@}@var{aa}:16,ccr} whenever the address @var{aa} is in
5497 the top page of memory).
5498 @end table
5499
5500 @ifclear GENERIC
5501 @lowersections
5502 @end ifclear
5503 @end ifset
5504
5505 @ifclear GENERIC
5506 @ifset Renesas
5507 @c This stuff is pointless to say unless you're especially concerned
5508 @c with Renesas chips; don't enable it for generic case, please.
5509 @node Renesas
5510 @chapter @command{ld} and Other Renesas Chips
5511
5512 @command{ld} also supports the Renesas (formerly Hitachi) H8/300H,
5513 H8/500, and SH chips.  No special features, commands, or command-line
5514 options are required for these chips.
5515 @end ifset
5516 @end ifclear
5517
5518 @ifset I960
5519 @ifclear GENERIC
5520 @raisesections
5521 @end ifclear
5522
5523 @node i960
5524 @section @command{ld} and the Intel 960 Family
5525
5526 @cindex i960 support
5527
5528 You can use the @samp{-A@var{architecture}} command line option to
5529 specify one of the two-letter names identifying members of the 960
5530 family; the option specifies the desired output target, and warns of any
5531 incompatible instructions in the input files.  It also modifies the
5532 linker's search strategy for archive libraries, to support the use of
5533 libraries specific to each particular architecture, by including in the
5534 search loop names suffixed with the string identifying the architecture.
5535
5536 For example, if your @command{ld} command line included @w{@samp{-ACA}} as
5537 well as @w{@samp{-ltry}}, the linker would look (in its built-in search
5538 paths, and in any paths you specify with @samp{-L}) for a library with
5539 the names
5540
5541 @smallexample
5542 @group
5543 try
5544 libtry.a
5545 tryca
5546 libtryca.a
5547 @end group
5548 @end smallexample
5549
5550 @noindent
5551 The first two possibilities would be considered in any event; the last
5552 two are due to the use of @w{@samp{-ACA}}.
5553
5554 You can meaningfully use @samp{-A} more than once on a command line, since
5555 the 960 architecture family allows combination of target architectures; each
5556 use will add another pair of name variants to search for when @w{@samp{-l}}
5557 specifies a library.
5558
5559 @cindex @option{--relax} on i960
5560 @cindex relaxing on i960
5561 @command{ld} supports the @samp{--relax} option for the i960 family.  If
5562 you specify @samp{--relax}, @command{ld} finds all @code{balx} and
5563 @code{calx} instructions whose targets are within 24 bits, and turns
5564 them into 24-bit program-counter relative @code{bal} and @code{cal}
5565 instructions, respectively.  @command{ld} also turns @code{cal}
5566 instructions into @code{bal} instructions when it determines that the
5567 target subroutine is a leaf routine (that is, the target subroutine does
5568 not itself call any subroutines).
5569
5570 @ifclear GENERIC
5571 @lowersections
5572 @end ifclear
5573 @end ifset
5574
5575 @ifset ARM
5576 @ifclear GENERIC
5577 @raisesections
5578 @end ifclear
5579
5580 @ifset M68HC11
5581 @ifclear GENERIC
5582 @raisesections
5583 @end ifclear
5584
5585 @node M68HC11/68HC12
5586 @section @command{ld} and the Motorola 68HC11 and 68HC12 families
5587
5588 @cindex M68HC11 and 68HC12 support
5589
5590 @subsection Linker Relaxation
5591
5592 For the Motorola 68HC11, @command{ld} can perform these global
5593 optimizations when you specify the @samp{--relax} command-line option.
5594
5595 @table @emph
5596 @cindex relaxing on M68HC11
5597 @item relaxing address modes
5598 @command{ld} finds all @code{jsr} and @code{jmp} instructions whose
5599 targets are within eight bits, and turns them into eight-bit
5600 program-counter relative @code{bsr} and @code{bra} instructions,
5601 respectively.
5602
5603 @command{ld} also looks at all 16-bit extended addressing modes and
5604 transforms them in a direct addressing mode when the address is in
5605 page 0 (between 0 and 0x0ff).
5606
5607 @item relaxing gcc instruction group
5608 When @command{gcc} is called with @option{-mrelax}, it can emit group
5609 of instructions that the linker can optimize to use a 68HC11 direct
5610 addressing mode. These instructions consists of @code{bclr} or
5611 @code{bset} instructions.
5612
5613 @end table
5614
5615 @subsection Trampoline Generation
5616
5617 @cindex trampoline generation on M68HC11
5618 @cindex trampoline generation on M68HC12
5619 For 68HC11 and 68HC12, @command{ld} can generate trampoline code to
5620 call a far function using a normal @code{jsr} instruction. The linker
5621 will also change the relocation to some far function to use the
5622 trampoline address instead of the function address. This is typically the
5623 case when a pointer to a function is taken. The pointer will in fact
5624 point to the function trampoline.
5625
5626 @ifclear GENERIC
5627 @lowersections
5628 @end ifclear
5629 @end ifset
5630
5631 @node ARM
5632 @section @command{ld} and the ARM family
5633
5634 @cindex ARM interworking support
5635 @kindex --support-old-code
5636 For the ARM, @command{ld} will generate code stubs to allow functions calls
5637 between ARM and Thumb code.  These stubs only work with code that has
5638 been compiled and assembled with the @samp{-mthumb-interwork} command
5639 line option.  If it is necessary to link with old ARM object files or
5640 libraries, which have not been compiled with the -mthumb-interwork
5641 option then the @samp{--support-old-code} command line switch should be
5642 given to the linker.  This will make it generate larger stub functions
5643 which will work with non-interworking aware ARM code.  Note, however,
5644 the linker does not support generating stubs for function calls to
5645 non-interworking aware Thumb code.
5646
5647 @cindex thumb entry point
5648 @cindex entry point, thumb
5649 @kindex --thumb-entry=@var{entry}
5650 The @samp{--thumb-entry} switch is a duplicate of the generic
5651 @samp{--entry} switch, in that it sets the program's starting address.
5652 But it also sets the bottom bit of the address, so that it can be
5653 branched to using a BX instruction, and the program will start
5654 executing in Thumb mode straight away.
5655
5656 @cindex PE import table prefixing
5657 @kindex --use-nul-prefixed-import-tables
5658 The @samp{--use-nul-prefixed-import-tables} switch is specifying, that
5659 the import tables idata4 and idata5 have to be generated with a zero
5660 elememt prefix for import libraries. This is the old style to generate
5661 import tables. By default this option is turned off.
5662
5663 @cindex BE8
5664 @kindex --be8
5665 The @samp{--be8} switch instructs @command{ld} to generate BE8 format
5666 executables.  This option is only valid when linking big-endian objects.
5667 The resulting image will contain big-endian data and little-endian code.
5668
5669 @cindex TARGET1
5670 @kindex --target1-rel
5671 @kindex --target1-abs
5672 The @samp{R_ARM_TARGET1} relocation is typically used for entries in the
5673 @samp{.init_array} section.  It is interpreted as either @samp{R_ARM_REL32}
5674 or @samp{R_ARM_ABS32}, depending on the target.  The @samp{--target1-rel}
5675 and @samp{--target1-abs} switches override the default.
5676
5677 @cindex TARGET2
5678 @kindex --target2=@var{type}
5679 The @samp{--target2=type} switch overrides the default definition of the
5680 @samp{R_ARM_TARGET2} relocation.  Valid values for @samp{type}, their
5681 meanings, and target defaults are as follows:
5682 @table @samp
5683 @item rel
5684 @samp{R_ARM_REL32} (arm*-*-elf, arm*-*-eabi)
5685 @item abs
5686 @samp{R_ARM_ABS32} (arm*-*-symbianelf)
5687 @item got-rel
5688 @samp{R_ARM_GOT_PREL} (arm*-*-linux, arm*-*-*bsd)
5689 @end table
5690
5691 @cindex FIX_V4BX
5692 @kindex --fix-v4bx
5693 The @samp{R_ARM_V4BX} relocation (defined by the ARM AAELF
5694 specification) enables objects compiled for the ARMv4 architecture to be
5695 interworking-safe when linked with other objects compiled for ARMv4t, but
5696 also allows pure ARMv4 binaries to be built from the same ARMv4 objects.
5697
5698 In the latter case, the switch @option{--fix-v4bx} must be passed to the
5699 linker, which causes v4t @code{BX rM} instructions to be rewritten as
5700 @code{MOV PC,rM}, since v4 processors do not have a @code{BX} instruction.
5701
5702 In the former case, the switch should not be used, and @samp{R_ARM_V4BX}
5703 relocations are ignored.
5704
5705 @cindex FIX_V4BX_INTERWORKING
5706 @kindex --fix-v4bx-interworking
5707 Replace @code{BX rM} instructions identified by @samp{R_ARM_V4BX}
5708 relocations with a branch to the following veneer:
5709
5710 @smallexample
5711 TST rM, #1
5712 MOVEQ PC, rM
5713 BX Rn
5714 @end smallexample
5715
5716 This allows generation of libraries/applications that work on ARMv4 cores
5717 and are still interworking safe.  Note that the above veneer clobbers the
5718 condition flags, so may cause incorrect progrm behavior in rare cases.
5719
5720 @cindex USE_BLX
5721 @kindex --use-blx
5722 The @samp{--use-blx} switch enables the linker to use ARM/Thumb
5723 BLX instructions (available on ARMv5t and above) in various
5724 situations. Currently it is used to perform calls via the PLT from Thumb
5725 code using BLX rather than using BX and a mode-switching stub before
5726 each PLT entry. This should lead to such calls executing slightly faster.
5727
5728 This option is enabled implicitly for SymbianOS, so there is no need to
5729 specify it if you are using that target.
5730
5731 @cindex VFP11_DENORM_FIX
5732 @kindex --vfp11-denorm-fix
5733 The @samp{--vfp11-denorm-fix} switch enables a link-time workaround for a
5734 bug in certain VFP11 coprocessor hardware, which sometimes allows
5735 instructions with denorm operands (which must be handled by support code)
5736 to have those operands overwritten by subsequent instructions before
5737 the support code can read the intended values.
5738
5739 The bug may be avoided in scalar mode if you allow at least one
5740 intervening instruction between a VFP11 instruction which uses a register
5741 and another instruction which writes to the same register, or at least two
5742 intervening instructions if vector mode is in use. The bug only affects
5743 full-compliance floating-point mode: you do not need this workaround if
5744 you are using "runfast" mode. Please contact ARM for further details.
5745
5746 If you know you are using buggy VFP11 hardware, you can
5747 enable this workaround by specifying the linker option
5748 @samp{--vfp-denorm-fix=scalar} if you are using the VFP11 scalar
5749 mode only, or @samp{--vfp-denorm-fix=vector} if you are using
5750 vector mode (the latter also works for scalar code). The default is
5751 @samp{--vfp-denorm-fix=none}.
5752
5753 If the workaround is enabled, instructions are scanned for
5754 potentially-troublesome sequences, and a veneer is created for each
5755 such sequence which may trigger the erratum. The veneer consists of the
5756 first instruction of the sequence and a branch back to the subsequent
5757 instruction. The original instruction is then replaced with a branch to
5758 the veneer. The extra cycles required to call and return from the veneer
5759 are sufficient to avoid the erratum in both the scalar and vector cases.
5760
5761 @cindex NO_ENUM_SIZE_WARNING
5762 @kindex --no-enum-size-warning
5763 The @option{--no-enum-size-warning} switch prevents the linker from
5764 warning when linking object files that specify incompatible EABI
5765 enumeration size attributes.  For example, with this switch enabled,
5766 linking of an object file using 32-bit enumeration values with another
5767 using enumeration values fitted into the smallest possible space will
5768 not be diagnosed.
5769
5770 @cindex NO_WCHAR_SIZE_WARNING
5771 @kindex --no-wchar-size-warning
5772 The @option{--no-wchar-size-warning} switch prevents the linker from
5773 warning when linking object files that specify incompatible EABI
5774 @code{wchar_t} size attributes.  For example, with this switch enabled,
5775 linking of an object file using 32-bit @code{wchar_t} values with another
5776 using 16-bit @code{wchar_t} values will not be diagnosed.
5777
5778 @cindex PIC_VENEER
5779 @kindex --pic-veneer
5780 The @samp{--pic-veneer} switch makes the linker use PIC sequences for
5781 ARM/Thumb interworking veneers, even if the rest of the binary
5782 is not PIC.  This avoids problems on uClinux targets where
5783 @samp{--emit-relocs} is used to generate relocatable binaries.
5784
5785 @cindex STUB_GROUP_SIZE
5786 @kindex --stub-group-size=@var{N}
5787 The linker will automatically generate and insert small sequences of
5788 code into a linked ARM ELF executable whenever an attempt is made to
5789 perform a function call to a symbol that is too far away.  The
5790 placement of these sequences of instructions - called stubs - is
5791 controlled by the command line option @option{--stub-group-size=N}.
5792 The placement is important because a poor choice can create a need for
5793 duplicate stubs, increasing the code sizw.  The linker will try to
5794 group stubs together in order to reduce interruptions to the flow of
5795 code, but it needs guidance as to how big these groups should be and
5796 where they should be placed.
5797
5798 The value of @samp{N}, the parameter to the
5799 @option{--stub-group-size=} option controls where the stub groups are
5800 placed.  If it is negative then all stubs are placed before the first
5801 branch that needs them.  If it is positive then the stubs can be
5802 placed either before or after the branches that need them.  If the
5803 value of @samp{N} is 1 (either +1 or -1) then the linker will choose
5804 exactly where to place groups of stubs, using its built in heuristics.
5805 A value of @samp{N} greater than 1 (or smaller than -1) tells the
5806 linker that a single group of stubs can service at most @samp{N} bytes
5807 from the input sections.
5808
5809 The default, if @option{--stub-group-size=} is not specified, is
5810 @samp{N = +1}.
5811
5812 Farcalls stubs insertion is fully supported for the ARM-EABI target
5813 only, because it relies on object files properties not present
5814 otherwise.
5815
5816 @ifclear GENERIC
5817 @lowersections
5818 @end ifclear
5819 @end ifset
5820
5821 @ifset HPPA
5822 @ifclear GENERIC
5823 @raisesections
5824 @end ifclear
5825
5826 @node HPPA ELF32
5827 @section @command{ld} and HPPA 32-bit ELF Support
5828 @cindex HPPA multiple sub-space stubs
5829 @kindex --multi-subspace
5830 When generating a shared library, @command{ld} will by default generate
5831 import stubs suitable for use with a single sub-space application.
5832 The @samp{--multi-subspace} switch causes @command{ld} to generate export
5833 stubs, and different (larger) import stubs suitable for use with
5834 multiple sub-spaces.
5835
5836 @cindex HPPA stub grouping
5837 @kindex --stub-group-size=@var{N}
5838 Long branch stubs and import/export stubs are placed by @command{ld} in
5839 stub sections located between groups of input sections.
5840 @samp{--stub-group-size} specifies the maximum size of a group of input
5841 sections handled by one stub section.  Since branch offsets are signed,
5842 a stub section may serve two groups of input sections, one group before
5843 the stub section, and one group after it.  However, when using
5844 conditional branches that require stubs, it may be better (for branch
5845 prediction) that stub sections only serve one group of input sections.
5846 A negative value for @samp{N} chooses this scheme, ensuring that
5847 branches to stubs always use a negative offset.  Two special values of
5848 @samp{N} are recognized, @samp{1} and @samp{-1}.  These both instruct
5849 @command{ld} to automatically size input section groups for the branch types
5850 detected, with the same behaviour regarding stub placement as other
5851 positive or negative values of @samp{N} respectively.
5852
5853 Note that @samp{--stub-group-size} does not split input sections.  A
5854 single input section larger than the group size specified will of course
5855 create a larger group (of one section).  If input sections are too
5856 large, it may not be possible for a branch to reach its stub.
5857
5858 @ifclear GENERIC
5859 @lowersections
5860 @end ifclear
5861 @end ifset
5862
5863 @ifset M68K
5864 @ifclear GENERIC
5865 @raisesections
5866 @end ifclear
5867
5868 @node M68K
5869 @section @command{ld} and the Motorola 68K family
5870
5871 @cindex Motorola 68K GOT generation
5872 @kindex --got=@var{type}
5873 The @samp{--got=@var{type}} option lets you choose the GOT generation scheme.
5874 The choices are @samp{single}, @samp{negative}, @samp{multigot} and
5875 @samp{target}.  When @samp{target} is selected the linker chooses
5876 the default GOT generation scheme for the current target.
5877 @samp{single} tells the linker to generate a single GOT with
5878 entries only at non-negative offsets.
5879 @samp{negative} instructs the linker to generate a single GOT with
5880 entries at both negative and positive offsets.  Not all environments
5881 support such GOTs.
5882 @samp{multigot} allows the linker to generate several GOTs in the
5883 output file.  All GOT references from a single input object
5884 file access the same GOT, but references from different input object
5885 files might access different GOTs.  Not all environments support such GOTs.
5886
5887 @ifclear GENERIC
5888 @lowersections
5889 @end ifclear
5890 @end ifset
5891
5892 @ifset MMIX
5893 @ifclear GENERIC
5894 @raisesections
5895 @end ifclear
5896
5897 @node MMIX
5898 @section @code{ld} and MMIX
5899 For MMIX, there is a choice of generating @code{ELF} object files or
5900 @code{mmo} object files when linking.  The simulator @code{mmix}
5901 understands the @code{mmo} format.  The binutils @code{objcopy} utility
5902 can translate between the two formats.
5903
5904 There is one special section, the @samp{.MMIX.reg_contents} section.
5905 Contents in this section is assumed to correspond to that of global
5906 registers, and symbols referring to it are translated to special symbols,
5907 equal to registers.  In a final link, the start address of the
5908 @samp{.MMIX.reg_contents} section corresponds to the first allocated
5909 global register multiplied by 8.  Register @code{$255} is not included in
5910 this section; it is always set to the program entry, which is at the
5911 symbol @code{Main} for @code{mmo} files.
5912
5913 Global symbols with the prefix @code{__.MMIX.start.}, for example
5914 @code{__.MMIX.start..text} and @code{__.MMIX.start..data} are special.
5915 The default linker script uses these to set the default start address
5916 of a section.
5917
5918 Initial and trailing multiples of zero-valued 32-bit words in a section,
5919 are left out from an mmo file.
5920
5921 @ifclear GENERIC
5922 @lowersections
5923 @end ifclear
5924 @end ifset
5925
5926 @ifset MSP430
5927 @ifclear GENERIC
5928 @raisesections
5929 @end ifclear
5930
5931 @node  MSP430
5932 @section @code{ld} and MSP430
5933 For the MSP430 it is possible to select the MPU architecture.  The flag @samp{-m [mpu type]}
5934 will select an appropriate linker script for selected MPU type.  (To get a list of known MPUs
5935 just pass @samp{-m help} option to the linker).
5936
5937 @cindex MSP430 extra sections
5938 The linker will recognize some extra sections which are MSP430 specific:
5939
5940 @table @code
5941 @item @samp{.vectors}
5942 Defines a portion of ROM where interrupt vectors located.
5943
5944 @item @samp{.bootloader}
5945 Defines the bootloader portion of the ROM (if applicable).  Any code
5946 in this section will be uploaded to the MPU.
5947
5948 @item @samp{.infomem}
5949 Defines an information memory section (if applicable).  Any code in
5950 this section will be uploaded to the MPU.
5951
5952 @item @samp{.infomemnobits}
5953 This is the same as the @samp{.infomem} section except that any code
5954 in this section will not be uploaded to the MPU.
5955
5956 @item @samp{.noinit}
5957 Denotes a portion of RAM located above @samp{.bss} section.
5958
5959 The last two sections are used by gcc.
5960 @end table
5961
5962 @ifclear GENERIC
5963 @lowersections
5964 @end ifclear
5965 @end ifset
5966
5967 @ifset POWERPC
5968 @ifclear GENERIC
5969 @raisesections
5970 @end ifclear
5971
5972 @node PowerPC ELF32
5973 @section @command{ld} and PowerPC 32-bit ELF Support
5974 @cindex PowerPC long branches
5975 @kindex --relax on PowerPC
5976 Branches on PowerPC processors are limited to a signed 26-bit
5977 displacement, which may result in @command{ld} giving
5978 @samp{relocation truncated to fit} errors with very large programs.
5979 @samp{--relax} enables the generation of trampolines that can access
5980 the entire 32-bit address space.  These trampolines are inserted at
5981 section boundaries, so may not themselves be reachable if an input
5982 section exceeds 33M in size.
5983
5984 @cindex PowerPC ELF32 options
5985 @table @option
5986 @cindex PowerPC PLT
5987 @kindex --bss-plt
5988 @item --bss-plt
5989 Current PowerPC GCC accepts a @samp{-msecure-plt} option that
5990 generates code capable of using a newer PLT and GOT layout that has
5991 the security advantage of no executable section ever needing to be
5992 writable and no writable section ever being executable.  PowerPC
5993 @command{ld} will generate this layout, including stubs to access the
5994 PLT, if all input files (including startup and static libraries) were
5995 compiled with @samp{-msecure-plt}.  @samp{--bss-plt} forces the old
5996 BSS PLT (and GOT layout) which can give slightly better performance.
5997
5998 @kindex --secure-plt
5999 @item --secure-plt
6000 @command{ld} will use the new PLT and GOT layout if it is linking new
6001 @samp{-fpic} or @samp{-fPIC} code, but does not do so automatically
6002 when linking non-PIC code.  This option requests the new PLT and GOT
6003 layout.  A warning will be given if some object file requires the old
6004 style BSS PLT.
6005
6006 @cindex PowerPC GOT
6007 @kindex --sdata-got
6008 @item --sdata-got
6009 The new secure PLT and GOT are placed differently relative to other
6010 sections compared to older BSS PLT and GOT placement.  The location of
6011 @code{.plt} must change because the new secure PLT is an initialized
6012 section while the old PLT is uninitialized.  The reason for the
6013 @code{.got} change is more subtle:  The new placement allows
6014 @code{.got} to be read-only in applications linked with
6015 @samp{-z relro -z now}.  However, this placement means that
6016 @code{.sdata} cannot always be used in shared libraries, because the
6017 PowerPC ABI accesses @code{.sdata} in shared libraries from the GOT
6018 pointer.  @samp{--sdata-got} forces the old GOT placement.  PowerPC
6019 GCC doesn't use @code{.sdata} in shared libraries, so this option is
6020 really only useful for other compilers that may do so.
6021
6022 @cindex PowerPC stub symbols
6023 @kindex --emit-stub-syms
6024 @item --emit-stub-syms
6025 This option causes @command{ld} to label linker stubs with a local
6026 symbol that encodes the stub type and destination.
6027
6028 @cindex PowerPC TLS optimization
6029 @kindex --no-tls-optimize
6030 @item --no-tls-optimize
6031 PowerPC @command{ld} normally performs some optimization of code
6032 sequences used to access Thread-Local Storage.  Use this option to
6033 disable the optimization.
6034 @end table
6035
6036 @ifclear GENERIC
6037 @lowersections
6038 @end ifclear
6039 @end ifset
6040
6041 @ifset POWERPC64
6042 @ifclear GENERIC
6043 @raisesections
6044 @end ifclear
6045
6046 @node PowerPC64 ELF64
6047 @section @command{ld} and PowerPC64 64-bit ELF Support
6048
6049 @cindex PowerPC64 ELF64 options
6050 @table @option
6051 @cindex PowerPC64 stub grouping
6052 @kindex --stub-group-size
6053 @item --stub-group-size
6054 Long branch stubs, PLT call stubs  and TOC adjusting stubs are placed
6055 by @command{ld} in stub sections located between groups of input sections.
6056 @samp{--stub-group-size} specifies the maximum size of a group of input
6057 sections handled by one stub section.  Since branch offsets are signed,
6058 a stub section may serve two groups of input sections, one group before
6059 the stub section, and one group after it.  However, when using
6060 conditional branches that require stubs, it may be better (for branch
6061 prediction) that stub sections only serve one group of input sections.
6062 A negative value for @samp{N} chooses this scheme, ensuring that
6063 branches to stubs always use a negative offset.  Two special values of
6064 @samp{N} are recognized, @samp{1} and @samp{-1}.  These both instruct
6065 @command{ld} to automatically size input section groups for the branch types
6066 detected, with the same behaviour regarding stub placement as other
6067 positive or negative values of @samp{N} respectively.
6068
6069 Note that @samp{--stub-group-size} does not split input sections.  A
6070 single input section larger than the group size specified will of course
6071 create a larger group (of one section).  If input sections are too
6072 large, it may not be possible for a branch to reach its stub.
6073
6074 @cindex PowerPC64 stub symbols
6075 @kindex --emit-stub-syms
6076 @item --emit-stub-syms
6077 This option causes @command{ld} to label linker stubs with a local
6078 symbol that encodes the stub type and destination.
6079
6080 @cindex PowerPC64 dot symbols
6081 @kindex --dotsyms
6082 @kindex --no-dotsyms
6083 @item --dotsyms, --no-dotsyms
6084 These two options control how @command{ld} interprets version patterns
6085 in a version script.  Older PowerPC64 compilers emitted both a
6086 function descriptor symbol with the same name as the function, and a
6087 code entry symbol with the name prefixed by a dot (@samp{.}).  To
6088 properly version a function @samp{foo}, the version script thus needs
6089 to control both @samp{foo} and @samp{.foo}.  The option
6090 @samp{--dotsyms}, on by default, automatically adds the required
6091 dot-prefixed patterns.  Use @samp{--no-dotsyms} to disable this
6092 feature.
6093
6094 @cindex PowerPC64 TLS optimization
6095 @kindex --no-tls-optimize
6096 @item --no-tls-optimize
6097 PowerPC64 @command{ld} normally performs some optimization of code
6098 sequences used to access Thread-Local Storage.  Use this option to
6099 disable the optimization.
6100
6101 @cindex PowerPC64 OPD optimization
6102 @kindex --no-opd-optimize
6103 @item --no-opd-optimize
6104 PowerPC64 @command{ld} normally removes @code{.opd} section entries
6105 corresponding to deleted link-once functions, or functions removed by
6106 the action of @samp{--gc-sections} or linker script @code{/DISCARD/}.
6107 Use this option to disable @code{.opd} optimization.
6108
6109 @cindex PowerPC64 OPD spacing
6110 @kindex --non-overlapping-opd
6111 @item --non-overlapping-opd
6112 Some PowerPC64 compilers have an option to generate compressed
6113 @code{.opd} entries spaced 16 bytes apart, overlapping the third word,
6114 the static chain pointer (unused in C) with the first word of the next
6115 entry.  This option expands such entries to the full 24 bytes.
6116
6117 @cindex PowerPC64 TOC optimization
6118 @kindex --no-toc-optimize
6119 @item --no-toc-optimize
6120 PowerPC64 @command{ld} normally removes unused @code{.toc} section
6121 entries.  Such entries are detected by examining relocations that
6122 reference the TOC in code sections.  A reloc in a deleted code section
6123 marks a TOC word as unneeded, while a reloc in a kept code section
6124 marks a TOC word as needed.  Since the TOC may reference itself, TOC
6125 relocs are also examined.  TOC words marked as both needed and
6126 unneeded will of course be kept.  TOC words without any referencing
6127 reloc are assumed to be part of a multi-word entry, and are kept or
6128 discarded as per the nearest marked preceding word.  This works
6129 reliably for compiler generated code, but may be incorrect if assembly
6130 code is used to insert TOC entries.  Use this option to disable the
6131 optimization.
6132
6133 @cindex PowerPC64 multi-TOC
6134 @kindex --no-multi-toc
6135 @item --no-multi-toc
6136 By default, PowerPC64 GCC generates code for a TOC model where TOC
6137 entries are accessed with a 16-bit offset from r2.  This limits the
6138 total TOC size to 64K.  PowerPC64 @command{ld} extends this limit by
6139 grouping code sections such that each group uses less than 64K for its
6140 TOC entries, then inserts r2 adjusting stubs between inter-group
6141 calls.  @command{ld} does not split apart input sections, so cannot
6142 help if a single input file has a @code{.toc} section that exceeds
6143 64K, most likely from linking multiple files with @command{ld -r}.
6144 Use this option to turn off this feature.
6145 @end table
6146
6147 @ifclear GENERIC
6148 @lowersections
6149 @end ifclear
6150 @end ifset
6151
6152 @ifset SPU
6153 @ifclear GENERIC
6154 @raisesections
6155 @end ifclear
6156
6157 @node SPU ELF
6158 @section @command{ld} and SPU ELF Support
6159
6160 @cindex SPU ELF options
6161 @table @option
6162
6163 @cindex SPU plugins
6164 @kindex --plugin
6165 @item --plugin
6166 This option marks an executable as a PIC plugin module.
6167
6168 @cindex SPU overlays
6169 @kindex --no-overlays
6170 @item --no-overlays
6171 Normally, @command{ld} recognizes calls to functions within overlay
6172 regions, and redirects such calls to an overlay manager via a stub.
6173 @command{ld} also provides a built-in overlay manager.  This option
6174 turns off all this special overlay handling.
6175
6176 @cindex SPU overlay stub symbols
6177 @kindex --emit-stub-syms
6178 @item --emit-stub-syms
6179 This option causes @command{ld} to label overlay stubs with a local
6180 symbol that encodes the stub type and destination.
6181
6182 @cindex SPU extra overlay stubs
6183 @kindex --extra-overlay-stubs
6184 @item --extra-overlay-stubs
6185 This option causes @command{ld} to add overlay call stubs on all
6186 function calls out of overlay regions.  Normally stubs are not added
6187 on calls to non-overlay regions.
6188
6189 @cindex SPU local store size
6190 @kindex --local-store=lo:hi
6191 @item --local-store=lo:hi
6192 @command{ld} usually checks that a final executable for SPU fits in
6193 the address range 0 to 256k.  This option may be used to change the
6194 range.  Disable the check entirely with @option{--local-store=0:0}.
6195
6196 @cindex SPU
6197 @kindex --stack-analysis
6198 @item --stack-analysis
6199 SPU local store space is limited.  Over-allocation of stack space
6200 unnecessarily limits space available for code and data, while
6201 under-allocation results in runtime failures.  If given this option,
6202 @command{ld} will provide an estimate of maximum stack usage.
6203 @command{ld} does this by examining symbols in code sections to
6204 determine the extents of functions, and looking at function prologues
6205 for stack adjusting instructions.  A call-graph is created by looking
6206 for relocations on branch instructions.  The graph is then searched
6207 for the maximum stack usage path.  Note that this analysis does not
6208 find calls made via function pointers, and does not handle recursion
6209 and other cycles in the call graph.  Stack usage may be
6210 under-estimated if your code makes such calls.  Also, stack usage for
6211 dynamic allocation, e.g. alloca, will not be detected.  If a link map
6212 is requested, detailed information about each function's stack usage
6213 and calls will be given.
6214
6215 @cindex SPU
6216 @kindex --emit-stack-syms
6217 @item --emit-stack-syms
6218 This option, if given along with @option{--stack-analysis} will result
6219 in @command{ld} emitting stack sizing symbols for each function.
6220 These take the form @code{__stack_<function_name>} for global
6221 functions, and @code{__stack_<number>_<function_name>} for static
6222 functions.  @code{<number>} is the section id in hex.  The value of
6223 such symbols is the stack requirement for the corresponding function.
6224 The symbol size will be zero, type @code{STT_NOTYPE}, binding
6225 @code{STB_LOCAL}, and section @code{SHN_ABS}.
6226 @end table
6227
6228 @ifclear GENERIC
6229 @lowersections
6230 @end ifclear
6231 @end ifset
6232
6233 @ifset TICOFF
6234 @ifclear GENERIC
6235 @raisesections
6236 @end ifclear
6237
6238 @node TI COFF
6239 @section @command{ld}'s Support for Various TI COFF Versions
6240 @cindex TI COFF versions
6241 @kindex --format=@var{version}
6242 The @samp{--format} switch allows selection of one of the various
6243 TI COFF versions.  The latest of this writing is 2; versions 0 and 1 are
6244 also supported.  The TI COFF versions also vary in header byte-order
6245 format; @command{ld} will read any version or byte order, but the output
6246 header format depends on the default specified by the specific target.
6247
6248 @ifclear GENERIC
6249 @lowersections
6250 @end ifclear
6251 @end ifset
6252
6253 @ifset WIN32
6254 @ifclear GENERIC
6255 @raisesections
6256 @end ifclear
6257
6258 @node WIN32
6259 @section @command{ld} and WIN32 (cygwin/mingw)
6260
6261 This section describes some of the win32 specific @command{ld} issues.
6262 See @ref{Options,,Command Line Options} for detailed description of the
6263 command line options mentioned here.
6264
6265 @table @emph
6266 @cindex import libraries
6267 @item import libraries
6268 The standard Windows linker creates and uses so-called import
6269 libraries, which contains information for linking to dll's.  They are
6270 regular static archives and are handled as any other static
6271 archive.  The cygwin and mingw ports of @command{ld} have specific
6272 support for creating such libraries provided with the
6273 @samp{--out-implib} command line option.
6274
6275 @item   exporting DLL symbols
6276 @cindex exporting DLL symbols
6277 The cygwin/mingw @command{ld} has several ways to export symbols for dll's.
6278
6279 @table @emph
6280 @item   using auto-export functionality
6281 @cindex using auto-export functionality
6282 By default @command{ld} exports symbols with the auto-export functionality,
6283 which is controlled by the following command line options:
6284
6285 @itemize
6286 @item --export-all-symbols   [This is the default]
6287 @item --exclude-symbols
6288 @item --exclude-libs
6289 @item --exclude-modules-for-implib
6290 @end itemize
6291
6292 If, however, @samp{--export-all-symbols} is not given explicitly on the
6293 command line, then the default auto-export behavior will be @emph{disabled}
6294 if either of the following are true:
6295
6296 @itemize
6297 @item A DEF file is used.
6298 @item Any symbol in any object file was marked with the __declspec(dllexport) attribute.
6299 @end itemize
6300
6301 @item   using a DEF file
6302 @cindex using a DEF file
6303 Another way of exporting symbols is using a DEF file.  A DEF file is
6304 an ASCII file containing definitions of symbols which should be
6305 exported when a dll is created.  Usually it is named @samp{<dll
6306 name>.def} and is added as any other object file to the linker's
6307 command line.  The file's name must end in @samp{.def} or @samp{.DEF}.
6308
6309 @example
6310 gcc -o <output> <objectfiles> <dll name>.def
6311 @end example
6312
6313 Using a DEF file turns off the normal auto-export behavior, unless the
6314 @samp{--export-all-symbols} option is also used.
6315
6316 Here is an example of a DEF file for a shared library called @samp{xyz.dll}:
6317
6318 @example
6319 LIBRARY "xyz.dll" BASE=0x20000000
6320
6321 EXPORTS
6322 foo
6323 bar
6324 _bar = bar
6325 another_foo = abc.dll.afoo
6326 var1 DATA
6327 @end example
6328
6329 This example defines a DLL with a non-default base address and five
6330 symbols in the export table. The third exported symbol @code{_bar} is an
6331 alias for the second. The fourth symbol, @code{another_foo} is resolved
6332 by "forwarding" to another module and treating it as an alias for
6333 @code{afoo} exported from the DLL @samp{abc.dll}. The final symbol
6334 @code{var1} is declared to be a data object.
6335
6336 The optional @code{LIBRARY <name>} command indicates the @emph{internal}
6337 name of the output DLL. If @samp{<name>} does not include a suffix,
6338 the default library suffix, @samp{.DLL} is appended.
6339
6340 When the .DEF file is used to build an application, rather than a
6341 library, the @code{NAME <name>} command should be used instead of
6342 @code{LIBRARY}. If @samp{<name>} does not include a suffix, the default
6343 executable suffix, @samp{.EXE} is appended.
6344
6345 With either @code{LIBRARY <name>} or @code{NAME <name>} the optional
6346 specification @code{BASE = <number>} may be used to specify a
6347 non-default base address for the image.
6348
6349 If neither @code{LIBRARY <name>} nor  @code{NAME <name>} is specified,
6350 or they specify an empty string, the internal name is the same as the
6351 filename specified on the command line.
6352
6353 The complete specification of an export symbol is:
6354
6355 @example
6356 EXPORTS
6357   ( (  ( <name1> [ = <name2> ] )
6358      | ( <name1> = <module-name> . <external-name>))
6359   [ @@ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) *
6360 @end example
6361
6362 Declares @samp{<name1>} as an exported symbol from the DLL, or declares
6363 @samp{<name1>} as an exported alias for @samp{<name2>}; or declares
6364 @samp{<name1>} as a "forward" alias for the symbol
6365 @samp{<external-name>} in the DLL @samp{<module-name>}.
6366 Optionally, the symbol may be exported by the specified ordinal
6367 @samp{<integer>} alias.
6368
6369 The optional keywords that follow the declaration indicate:
6370
6371 @code{NONAME}: Do not put the symbol name in the DLL's export table.  It
6372 will still be exported by its ordinal alias (either the value specified
6373 by the .def specification or, otherwise, the value assigned by the
6374 linker). The symbol name, however, does remain visible in the import
6375 library (if any), unless @code{PRIVATE} is also specified.
6376
6377 @code{DATA}: The symbol is a variable or object, rather than a function.
6378 The import lib will export only an indirect reference to @code{foo} as
6379 the symbol @code{_imp__foo} (ie, @code{foo} must be resolved as
6380 @code{*_imp__foo}).
6381
6382 @code{CONSTANT}: Like @code{DATA}, but put the undecorated @code{foo} as
6383 well as @code{_imp__foo} into the import library. Both refer to the
6384 read-only import address table's pointer to the variable, not to the
6385 variable itself. This can be dangerous. If the user code fails to add
6386 the @code{dllimport} attribute and also fails to explicitly add the
6387 extra indirection that the use of the attribute enforces, the
6388 application will behave unexpectedly.
6389
6390 @code{PRIVATE}: Put the symbol in the DLL's export table, but do not put
6391 it into the static import library used to resolve imports at link time. The
6392 symbol can still be imported using the @code{LoadLibrary/GetProcAddress}
6393 API at runtime or by by using the GNU ld extension of linking directly to
6394 the DLL without an import library.
6395
6396 See ld/deffilep.y in the binutils sources for the full specification of
6397 other DEF file statements
6398
6399 @cindex creating a DEF file
6400 While linking a shared dll, @command{ld} is able to create a DEF file
6401 with the @samp{--output-def <file>} command line option.
6402
6403 @item   Using decorations
6404 @cindex Using decorations
6405 Another way of marking symbols for export is to modify the source code
6406 itself, so that when building the DLL each symbol to be exported is
6407 declared as:
6408
6409 @example
6410 __declspec(dllexport) int a_variable
6411 __declspec(dllexport) void a_function(int with_args)
6412 @end example
6413
6414 All such symbols will be exported from the DLL.  If, however,
6415 any of the object files in the DLL contain symbols decorated in
6416 this way, then the normal auto-export behavior is disabled, unless
6417 the @samp{--export-all-symbols} option is also used.
6418
6419 Note that object files that wish to access these symbols must @emph{not}
6420 decorate them with dllexport.  Instead, they should use dllimport,
6421 instead:
6422
6423 @example
6424 __declspec(dllimport) int a_variable
6425 __declspec(dllimport) void a_function(int with_args)
6426 @end example
6427
6428 This complicates the structure of library header files, because
6429 when included by the library itself the header must declare the
6430 variables and functions as dllexport, but when included by client
6431 code the header must declare them as dllimport.  There are a number
6432 of idioms that are typically used to do this; often client code can
6433 omit the __declspec() declaration completely.  See
6434 @samp{--enable-auto-import} and @samp{automatic data imports} for more
6435 information.
6436 @end table
6437
6438 @cindex automatic data imports
6439 @item automatic data imports
6440 The standard Windows dll format supports data imports from dlls only
6441 by adding special decorations (dllimport/dllexport), which let the
6442 compiler produce specific assembler instructions to deal with this
6443 issue.  This increases the effort necessary to port existing Un*x
6444 code to these platforms, especially for large
6445 c++ libraries and applications.  The auto-import feature, which was
6446 initially provided by Paul Sokolovsky, allows one to omit the
6447 decorations to achieve a behavior that conforms to that on POSIX/Un*x
6448 platforms. This feature is enabled with the @samp{--enable-auto-import}
6449 command-line option, although it is enabled by default on cygwin/mingw.
6450 The @samp{--enable-auto-import} option itself now serves mainly to
6451 suppress any warnings that are ordinarily emitted when linked objects
6452 trigger the feature's use.
6453
6454 auto-import of variables does not always work flawlessly without
6455 additional assistance.  Sometimes, you will see this message
6456
6457 "variable '<var>' can't be auto-imported. Please read the
6458 documentation for ld's @code{--enable-auto-import} for details."
6459
6460 The @samp{--enable-auto-import} documentation explains why this error
6461 occurs, and several methods that can be used to overcome this difficulty.
6462 One of these methods is the @emph{runtime pseudo-relocs} feature, described
6463 below.
6464
6465 @cindex runtime pseudo-relocation
6466 For complex variables imported from DLLs (such as structs or classes),
6467 object files typically contain a base address for the variable and an
6468 offset (@emph{addend}) within the variable--to specify a particular
6469 field or public member, for instance.  Unfortunately, the runtime loader used
6470 in win32 environments is incapable of fixing these references at runtime
6471 without the additional information supplied by dllimport/dllexport decorations.
6472 The standard auto-import feature described above is unable to resolve these
6473 references.
6474
6475 The @samp{--enable-runtime-pseudo-relocs} switch allows these references to
6476 be resolved without error, while leaving the task of adjusting the references
6477 themselves (with their non-zero addends) to specialized code provided by the
6478 runtime environment.  Recent versions of the cygwin and mingw environments and
6479 compilers provide this runtime support; older versions do not.  However, the
6480 support is only necessary on the developer's platform; the compiled result will
6481 run without error on an older system.
6482
6483 @samp{--enable-runtime-pseudo-relocs} is not the default; it must be explicitly
6484 enabled as needed.
6485
6486 @cindex direct linking to a dll
6487 @item direct linking to a dll
6488 The cygwin/mingw ports of @command{ld} support the direct linking,
6489 including data symbols, to a dll without the usage of any import
6490 libraries.  This is much faster and uses much less memory than does the
6491 traditional import library method, especially when linking large
6492 libraries or applications.  When @command{ld} creates an import lib, each
6493 function or variable exported from the dll is stored in its own bfd, even
6494 though a single bfd could contain many exports.  The overhead involved in
6495 storing, loading, and processing so many bfd's is quite large, and explains the
6496 tremendous time, memory, and storage needed to link against particularly
6497 large or complex libraries when using import libs.
6498
6499 Linking directly to a dll uses no extra command-line switches other than
6500 @samp{-L} and @samp{-l}, because @command{ld} already searches for a number
6501 of names to match each library.  All that is needed from the developer's
6502 perspective is an understanding of this search, in order to force ld to
6503 select the dll instead of an import library.
6504
6505
6506 For instance, when ld is called with the argument @samp{-lxxx} it will attempt
6507 to find, in the first directory of its search path,
6508
6509 @example
6510 libxxx.dll.a
6511 xxx.dll.a
6512 libxxx.a
6513 xxx.lib
6514 cygxxx.dll (*)
6515 libxxx.dll
6516 xxx.dll
6517 @end example
6518
6519 before moving on to the next directory in the search path.
6520
6521 (*) Actually, this is not @samp{cygxxx.dll} but in fact is @samp{<prefix>xxx.dll},
6522 where @samp{<prefix>} is set by the @command{ld} option
6523 @samp{--dll-search-prefix=<prefix>}. In the case of cygwin, the standard gcc spec
6524 file includes @samp{--dll-search-prefix=cyg}, so in effect we actually search for
6525 @samp{cygxxx.dll}.
6526
6527 Other win32-based unix environments, such as mingw or pw32, may use other
6528 @samp{<prefix>}es, although at present only cygwin makes use of this feature.  It
6529 was originally intended to help avoid name conflicts among dll's built for the
6530 various win32/un*x environments, so that (for example) two versions of a zlib dll
6531 could coexist on the same machine.
6532
6533 The generic cygwin/mingw path layout uses a @samp{bin} directory for
6534 applications and dll's and a @samp{lib} directory for the import
6535 libraries (using cygwin nomenclature):
6536
6537 @example
6538 bin/
6539         cygxxx.dll
6540 lib/
6541         libxxx.dll.a   (in case of dll's)
6542         libxxx.a       (in case of static archive)
6543 @end example
6544
6545 Linking directly to a dll without using the import library can be
6546 done two ways:
6547
6548 1. Use the dll directly by adding the @samp{bin} path to the link line
6549 @example
6550 gcc -Wl,-verbose  -o a.exe -L../bin/ -lxxx
6551 @end example
6552
6553 However, as the dll's often have version numbers appended to their names
6554 (@samp{cygncurses-5.dll}) this will often fail, unless one specifies
6555 @samp{-L../bin -lncurses-5} to include the version.  Import libs are generally
6556 not versioned, and do not have this difficulty.
6557
6558 2. Create a symbolic link from the dll to a file in the @samp{lib}
6559 directory according to the above mentioned search pattern.  This
6560 should be used to avoid unwanted changes in the tools needed for
6561 making the app/dll.
6562
6563 @example
6564 ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a]
6565 @end example
6566
6567 Then you can link without any make environment changes.
6568
6569 @example
6570 gcc -Wl,-verbose  -o a.exe -L../lib/ -lxxx
6571 @end example
6572
6573 This technique also avoids the version number problems, because the following is
6574 perfectly legal
6575
6576 @example
6577 bin/
6578         cygxxx-5.dll
6579 lib/
6580         libxxx.dll.a -> ../bin/cygxxx-5.dll
6581 @end example
6582
6583 Linking directly to a dll without using an import lib will work
6584 even when auto-import features are exercised, and even when
6585 @samp{--enable-runtime-pseudo-relocs} is used.
6586
6587 Given the improvements in speed and memory usage, one might justifiably
6588 wonder why import libraries are used at all.  There are three reasons:
6589
6590 1. Until recently, the link-directly-to-dll functionality did @emph{not}
6591 work with auto-imported data.
6592
6593 2. Sometimes it is necessary to include pure static objects within the
6594 import library (which otherwise contains only bfd's for indirection
6595 symbols that point to the exports of a dll).  Again, the import lib
6596 for the cygwin kernel makes use of this ability, and it is not
6597 possible to do this without an import lib.
6598
6599 3. Symbol aliases can only be resolved using an import lib.  This is
6600 critical when linking against OS-supplied dll's (eg, the win32 API)
6601 in which symbols are usually exported as undecorated aliases of their
6602 stdcall-decorated assembly names.
6603
6604 So, import libs are not going away.  But the ability to replace
6605 true import libs with a simple symbolic link to (or a copy of)
6606 a dll, in many cases, is a useful addition to the suite of tools
6607 binutils makes available to the win32 developer.  Given the
6608 massive improvements in memory requirements during linking, storage
6609 requirements, and linking speed, we expect that many developers
6610 will soon begin to use this feature whenever possible.
6611
6612 @item symbol aliasing
6613 @table @emph
6614 @item adding additional names
6615 Sometimes, it is useful to export symbols with additional names.
6616 A symbol @samp{foo} will be exported as @samp{foo}, but it can also be
6617 exported as @samp{_foo} by using special directives in the DEF file
6618 when creating the dll.  This will affect also the optional created
6619 import library.  Consider the following DEF file:
6620
6621 @example
6622 LIBRARY "xyz.dll" BASE=0x61000000
6623
6624 EXPORTS
6625 foo
6626 _foo = foo
6627 @end example
6628
6629 The line @samp{_foo = foo} maps the symbol @samp{foo} to @samp{_foo}.
6630
6631 Another method for creating a symbol alias is to create it in the
6632 source code using the "weak" attribute:
6633
6634 @example
6635 void foo () @{ /* Do something.  */; @}
6636 void _foo () __attribute__ ((weak, alias ("foo")));
6637 @end example
6638
6639 See the gcc manual for more information about attributes and weak
6640 symbols.
6641
6642 @item renaming symbols
6643 Sometimes it is useful to rename exports.  For instance, the cygwin
6644 kernel does this regularly.  A symbol @samp{_foo} can be exported as
6645 @samp{foo} but not as @samp{_foo} by using special directives in the
6646 DEF file. (This will also affect the import library, if it is
6647 created).  In the following example:
6648
6649 @example
6650 LIBRARY "xyz.dll" BASE=0x61000000
6651
6652 EXPORTS
6653 _foo = foo
6654 @end example
6655
6656 The line @samp{_foo = foo} maps the exported symbol @samp{foo} to
6657 @samp{_foo}.
6658 @end table
6659
6660 Note: using a DEF file disables the default auto-export behavior,
6661 unless the @samp{--export-all-symbols} command line option is used.
6662 If, however, you are trying to rename symbols, then you should list
6663 @emph{all} desired exports in the DEF file, including the symbols
6664 that are not being renamed, and do @emph{not} use the
6665 @samp{--export-all-symbols} option.  If you list only the
6666 renamed symbols in the DEF file, and use @samp{--export-all-symbols}
6667 to handle the other symbols, then the both the new names @emph{and}
6668 the original names for the renamed symbols will be exported.
6669 In effect, you'd be aliasing those symbols, not renaming them,
6670 which is probably not what you wanted.
6671
6672 @cindex weak externals
6673 @item weak externals
6674 The Windows object format, PE, specifies a form of weak symbols called
6675 weak externals.  When a weak symbol is linked and the symbol is not
6676 defined, the weak symbol becomes an alias for some other symbol.  There
6677 are three variants of weak externals:
6678 @itemize
6679 @item Definition is searched for in objects and libraries, historically
6680 called lazy externals.
6681 @item Definition is searched for only in other objects, not in libraries.
6682 This form is not presently implemented.
6683 @item No search; the symbol is an alias.  This form is not presently
6684 implemented.
6685 @end itemize
6686 As a GNU extension, weak symbols that do not specify an alternate symbol
6687 are supported.  If the symbol is undefined when linking, the symbol
6688 uses a default value.
6689 @end table
6690
6691 @ifclear GENERIC
6692 @lowersections
6693 @end ifclear
6694 @end ifset
6695
6696 @ifset XTENSA
6697 @ifclear GENERIC
6698 @raisesections
6699 @end ifclear
6700
6701 @node Xtensa
6702 @section @code{ld} and Xtensa Processors
6703
6704 @cindex Xtensa processors
6705 The default @command{ld} behavior for Xtensa processors is to interpret
6706 @code{SECTIONS} commands so that lists of explicitly named sections in a
6707 specification with a wildcard file will be interleaved when necessary to
6708 keep literal pools within the range of PC-relative load offsets.  For
6709 example, with the command:
6710
6711 @smallexample
6712 SECTIONS
6713 @{
6714   .text : @{
6715     *(.literal .text)
6716   @}
6717 @}
6718 @end smallexample
6719
6720 @noindent
6721 @command{ld} may interleave some of the @code{.literal}
6722 and @code{.text} sections from different object files to ensure that the
6723 literal pools are within the range of PC-relative load offsets.  A valid
6724 interleaving might place the @code{.literal} sections from an initial
6725 group of files followed by the @code{.text} sections of that group of
6726 files.  Then, the @code{.literal} sections from the rest of the files
6727 and the @code{.text} sections from the rest of the files would follow.
6728
6729 @cindex @option{--relax} on Xtensa
6730 @cindex relaxing on Xtensa
6731 Relaxation is enabled by default for the Xtensa version of @command{ld} and
6732 provides two important link-time optimizations.  The first optimization
6733 is to combine identical literal values to reduce code size.  A redundant
6734 literal will be removed and all the @code{L32R} instructions that use it
6735 will be changed to reference an identical literal, as long as the
6736 location of the replacement literal is within the offset range of all
6737 the @code{L32R} instructions.  The second optimization is to remove
6738 unnecessary overhead from assembler-generated ``longcall'' sequences of
6739 @code{L32R}/@code{CALLX@var{n}} when the target functions are within
6740 range of direct @code{CALL@var{n}} instructions.
6741
6742 For each of these cases where an indirect call sequence can be optimized
6743 to a direct call, the linker will change the @code{CALLX@var{n}}
6744 instruction to a @code{CALL@var{n}} instruction, remove the @code{L32R}
6745 instruction, and remove the literal referenced by the @code{L32R}
6746 instruction if it is not used for anything else.  Removing the
6747 @code{L32R} instruction always reduces code size but can potentially
6748 hurt performance by changing the alignment of subsequent branch targets.
6749 By default, the linker will always preserve alignments, either by
6750 switching some instructions between 24-bit encodings and the equivalent
6751 density instructions or by inserting a no-op in place of the @code{L32R}
6752 instruction that was removed.  If code size is more important than
6753 performance, the @option{--size-opt} option can be used to prevent the
6754 linker from widening density instructions or inserting no-ops, except in
6755 a few cases where no-ops are required for correctness.
6756
6757 The following Xtensa-specific command-line options can be used to
6758 control the linker:
6759
6760 @cindex Xtensa options
6761 @table @option
6762 @kindex --no-relax
6763 @item --no-relax
6764 Since the Xtensa version of @code{ld} enables the @option{--relax} option
6765 by default, the @option{--no-relax} option is provided to disable
6766 relaxation.
6767
6768 @item --size-opt
6769 When optimizing indirect calls to direct calls, optimize for code size
6770 more than performance.  With this option, the linker will not insert
6771 no-ops or widen density instructions to preserve branch target
6772 alignment.  There may still be some cases where no-ops are required to
6773 preserve the correctness of the code.
6774 @end table
6775
6776 @ifclear GENERIC
6777 @lowersections
6778 @end ifclear
6779 @end ifset
6780
6781 @ifclear SingleFormat
6782 @node BFD
6783 @chapter BFD
6784
6785 @cindex back end
6786 @cindex object file management
6787 @cindex object formats available
6788 @kindex objdump -i
6789 The linker accesses object and archive files using the BFD libraries.
6790 These libraries allow the linker to use the same routines to operate on
6791 object files whatever the object file format.  A different object file
6792 format can be supported simply by creating a new BFD back end and adding
6793 it to the library.  To conserve runtime memory, however, the linker and
6794 associated tools are usually configured to support only a subset of the
6795 object file formats available.  You can use @code{objdump -i}
6796 (@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}) to
6797 list all the formats available for your configuration.
6798
6799 @cindex BFD requirements
6800 @cindex requirements for BFD
6801 As with most implementations, BFD is a compromise between
6802 several conflicting requirements. The major factor influencing
6803 BFD design was efficiency: any time used converting between
6804 formats is time which would not have been spent had BFD not
6805 been involved. This is partly offset by abstraction payback; since
6806 BFD simplifies applications and back ends, more time and care
6807 may be spent optimizing algorithms for a greater speed.
6808
6809 One minor artifact of the BFD solution which you should bear in
6810 mind is the potential for information loss.  There are two places where
6811 useful information can be lost using the BFD mechanism: during
6812 conversion and during output. @xref{BFD information loss}.
6813
6814 @menu
6815 * BFD outline::                 How it works: an outline of BFD
6816 @end menu
6817
6818 @node BFD outline
6819 @section How It Works: An Outline of BFD
6820 @cindex opening object files
6821 @include bfdsumm.texi
6822 @end ifclear
6823
6824 @node Reporting Bugs
6825 @chapter Reporting Bugs
6826 @cindex bugs in @command{ld}
6827 @cindex reporting bugs in @command{ld}
6828
6829 Your bug reports play an essential role in making @command{ld} reliable.
6830
6831 Reporting a bug may help you by bringing a solution to your problem, or
6832 it may not.  But in any case the principal function of a bug report is
6833 to help the entire community by making the next version of @command{ld}
6834 work better.  Bug reports are your contribution to the maintenance of
6835 @command{ld}.
6836
6837 In order for a bug report to serve its purpose, you must include the
6838 information that enables us to fix the bug.
6839
6840 @menu
6841 * Bug Criteria::                Have you found a bug?
6842 * Bug Reporting::               How to report bugs
6843 @end menu
6844
6845 @node Bug Criteria
6846 @section Have You Found a Bug?
6847 @cindex bug criteria
6848
6849 If you are not sure whether you have found a bug, here are some guidelines:
6850
6851 @itemize @bullet
6852 @cindex fatal signal
6853 @cindex linker crash
6854 @cindex crash of linker
6855 @item
6856 If the linker gets a fatal signal, for any input whatever, that is a
6857 @command{ld} bug.  Reliable linkers never crash.
6858
6859 @cindex error on valid input
6860 @item
6861 If @command{ld} produces an error message for valid input, that is a bug.
6862
6863 @cindex invalid input
6864 @item
6865 If @command{ld} does not produce an error message for invalid input, that
6866 may be a bug.  In the general case, the linker can not verify that
6867 object files are correct.
6868
6869 @item
6870 If you are an experienced user of linkers, your suggestions for
6871 improvement of @command{ld} are welcome in any case.
6872 @end itemize
6873
6874 @node Bug Reporting
6875 @section How to Report Bugs
6876 @cindex bug reports
6877 @cindex @command{ld} bugs, reporting
6878
6879 A number of companies and individuals offer support for @sc{gnu}
6880 products.  If you obtained @command{ld} from a support organization, we
6881 recommend you contact that organization first.
6882
6883 You can find contact information for many support companies and
6884 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
6885 distribution.
6886
6887 @ifset BUGURL
6888 Otherwise, send bug reports for @command{ld} to
6889 @value{BUGURL}.
6890 @end ifset
6891
6892 The fundamental principle of reporting bugs usefully is this:
6893 @strong{report all the facts}.  If you are not sure whether to state a
6894 fact or leave it out, state it!
6895
6896 Often people omit facts because they think they know what causes the
6897 problem and assume that some details do not matter.  Thus, you might
6898 assume that the name of a symbol you use in an example does not
6899 matter.  Well, probably it does not, but one cannot be sure.  Perhaps
6900 the bug is a stray memory reference which happens to fetch from the
6901 location where that name is stored in memory; perhaps, if the name
6902 were different, the contents of that location would fool the linker
6903 into doing the right thing despite the bug.  Play it safe and give a
6904 specific, complete example.  That is the easiest thing for you to do,
6905 and the most helpful.
6906
6907 Keep in mind that the purpose of a bug report is to enable us to fix
6908 the bug if it is new to us.  Therefore, always write your bug reports
6909 on the assumption that the bug has not been reported previously.
6910
6911 Sometimes people give a few sketchy facts and ask, ``Does this ring a
6912 bell?''  This cannot help us fix a bug, so it is basically useless.  We
6913 respond by asking for enough details to enable us to investigate.
6914 You might as well expedite matters by sending them to begin with.
6915
6916 To enable us to fix the bug, you should include all these things:
6917
6918 @itemize @bullet
6919 @item
6920 The version of @command{ld}.  @command{ld} announces it if you start it with
6921 the @samp{--version} argument.
6922
6923 Without this, we will not know whether there is any point in looking for
6924 the bug in the current version of @command{ld}.
6925
6926 @item
6927 Any patches you may have applied to the @command{ld} source, including any
6928 patches made to the @code{BFD} library.
6929
6930 @item
6931 The type of machine you are using, and the operating system name and
6932 version number.
6933
6934 @item
6935 What compiler (and its version) was used to compile @command{ld}---e.g.
6936 ``@code{gcc-2.7}''.
6937
6938 @item
6939 The command arguments you gave the linker to link your example and
6940 observe the bug.  To guarantee you will not omit something important,
6941 list them all.  A copy of the Makefile (or the output from make) is
6942 sufficient.
6943
6944 If we were to try to guess the arguments, we would probably guess wrong
6945 and then we might not encounter the bug.
6946
6947 @item
6948 A complete input file, or set of input files, that will reproduce the
6949 bug.  It is generally most helpful to send the actual object files
6950 provided that they are reasonably small.  Say no more than 10K.  For
6951 bigger files you can either make them available by FTP or HTTP or else
6952 state that you are willing to send the object file(s) to whomever
6953 requests them.  (Note - your email will be going to a mailing list, so
6954 we do not want to clog it up with large attachments).  But small
6955 attachments are best.
6956
6957 If the source files were assembled using @code{gas} or compiled using
6958 @code{gcc}, then it may be OK to send the source files rather than the
6959 object files.  In this case, be sure to say exactly what version of
6960 @code{gas} or @code{gcc} was used to produce the object files.  Also say
6961 how @code{gas} or @code{gcc} were configured.
6962
6963 @item
6964 A description of what behavior you observe that you believe is
6965 incorrect.  For example, ``It gets a fatal signal.''
6966
6967 Of course, if the bug is that @command{ld} gets a fatal signal, then we
6968 will certainly notice it.  But if the bug is incorrect output, we might
6969 not notice unless it is glaringly wrong.  You might as well not give us
6970 a chance to make a mistake.
6971
6972 Even if the problem you experience is a fatal signal, you should still
6973 say so explicitly.  Suppose something strange is going on, such as, your
6974 copy of @command{ld} is out of sync, or you have encountered a bug in the
6975 C library on your system.  (This has happened!)  Your copy might crash
6976 and ours would not.  If you told us to expect a crash, then when ours
6977 fails to crash, we would know that the bug was not happening for us.  If
6978 you had not told us to expect a crash, then we would not be able to draw
6979 any conclusion from our observations.
6980
6981 @item
6982 If you wish to suggest changes to the @command{ld} source, send us context
6983 diffs, as generated by @code{diff} with the @samp{-u}, @samp{-c}, or
6984 @samp{-p} option.  Always send diffs from the old file to the new file.
6985 If you even discuss something in the @command{ld} source, refer to it by
6986 context, not by line number.
6987
6988 The line numbers in our development sources will not match those in your
6989 sources.  Your line numbers would convey no useful information to us.
6990 @end itemize
6991
6992 Here are some things that are not necessary:
6993
6994 @itemize @bullet
6995 @item
6996 A description of the envelope of the bug.
6997
6998 Often people who encounter a bug spend a lot of time investigating
6999 which changes to the input file will make the bug go away and which
7000 changes will not affect it.
7001
7002 This is often time consuming and not very useful, because the way we
7003 will find the bug is by running a single example under the debugger
7004 with breakpoints, not by pure deduction from a series of examples.
7005 We recommend that you save your time for something else.
7006
7007 Of course, if you can find a simpler example to report @emph{instead}
7008 of the original one, that is a convenience for us.  Errors in the
7009 output will be easier to spot, running under the debugger will take
7010 less time, and so on.
7011
7012 However, simplification is not vital; if you do not want to do this,
7013 report the bug anyway and send us the entire test case you used.
7014
7015 @item
7016 A patch for the bug.
7017
7018 A patch for the bug does help us if it is a good one.  But do not omit
7019 the necessary information, such as the test case, on the assumption that
7020 a patch is all we need.  We might see problems with your patch and decide
7021 to fix the problem another way, or we might not understand it at all.
7022
7023 Sometimes with a program as complicated as @command{ld} it is very hard to
7024 construct an example that will make the program follow a certain path
7025 through the code.  If you do not send us the example, we will not be
7026 able to construct one, so we will not be able to verify that the bug is
7027 fixed.
7028
7029 And if we cannot understand what bug you are trying to fix, or why your
7030 patch should be an improvement, we will not install it.  A test case will
7031 help us to understand.
7032
7033 @item
7034 A guess about what the bug is or what it depends on.
7035
7036 Such guesses are usually wrong.  Even we cannot guess right about such
7037 things without first using the debugger to find the facts.
7038 @end itemize
7039
7040 @node MRI
7041 @appendix MRI Compatible Script Files
7042 @cindex MRI compatibility
7043 To aid users making the transition to @sc{gnu} @command{ld} from the MRI
7044 linker, @command{ld} can use MRI compatible linker scripts as an
7045 alternative to the more general-purpose linker scripting language
7046 described in @ref{Scripts}.  MRI compatible linker scripts have a much
7047 simpler command set than the scripting language otherwise used with
7048 @command{ld}.  @sc{gnu} @command{ld} supports the most commonly used MRI
7049 linker commands; these commands are described here.
7050
7051 In general, MRI scripts aren't of much use with the @code{a.out} object
7052 file format, since it only has three sections and MRI scripts lack some
7053 features to make use of them.
7054
7055 You can specify a file containing an MRI-compatible script using the
7056 @samp{-c} command-line option.
7057
7058 Each command in an MRI-compatible script occupies its own line; each
7059 command line starts with the keyword that identifies the command (though
7060 blank lines are also allowed for punctuation).  If a line of an
7061 MRI-compatible script begins with an unrecognized keyword, @command{ld}
7062 issues a warning message, but continues processing the script.
7063
7064 Lines beginning with @samp{*} are comments.
7065
7066 You can write these commands using all upper-case letters, or all
7067 lower case; for example, @samp{chip} is the same as @samp{CHIP}.
7068 The following list shows only the upper-case form of each command.
7069
7070 @table @code
7071 @cindex @code{ABSOLUTE} (MRI)
7072 @item ABSOLUTE @var{secname}
7073 @itemx ABSOLUTE @var{secname}, @var{secname}, @dots{} @var{secname}
7074 Normally, @command{ld} includes in the output file all sections from all
7075 the input files.  However, in an MRI-compatible script, you can use the
7076 @code{ABSOLUTE} command to restrict the sections that will be present in
7077 your output program.  If the @code{ABSOLUTE} command is used at all in a
7078 script, then only the sections named explicitly in @code{ABSOLUTE}
7079 commands will appear in the linker output.  You can still use other
7080 input sections (whatever you select on the command line, or using
7081 @code{LOAD}) to resolve addresses in the output file.
7082
7083 @cindex @code{ALIAS} (MRI)
7084 @item ALIAS @var{out-secname}, @var{in-secname}
7085 Use this command to place the data from input section @var{in-secname}
7086 in a section called @var{out-secname} in the linker output file.
7087
7088 @var{in-secname} may be an integer.
7089
7090 @cindex @code{ALIGN} (MRI)
7091 @item ALIGN @var{secname} = @var{expression}
7092 Align the section called @var{secname} to @var{expression}.  The
7093 @var{expression} should be a power of two.
7094
7095 @cindex @code{BASE} (MRI)
7096 @item BASE @var{expression}
7097 Use the value of @var{expression} as the lowest address (other than
7098 absolute addresses) in the output file.
7099
7100 @cindex @code{CHIP} (MRI)
7101 @item CHIP @var{expression}
7102 @itemx CHIP @var{expression}, @var{expression}
7103 This command does nothing; it is accepted only for compatibility.
7104
7105 @cindex @code{END} (MRI)
7106 @item END
7107 This command does nothing whatever; it's only accepted for compatibility.
7108
7109 @cindex @code{FORMAT} (MRI)
7110 @item FORMAT @var{output-format}
7111 Similar to the @code{OUTPUT_FORMAT} command in the more general linker
7112 language, but restricted to one of these output formats:
7113
7114 @enumerate
7115 @item
7116 S-records, if @var{output-format} is @samp{S}
7117
7118 @item
7119 IEEE, if @var{output-format} is @samp{IEEE}
7120
7121 @item
7122 COFF (the @samp{coff-m68k} variant in BFD), if @var{output-format} is
7123 @samp{COFF}
7124 @end enumerate
7125
7126 @cindex @code{LIST} (MRI)
7127 @item LIST @var{anything}@dots{}
7128 Print (to the standard output file) a link map, as produced by the
7129 @command{ld} command-line option @samp{-M}.
7130
7131 The keyword @code{LIST} may be followed by anything on the
7132 same line, with no change in its effect.
7133
7134 @cindex @code{LOAD} (MRI)
7135 @item LOAD @var{filename}
7136 @itemx LOAD @var{filename}, @var{filename}, @dots{} @var{filename}
7137 Include one or more object file @var{filename} in the link; this has the
7138 same effect as specifying @var{filename} directly on the @command{ld}
7139 command line.
7140
7141 @cindex @code{NAME} (MRI)
7142 @item NAME @var{output-name}
7143 @var{output-name} is the name for the program produced by @command{ld}; the
7144 MRI-compatible command @code{NAME} is equivalent to the command-line
7145 option @samp{-o} or the general script language command @code{OUTPUT}.
7146
7147 @cindex @code{ORDER} (MRI)
7148 @item ORDER @var{secname}, @var{secname}, @dots{} @var{secname}
7149 @itemx ORDER @var{secname} @var{secname} @var{secname}
7150 Normally, @command{ld} orders the sections in its output file in the
7151 order in which they first appear in the input files.  In an MRI-compatible
7152 script, you can override this ordering with the @code{ORDER} command.  The
7153 sections you list with @code{ORDER} will appear first in your output
7154 file, in the order specified.
7155
7156 @cindex @code{PUBLIC} (MRI)
7157 @item PUBLIC @var{name}=@var{expression}
7158 @itemx PUBLIC @var{name},@var{expression}
7159 @itemx PUBLIC @var{name} @var{expression}
7160 Supply a value (@var{expression}) for external symbol
7161 @var{name} used in the linker input files.
7162
7163 @cindex @code{SECT} (MRI)
7164 @item SECT @var{secname}, @var{expression}
7165 @itemx SECT @var{secname}=@var{expression}
7166 @itemx SECT @var{secname} @var{expression}
7167 You can use any of these three forms of the @code{SECT} command to
7168 specify the start address (@var{expression}) for section @var{secname}.
7169 If you have more than one @code{SECT} statement for the same
7170 @var{secname}, only the @emph{first} sets the start address.
7171 @end table
7172
7173 @node GNU Free Documentation License
7174 @appendix GNU Free Documentation License
7175 @include fdl.texi
7176
7177 @node LD Index
7178 @unnumbered LD Index
7179
7180 @printindex cp
7181
7182 @tex
7183 % I think something like @colophon should be in texinfo.  In the
7184 % meantime:
7185 \long\def\colophon{\hbox to0pt{}\vfill
7186 \centerline{The body of this manual is set in}
7187 \centerline{\fontname\tenrm,}
7188 \centerline{with headings in {\bf\fontname\tenbf}}
7189 \centerline{and examples in {\tt\fontname\tentt}.}
7190 \centerline{{\it\fontname\tenit\/} and}
7191 \centerline{{\sl\fontname\tensl\/}}
7192 \centerline{are used for emphasis.}\vfill}
7193 \page\colophon
7194 % Blame: doc@cygnus.com, 28mar91.
7195 @end tex
7196
7197 @bye