OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [ld/] [ld.texinfo] - Blame information for rev 853

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.