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