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