Makefile.in: correct out-of-date TEXIDIR default
[binutils-gdb.git] / ld / ld.texinfo
1 \input texinfo
2 @setfilename ld.info
3 @syncodeindex ky cp
4 @include configdoc.texi
5
6 @c @smallbook
7 @c @cropmarks
8
9 @ifinfo
10 @format
11 START-INFO-DIR-ENTRY
12 * Ld:: The GNU linker.
13 END-INFO-DIR-ENTRY
14 @end format
15 @end ifinfo
16
17 @ifinfo
18 This file documents the GNU linker LD.
19
20 Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
21
22 Permission is granted to make and distribute verbatim copies of
23 this manual provided the copyright notice and this permission notice
24 are preserved on all copies.
25
26 Permission is granted to copy and distribute modified versions of this
27 manual under the conditions for verbatim copying, provided also that
28 the entire resulting derived work is distributed under the terms of a
29 permission notice identical to this one.
30
31 Permission is granted to copy and distribute translations of this manual
32 into another language, under the above conditions for modified versions.
33
34 @ignore
35 Permission is granted to process this file through Tex and print the
36 results, provided the printed document carries copying permission
37 notice identical to this one except for the removal of this paragraph
38 (this paragraph not being relevant to the printed manual).
39
40 @end ignore
41 @end ifinfo
42 @iftex
43 @finalout
44 @setchapternewpage odd
45 @settitle Using LD, the GNU linker
46 @titlepage
47 @title Using ld
48 @subtitle The GNU linker
49 @sp 1
50 @subtitle @code{ld} version 2
51 @subtitle March 1993
52 @author Steve Chamberlain and Roland Pesch
53 @author Cygnus Support
54 @page
55
56 @tex
57 {\parskip=0pt
58 \hfill Cygnus Support\par
59 \hfill steve\@cygnus.com, pesch\@cygnus.com\par
60 \hfill {\it Using LD, the GNU linker}\par
61 \hfill Edited by Jeffrey Osier (jeffrey\@cygnus.com), March 1993.\par
62 }
63 \global\parindent=0pt % Steve likes it this way.
64 @end tex
65
66 @vskip 0pt plus 1filll
67 Copyright @copyright{} 1991, 1992, 1993 Free Software Foundation, Inc.
68
69 Permission is granted to make and distribute verbatim copies of
70 this manual provided the copyright notice and this permission notice
71 are preserved on all copies.
72
73 Permission is granted to copy and distribute modified versions of this
74 manual under the conditions for verbatim copying, provided also that
75 the entire resulting derived work is distributed under the terms of a
76 permission notice identical to this one.
77
78 Permission is granted to copy and distribute translations of this manual
79 into another language, under the above conditions for modified versions.
80 @end titlepage
81 @end iftex
82 @c FIXME: Talk about importance of *order* of args, cmds to linker!
83
84 @ifinfo
85 @node Top
86 @top Using ld
87 This file documents the GNU linker ld.
88
89 @menu
90 * Overview:: Overview
91 * Invocation:: Invocation
92 * Commands:: Command Language
93 @ifset GENERIC
94 * Machine Dependent:: Machine Dependent Features
95 @end ifset
96 @ifclear GENERIC
97 @ifset H8300
98 * H8/300:: ld and the H8/300
99 @end ifset
100 @ifset I960
101 * i960:: ld and the Intel 960 family
102 @end ifset
103 @end ifclear
104 @ifclear SingleFormat
105 * BFD:: BFD
106 @end ifclear
107 @c Following blank line required for remaining bug in makeinfo conds/menus
108
109 * MRI:: MRI Compatible Script Files
110 * Index:: Index
111 @end menu
112 @end ifinfo
113
114 @node Overview
115 @chapter Overview
116
117 @cindex GNU linker
118 @cindex what is this?
119 @code{ld} combines a number of object and archive files, relocates
120 their data and ties up symbol references. Usually the last step in
121 compiling a program is to run @code{ld}.
122
123 @code{ld} accepts Linker Command Language files written in
124 a superset of AT&T's Link Editor Command Language syntax,
125 to provide explicit and total control over the linking process.
126
127 @ifclear SingleFormat
128 This version of @code{ld} uses the general purpose BFD libraries
129 to operate on object files. This allows @code{ld} to read, combine, and
130 write object files in many different formats---for example, COFF or
131 @code{a.out}. Different formats may be linked together to produce any
132 available kind of object file. @xref{BFD} for a list of formats
133 supported on various architectures.
134 @end ifclear
135
136 Aside from its flexibility, the GNU linker is more helpful than other
137 linkers in providing diagnostic information. Many linkers abandon
138 execution immediately upon encountering an error; whenever possible,
139 @code{ld} continues executing, allowing you to identify other errors
140 (or, in some cases, to get an output file in spite of the error).
141
142 @node Invocation
143 @chapter Invocation
144
145 The GNU linker @code{ld} is meant to cover a broad range of situations,
146 and to be as compatible as possible with other linkers. As a result,
147 you have many choices to control its behavior.
148
149 @ifset UsesEnvVars
150 @menu
151 * Options:: Command Line Options
152 * Environment:: Environment Variables
153 @end menu
154
155 @node Options
156 @section Command Line Options
157 @end ifset
158
159 @cindex command line
160 @cindex options
161 Here is a summary of the options you can use on the @code{ld} command
162 line:
163
164 @c FIXME! -relax only avail h8/300, i960. Conditionals screwed in examples.
165 @smallexample
166 ld [ -o @var{output} ] @var{objfile}@dots{}
167 [ -A@var{architecture} ] [ -b @var{input-format} ] [ -Bstatic ]
168 [ -c @var{MRI-commandfile} ] [ -d | -dc | -dp ]
169 [ -defsym @var{symbol}=@var{expression} ]
170 [ -e @var{entry} ] [ -F ] [ -F @var{format} ]
171 [ -format @var{input-format} ] [ -g ] [ -G @var{size} ] [ --help ] [ -i ]
172 [ -l@var{archive} ] [ -L@var{searchdir} ] [ -M ] [ -Map @var{mapfile} ]
173 [ -m @var{emulation} ] [ -N | -n ] [ -noinhibit-exec ]
174 [ -oformat @var{output-format} ] [ -R @var{filename} ] [ -relax ]
175 [ -r | -Ur ] [ -S ] [ -s ] [ -sort-common ] [ -T @var{commandfile} ]
176 [ -Ttext @var{org} ] [ -Tdata @var{org} ]
177 [ -Tbss @var{org} ] [ -t ] [ -u @var{symbol}] [-V] [-v] [ --version ]
178 [ -warn-common ] [ -y@var{symbol} ] [ -X ] [-x ]
179 @end smallexample
180
181 This plethora of command-line options may seem intimidating, but in
182 actual practice few of them are used in any particular context.
183 @cindex standard Unix system
184 For instance, a frequent use of @code{ld} is to link standard Unix
185 object files on a standard, supported Unix system. On such a system, to
186 link a file @code{hello.o}:
187
188 @example
189 ld -o @var{output} /lib/crt0.o hello.o -lc
190 @end example
191
192 This tells @code{ld} to produce a file called @var{output} as the
193 result of linking the file @code{/lib/crt0.o} with @code{hello.o} and
194 the library @code{libc.a}, which will come from the standard search
195 directories. (See the discussion of the @samp{-l} option below.)
196
197 The command-line options to @code{ld} may be specified in any order, and
198 may be repeated at will. Repeating most options with a
199 different argument will either have no further effect, or override prior
200 occurrences (those further to the left on the command line) of that
201 option.
202
203 @ifclear SingleFormat
204 The exceptions---which may meaningfully be used more than once---are
205 @samp{-A}, @samp{-b} (or its synonym @samp{-format}), @samp{-defsym},
206 @samp{-L}, @samp{-l}, @samp{-R}, and @samp{-u}.
207 @end ifclear
208 @ifset SingleFormat
209 The exceptions---which may meaningfully be used more than once---are
210 @samp{-A}, @samp{-defsym}, @samp{-L}, @samp{-l}, @samp{-R}, and @samp{-u}.
211 @end ifset
212
213 @cindex object files
214 The list of object files to be linked together, shown as @var{objfile}@dots{},
215 may follow, precede, or be mixed in with command-line options, except that
216 an @var{objfile} argument may not be placed between an option and
217 its argument.
218
219 Usually the linker is invoked with at least one object file, but you can
220 specify other forms of binary input files using @samp{-l}, @samp{-R},
221 and the script command language. If @emph{no} binary input files at all
222 are specified, the linker does not produce any output, and issues the
223 message @samp{No input files}.
224
225 Option arguments must either follow the option letter without intervening
226 whitespace, or be given as separate arguments immediately following the
227 option that requires them.
228
229 @table @code
230 @ifset I960
231 @cindex architectures
232 @kindex -A@var{arch}
233 @item -A@var{architecture}
234 In the current release of @code{ld}, this option is useful only for the
235 Intel 960 family of architectures. In that @code{ld} configuration, the
236 @var{architecture} argument identifies the particular architecture in
237 the 960 family, enabling some safeguards and modifying the
238 archive-library search path. @xref{i960,,@code{ld} and the Intel 960
239 family}, for details.
240
241 Future releases of @code{ld} may support similar functionality for
242 other architecture families.
243 @end ifset
244
245 @ifclear SingleFormat
246 @cindex binary input format
247 @kindex -b @var{format}
248 @cindex input format
249 @item -b @var{input-format}
250 @cindex input format
251 Specify the binary format for input object files that follow this option
252 on the command line. You don't usually need to specify this, as
253 @code{ld} is configured to expect as a default input format the most
254 usual format on each machine. @var{input-format} is a text string, the
255 name of a particular format supported by the BFD libraries.
256 (You can list the available binary formats with @samp{objdump -i}.)
257 @w{@samp{-format @var{input-format}}} has the same effect, as does the
258 script command @code{TARGET}. @xref{BFD}.
259
260 You may want to use this option if you are linking files with an unusual
261 binary format. You can also use @samp{-b} to switch formats explicitly (when
262 linking object files of different formats), by including
263 @samp{-b @var{input-format}} before each group of object files in a
264 particular format.
265
266 The default format is taken from the environment variable
267 @code{GNUTARGET}.
268 @ifset UsesEnvVars
269 @xref{Environment}.
270 @end ifset
271 You can also define the input
272 format from a script, using the command @code{TARGET}; see @ref{Option
273 Commands}.
274 @end ifclear
275
276 @kindex -Bstatic
277 @item -Bstatic
278 Ignored. This option is accepted for command-line compatibility with
279 the SunOS linker.
280
281 @kindex -c @var{MRI-cmdfile}
282 @cindex compatibility, MRI
283 @item -c @var{MRI-commandfile}
284 For compatibility with linkers produced by MRI, @code{ld} accepts script
285 files written in an alternate, restricted command language, described in
286 @ref{MRI,,MRI Compatible Script Files}. Introduce MRI script files with
287 the option @samp{-c}; use the @samp{-T} option to run linker
288 scripts written in the general-purpose @code{ld} scripting language.
289 If @var{MRI-cmdfile} does not exist, @code{ld} looks for it in the directories
290 specified by any @samp{-L} options.
291
292 @cindex common allocation
293 @kindex -d
294 @item -d
295 @kindex -dc
296 @itemx -dc
297 @kindex -dp
298 @itemx -dp
299 These three options are equivalent; multiple forms are supported for
300 compatibility with other linkers. They
301 assign space to common symbols even if a relocatable output file is
302 specified (with @samp{-r}). The script command
303 @code{FORCE_COMMON_ALLOCATION} has the same effect. @xref{Option
304 Commands}.
305
306 @cindex symbols, from command line
307 @kindex -defsym @var{symbol}=@var{exp}
308 @item -defsym @var{symbol}=@var{expression}
309 Create a global symbol in the output file, containing the absolute
310 address given by @var{expression}. You may use this option as many
311 times as necessary to define multiple symbols in the command line. A
312 limited form of arithmetic is supported for the @var{expression} in this
313 context: you may give a hexadecimal constant or the name of an existing
314 symbol, or use @code{+} and @code{-} to add or subtract hexadecimal
315 constants or symbols. If you need more elaborate expressions, consider
316 using the linker command language from a script (@pxref{Assignment, ,
317 Assignment: Symbol Definitions}). @emph{Note:} there should be no
318 white space between @var{symbol}, the equals sign (``@key{=}''), and
319 @var{expression}.
320
321 @cindex entry point, from command line
322 @kindex -e @var{entry}
323 @item -e @var{entry}
324 Use @var{entry} as the explicit symbol for beginning execution of your
325 program, rather than the default entry point. @xref{Entry Point}, for a
326 discussion of defaults and other ways of specifying the
327 entry point.
328
329 @ifclear SingleFormat
330 @kindex -F
331 @item -F
332 @itemx -F@var{format}
333 Ignored. Some older linkers used this option throughout a compilation
334 toolchain for specifying object-file format for both input and output
335 object files. The mechanisms @code{ld} uses for this purpose (the
336 @samp{-b} or @samp{-format} options for input files, @samp{-oformat}
337 option or the @code{TARGET} command in linker scripts for output files,
338 the @code{GNUTARGET} environment variable) are more flexible, but
339 @code{ld} accepts the @samp{-F} option for compatibility with scripts
340 written to call the old linker.
341
342 @kindex -format
343 @item -format @var{input-format}
344 Synonym for @samp{-b @var{input-format}}.
345 @end ifclear
346
347 @kindex -g
348 @item -g
349 Ignored. Provided for compatibility with other tools.
350
351 @kindex -G
352 @cindex object size
353 @item -G@var{value}
354 @itemx -G @var{value}
355 Set the maximum size of objects to be optimized using the GP register to
356 @var{size} under MIPS ECOFF. Ignored for other object file formats.
357
358 @item --help
359 @kindex --help
360 @cindex help
361 @cindex usage
362 Print a summary of the command-line options on the standard output and exit.
363 This option and @samp{--version} begin with two dashes instead of one
364 for compatibility with other GNU programs. The other options start with
365 only one dash for compatibility with other linkers.
366
367 @kindex -i
368 @cindex incremental link
369 @item -i
370 Perform an incremental link (same as option @samp{-r}).
371
372 @cindex archive files, from cmd line
373 @kindex -l@var{archive}
374 @item -l@var{ar}
375 Add archive file @var{archive} to the list of files to link. This
376 option may be used any number of times. @code{ld} will search its
377 path-list for occurrences of @code{lib@var{ar}.a} for every @var{archive}
378 specified.
379
380 @cindex search directory, from cmd line
381 @kindex -L@var{dir}
382 @item -L@var{searchdir}
383 @itemx -L @var{searchdir}
384 Add path @var{searchdir} to the list of paths that @code{ld} will search
385 for archive libraries and @code{ld} control scripts. You may use this
386 option any number of times.
387
388 @ifset UsesEnvVars
389 The default set of paths searched (without being specified with
390 @samp{-L}) depends on which emulation mode @code{ld} is using, and in
391 some cases also on how it was configured. @xref{Environment}.
392 @end ifset
393
394 The paths can also be specified in a link script with the
395 @code{SEARCH_DIR} command.
396
397 @cindex link map
398 @kindex -M
399 @item -M
400 Print (to the standard output) a link map---diagnostic information
401 about where symbols are mapped by @code{ld}, and information on global
402 common storage allocation.
403
404 @cindex link map
405 @kindex -Map
406 @item -Map @var{mapfile}
407 Print to the file @var{mapfile} a link map---diagnostic information
408 about where symbols are mapped by @code{ld}, and information on global
409 common storage allocation.
410
411 @cindex emulation
412 @kindex -m @var{emulation}
413 @item -m@var{emulation}
414 @itemx -m @var{emulation}
415 Emulate the @var{emulation} linker. You can list the available
416 emulations with the @samp{-V} option. The
417 default is the system for which you configured @code{ld}.
418
419 @kindex -N
420 @cindex read/write from cmd line
421 @kindex OMAGIC
422 @item -N
423 Set the text and data sections to be readable and writable. Also, do
424 not page-align the data segment. If the output format supports Unix
425 style magic numbers, mark the output as @code{OMAGIC}.
426
427 @item -n
428 @kindex -n
429 @cindex read-only text
430 @kindex NMAGIC
431 Set the text segment to be read only, and mark the output as
432 @code{NMAGIC} if possible.
433
434 @item -noinhibit-exec
435 @cindex output file after errors
436 @kindex -noinhibit-exec
437 Retain the executable output file whenever it is still usable.
438 Normally, the linker will not produce an output file if it encounters
439 errors during the link process; it exits without writing an output file
440 when it issues any error whatsoever.
441
442 @item -o @var{output}
443 @kindex -o @var{output}
444 @cindex naming the output file
445 Use @var{output} as the name for the program produced by @code{ld}; if this
446 option is not specified, the name @file{a.out} is used by default. The
447 script command @code{OUTPUT} can also specify the output file name.
448
449 @ifclear SingleFormat
450 @kindex -oformat
451 @item -oformat @var{output-format}
452 Specify the binary format for the output object file. You don't usually
453 need to specify this, as @code{ld} is configured to produce as a default
454 output format the most usual format on each machine.
455 @var{output-format} is a text string, the name of a particular format
456 supported by the BFD libraries. (You can list the available binary
457 formats with @samp{objdump -i}.) The script command
458 @code{OUTPUT_FORMAT} can also specify the output format, but this option
459 overrides it. @xref{BFD}.
460 @end ifclear
461
462 @item -R @var{filename}
463 @kindex -R @var{file}
464 @cindex symbol-only input
465 Read symbol names and their addresses from @var{filename}, but do not
466 relocate it or include it in the output. This allows your output file
467 to refer symbolically to absolute locations of memory defined in other
468 programs.
469
470 @item -relax
471 @kindex -relax
472 @cindex synthesizing linker
473 @cindex relaxing addressing modes
474 An option with machine dependent effects. Currently this option is only
475 supported on the H8/300.
476 @ifset H8300
477 @xref{H8/300,,@code{ld} and the H8/300}.
478 @end ifset
479
480 On some platforms, use option performs global optimizations that
481 become possible when the linker resolves addressing in the program, such
482 as relaxing address modes and synthesizing new instructions in the
483 output object file.
484
485 On platforms where this is not supported, @samp{-relax} is accepted, but
486 ignored.
487
488 @item -r
489 @cindex partial link
490 @cindex relocatable output
491 @kindex -r
492 Generate relocatable output---i.e., generate an output file that can in
493 turn serve as input to @code{ld}. This is often called @dfn{partial
494 linking}. As a side effect, in environments that support standard Unix
495 magic numbers, this option also sets the output file's magic number to
496 @code{OMAGIC}.
497 @c ; see @code{-N}.
498 If this option is not specified, an absolute file is produced. When
499 linking C++ programs, this option @emph{will not} resolve references to
500 constructors; to do that, use @samp{-Ur}.
501
502 This option does the same thing as @samp{-i}.
503
504 @item -S
505 @kindex -S
506 @cindex strip debugger symbols
507 Omit debugger symbol information (but not all symbols) from the output file.
508
509 @item -s
510 @kindex -s
511 @cindex strip all symbols
512 Omit all symbol information from the output file.
513
514 @item -sort-common
515 Normally, when @code{ld} places the global common symbols in the
516 appropriate output sections, it sorts them by size. First come all the
517 one byte symbols, then all the two bytes, then all the four bytes, and
518 then everything else. This is to prevent gaps between symbols due to
519 alignment constraints. This option disables that sorting.
520
521 @item -Tbss @var{org}
522 @kindex -Tbss @var{org}
523 @itemx -Tdata @var{org}
524 @kindex -Tdata @var{org}
525 @itemx -Ttext @var{org}
526 @kindex -Ttext @var{org}
527 @cindex segment origins, cmd line
528 Use @var{org} as the starting address for---respectively---the
529 @code{bss}, @code{data}, or the @code{text} segment of the output file.
530 @var{org} must be a single hexadecimal integer;
531 for compatibility with other linkers, you may omit the leading
532 @samp{0x} usually associated with hexadecimal values.
533
534 @item -T @var{commandfile}
535 @itemx -T@var{commandfile}
536 @kindex -T @var{script}
537 @cindex script files
538 Read link commands from the file @var{commandfile}. These commands
539 completely override @code{ld}'s default link format (rather than adding
540 to it); @var{commandfile} must specify everything necessary to describe
541 the target format. @xref{Commands}. If @var{commandfile} does not
542 exist, @code{ld} looks for it in the directories specified by any
543 preceding @samp{-L} options. Multiple @samp{-T} options accumulate.
544
545 @item -t
546 @kindex -t
547 @cindex verbose
548 @cindex input files, displaying
549 Print the names of the input files as @code{ld} processes them.
550
551 @item -u @var{symbol}
552 @kindex -u @var{symbol}
553 @cindex undefined symbol
554 Force @var{symbol} to be entered in the output file as an undefined symbol.
555 Doing this may, for example, trigger linking of additional modules from
556 standard libraries. @samp{-u} may be repeated with different option
557 arguments to enter additional undefined symbols.
558 @c Nice idea, but no such command: This option is equivalent
559 @c to the @code{EXTERN} linker command.
560
561 @item -Ur
562 @kindex -Ur
563 @cindex constructors
564 For anything other than C++ programs, this option is equivalent to
565 @samp{-r}: it generates relocatable output---i.e., an output file that can in
566 turn serve as input to @code{ld}. When linking C++ programs, @samp{-Ur}
567 @emph{will} resolve references to constructors, unlike @samp{-r}.
568 It does not work to use @samp{-Ur} on files that were themselves linked
569 with @samp{-Ur}; once the constructor table has been built, it can not
570 be added to. Use @samp{-Ur} only for the last partial link, and
571 @samp{-r} for the others.
572
573 @item -V
574 @kindex -V
575 @cindex version
576 Display the version number for @code{ld} and list the supported emulations.
577 Display which input files can and can not be opened.
578
579 @item -v
580 @kindex -v
581 @cindex version
582 Display the version number for @code{ld}.
583
584 @item --version
585 @kindex --version
586 Display the version number for @code{ld} and exit.
587
588 @item -warn-common
589 @kindex -warn-comon
590 @cindex warnings, on combining symbols
591 @cindex combining symbols, warnings on
592 Warn when a common symbol is combined with another common symbol or with
593 a symbol definition. Unix linkers allow this somewhat sloppy practice,
594 but linkers on some other operating systems do not. This option allows
595 you to find potential problems from combining global symbols.
596 Unfortunately, some C libraries use this practice, so you may get some
597 warnings about symbols in the libraries as well as in your programs.
598
599 There are three kinds of global symbols, illustrated here by C examples:
600
601 @table @samp
602 @item int i = 1;
603 A definition, which goes in the initialized data section of the output
604 file.
605
606 @item extern int i;
607 An undefined reference, which does not allocate space.
608 There must be either a definition or a common symbol for the
609 variable somewhere.
610
611 @item int i;
612 A common symbol. If there are only (one or more) common symbols for a
613 variable, it goes in the uninitialized data area of the output file.
614 The linker merges multiple common symbols for the same variable into a
615 single symbol. If they are of different sizes, it picks the largest
616 size. The linker turns a common symbol into a declaration, if there is
617 a definition of the same variable.
618 @end table
619
620 The @samp{-warn-common} option can produce five kinds of warnings. Each
621 warning consists of a pair of lines: the first describes the symbol just
622 encountered, and the second describes the previous symbol encountered
623 with the same name. One or both of the two symbols will be a common
624 symbol.
625
626 @enumerate
627 @item
628 Turning a common symbol into a reference, because there is already a
629 definition for the symbol.
630 @smallexample
631 @var{file}(@var{section}): warning: common of `@var{symbol}' overridden by definition
632 @var{file}(@var{section}): warning: defined here
633 @end smallexample
634
635 @item
636 Turning a common symbol into a reference, because a later definition for
637 the symbol is encountered. This is the same as the previous case,
638 except that the symbols are encountered in a different order.
639 @smallexample
640 @var{file}(@var{section}): warning: definition of `@var{symbol}' overriding common
641 @var{file}(@var{section}): warning: common is here
642 @end smallexample
643
644 @item
645 Merging a common symbol with a previous same-sized common symbol.
646 @smallexample
647 @var{file}(@var{section}): warning: multiple common of `@var{symbol}'
648 @var{file}(@var{section}): warning: previous common is here
649 @end smallexample
650
651 @item
652 Merging a common symbol with a previous larger common symbol.
653 @smallexample
654 @var{file}(@var{section}): warning: common of `@var{symbol}' overridden
655 by larger common
656 @var{file}(@var{section}): warning: larger common is here
657 @end smallexample
658
659 @item
660 Merging a common symbol with a previous smaller common symbol. This is
661 the same as the previous case, except that the symbols are
662 encountered in a different order.
663 @smallexample
664 @var{file}(@var{section}): warning: common of `@var{symbol}' overriding
665 smaller common
666 @var{file}(@var{section}): warning: smaller common is here
667 @end smallexample
668 @end enumerate
669
670 @item -X
671 @kindex -X
672 @cindex local symbols, deleting
673 @cindex L, deleting symbols beginning
674 If @samp{-s} or @samp{-S} is also specified, delete only local symbols
675 beginning with @samp{L}.
676
677 @item -x
678 @kindex -x
679 @cindex deleting local symbols
680 If @samp{-s} or @samp{-S} is also specified, delete all local symbols,
681 not just those beginning with @samp{L}.
682
683 @item -y@var{symbol}
684 @kindex -y@var{symbol}
685 @cindex symbol tracing
686 Print the name of each linked file in which @var{symbol} appears. This
687 option may be given any number of times. On many systems it is necessary
688 to prepend an underscore.
689
690 This option is useful when you have an undefined symbol in your link but
691 don't know where the reference is coming from.
692 @end table
693
694 @ifset UsesEnvVars
695 @node Environment
696 @section Environment Variables
697
698 You can change the behavior of @code{ld} with the environment
699 variable @code{GNUTARGET}.
700
701 @kindex GNUTARGET
702 @cindex default input format
703 @code{GNUTARGET} determines the input-file object format if you don't
704 use @samp{-b} (or its synonym @samp{-format}). Its value should be one
705 of the BFD names for an input format (@pxref{BFD}). If there is no
706 @code{GNUTARGET} in the environment, @code{ld} uses the natural format
707 of the host. If @code{GNUTARGET} is set to @code{default} then BFD attempts to discover the
708 input format by examining binary input files; this method often
709 succeeds, but there are potential ambiguities, since there is no method
710 of ensuring that the magic number used to specify object-file formats is
711 unique. However, the configuration procedure for BFD on each system
712 places the conventional format for that system first in the search-list,
713 so ambiguities are resolved in favor of convention.
714 @end ifset
715
716 @node Commands
717 @chapter Command Language
718
719 @cindex command files
720 The command language provides explicit control over the link process,
721 allowing complete specification of the mapping between the linker's
722 input files and its output. It controls:
723 @itemize @bullet
724 @item
725 input files
726 @item
727 file formats
728 @item
729 output file layout
730 @item
731 addresses of sections
732 @item
733 placement of common blocks
734 @end itemize
735
736 You may supply a command file (also known as a link script) to the
737 linker either explicitly through the @samp{-T} option, or implicitly as
738 an ordinary file. If the linker opens a file which it cannot recognize
739 as a supported object or archive format, it reports an error.
740
741 @menu
742 * Scripts:: Linker Scripts
743 * Expressions:: Expressions
744 * MEMORY:: MEMORY Command
745 * SECTIONS:: SECTIONS Command
746 * Entry Point:: The Entry Point
747 * Option Commands:: Option Commands
748 @end menu
749
750 @node Scripts
751 @section Linker Scripts
752 The @code{ld} command language is a collection of statements; some are
753 simple keywords setting a particular option, some are used to select and
754 group input files or name output files; and two statement
755 types have a fundamental and pervasive impact on the linking process.
756
757 @cindex fundamental script commands
758 @cindex commands, fundamental
759 @cindex output file layout
760 @cindex layout of output file
761 The most fundamental command of the @code{ld} command language is the
762 @code{SECTIONS} command (@pxref{SECTIONS}). Every meaningful command
763 script must have a @code{SECTIONS} command: it specifies a
764 ``picture'' of the output file's layout, in varying degrees of detail.
765 No other command is required in all cases.
766
767 The @code{MEMORY} command complements @code{SECTIONS} by describing the
768 available memory in the target architecture. This command is optional;
769 if you don't use a @code{MEMORY} command, @code{ld} assumes sufficient
770 memory is available in a contiguous block for all output.
771 @xref{MEMORY}.
772
773 @cindex comments
774 You may include comments in linker scripts just as in C: delimited
775 by @samp{/*} and @samp{*/}. As in C, comments are syntactically
776 equivalent to whitespace.
777
778 @node Expressions
779 @section Expressions
780 @cindex expression syntax
781 @cindex arithmetic
782 Many useful commands involve arithmetic expressions. The syntax for
783 expressions in the command language is identical to that of C
784 expressions, with the following features:
785 @itemize @bullet
786 @item
787 All expressions evaluated as integers and
788 are of ``long'' or ``unsigned long'' type.
789 @item
790 All constants are integers.
791 @item
792 All of the C arithmetic operators are provided.
793 @item
794 You may reference, define, and create global variables.
795 @item
796 You may call special purpose built-in functions.
797 @end itemize
798
799 @menu
800 * Integers:: Integers
801 * Symbols:: Symbol Names
802 * Location Counter:: The Location Counter
803 * Operators:: Operators
804 * Evaluation:: Evaluation
805 * Assignment:: Assignment: Defining Symbols
806 * Arithmetic Functions:: Built-In Functions
807 @end menu
808
809 @node Integers
810 @subsection Integers
811 @cindex integer notation
812 @cindex octal integers
813 An octal integer is @samp{0} followed by zero or more of the octal
814 digits (@samp{01234567}).
815 @example
816 _as_octal = 0157255;
817 @end example
818
819 @cindex decimal integers
820 A decimal integer starts with a non-zero digit followed by zero or
821 more digits (@samp{0123456789}).
822 @example
823 _as_decimal = 57005;
824 @end example
825
826 @cindex hexadecimal integers
827 @kindex 0x
828 A hexadecimal integer is @samp{0x} or @samp{0X} followed by one or
829 more hexadecimal digits chosen from @samp{0123456789abcdefABCDEF}.
830 @example
831 _as_hex = 0xdead;
832 @end example
833
834 @cindex negative integers
835 To write a negative integer, use
836 the prefix operator @samp{-}; @pxref{Operators}.
837 @example
838 _as_neg = -57005;
839 @end example
840
841 @cindex scaled integers
842 @cindex K and M integer suffixes
843 @cindex M and K integer suffixes
844 @cindex suffixes for integers
845 @cindex integer suffixes
846 Additionally the suffixes @code{K} and @code{M} may be used to scale a
847 constant by
848 @c TEXI2ROFF-KILL
849 @ifinfo
850 @c END TEXI2ROFF-KILL
851 @code{1024} or @code{1024*1024}
852 @c TEXI2ROFF-KILL
853 @end ifinfo
854 @tex
855 ${\rm 1024}$ or ${\rm 1024}^2$
856 @end tex
857 @c END TEXI2ROFF-KILL
858 respectively. For example, the following all refer to the same quantity:
859
860 @example
861 _fourk_1 = 4K;
862 _fourk_2 = 4096;
863 _fourk_3 = 0x1000;
864 @end example
865
866 @node Symbols
867 @subsection Symbol Names
868 @cindex symbol names
869 @cindex names
870 @cindex quoted symbol names
871 @kindex "
872 Unless quoted, symbol names start with a letter, underscore, point or
873 hyphen and may include any letters, underscores, digits, points,
874 and minus signs. Unquoted symbol names must not conflict with any
875 keywords. You can specify a symbol which contains odd characters or has
876 the same name as a keyword, by surrounding the symbol name in double quotes:
877 @example
878 "SECTION" = 9;
879 "with a space" = "also with a space" + 10;
880 @end example
881
882 @node Location Counter
883 @subsection The Location Counter
884 @kindex .
885 @cindex dot
886 @cindex location counter
887 @cindex current output location
888 The special linker variable @dfn{dot} @samp{.} always contains the
889 current output location counter. Since the @code{.} always refers to
890 a location in an output section, it must always appear in an
891 expression within a @code{SECTIONS} command. The @code{.} symbol
892 may appear anywhere that an ordinary symbol is allowed in an
893 expression, but its assignments have a side effect. Assigning a value
894 to the @code{.} symbol will cause the location counter to be moved.
895 @cindex holes
896 This may be used to create holes in the output section. The location
897 counter may never be moved backwards.
898 @example
899 SECTIONS
900 @{
901 output :
902 @{
903 file1(.text)
904 . = . + 1000;
905 file2(.text)
906 . += 1000;
907 file3(.text)
908 @} = 0x1234;
909 @}
910 @end example
911 @noindent
912 In the previous example, @code{file1} is located at the beginning of the
913 output section, then there is a 1000 byte gap. Then @code{file2}
914 appears, also with a 1000 byte gap following before @code{file3} is
915 loaded. The notation @samp{= 0x1234} specifies what data to write in
916 the gaps (@pxref{Section Options}).
917
918 @node Operators
919 @subsection Operators
920 @cindex Operators for arithmetic
921 @cindex arithmetic operators
922 @cindex precedence in expressions
923 The linker recognizes the standard C set of arithmetic operators, with
924 the standard bindings and precedence levels:
925 @c TEXI2ROFF-KILL
926 @ifinfo
927 @c END TEXI2ROFF-KILL
928 @example
929 precedence associativity Operators Notes
930 (highest)
931 1 left ! - ~ (1)
932 2 left * / %
933 3 left + -
934 4 left >> <<
935 5 left == != > < <= >=
936 6 left &
937 7 left |
938 8 left &&
939 9 left ||
940 10 right ? :
941 11 right &= += -= *= /= (2)
942 (lowest)
943 @end example
944 Notes:
945 (1) Prefix operators
946 (2) @xref{Assignment}
947 @c TEXI2ROFF-KILL
948 @end ifinfo
949 @tex
950 \vskip \baselineskip
951 %"lispnarrowing" is the extra indent used generally for @example
952 \hskip\lispnarrowing\vbox{\offinterlineskip
953 \hrule
954 \halign
955 {\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ {\tt #}\ \hfil&\vrule#\cr
956 height2pt&\omit&&\omit&&\omit&\cr
957 &Precedence&& Associativity &&{\rm Operators}&\cr
958 height2pt&\omit&&\omit&&\omit&\cr
959 \noalign{\hrule}
960 height2pt&\omit&&\omit&&\omit&\cr
961 &highest&&&&&\cr
962 % '176 is tilde, '~' in tt font
963 &1&&left&&\qquad- \char'176\ !\qquad\dag&\cr
964 &2&&left&&* / \%&\cr
965 &3&&left&&+ -&\cr
966 &4&&left&&>> <<&\cr
967 &5&&left&&== != > < <= >=&\cr
968 &6&&left&&\&&\cr
969 &7&&left&&|&\cr
970 &8&&left&&{\&\&}&\cr
971 &9&&left&&||&\cr
972 &10&&right&&? :&\cr
973 &11&&right&&\qquad\&= += -= *= /=\qquad\ddag&\cr
974 &lowest&&&&&\cr
975 height2pt&\omit&&\omit&&\omit&\cr}
976 \hrule}
977 @end tex
978 @iftex
979 {
980 @obeylines@parskip=0pt@parindent=0pt
981 @dag@quad Prefix operators.
982 @ddag@quad @xref{Assignment}.
983 }
984 @end iftex
985 @c END TEXI2ROFF-KILL
986
987 @node Evaluation
988 @subsection Evaluation
989
990 @cindex lazy evaluation
991 @cindex expression evaluation order
992 The linker uses ``lazy evaluation'' for expressions; it only calculates
993 an expression when absolutely necessary. The linker needs the value of
994 the start address, and the lengths of memory regions, in order to do any
995 linking at all; these values are computed as soon as possible when the
996 linker reads in the command file. However, other values (such as symbol
997 values) are not known or needed until after storage allocation. Such
998 values are evaluated later, when other information (such as the sizes of
999 output sections) is available for use in the symbol assignment
1000 expression.
1001
1002 @node Assignment
1003 @subsection Assignment: Defining Symbols
1004 @cindex assignment in scripts
1005 @cindex symbol definition, scripts
1006 @cindex variables, defining
1007 You may create global symbols, and assign values (addresses) to global
1008 symbols, using any of the C assignment operators:
1009
1010 @table @code
1011 @item @var{symbol} = @var{expression} ;
1012 @itemx @var{symbol} &= @var{expression} ;
1013 @itemx @var{symbol} += @var{expression} ;
1014 @itemx @var{symbol} -= @var{expression} ;
1015 @itemx @var{symbol} *= @var{expression} ;
1016 @itemx @var{symbol} /= @var{expression} ;
1017 @end table
1018
1019 Two things distinguish assignment from other operators in @code{ld}
1020 expressions.
1021 @itemize @bullet
1022 @item
1023 Assignment may only be used at the root of an expression;
1024 @samp{a=b+3;} is allowed, but @samp{a+b=3;} is an error.
1025
1026 @kindex ;
1027 @cindex semicolon
1028 @item
1029 You must place a trailing semicolon (``@key{;}'') at the end of an
1030 assignment statement.
1031 @end itemize
1032
1033 Assignment statements may appear:
1034 @itemize @bullet
1035 @item
1036 as commands in their own right in an @code{ld} script; or
1037 @item
1038 as independent statements within a @code{SECTIONS} command; or
1039 @item
1040 as part of the contents of a section definition in a
1041 @code{SECTIONS} command.
1042 @end itemize
1043
1044 The first two cases are equivalent in effect---both define a symbol with
1045 an absolute address. The last case defines a symbol whose address is
1046 relative to a particular section (@pxref{SECTIONS}).
1047
1048 @cindex absolute and relocatable symbols
1049 @cindex relocatable and absolute symbols
1050 @cindex symbols, relocatable and absolute
1051 When a linker expression is evaluated and assigned to a variable, it is
1052 given either an absolute or a relocatable type. An absolute expression
1053 type is one in which the symbol contains the value that it will have in
1054 the output file; a relocatable expression type is one in which the
1055 value is expressed as a fixed offset from the base of a section.
1056
1057 The type of the expression is controlled by its position in the script
1058 file. A symbol assigned within a section definition is created relative
1059 to the base of the section; a symbol assigned in any other place is
1060 created as an absolute symbol. Since a symbol created within a
1061 section definition is relative to the base of the section, it
1062 will remain relocatable if relocatable output is requested. A symbol
1063 may be created with an absolute value even when assigned to within a
1064 section definition by using the absolute assignment function
1065 @code{ABSOLUTE}. For example, to create an absolute symbol whose address
1066 is the last byte of an output section named @code{.data}:
1067 @example
1068 SECTIONS@{ @dots{}
1069 .data :
1070 @{
1071 *(.data)
1072 _edata = ABSOLUTE(.) ;
1073 @}
1074 @dots{} @}
1075 @end example
1076
1077 The linker tries to put off the evaluation of an assignment until all
1078 the terms in the source expression are known (@pxref{Evaluation}). For
1079 instance, the sizes of sections cannot be known until after allocation,
1080 so assignments dependent upon these are not performed until after
1081 allocation. Some expressions, such as those depending upon the location
1082 counter @dfn{dot}, @samp{.} must be evaluated during allocation. If the
1083 result of an expression is required, but the value is not available,
1084 then an error results. For example, a script like the following
1085 @example
1086 SECTIONS @{ @dots{}
1087 text 9+this_isnt_constant :
1088 @{ @dots{}
1089 @}
1090 @dots{} @}
1091 @end example
1092 @kindex Non constant expression
1093 @noindent
1094 will cause the error message ``@code{Non constant expression for initial
1095 address}''.
1096
1097 @node Arithmetic Functions
1098 @subsection Arithmetic Functions
1099 @cindex functions in expression language
1100 The command language includes a number of built-in
1101 functions for use in link script expressions.
1102 @table @code
1103 @item ABSOLUTE(@var{exp})
1104 @kindex ABSOLUTE(@var{exp})
1105 @cindex expression, absolute
1106 Return the absolute (non-relocatable, as opposed to non-negative) value
1107 of the expression @var{exp}. Primarily useful to assign an absolute
1108 value to a symbol within a section definition, where symbol values are
1109 normally section-relative.
1110
1111 @item ADDR(@var{section})
1112 @kindex ADDR(@var{section})
1113 @cindex section address
1114 Return the absolute address of the named @var{section}. Your script must
1115 previously have defined the location of that section. In the following
1116 example, @code{symbol_1} and @code{symbol_2} are assigned identical
1117 values:
1118 @example
1119 SECTIONS@{ @dots{}
1120 .output1 :
1121 @{
1122 start_of_output_1 = ABSOLUTE(.);
1123 @dots{}
1124 @}
1125 .output :
1126 @{
1127 symbol_1 = ADDR(.output1);
1128 symbol_2 = start_of_output_1;
1129 @}
1130 @dots{} @}
1131 @end example
1132
1133 @item ALIGN(@var{exp})
1134 @kindex ALIGN(@var{exp})
1135 @cindex rounding up location counter
1136 Return the result of the current location counter (@code{.}) aligned to
1137 the next @var{exp} boundary. @var{exp} must be an expression whose
1138 value is a power of two. This is equivalent to
1139 @example
1140 (. + @var{exp} - 1) & ~(@var{exp} - 1)
1141 @end example
1142
1143 @code{ALIGN} doesn't change the value of the location counter---it just
1144 does arithmetic on it. As an example, to align the output @code{.data}
1145 section to the next @code{0x2000} byte boundary after the preceding
1146 section and to set a variable within the section to the next
1147 @code{0x8000} boundary after the input sections:
1148 @example
1149 SECTIONS@{ @dots{}
1150 .data ALIGN(0x2000): @{
1151 *(.data)
1152 variable = ALIGN(0x8000);
1153 @}
1154 @dots{} @}
1155 @end example
1156 @noindent
1157 The first use of @code{ALIGN} in this example specifies the location of
1158 a section because it is used as the optional @var{start} attribute of a
1159 section definition (@pxref{Section Options}). The second use simply
1160 defines the value of a variable.
1161
1162 The built-in @code{NEXT} is closely related to @code{ALIGN}.
1163
1164 @item DEFINED(@var{symbol})
1165 @kindex DEFINED(@var{symbol})
1166 @cindex symbol defaults
1167 Return 1 if @var{symbol} is in the linker global symbol table and is
1168 defined, otherwise return 0. You can use this function to provide default
1169 values for symbols. For example, the following command-file fragment shows how
1170 to set a global symbol @code{begin} to the first location in the
1171 @code{.text} section---but if a symbol called @code{begin} already
1172 existed, its value is preserved:
1173 @smallexample
1174 SECTIONS@{ @dots{}
1175 .text : @{
1176 begin = DEFINED(begin) ? begin : . ;
1177 @dots{}
1178 @}
1179 @dots{} @}
1180 @end smallexample
1181
1182 @item NEXT(@var{exp})
1183 @kindex NEXT(@var{exp})
1184 @cindex unallocated address, next
1185 Return the next unallocated address that is a multiple of @var{exp}.
1186 This function is closely related to @code{ALIGN(@var{exp})}; unless you
1187 use the @code{MEMORY} command to define discontinuous memory for the
1188 output file, the two functions are equivalent.
1189
1190 @item SIZEOF(@var{section})
1191 @kindex SIZEOF(@var{section})
1192 @cindex section size
1193 Return the size in bytes of the named @var{section}, if that section has
1194 been allocated. In the following example, @code{symbol_1} and
1195 @code{symbol_2} are assigned identical values:
1196 @c What does it return if the section hasn't been allocated? 0?
1197 @example
1198 SECTIONS@{ @dots{}
1199 .output @{
1200 .start = . ;
1201 @dots{}
1202 .end = . ;
1203 @}
1204 symbol_1 = .end - .start ;
1205 symbol_2 = SIZEOF(.output);
1206 @dots{} @}
1207
1208 @end example
1209
1210 @item SIZEOF_HEADERS
1211 @kindex SIZEOF_HEADERS
1212 @cindex header size
1213 @itemx sizeof_headers
1214 @kindex sizeof_headers
1215 Return the size in bytes of the output file's headers. You can use this number
1216 as the start address of the first section, if you choose, to facilitate
1217 paging.
1218
1219 @end table
1220
1221 @node MEMORY
1222 @section Memory Layout
1223 @kindex MEMORY
1224 @cindex regions of memory
1225 @cindex discontinuous memory
1226 @cindex allocating memory
1227 The linker's default configuration permits allocation of all available memory.
1228 You can override this configuration by using the @code{MEMORY} command. The
1229 @code{MEMORY} command describes the location and size of blocks of
1230 memory in the target. By using it carefully, you can describe which
1231 memory regions may be used by the linker, and which memory regions it
1232 must avoid. The linker does not shuffle sections to fit into the
1233 available regions, but does move the requested sections into the correct
1234 regions and issue errors when the regions become too full.
1235
1236 A command file may contain at most one use of the @code{MEMORY}
1237 command; however, you can define as many blocks of memory within it as
1238 you wish. The syntax is:
1239
1240 @example
1241 MEMORY
1242 @{
1243 @var{name} (@var{attr}) : ORIGIN = @var{origin}, LENGTH = @var{len}
1244 @dots{}
1245 @}
1246 @end example
1247 @table @code
1248 @item @var{name}
1249 @cindex naming memory regions
1250 is a name used internally by the linker to refer to the region. Any
1251 symbol name may be used. The region names are stored in a separate
1252 name space, and will not conflict with symbols, file names or section
1253 names. Use distinct names to specify multiple regions.
1254 @item (@var{attr})
1255 @cindex memory region attributes
1256 is an optional list of attributes, permitted for compatibility with the
1257 AT&T linker but not used by @code{ld} beyond checking that the
1258 attribute list is valid. Valid attribute lists must be made up of the
1259 characters ``@code{LIRWX}''. If you omit the attribute list, you may
1260 omit the parentheses around it as well.
1261 @item @var{origin}
1262 @kindex ORIGIN =
1263 @kindex o =
1264 @kindex org =
1265 is the start address of the region in physical memory. It is
1266 an expression that must evaluate to a constant before
1267 memory allocation is performed. The keyword @code{ORIGIN} may be
1268 abbreviated to @code{org} or @code{o} (but not, for example, @samp{ORG}).
1269 @item @var{len}
1270 @kindex LENGTH =
1271 @kindex len =
1272 @kindex l =
1273 is the size in bytes of the region (an expression).
1274 The keyword @code{LENGTH} may be abbreviated to @code{len} or @code{l}.
1275 @end table
1276
1277 For example, to specify that memory has two regions available for
1278 allocation---one starting at 0 for 256 kilobytes, and the other
1279 starting at @code{0x40000000} for four megabytes:
1280
1281 @example
1282 MEMORY
1283 @{
1284 rom : ORIGIN = 0, LENGTH = 256K
1285 ram : org = 0x40000000, l = 4M
1286 @}
1287 @end example
1288
1289 Once you have defined a region of memory named @var{mem}, you can direct
1290 specific output sections there by using a command ending in
1291 @samp{>@var{mem}} within the @code{SECTIONS} command (@pxref{Section
1292 Options}). If the combined output sections directed to a region are too
1293 big for the region, the linker will issue an error message.
1294
1295 @node SECTIONS
1296 @section Specifying Output Sections
1297 @kindex SECTIONS
1298 The @code{SECTIONS} command controls exactly where input sections are
1299 placed into output sections, their order in the output file, and to
1300 which output sections they are allocated.
1301
1302 You may use at most one @code{SECTIONS} command in a script file,
1303 but you can have as many statements within it as you wish. Statements
1304 within the @code{SECTIONS} command can do one of three things:
1305 @itemize @bullet
1306 @item
1307 define the entry point;
1308 @item
1309 assign a value to a symbol;
1310 @item
1311 describe the placement of a named output section, and which input
1312 sections go into it.
1313 @end itemize
1314
1315 The first two operations---defining the entry point and defining
1316 symbols---can also be done outside the @code{SECTIONS} command:
1317 @pxref{Entry Point}, and @pxref{Assignment}. They are permitted here as
1318 well for your convenience in reading the script, so that symbols and the
1319 entry point can be defined at meaningful points in your output-file
1320 layout.
1321
1322 When no @code{SECTIONS} command is given, the linker places each input
1323 section into an identically named output section in the order that the
1324 sections are first encountered in the input files. If all input sections
1325 are present in the first file, for example, the order of sections in the
1326 output file will match the order in the first input file.
1327
1328 @menu
1329 * Section Definition:: Section Definitions
1330 * Section Placement:: Section Placement
1331 * Section Data Expressions:: Section Data Expressions
1332 * Section Options:: Optional Section Attributes
1333 @end menu
1334
1335 @node Section Definition
1336 @subsection Section Definitions
1337 @cindex section definition
1338 The most frequently used statement in the @code{SECTIONS} command is
1339 the @dfn{section definition}, which specifies the
1340 properties of an output section: its location, alignment, contents,
1341 fill pattern, and target memory region. Most of
1342 these specifications are optional; the simplest form of a section
1343 definition is
1344 @example
1345 SECTIONS @{ @dots{}
1346 @var{secname} : @{
1347 @var{contents}
1348 @}
1349 @dots{} @}
1350 @end example
1351 @cindex naming output sections
1352 @noindent
1353 @var{secname} is the name of the output section, and @var{contents} a
1354 specification of what goes there---for example, a list of input files or
1355 sections of input files (@pxref{Section Placement}). As you might
1356 assume, the whitespace shown is optional. You do need the colon
1357 @samp{:} and the braces @samp{@{@}}, however.
1358
1359 @var{secname} must meet the constraints of your output format. In
1360 formats which only support a limited number of sections, such as
1361 @code{a.out}, the name must be one of the names supported by the format
1362 (@code{a.out}, for example, allows only @code{.text}, @code{.data} or
1363 @code{.bss}). If the output format supports any number of sections, but
1364 with numbers and not names (as is the case for Oasys), the name should be
1365 supplied as a quoted numeric string. A section name may consist of any
1366 sequence of characters, but any name which does not conform to the standard
1367 @code{ld} symbol name syntax must be quoted.
1368 @xref{Symbols, , Symbol Names}.
1369
1370 @node Section Placement
1371 @subsection Section Placement
1372 @cindex contents of a section
1373 In a section definition, you can specify the contents of an output section by
1374 listing particular input files, by listing particular input-file
1375 sections, or by a combination of the two. You can also place arbitrary
1376 data in the section, and define symbols relative to the beginning of the
1377 section.
1378
1379 The @var{contents} of a section definition may include any of the
1380 following kinds of statement. You can include as many of these as you
1381 like in a single section definition, separated from one another by
1382 whitespace.
1383
1384 @table @code
1385 @item @var{filename}
1386 @kindex @var{filename}
1387 @cindex input files, section defn
1388 @cindex files, including in output sections
1389 You may simply name a particular input file to be placed in the current
1390 output section; @emph{all} sections from that file are placed in the
1391 current section definition. If the file name has already been mentioned
1392 in another section definition, with an explicit section name list, then
1393 only those sections which have not yet been allocated are used.
1394
1395 To specify a list of particular files by name:
1396 @example
1397 .data : @{ afile.o bfile.o cfile.o @}
1398 @end example
1399 @noindent
1400 The example also illustrates that multiple statements can be included in
1401 the contents of a section definition, since each file name is a separate
1402 statement.
1403
1404 @item @var{filename}( @var{section} )
1405 @itemx @var{filename}( @var{section}, @var{section}, @dots{} )
1406 @itemx @var{filename}( @var{section} @var{section} @dots{} )
1407 @kindex @var{filename}(@var{section})
1408 @cindex files and sections, section defn
1409 You can name one or more sections from your input files, for
1410 insertion in the current output section. If you wish to specify a list
1411 of input-file sections inside the parentheses, you may separate the
1412 section names by either commas or whitespace.
1413
1414 @item * (@var{section})
1415 @itemx * (@var{section}, @var{section}, @dots{})
1416 @itemx * (@var{section} @var{section} @dots{})
1417 @cindex input sections to output section
1418 @kindex *(@var{section})
1419 Instead of explicitly naming particular input files in a link control
1420 script, you can refer to @emph{all} files from the @code{ld} command
1421 line: use @samp{*} instead of a particular file name before the
1422 parenthesized input-file section list.
1423
1424 If you have already explicitly included some files by name, @samp{*}
1425 refers to all @emph{remaining} files---those whose places in the output
1426 file have not yet been defined.
1427
1428 For example, to copy sections @code{1} through @code{4} from an Oasys file
1429 into the @code{.text} section of an @code{a.out} file, and sections @code{13}
1430 and @code{14} into the @code{.data} section:
1431 @example
1432 SECTIONS @{
1433 .text :@{
1434 *("1" "2" "3" "4")
1435 @}
1436
1437 .data :@{
1438 *("13" "14")
1439 @}
1440 @}
1441 @end example
1442
1443 @samp{[ @var{section} @dots{} ]} used to be accepted as an alternate way
1444 to specify named sections from all unallocated input files. Because
1445 some operating systems (VMS) allow brackets in file names, that notation
1446 is no longer supported.
1447
1448 @item @var{filename}@code{( COMMON )}
1449 @itemx *( COMMON )
1450 @kindex *( COMMON )
1451 @cindex uninitialized data
1452 @cindex commons in output
1453 Specify where in your output file to place uninitialized data
1454 with this notation. @code{*(COMMON)} by itself refers to all
1455 uninitialized data from all input files (so far as it is not yet
1456 allocated); @var{filename}@code{(COMMON)} refers to uninitialized data
1457 from a particular file. Both are special cases of the general
1458 mechanisms for specifying where to place input-file sections:
1459 @code{ld} permits you to refer to uninitialized data as if it
1460 were in an input-file section named @code{COMMON}, regardless of the
1461 input file's format.
1462 @end table
1463
1464 For example, the following command script arranges the output file into
1465 three consecutive sections, named @code{.text}, @code{.data}, and
1466 @code{.bss}, taking the input for each from the correspondingly named
1467 sections of all the input files:
1468 @example
1469 SECTIONS @{
1470 .text : @{ *(.text) @}
1471 .data : @{ *(.data) @}
1472 .bss : @{ *(.bss) *(COMMON) @}
1473 @}
1474 @end example
1475
1476 The following example reads all of the sections from file @code{all.o}
1477 and places them at the start of output section @code{outputa} which
1478 starts at location @code{0x10000}. All of section @code{.input1} from
1479 file @code{foo.o} follows immediately, in the same output section. All
1480 of section @code{.input2} from @code{foo.o} goes into output section
1481 @code{outputb}, followed by section @code{.input1} from @code{foo1.o}.
1482 All of the remaining @code{.input1} and @code{.input2} sections from any
1483 files are written to output section @code{outputc}.
1484
1485 @example
1486 SECTIONS @{
1487 outputa 0x10000 :
1488 @{
1489 all.o
1490 foo.o (.input1)
1491 @}
1492 outputb :
1493 @{
1494 foo.o (.input2)
1495 foo1.o (.input1)
1496 @}
1497 outputc :
1498 @{
1499 *(.input1)
1500 *(.input2)
1501 @}
1502 @}
1503 @end example
1504
1505 @node Section Data Expressions
1506 @subsection Section Data Expressions
1507 @cindex expressions in a section
1508 The foregoing statements
1509 arrange, in your output file, data originating from your input files.
1510 You can also place data directly in an output section from the link
1511 command script. Most of these additional statements involve
1512 expressions; @pxref{Expressions}. Although these statements are shown
1513 separately here for ease of presentation, no such segregation is needed
1514 within a section definition in the @code{SECTIONS} command; you can
1515 intermix them freely with any of the statements we've just described.
1516
1517 @table @code
1518 @item CREATE_OBJECT_SYMBOLS
1519 @kindex CREATE_OBJECT_SYMBOLS
1520 @cindex input filename symbols
1521 @cindex filename symbols
1522 Create a symbol for each input file
1523 in the current section, set to the address of the first byte of
1524 data written from that input file. For instance, with @code{a.out}
1525 files it is conventional to have a symbol for each input file. You can
1526 accomplish this by defining the output @code{.text} section as follows:
1527 @example
1528 SECTIONS @{
1529 .text 0x2020 :
1530 @{
1531 CREATE_OBJECT_SYMBOLS
1532 *(.text)
1533 _etext = ALIGN(0x2000);
1534 @}
1535 @dots{}
1536 @}
1537 @end example
1538
1539 If @code{sample.ld} is a file containing this script, and @code{a.o},
1540 @code{b.o}, @code{c.o}, and @code{d.o} are four input files with
1541 contents like the following---
1542 @example
1543 /* a.c */
1544
1545 afunction() @{ @}
1546 int adata=1;
1547 int abss;
1548 @end example
1549
1550 @noindent
1551 @samp{ld -M -T sample.ld a.o b.o c.o d.o} would create a map like this,
1552 containing symbols matching the object file names:
1553 @example
1554 00000000 A __DYNAMIC
1555 00004020 B _abss
1556 00004000 D _adata
1557 00002020 T _afunction
1558 00004024 B _bbss
1559 00004008 D _bdata
1560 00002038 T _bfunction
1561 00004028 B _cbss
1562 00004010 D _cdata
1563 00002050 T _cfunction
1564 0000402c B _dbss
1565 00004018 D _ddata
1566 00002068 T _dfunction
1567 00004020 D _edata
1568 00004030 B _end
1569 00004000 T _etext
1570 00002020 t a.o
1571 00002038 t b.o
1572 00002050 t c.o
1573 00002068 t d.o
1574 @end example
1575
1576 @item @var{symbol} = @var{expression} ;
1577 @kindex @var{symbol} = @var{expression} ;
1578 @itemx @var{symbol} @var{f}= @var{expression} ;
1579 @kindex @var{symbol} @var{f}= @var{expression} ;
1580 @var{symbol} is any symbol name (@pxref{Symbols}). ``@var{f}=''
1581 refers to any of the operators @code{&= += -= *= /=} which combine
1582 arithmetic and assignment.
1583
1584 @cindex assignment, in section defn
1585 When you assign a value to a symbol within a particular section
1586 definition, the value is relative to the beginning of the section
1587 (@pxref{Assignment}). If you write
1588 @example
1589 SECTIONS @{
1590 abs = 14 ;
1591 @dots{}
1592 .data : @{ @dots{} rel = 14 ; @dots{} @}
1593 abs2 = 14 + ADDR(.data);
1594 @dots{}
1595 @}
1596 @end example
1597 @c FIXME: Try above example!
1598 @noindent
1599 @code{abs} and @code{rel} do not have the same value; @code{rel} has the
1600 same value as @code{abs2}.
1601
1602 @item BYTE(@var{expression})
1603 @kindex BYTE(@var{expression})
1604 @itemx SHORT(@var{expression})
1605 @kindex SHORT(@var{expression})
1606 @itemx LONG(@var{expression})
1607 @kindex LONG(@var{expression})
1608 @cindex direct output
1609 By including one of these three statements in a section definition, you
1610 can explicitly place one, two, or four bytes (respectively) at the
1611 current address of that section.
1612
1613 @ifclear SingleFormat
1614 Multiple-byte quantities are represented in whatever byte order is
1615 appropriate for the output file format (@pxref{BFD}).
1616 @end ifclear
1617
1618 @item FILL(@var{expression})
1619 @kindex FILL(@var{expression})
1620 @cindex holes, filling
1621 @cindex unspecified memory
1622 Specify the ``fill pattern'' for the current section. Any otherwise
1623 unspecified regions of memory within the section (for example, regions
1624 you skip over by assigning a new value to the location counter @samp{.})
1625 are filled with the two least significant bytes from the
1626 @var{expression} argument. A @code{FILL} statement covers memory
1627 locations @emph{after} the point it occurs in the section definition; by
1628 including more than one @code{FILL} statement, you can have different
1629 fill patterns in different parts of an output section.
1630 @end table
1631
1632 @node Section Options
1633 @subsection Optional Section Attributes
1634 @cindex section defn, full syntax
1635 Here is the full syntax of a section definition, including all the
1636 optional portions:
1637
1638 @smallexample
1639 SECTIONS @{
1640 @dots{}
1641 @var{secname} @var{start} BLOCK(@var{align}) (NOLOAD) : @{ @var{contents} @} =@var{fill} >@var{region}
1642 @dots{}
1643 @}
1644 @end smallexample
1645
1646 @var{secname} and @var{contents} are required. @xref{Section
1647 Definition}, and @pxref{Section Placement} for details on @var{contents}.
1648 The remaining elements---@var{start}, @code{BLOCK(@var{align)}},
1649 @code{(NOLOAD)} @code{=@var{fill}}, and @code{>@var{region}}---are all
1650 optional.
1651
1652 @table @code
1653 @item @var{start}
1654 @cindex start address, section
1655 @cindex section start
1656 @cindex section address
1657 You can force the output section to be loaded at a specified address by
1658 specifying @var{start} immediately following the section name.
1659 @var{start} can be represented as any expression. The following
1660 example generates section @var{output} at location
1661 @code{0x40000000}:
1662 @example
1663 SECTIONS @{
1664 @dots{}
1665 output 0x40000000: @{
1666 @dots{}
1667 @}
1668 @dots{}
1669 @}
1670 @end example
1671
1672 @item BLOCK(@var{align})
1673 @kindex BLOCK(@var{align})
1674 @cindex section alignment
1675 @cindex aligning sections
1676 You can include @code{BLOCK()} specification to advance
1677 the location counter @code{.} prior to the beginning of the section, so
1678 that the section will begin at the specified alignment. @var{align} is
1679 an expression.
1680
1681 @item (NOLOAD)
1682 @kindex NOLOAD
1683 @cindex prevent unnecessary loading
1684 Use @samp{(NOLOAD)} to prevent a section from being loaded into memory
1685 each time it is accessed. For example, in the script sample below, the
1686 @code{ROM} segment is addressed at memory location @samp{0} and does not
1687 need to be loaded into each object file:
1688 @example
1689 SECTIONS @{
1690 ROM 0 (NOLOAD) : @{ @dots{} @}
1691 @dots{}
1692 @}
1693 @end example
1694
1695 @item =@var{fill}
1696 @kindex =@var{fill}
1697 @cindex section fill pattern
1698 @cindex fill pattern, entire section
1699 Including
1700 @code{=@var{fill}} in a section definition specifies the initial fill
1701 value for that section.
1702 You may use any expression to specify @var{fill}.
1703 Any unallocated holes in the current output
1704 section when written to the output file will be filled with the two
1705 least significant bytes of the value, repeated as necessary. You can
1706 also change the fill value with a @code{FILL} statement in the
1707 @var{contents} of a section definition.
1708
1709 @item >@var{region}
1710 @kindex >@var{region}
1711 @cindex section, assigning to memory region
1712 @cindex memory regions and sections
1713 Assign this section to a previously defined region of memory.
1714 @xref{MEMORY}.
1715
1716 @end table
1717
1718 @node Entry Point
1719 @section The Entry Point
1720 @kindex ENTRY(@var{symbol})
1721 @cindex start of execution
1722 @cindex first instruction
1723 The linker command language includes a command specifically for
1724 defining the first executable instruction in an output file (its
1725 @dfn{entry point}). Its argument is a symbol name:
1726 @example
1727 ENTRY(@var{symbol})
1728 @end example
1729
1730 Like symbol assignments, the @code{ENTRY} command may be placed either
1731 as an independent command in the command file, or among the section
1732 definitions within the @code{SECTIONS} command---whatever makes the most
1733 sense for your layout.
1734
1735 @cindex entry point, defaults
1736 @code{ENTRY} is only one of several ways of choosing the entry point.
1737 You may indicate it in any of the following ways (shown in descending
1738 order of priority: methods higher in the list override methods lower down).
1739 @itemize @bullet
1740 @item
1741 the @samp{-e} @var{entry} command-line option;
1742 @item
1743 the @code{ENTRY(@var{symbol}} command in a linker control script;
1744 @item
1745 the value of the symbol @code{start}, if present;
1746 @item
1747 the value of the symbol @code{_main}, if present;
1748 @item
1749 the address of the first byte of the @code{.text} section, if present;
1750 @item
1751 The address @code{0}.
1752 @end itemize
1753
1754 For example, you can use these rules to generate an entry point with an
1755 assignment statement: if no symbol @code{start} is defined within your
1756 input files, you can simply define it, assigning it an appropriate
1757 value---
1758 @example
1759 start = 0x2020;
1760 @end example
1761
1762 @noindent
1763 The example shows an absolute address, but you can use any expression.
1764 For example, if your input object files use some other symbol-name
1765 convention for the entry point, you can just assign the value of
1766 whatever symbol contains the start address to @code{start}:
1767 @example
1768 start = other_symbol ;
1769 @end example
1770
1771 @node Option Commands
1772 @section Option Commands
1773 The command language includes a number of other commands that you can
1774 use for specialized purposes. They are similar in purpose to
1775 command-line options.
1776
1777 @table @code
1778 @item FLOAT
1779 @kindex FLOAT
1780 @itemx NOFLOAT
1781 @kindex NOFLOAT
1782 These keywords were used in some older linkers to request a particular
1783 math subroutine library. @code{ld} doesn't use the keywords, assuming
1784 instead that any necessary subroutines are in libraries specified using
1785 the general mechanisms for linking to archives; but to permit the use of
1786 scripts that were written for the older linkers, the keywords
1787 @code{FLOAT} and @code{NOFLOAT} are accepted and ignored.
1788
1789 @item FORCE_COMMON_ALLOCATION
1790 @kindex FORCE_COMMON_ALLOCATION
1791 @cindex common allocation
1792 This command has the same effect as the @samp{-d} command-line option:
1793 to make @code{ld} assign space to common symbols even if a relocatable
1794 output file is specified (@samp{-r}).
1795
1796 @item INPUT ( @var{file}, @var{file}, @dots{} )
1797 @kindex INPUT ( @var{files} )
1798 @itemx INPUT ( @var{file} @var{file} @dots{} )
1799 @cindex binary input files
1800 Use this command to include binary input files in the link, without
1801 including them in a particular section definition.
1802 Specify the full name for each @var{file}, including @samp{.a} if
1803 required.
1804
1805 @code{ld} searches for each @var{file} through the archive-library
1806 search path, just as for files you specify on the command line.
1807 See the description of @samp{-L} in @ref{Options,,Command Line
1808 Options}.
1809
1810 @ignore
1811 @item MAP ( @var{name} )
1812 @kindex MAP ( @var{name} )
1813 @c MAP(...) appears to look for an F in the arg, ignoring all other
1814 @c chars; if it finds one, it sets "map_option_f" to true. But nothing
1815 @c checks map_option_f. Apparently a stub for the future...
1816 @end ignore
1817
1818 @item OUTPUT ( @var{filename} )
1819 @kindex OUTPUT ( @var{filename} )
1820 @cindex naming the output file
1821 Use this command to name the link output file @var{filename}. The
1822 effect of @code{OUTPUT(@var{filename})} is identical to the effect of
1823 @w{@samp{-o @var{filename}}}, and whichever is encountered last
1824 (@samp{-T} or @samp{-o} will control the name actually used to name the
1825 output file. In particular, you can use this command to supply a
1826 default output-file name other than @code{a.out}.
1827
1828 @ifclear SingleFormat
1829 @item OUTPUT_ARCH ( @var{bfdname} )
1830 @kindex OUTPUT_ARCH ( @var{bfdname} )
1831 @cindex machine architecture, output
1832 Specify a particular output machine architecture, with one of the names
1833 used by the BFD back-end routines (@pxref{BFD}). This command is often
1834 unnecessary; the architecture is most often set implicitly by either the
1835 system BFD configuration or as a side effect of the @code{OUTPUT_FORMAT}
1836 command.
1837
1838 @item OUTPUT_FORMAT ( @var{bfdname} )
1839 @kindex OUTPUT_FORMAT ( @var{bfdname} )
1840 @cindex format, output file
1841 Specify a particular output format, with one of the names used by the
1842 BFD back-end routines (@pxref{BFD}). The effect is identical to the
1843 effect of the @samp{-oformat} command-line option.
1844 This selection will only affect
1845 the output file; the related command @code{TARGET} affects primarily
1846 input files.
1847 @end ifclear
1848
1849 @item SEARCH_DIR ( @var{path} )
1850 @kindex SEARCH_DIR ( @var{path} )
1851 @cindex path for libraries
1852 @cindex search path, libraries
1853 Add @var{path} to the list of paths where @code{ld} looks for
1854 archive libraries. @code{SEARCH_DIR(@var{path})} has the same
1855 effect as @samp{-L@var{path}} on the command line.
1856
1857 @item STARTUP ( @var{filename} )
1858 @kindex STARTUP ( @var{filename} )
1859 @cindex first input file
1860 Ensure that @var{filename} is the first input file used in the link
1861 process.
1862
1863 @ifclear SingleFormat
1864 @item TARGET ( @var{format} )
1865 @cindex input file format
1866 @kindex TARGET ( @var{format} )
1867 Change the input-file object code format (like the command-line option
1868 @samp{-b} or its synonym @samp{-format}). The argument @var{format} is
1869 one of the strings used by BFD to name binary formats. If @code{TARGET}
1870 is specified but @code{OUTPUT_FORMAT} is not, the last @code{TARGET}
1871 argument is also used as the default format for the @code{ld} output
1872 file. @xref{BFD}.
1873
1874 @kindex GNUTARGET
1875 If you don't use the @code{TARGET} command, @code{ld} uses the value of
1876 the environment variable @code{GNUTARGET}, if available, to select the
1877 output file format. If that variable is also absent, @code{ld} uses
1878 the default format configured for your machine in the BFD libraries.
1879 @end ifclear
1880 @end table
1881
1882 @ifset GENERIC
1883 @node Machine Dependent
1884 @chapter Machine Dependent Features
1885
1886 @cindex machine dependencies
1887 @code{ld} has additional features on some platforms; the following
1888 sections describe them. Machines where @code{ld} has no additional
1889 functionality are not listed.
1890
1891 @menu
1892 * H8/300:: @code{ld} and the H8/300
1893 * i960:: @code{ld} and the Intel 960 family
1894 @end menu
1895 @end ifset
1896
1897 @c FIXME! This could use @raisesections/@lowersections, but there seems to be a conflict
1898 @c between those and node-defaulting.
1899 @ifset H8300
1900 @ifclear GENERIC
1901 @raisesections
1902 @end ifclear
1903 @node H8/300
1904 @section @code{ld} and the H8/300
1905
1906 @cindex H8/300 support
1907 For the H8/300, @code{ld} can perform these global optimizations when
1908 you specify the @samp{-relax} command-line option.
1909
1910 @table @emph
1911 @item relaxing address modes
1912 @cindex relaxing on H8/300
1913 @code{ld} finds all @code{jsr} and @code{jmp} instructions whose
1914 targets are within eight bits, and turns them into eight-bit
1915 program-counter relative @code{bsr} and @code{bra} instructions,
1916 respectively.
1917
1918 @item synthesizing instructions
1919 @cindex synthesizing on H8/300
1920 @c FIXME: specifically mov.b, or any mov instructions really?
1921 @code{ld} finds all @code{mov.b} instructions which use the
1922 sixteen-bit absolute address form, but refer to the top
1923 page of memory, and changes them to use the eight-bit address form.
1924 (That is: the linker turns @samp{mov.b @code{@@}@var{aa}:16} into
1925 @samp{mov.b @code{@@}@var{aa}:8} whenever the address @var{aa} is in the
1926 top page of memory).
1927 @end table
1928 @ifclear GENERIC
1929 @lowersections
1930 @end ifclear
1931 @end ifset
1932
1933 @ifset I960
1934 @ifclear GENERIC
1935 @raisesections
1936 @end ifclear
1937 @node i960
1938 @section @code{ld} and the Intel 960 family
1939
1940 @cindex i960 support
1941
1942 You can use the @samp{-A@var{architecture}} command line option to
1943 specify one of the two-letter names identifying members of the 960
1944 family; the option specifies the desired output target, and warns of any
1945 incompatible instructions in the input files. It also modifies the
1946 linker's search strategy for archive libraries, to support the use of
1947 libraries specific to each particular architecture, by including in the
1948 search loop names suffixed with the string identifying the architecture.
1949
1950 For example, if your @code{ld} command line included @w{@samp{-ACA}} as
1951 well as @w{@samp{-ltry}}, the linker would look (in its built-in search
1952 paths, and in any paths you specify with @samp{-L}) for a library with
1953 the names
1954
1955 @example
1956 try
1957 libtry.a
1958 tryca
1959 libtryca.a
1960 @end example
1961
1962 @noindent
1963 The first two possibilities would be considered in any event; the last
1964 two are due to the use of @w{@samp{-ACA}}.
1965
1966 You can meaningfully use @samp{-A} more than once on a command line, since
1967 the 960 architecture family allows combination of target architectures; each
1968 use will add another pair of name variants to search for when @w{@samp{-l}}
1969 specifies a library.
1970 @ifclear GENERIC
1971 @lowersections
1972 @end ifclear
1973 @end ifset
1974
1975 @ifclear SingleFormat
1976 @node BFD
1977 @chapter BFD
1978
1979 @cindex back end
1980 @cindex object file management
1981 The linker accesses object and archive files using the BFD libraries.
1982 These libraries allow the linker to use the same routines to operate on
1983 object files whatever the object file format. A different object file
1984 format can be supported simply by creating a new BFD back end and adding
1985 it to the library. You can use @code{objdump -i}
1986 (@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}) to
1987 list all the formats available for each architecture under BFD. This
1988 was the list of formats, and of architectures supported for each format,
1989 as of the time this manual was prepared:
1990 @cindex formats available
1991 @cindex architectures available
1992 @example
1993 BFD header file version 0.18
1994 a.out-i386
1995 (header big endian, data big endian)
1996 m68k:68020
1997 a29k
1998 sparc
1999 i386
2000 a.out-sunos-big
2001 (header big endian, data big endian)
2002 m68k:68020
2003 a29k
2004 sparc
2005 i386
2006 b.out.big
2007 (header big endian, data little endian)
2008 i960:core
2009 b.out.little
2010 (header little endian, data little endian)
2011 i960:core
2012 coff-a29k-big
2013 (header big endian, data big endian)
2014 a29k
2015 coff-h8300
2016 (header big endian, data big endian)
2017 H8/300
2018 coff-i386
2019 (header little endian, data little endian)
2020 i386
2021 coff-Intel-big
2022 (header big endian, data little endian)
2023 i960:core
2024 coff-Intel-little
2025 (header little endian, data little endian)
2026 i960:core
2027 coff-m68k
2028 (header big endian, data big endian)
2029 m68k:68020
2030 coff-m88kbcs
2031 (header big endian, data big endian)
2032 m88k:88100
2033 ecoff-bigmips
2034 (header big endian, data big endian)
2035 mips
2036 ecoff-littlemips
2037 (header little endian, data little endian)
2038 mips
2039 elf-big
2040 (header big endian, data big endian)
2041 m68k:68020
2042 vax
2043 i960:core
2044 a29k
2045 sparc
2046 mips
2047 i386
2048 m88k:88100
2049 H8/300
2050 rs6000:6000
2051 elf-little
2052 (header little endian, data little endian)
2053 m68k:68020
2054 vax
2055 i960:core
2056 a29k
2057 sparc
2058 mips
2059 i386
2060 m88k:88100
2061 H8/300
2062 rs6000:6000
2063 ieee
2064 (header big endian, data big endian)
2065 m68k:68020
2066 vax
2067 i960:core
2068 a29k
2069 sparc
2070 mips
2071 i386
2072 m88k:88100
2073 H8/300
2074 rs6000:6000
2075 srec
2076 (header big endian, data big endian)
2077 m68k:68020
2078 vax
2079 i960:core
2080 a29k
2081 sparc
2082 mips
2083 i386
2084 m88k:88100
2085 H8/300
2086 rs6000:6000
2087 @end example
2088
2089 @cindex BFD requirements
2090 @cindex requirements for BFD
2091 As with most implementations, BFD is a compromise between
2092 several conflicting requirements. The major factor influencing
2093 BFD design was efficiency: any time used converting between
2094 formats is time which would not have been spent had BFD not
2095 been involved. This is partly offset by abstraction payback; since
2096 BFD simplifies applications and back ends, more time and care
2097 may be spent optimizing algorithms for a greater speed.
2098
2099 One minor artifact of the BFD solution which you should bear in
2100 mind is the potential for information loss. There are two places where
2101 useful information can be lost using the BFD mechanism: during
2102 conversion and during output. @xref{BFD information loss}.
2103
2104 @menu
2105 * BFD outline:: How it works: an outline of BFD
2106 @end menu
2107
2108 @node BFD outline
2109 @section How it works: an outline of BFD
2110 @cindex opening object files
2111 @include bfdsumm.texi
2112 @end ifclear
2113
2114 @node MRI
2115 @appendix MRI Compatible Script Files
2116 @cindex MRI compatibility
2117 To aid users making the transition to @sc{gnu} @code{ld} from the MRI
2118 linker, @code{ld} can use MRI compatible linker scripts as an
2119 alternative to the more general-purpose linker scripting language
2120 described in @ref{Commands,,Command Language}. MRI compatible linker
2121 scripts have a much simpler command set than the scripting language
2122 otherwise used with @code{ld}. @sc{gnu} @code{ld} supports the most
2123 commonly used MRI linker commands; these commands are described here.
2124
2125 In general, MRI scripts aren't of much use with the @code{a.out} object
2126 file format, since it only has three sections and MRI scripts lack some
2127 features to make use of them.
2128
2129 You can specify a file containing an MRI-compatible script using the
2130 @samp{-c} command-line option.
2131
2132 Each command in an MRI-compatible script occupies its own line; each
2133 command line starts with the keyword that identifies the command (though
2134 blank lines are also allowed for punctuation). If a line of an
2135 MRI-compatible script begins with an unrecognized keyword, @code{ld}
2136 issues a warning message, but continues processing the script.
2137
2138 Lines beginning with @samp{*} are comments.
2139
2140 You can write these commands using all upper-case letters, or all
2141 lower case; for example, @samp{chip} is the same as @samp{CHIP}.
2142 The following list shows only the upper-case form of each command.
2143
2144 @table @code
2145 @item ABSOLUTE @var{secname}
2146 @item ABSOLUTE @var{secname}, @var{secname}, @dots{} @var{secname}
2147 @cindex @code{ABSOLUTE} (MRI)
2148 Normally, @code{ld} includes in the output file all sections from all
2149 the input files. However, in an MRI-compatible script, you can use the
2150 @code{ABSOLUTE} command to restrict the sections that will be present in
2151 your output program. If the @code{ABSOLUTE} command is used at all in a
2152 script, then only the sections named explicitly in @code{ABSOLUTE}
2153 commands will appear in the linker output. You can still use other
2154 input sections (whatever you select on the command line, or using
2155 @code{LOAD}) to resolve addresses in the output file.
2156
2157 @item ALIAS @var{out-secname}, @var{in-secname}
2158 @cindex @code{ALIAS} (MRI)
2159 Use this command to place the data from input section @var{in-secname}
2160 in a section called @var{out-secname} in the linker output file.
2161
2162 @var{in-secname} may be an integer.
2163
2164 @item BASE @var{expression}
2165 @cindex @code{BASE} (MRI)
2166 Use the value of @var{expression} as the lowest address (other than
2167 absolute addresses) in the output file.
2168
2169 @item CHIP @var{expression}
2170 @itemx CHIP @var{expression}, @var{expression}
2171 @cindex @code{CHIP} (MRI)
2172 This command does nothing; it is accepted only for compatibility.
2173
2174 @item END
2175 @cindex @code{END} (MRI)
2176 This command does nothing whatever; it's only accepted for compatibility.
2177
2178 @item FORMAT @var{output-format}
2179 @cindex @code{FORMAT} (MRI)
2180 Similar to the @code{OUTPUT_FORMAT} command in the more general linker
2181 language, but restricted to one of these output formats:
2182 @enumerate
2183 @item
2184 S-records, if @var{output-format} is @samp{S}
2185
2186 @item
2187 IEEE, if @var{output-format} is @samp{IEEE}
2188
2189 @item
2190 COFF (the @samp{coff-m68k} variant in BFD), if @var{output-format} is
2191 @samp{COFF}
2192 @end enumerate
2193
2194 @item LIST @var{anything}@dots{}
2195 @cindex @code{LIST} (MRI)
2196 Print (to the standard output file) a link map, as produced by the
2197 @code{ld} command-line option @samp{-M}.
2198
2199 The keyword @code{LIST} may be followed by anything on the
2200 same line, with no change in its effect.
2201
2202 @item LOAD @var{filename}
2203 @item LOAD @var{filename}, @var{filename}, @dots{} @var{filename}
2204 @cindex @code{LOAD} (MRI)
2205 Include one or more object file @var{filename} in the link; this has the
2206 same effect as specifying @var{filename} directly on the @code{ld}
2207 command line.
2208
2209 @item NAME @var{output-name}
2210 @cindex @code{NAME} (MRI)
2211 @var{output-name} is the name for the program produced by @code{ld}; the
2212 MRI-compatible command @code{NAME} is equivalent to the command-line
2213 option @samp{-o} or the general script language command @code{OUTPUT}.
2214
2215 @item ORDER @var{secname}, @var{secname}, @dots{} @var{secname}
2216 @itemx ORDER @var{secname} @var{secname} @var{secname}
2217 @cindex @code{ORDER} (MRI)
2218 Normally, @code{ld} orders the sections in its output file in the
2219 order in which they first appear in the input files. In an MRI-compatible
2220 script, you can override this ordering with the @code{ORDER} command. The
2221 sections you list with @code{ORDER} will appear first in your output
2222 file, in the order specified.
2223
2224 @item PUBLIC @var{name}=@var{expression}
2225 @itemx PUBLIC @var{name},@var{expression}
2226 @itemx PUBLIC @var{name} @var{expression}
2227 @cindex @code{PUBLIC} (MRI)
2228 Supply a value (@var{expression}) for external symbol
2229 @var{name} used in the linker input files.
2230
2231 @item SECT @var{secname}, @var{expression}
2232 @itemx SECT @var{secname}=@var{expression}
2233 @itemx SECT @var{secname} @var{expression}
2234 @cindex @code{SECT} (MRI)
2235 You can use any of these three forms of the @code{SECT} command to
2236 specify the start address (@var{expression}) for section @var{secname}.
2237 If you have more than one @code{SECT} statement for the same
2238 @var{secname}, only the @emph{first} sets the start address.
2239 @end table
2240
2241
2242 @node Index
2243 @unnumbered Index
2244
2245 @printindex cp
2246
2247 @tex
2248 % I think something like @colophon should be in texinfo. In the
2249 % meantime:
2250 \long\def\colophon{\hbox to0pt{}\vfill
2251 \centerline{The body of this manual is set in}
2252 \centerline{\fontname\tenrm,}
2253 \centerline{with headings in {\bf\fontname\tenbf}}
2254 \centerline{and examples in {\tt\fontname\tentt}.}
2255 \centerline{{\it\fontname\tenit\/} and}
2256 \centerline{{\sl\fontname\tensl\/}}
2257 \centerline{are used for emphasis.}\vfill}
2258 \page\colophon
2259 % Blame: pesch@cygnus.com, 28mar91.
2260 @end tex
2261
2262
2263 @contents
2264 @bye
2265
2266