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