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