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