2001-05-31 H.J. Lu <hjl@gnu.org>
[binutils.git] / ld / ldint.texinfo
blob37efae3942b1dde941c56af7ed0a736ff7e4cb5c
1 \input texinfo
2 @setfilename ldint.info
3 @c Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
4 @c Free Software Foundation, Inc.
6 @ifinfo
7 @format
8 START-INFO-DIR-ENTRY
9 * Ld-Internals: (ldint).        The GNU linker internals.
10 END-INFO-DIR-ENTRY
11 @end format
12 @end ifinfo
14 @ifinfo
15 This file documents the internals of the GNU linker ld.
17 Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
18 Free Software Foundation, Inc.
19 Contributed by Cygnus Support.
21       Permission is granted to copy, distribute and/or modify this document
22       under the terms of the GNU Free Documentation License, Version 1.1
23       or any later version published by the Free Software Foundation;
24       with no Invariant Sections, with no Front-Cover Texts, and with no
25       Back-Cover Texts.  A copy of the license is included in the
26       section entitled "GNU Free Documentation License".
28 @ignore
29 Permission is granted to process this file through Tex and print the
30 results, provided the printed document carries copying permission
31 notice identical to this one except for the removal of this paragraph
32 (this paragraph not being relevant to the printed manual).
34 @end ignore
35 @end ifinfo
37 @iftex
38 @finalout
39 @setchapternewpage off
40 @settitle GNU Linker Internals
41 @titlepage
42 @title{A guide to the internals of the GNU linker}
43 @author Per Bothner, Steve Chamberlain, Ian Lance Taylor, DJ Delorie
44 @author Cygnus Support
45 @page
47 @tex
48 \def\$#1${{#1}}  % Kluge: collect RCS revision info without $...$
49 \xdef\manvers{2.10.91}  % For use in headers, footers too
50 {\parskip=0pt
51 \hfill Cygnus Support\par
52 \hfill \manvers\par
53 \hfill \TeX{}info \texinfoversion\par
55 @end tex
57 @vskip 0pt plus 1filll
58 Copyright @copyright{} 1992, 93, 94, 95, 96, 97, 1998, 2000
59 Free Software Foundation, Inc.
61       Permission is granted to copy, distribute and/or modify this document
62       under the terms of the GNU Free Documentation License, Version 1.1
63       or any later version published by the Free Software Foundation;
64       with no Invariant Sections, with no Front-Cover Texts, and with no
65       Back-Cover Texts.  A copy of the license is included in the
66       section entitled "GNU Free Documentation License".
68 @end titlepage
69 @end iftex
71 @node Top
72 @top
74 This file documents the internals of the GNU linker @code{ld}.  It is a
75 collection of miscellaneous information with little form at this point.
76 Mostly, it is a repository into which you can put information about
77 GNU @code{ld} as you discover it (or as you design changes to @code{ld}).
79 This document is distributed under the terms of the GNU Free
80 Documentation License.  A copy of the license is included in the
81 section entitled "GNU Free Documentation License".
83 @menu
84 * README::                      The README File
85 * Emulations::                  How linker emulations are generated
86 * Emulation Walkthrough::       A Walkthrough of a Typical Emulation
87 * GNU Free Documentation License::  GNU Free Documentation License
88 @end menu
90 @node README
91 @chapter The @file{README} File
93 Check the @file{README} file; it often has useful information that does not
94 appear anywhere else in the directory.
96 @node Emulations
97 @chapter How linker emulations are generated
99 Each linker target has an @dfn{emulation}.  The emulation includes the
100 default linker script, and certain emulations also modify certain types
101 of linker behaviour.
103 Emulations are created during the build process by the shell script
104 @file{genscripts.sh}.
106 The @file{genscripts.sh} script starts by reading a file in the
107 @file{emulparams} directory.  This is a shell script which sets various
108 shell variables used by @file{genscripts.sh} and the other shell scripts
109 it invokes.
111 The @file{genscripts.sh} script will invoke a shell script in the
112 @file{scripttempl} directory in order to create default linker scripts
113 written in the linker command language.  The @file{scripttempl} script
114 will be invoked 5 (or, in some cases, 6) times, with different
115 assignments to shell variables, to create different default scripts.
116 The choice of script is made based on the command line options.
118 After creating the scripts, @file{genscripts.sh} will invoke yet another
119 shell script, this time in the @file{emultempl} directory.  That shell
120 script will create the emulation source file, which contains C code.
121 This C code permits the linker emulation to override various linker
122 behaviours.  Most targets use the generic emulation code, which is in
123 @file{emultempl/generic.em}.
125 To summarize, @file{genscripts.sh} reads three shell scripts: an
126 emulation parameters script in the @file{emulparams} directory, a linker
127 script generation script in the @file{scripttempl} directory, and an
128 emulation source file generation script in the @file{emultempl}
129 directory.
131 For example, the Sun 4 linker sets up variables in
132 @file{emulparams/sun4.sh}, creates linker scripts using
133 @file{scripttempl/aout.sc}, and creates the emulation code using
134 @file{emultempl/sunos.em}.
136 Note that the linker can support several emulations simultaneously,
137 depending upon how it is configured.  An emulation can be selected with
138 the @code{-m} option.  The @code{-V} option will list all supported
139 emulations.
141 @menu
142 * emulation parameters::        @file{emulparams} scripts
143 * linker scripts::              @file{scripttempl} scripts
144 * linker emulations::           @file{emultempl} scripts
145 @end menu
147 @node emulation parameters
148 @section @file{emulparams} scripts
150 Each target selects a particular file in the @file{emulparams} directory
151 by setting the shell variable @code{targ_emul} in @file{configure.tgt}.
152 This shell variable is used by the @file{configure} script to control
153 building an emulation source file.
155 Certain conventions are enforced.  Suppose the @code{targ_emul} variable
156 is set to @var{emul} in @file{configure.tgt}.  The name of the emulation
157 shell script will be @file{emulparams/@var{emul}.sh}.  The
158 @file{Makefile} must have a target named @file{e@var{emul}.c}; this
159 target must depend upon @file{emulparams/@var{emul}.sh}, as well as the
160 appropriate scripts in the @file{scripttempl} and @file{emultempl}
161 directories.  The @file{Makefile} target must invoke @code{GENSCRIPTS}
162 with two arguments: @var{emul}, and the value of the make variable
163 @code{tdir_@var{emul}}.  The value of the latter variable will be set by
164 the @file{configure} script, and is used to set the default target
165 directory to search.
167 By convention, the @file{emulparams/@var{emul}.sh} shell script should
168 only set shell variables.  It may set shell variables which are to be
169 interpreted by the @file{scripttempl} and the @file{emultempl} scripts.
170 Certain shell variables are interpreted directly by the
171 @file{genscripts.sh} script.
173 Here is a list of shell variables interpreted by @file{genscripts.sh},
174 as well as some conventional shell variables interpreted by the
175 @file{scripttempl} and @file{emultempl} scripts.
177 @table @code
178 @item SCRIPT_NAME
179 This is the name of the @file{scripttempl} script to use.  If
180 @code{SCRIPT_NAME} is set to @var{script}, @file{genscripts.sh} will use
181 the script @file{scriptteml/@var{script}.sc}.
183 @item TEMPLATE_NAME
184 This is the name of the @file{emultemlp} script to use.  If
185 @code{TEMPLATE_NAME} is set to @var{template}, @file{genscripts.sh} will
186 use the script @file{emultempl/@var{template}.em}.  If this variable is
187 not set, the default value is @samp{generic}.
189 @item GENERATE_SHLIB_SCRIPT
190 If this is set to a nonempty string, @file{genscripts.sh} will invoke
191 the @file{scripttempl} script an extra time to create a shared library
192 script.  @ref{linker scripts}.
194 @item OUTPUT_FORMAT
195 This is normally set to indicate the BFD output format use (e.g.,
196 @samp{"a.out-sunos-big"}.  The @file{scripttempl} script will normally
197 use it in an @code{OUTPUT_FORMAT} expression in the linker script.
199 @item ARCH
200 This is normally set to indicate the architecture to use (e.g.,
201 @samp{sparc}).  The @file{scripttempl} script will normally use it in an
202 @code{OUTPUT_ARCH} expression in the linker script.
204 @item ENTRY
205 Some @file{scripttempl} scripts use this to set the entry address, in an
206 @code{ENTRY} expression in the linker script.
208 @item TEXT_START_ADDR
209 Some @file{scripttempl} scripts use this to set the start address of the
210 @samp{.text} section.
212 @item NONPAGED_TEXT_START_ADDR
213 If this is defined, the @file{genscripts.sh} script sets
214 @code{TEXT_START_ADDR} to its value before running the
215 @file{scripttempl} script for the @code{-n} and @code{-N} options
216 (@pxref{linker scripts}).
218 @item SEGMENT_SIZE
219 The @file{genscripts.sh} script uses this to set the default value of
220 @code{DATA_ALIGNMENT} when running the @file{scripttempl} script.
222 @item TARGET_PAGE_SIZE
223 If @code{SEGMENT_SIZE} is not defined, the @file{genscripts.sh} script
224 uses this to define it.
226 @item ALIGNMENT
227 Some @file{scripttempl} scripts set this to a number to pass to
228 @code{ALIGN} to set the required alignment for the @code{end} symbol.
229 @end table
231 @node linker scripts
232 @section @file{scripttempl} scripts
234 Each linker target uses a @file{scripttempl} script to generate the
235 default linker scripts.  The name of the @file{scripttempl} script is
236 set by the @code{SCRIPT_NAME} variable in the @file{emulparams} script.
237 If @code{SCRIPT_NAME} is set to @var{script}, @code{genscripts.sh} will
238 invoke @file{scripttempl/@var{script}.sc}.
240 The @file{genscripts.sh} script will invoke the @file{scripttempl}
241 script 5 or 6 times.  Each time it will set the shell variable
242 @code{LD_FLAG} to a different value.  When the linker is run, the
243 options used will direct it to select a particular script.  (Script
244 selection is controlled by the @code{get_script} emulation entry point;
245 this describes the conventional behaviour).
247 The @file{scripttempl} script should just write a linker script, written
248 in the linker command language, to standard output.  If the emulation
249 name--the name of the @file{emulparams} file without the @file{.sc}
250 extension--is @var{emul}, then the output will be directed to
251 @file{ldscripts/@var{emul}.@var{extension}} in the build directory,
252 where @var{extension} changes each time the @file{scripttempl} script is
253 invoked.
255 Here is the list of values assigned to @code{LD_FLAG}.
257 @table @code
258 @item (empty)
259 The script generated is used by default (when none of the following
260 cases apply).  The output has an extension of @file{.x}.
261 @item n
262 The script generated is used when the linker is invoked with the
263 @code{-n} option.  The output has an extension of @file{.xn}.
264 @item N
265 The script generated is used when the linker is invoked with the
266 @code{-N} option.  The output has an extension of @file{.xbn}.
267 @item r
268 The script generated is used when the linker is invoked with the
269 @code{-r} option.  The output has an extension of @file{.xr}.
270 @item u
271 The script generated is used when the linker is invoked with the
272 @code{-Ur} option.  The output has an extension of @file{.xu}.
273 @item shared
274 The @file{scripttempl} script is only invoked with @code{LD_FLAG} set to
275 this value if @code{GENERATE_SHLIB_SCRIPT} is defined in the
276 @file{emulparams} file.  The @file{emultempl} script must arrange to use
277 this script at the appropriate time, normally when the linker is invoked
278 with the @code{-shared} option.  The output has an extension of
279 @file{.xs}.
280 @end table
282 Besides the shell variables set by the @file{emulparams} script, and the
283 @code{LD_FLAG} variable, the @file{genscripts.sh} script will set
284 certain variables for each run of the @file{scripttempl} script.
286 @table @code
287 @item RELOCATING
288 This will be set to a non-empty string when the linker is doing a final
289 relocation (e.g., all scripts other than @code{-r} and @code{-Ur}).
291 @item CONSTRUCTING
292 This will be set to a non-empty string when the linker is building
293 global constructor and destructor tables (e.g., all scripts other than
294 @code{-r}).
296 @item DATA_ALIGNMENT
297 This will be set to an @code{ALIGN} expression when the output should be
298 page aligned, or to @samp{.} when generating the @code{-N} script.
300 @item CREATE_SHLIB
301 This will be set to a non-empty string when generating a @code{-shared}
302 script.
303 @end table
305 The conventional way to write a @file{scripttempl} script is to first
306 set a few shell variables, and then write out a linker script using
307 @code{cat} with a here document.  The linker script will use variable
308 substitutions, based on the above variables and those set in the
309 @file{emulparams} script, to control its behaviour.
311 When there are parts of the @file{scripttempl} script which should only
312 be run when doing a final relocation, they should be enclosed within a
313 variable substitution based on @code{RELOCATING}.  For example, on many
314 targets special symbols such as @code{_end} should be defined when doing
315 a final link.  Naturally, those symbols should not be defined when doing
316 a relocateable link using @code{-r}.  The @file{scripttempl} script
317 could use a construct like this to define those symbols:
318 @smallexample
319   $@{RELOCATING+ _end = .;@}
320 @end smallexample
321 This will do the symbol assignment only if the @code{RELOCATING}
322 variable is defined.
324 The basic job of the linker script is to put the sections in the correct
325 order, and at the correct memory addresses.  For some targets, the
326 linker script may have to do some other operations.
328 For example, on most MIPS platforms, the linker is responsible for
329 defining the special symbol @code{_gp}, used to initialize the
330 @code{$gp} register.  It must be set to the start of the small data
331 section plus @code{0x8000}.  Naturally, it should only be defined when
332 doing a final relocation.  This will typically be done like this:
333 @smallexample
334   $@{RELOCATING+ _gp = ALIGN(16) + 0x8000;@}
335 @end smallexample
336 This line would appear just before the sections which compose the small
337 data section (@samp{.sdata}, @samp{.sbss}).  All those sections would be
338 contiguous in memory.
340 Many COFF systems build constructor tables in the linker script.  The
341 compiler will arrange to output the address of each global constructor
342 in a @samp{.ctor} section, and the address of each global destructor in
343 a @samp{.dtor} section (this is done by defining
344 @code{ASM_OUTPUT_CONSTRUCTOR} and @code{ASM_OUTPUT_DESTRUCTOR} in the
345 @code{gcc} configuration files).  The @code{gcc} runtime support
346 routines expect the constructor table to be named @code{__CTOR_LIST__}.
347 They expect it to be a list of words, with the first word being the
348 count of the number of entries.  There should be a trailing zero word.
349 (Actually, the count may be -1 if the trailing word is present, and the
350 trailing word may be omitted if the count is correct, but, as the
351 @code{gcc} behaviour has changed slightly over the years, it is safest
352 to provide both).  Here is a typical way that might be handled in a
353 @file{scripttempl} file.
354 @smallexample
355     $@{CONSTRUCTING+ __CTOR_LIST__ = .;@}
356     $@{CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)@}
357     $@{CONSTRUCTING+ *(.ctors)@}
358     $@{CONSTRUCTING+ LONG(0)@}
359     $@{CONSTRUCTING+ __CTOR_END__ = .;@}
360     $@{CONSTRUCTING+ __DTOR_LIST__ = .;@}
361     $@{CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)@}
362     $@{CONSTRUCTING+ *(.dtors)@}
363     $@{CONSTRUCTING+ LONG(0)@}
364     $@{CONSTRUCTING+ __DTOR_END__ = .;@}
365 @end smallexample
366 The use of @code{CONSTRUCTING} ensures that these linker script commands
367 will only appear when the linker is supposed to be building the
368 constructor and destructor tables.  This example is written for a target
369 which uses 4 byte pointers.
371 Embedded systems often need to set a stack address.  This is normally
372 best done by using the @code{PROVIDE} construct with a default stack
373 address.  This permits the user to easily override the stack address
374 using the @code{--defsym} option.  Here is an example:
375 @smallexample
376   $@{RELOCATING+ PROVIDE (__stack = 0x80000000);@}
377 @end smallexample
378 The value of the symbol @code{__stack} would then be used in the startup
379 code to initialize the stack pointer.
381 @node linker emulations
382 @section @file{emultempl} scripts
384 Each linker target uses an @file{emultempl} script to generate the
385 emulation code.  The name of the @file{emultempl} script is set by the
386 @code{TEMPLATE_NAME} variable in the @file{emulparams} script.  If the
387 @code{TEMPLATE_NAME} variable is not set, the default is
388 @samp{generic}.  If the value of @code{TEMPLATE_NAME} is @var{template},
389 @file{genscripts.sh} will use @file{emultempl/@var{template}.em}.
391 Most targets use the generic @file{emultempl} script,
392 @file{emultempl/generic.em}.  A different @file{emultempl} script is
393 only needed if the linker must support unusual actions, such as linking
394 against shared libraries.
396 The @file{emultempl} script is normally written as a simple invocation
397 of @code{cat} with a here document.  The document will use a few
398 variable substitutions.  Typically each function names uses a
399 substitution involving @code{EMULATION_NAME}, for ease of debugging when
400 the linker supports multiple emulations.
402 Every function and variable in the emitted file should be static.  The
403 only globally visible object must be named
404 @code{ld_@var{EMULATION_NAME}_emulation}, where @var{EMULATION_NAME} is
405 the name of the emulation set in @file{configure.tgt} (this is also the
406 name of the @file{emulparams} file without the @file{.sh} extension).
407 The @file{genscripts.sh} script will set the shell variable
408 @code{EMULATION_NAME} before invoking the @file{emultempl} script.
410 The @code{ld_@var{EMULATION_NAME}_emulation} variable must be a
411 @code{struct ld_emulation_xfer_struct}, as defined in @file{ldemul.h}.
412 It defines a set of function pointers which are invoked by the linker,
413 as well as strings for the emulation name (normally set from the shell
414 variable @code{EMULATION_NAME} and the default BFD target name (normally
415 set from the shell variable @code{OUTPUT_FORMAT} which is normally set
416 by the @file{emulparams} file).
418 The @file{genscripts.sh} script will set the shell variable
419 @code{COMPILE_IN} when it invokes the @file{emultempl} script for the
420 default emulation.  In this case, the @file{emultempl} script should
421 include the linker scripts directly, and return them from the
422 @code{get_scripts} entry point.  When the emulation is not the default,
423 the @code{get_scripts} entry point should just return a file name.  See
424 @file{emultempl/generic.em} for an example of how this is done.
426 At some point, the linker emulation entry points should be documented.
428 @node Emulation Walkthrough
429 @chapter A Walkthrough of a Typical Emulation
431 This chapter is to help people who are new to the way emulations
432 interact with the linker, or who are suddenly thrust into the position
433 of having to work with existing emulations.  It will discuss the files
434 you need to be aware of.  It will tell you when the given "hooks" in
435 the emulation will be called.  It will, hopefully, give you enough
436 information about when and how things happen that you'll be able to
437 get by.  As always, the source is the definitive reference to this.
439 The starting point for the linker is in @file{ldmain.c} where
440 @code{main} is defined.  The bulk of the code that's emulation
441 specific will initially be in @code{emultempl/@var{emulation}.em} but
442 will end up in @code{e@var{emulation}.c} when the build is done.
443 Most of the work to select and interface with emulations is in
444 @code{ldemul.h} and @code{ldemul.c}.  Specifically, @code{ldemul.h}
445 defines the @code{ld_emulation_xfer_struct} structure your emulation
446 exports.
448 Your emulation file exports a symbol
449 @code{ld_@var{EMULATION_NAME}_emulation}.  If your emulation is
450 selected (it usually is, since usually there's only one),
451 @code{ldemul.c} sets the variable @var{ld_emulation} to point to it.
452 @code{ldemul.c} also defines a number of API functions that interface
453 to your emulation, like @code{ldemul_after_parse} which simply calls
454 your @code{ld_@var{EMULATION}_emulation.after_parse} function.  For
455 the rest of this section, the functions will be mentioned, but you
456 should assume the indirect reference to your emulation also.
458 We will also skip or gloss over parts of the link process that don't
459 relate to emulations, like setting up internationalization.
461 After initialization, @code{main} selects an emulation by pre-scanning
462 the command line arguments.  It calls @code{ldemul_choose_target} to
463 choose a target.  If you set @code{choose_target} to
464 @code{ldemul_default_target}, it picks your @code{target_name} by
465 default.
467 @code{main} calls @code{ldemul_before_parse}, then @code{parse_args}.
468 @code{parse_args} calls @code{ldemul_parse_args} for each arg, which
469 must update the @code{getopt} globals if it recognizes the argument.
470 If the emulation doesn't recognize it, then parse_args checks to see
471 if it recognizes it.
473 Now that the emulation has had access to all its command-line options,
474 @code{main} calls @code{ldemul_set_symbols}.  This can be used for any
475 initialization that may be affected by options.  It is also supposed
476 to set up any variables needed by the emulation script.
478 @code{main} now calls @code{ldemul_get_script} to get the emulation
479 script to use (based on arguments, no doubt, @pxref{Emulations}) and
480 runs it.  While parsing, @code{ldgram.y} may call @code{ldemul_hll} or
481 @code{ldemul_syslib} to handle the @code{HLL} or @code{SYSLIB}
482 commands.  It may call @code{ldemul_unrecognized_file} if you asked
483 the linker to link a file it doesn't recognize.  It will call
484 @code{ldemul_recognized_file} for each file it does recognize, in case
485 the emulation wants to handle some files specially.  All the while,
486 it's loading the files (possibly calling
487 @code{ldemul_open_dynamic_archive}) and symbols and stuff.  After it's
488 done reading the script, @code{main} calls @code{ldemul_after_parse}.
489 Use the after-parse hook to set up anything that depends on stuff the
490 script might have set up, like the entry point.
492 @code{main} next calls @code{lang_process} in @code{ldlang.c}.  This
493 appears to be the main core of the linking itself, as far as emulation
494 hooks are concerned(*).  It first opens the output file's BFD, calling
495 @code{ldemul_set_output_arch}, and calls
496 @code{ldemul_create_output_section_statements} in case you need to use
497 other means to find or create object files (i.e. shared libraries
498 found on a path, or fake stub objects).  Despite the name, nobody
499 creates output sections here.
501 (*) In most cases, the BFD library does the bulk of the actual
502 linking, handling symbol tables, symbol resolution, relocations, and
503 building the final output file.  See the BFD reference for all the
504 details.  Your emulation is usually concerned more with managing
505 things at the file and section level, like "put this here, add this
506 section", etc.
508 Next, the objects to be linked are opened and BFDs created for them,
509 and @code{ldemul_after_open} is called.  At this point, you have all
510 the objects and symbols loaded, but none of the data has been placed
511 yet.
513 Next comes the Big Linking Thingy (except for the parts BFD does).
514 All input sections are mapped to output sections according to the
515 script.  If a section doesn't get mapped by default,
516 @code{ldemul_place_orphan} will get called to figure out where it goes.
517 Next it figures out the offsets for each section, calling
518 @code{ldemul_before_allocation} before and
519 @code{ldemul_after_allocation} after deciding where each input section
520 ends up in the output sections.
522 The last part of @code{lang_process} is to figure out all the symbols'
523 values.  After assigning final values to the symbols,
524 @code{ldemul_finish} is called, and after that, any undefined symbols
525 are turned into fatal errors.
527 OK, back to @code{main}, which calls @code{ldwrite} in
528 @file{ldwrite.c}.  @code{ldwrite} calls BFD's final_link, which does
529 all the relocation fixups and writes the output bfd to disk, and we're
530 done.
532 In summary,
534 @itemize @bullet
536 @item @code{main()} in @file{ldmain.c}
537 @item @file{emultempl/@var{EMULATION}.em} has your code
538 @item @code{ldemul_choose_target} (defaults to your @code{target_name})
539 @item @code{ldemul_before_parse}
540 @item Parse argv, calls @code{ldemul_parse_args} for each
541 @item @code{ldemul_set_symbols}
542 @item @code{ldemul_get_script}
543 @item parse script
545 @itemize @bullet
546 @item may call @code{ldemul_hll} or @code{ldemul_syslib}
547 @item may call @code{ldemul_open_dynamic_archive}
548 @end itemize
550 @item @code{ldemul_after_parse}
551 @item @code{lang_process()} in @file{ldlang.c}
553 @itemize @bullet
554 @item create @code{output_bfd}
555 @item @code{ldemul_set_output_arch}
556 @item @code{ldemul_create_output_section_statements}
557 @item read objects, create input bfds - all symbols exist, but have no values
558 @item may call @code{ldemul_unrecognized_file}
559 @item will call @code{ldemul_recognized_file}
560 @item @code{ldemul_after_open}
561 @item map input sections to output sections
562 @item may call @code{ldemul_place_orphan} for remaining sections
563 @item @code{ldemul_before_allocation}
564 @item gives input sections offsets into output sections, places output sections
565 @item @code{ldemul_after_allocation} - section addresses valid
566 @item assigns values to symbols
567 @item @code{ldemul_finish} - symbol values valid
568 @end itemize
570 @item output bfd is written to disk
572 @end itemize
574 @node GNU Free Documentation License
575 @chapter GNU Free Documentation License
577                 GNU Free Documentation License
578                 
579                    Version 1.1, March 2000
581  Copyright (C) 2000  Free Software Foundation, Inc.
582   59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
583      
584  Everyone is permitted to copy and distribute verbatim copies
585  of this license document, but changing it is not allowed.
588 0. PREAMBLE
590 The purpose of this License is to make a manual, textbook, or other
591 written document "free" in the sense of freedom: to assure everyone
592 the effective freedom to copy and redistribute it, with or without
593 modifying it, either commercially or noncommercially.  Secondarily,
594 this License preserves for the author and publisher a way to get
595 credit for their work, while not being considered responsible for
596 modifications made by others.
598 This License is a kind of "copyleft", which means that derivative
599 works of the document must themselves be free in the same sense.  It
600 complements the GNU General Public License, which is a copyleft
601 license designed for free software.
603 We have designed this License in order to use it for manuals for free
604 software, because free software needs free documentation: a free
605 program should come with manuals providing the same freedoms that the
606 software does.  But this License is not limited to software manuals;
607 it can be used for any textual work, regardless of subject matter or
608 whether it is published as a printed book.  We recommend this License
609 principally for works whose purpose is instruction or reference.
612 1. APPLICABILITY AND DEFINITIONS
614 This License applies to any manual or other work that contains a
615 notice placed by the copyright holder saying it can be distributed
616 under the terms of this License.  The "Document", below, refers to any
617 such manual or work.  Any member of the public is a licensee, and is
618 addressed as "you".
620 A "Modified Version" of the Document means any work containing the
621 Document or a portion of it, either copied verbatim, or with
622 modifications and/or translated into another language.
624 A "Secondary Section" is a named appendix or a front-matter section of
625 the Document that deals exclusively with the relationship of the
626 publishers or authors of the Document to the Document's overall subject
627 (or to related matters) and contains nothing that could fall directly
628 within that overall subject.  (For example, if the Document is in part a
629 textbook of mathematics, a Secondary Section may not explain any
630 mathematics.)  The relationship could be a matter of historical
631 connection with the subject or with related matters, or of legal,
632 commercial, philosophical, ethical or political position regarding
633 them.
635 The "Invariant Sections" are certain Secondary Sections whose titles
636 are designated, as being those of Invariant Sections, in the notice
637 that says that the Document is released under this License.
639 The "Cover Texts" are certain short passages of text that are listed,
640 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
641 the Document is released under this License.
643 A "Transparent" copy of the Document means a machine-readable copy,
644 represented in a format whose specification is available to the
645 general public, whose contents can be viewed and edited directly and
646 straightforwardly with generic text editors or (for images composed of
647 pixels) generic paint programs or (for drawings) some widely available
648 drawing editor, and that is suitable for input to text formatters or
649 for automatic translation to a variety of formats suitable for input
650 to text formatters.  A copy made in an otherwise Transparent file
651 format whose markup has been designed to thwart or discourage
652 subsequent modification by readers is not Transparent.  A copy that is
653 not "Transparent" is called "Opaque".
655 Examples of suitable formats for Transparent copies include plain
656 ASCII without markup, Texinfo input format, LaTeX input format, SGML
657 or XML using a publicly available DTD, and standard-conforming simple
658 HTML designed for human modification.  Opaque formats include
659 PostScript, PDF, proprietary formats that can be read and edited only
660 by proprietary word processors, SGML or XML for which the DTD and/or
661 processing tools are not generally available, and the
662 machine-generated HTML produced by some word processors for output
663 purposes only.
665 The "Title Page" means, for a printed book, the title page itself,
666 plus such following pages as are needed to hold, legibly, the material
667 this License requires to appear in the title page.  For works in
668 formats which do not have any title page as such, "Title Page" means
669 the text near the most prominent appearance of the work's title,
670 preceding the beginning of the body of the text.
673 2. VERBATIM COPYING
675 You may copy and distribute the Document in any medium, either
676 commercially or noncommercially, provided that this License, the
677 copyright notices, and the license notice saying this License applies
678 to the Document are reproduced in all copies, and that you add no other
679 conditions whatsoever to those of this License.  You may not use
680 technical measures to obstruct or control the reading or further
681 copying of the copies you make or distribute.  However, you may accept
682 compensation in exchange for copies.  If you distribute a large enough
683 number of copies you must also follow the conditions in section 3.
685 You may also lend copies, under the same conditions stated above, and
686 you may publicly display copies.
689 3. COPYING IN QUANTITY
691 If you publish printed copies of the Document numbering more than 100,
692 and the Document's license notice requires Cover Texts, you must enclose
693 the copies in covers that carry, clearly and legibly, all these Cover
694 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
695 the back cover.  Both covers must also clearly and legibly identify
696 you as the publisher of these copies.  The front cover must present
697 the full title with all words of the title equally prominent and
698 visible.  You may add other material on the covers in addition.
699 Copying with changes limited to the covers, as long as they preserve
700 the title of the Document and satisfy these conditions, can be treated
701 as verbatim copying in other respects.
703 If the required texts for either cover are too voluminous to fit
704 legibly, you should put the first ones listed (as many as fit
705 reasonably) on the actual cover, and continue the rest onto adjacent
706 pages.
708 If you publish or distribute Opaque copies of the Document numbering
709 more than 100, you must either include a machine-readable Transparent
710 copy along with each Opaque copy, or state in or with each Opaque copy
711 a publicly-accessible computer-network location containing a complete
712 Transparent copy of the Document, free of added material, which the
713 general network-using public has access to download anonymously at no
714 charge using public-standard network protocols.  If you use the latter
715 option, you must take reasonably prudent steps, when you begin
716 distribution of Opaque copies in quantity, to ensure that this
717 Transparent copy will remain thus accessible at the stated location
718 until at least one year after the last time you distribute an Opaque
719 copy (directly or through your agents or retailers) of that edition to
720 the public.
722 It is requested, but not required, that you contact the authors of the
723 Document well before redistributing any large number of copies, to give
724 them a chance to provide you with an updated version of the Document.
727 4. MODIFICATIONS
729 You may copy and distribute a Modified Version of the Document under
730 the conditions of sections 2 and 3 above, provided that you release
731 the Modified Version under precisely this License, with the Modified
732 Version filling the role of the Document, thus licensing distribution
733 and modification of the Modified Version to whoever possesses a copy
734 of it.  In addition, you must do these things in the Modified Version:
736 A. Use in the Title Page (and on the covers, if any) a title distinct
737    from that of the Document, and from those of previous versions
738    (which should, if there were any, be listed in the History section
739    of the Document).  You may use the same title as a previous version
740    if the original publisher of that version gives permission.
741 B. List on the Title Page, as authors, one or more persons or entities
742    responsible for authorship of the modifications in the Modified
743    Version, together with at least five of the principal authors of the
744    Document (all of its principal authors, if it has less than five).
745 C. State on the Title page the name of the publisher of the
746    Modified Version, as the publisher.
747 D. Preserve all the copyright notices of the Document.
748 E. Add an appropriate copyright notice for your modifications
749    adjacent to the other copyright notices.
750 F. Include, immediately after the copyright notices, a license notice
751    giving the public permission to use the Modified Version under the
752    terms of this License, in the form shown in the Addendum below.
753 G. Preserve in that license notice the full lists of Invariant Sections
754    and required Cover Texts given in the Document's license notice.
755 H. Include an unaltered copy of this License.
756 I. Preserve the section entitled "History", and its title, and add to
757    it an item stating at least the title, year, new authors, and
758    publisher of the Modified Version as given on the Title Page.  If
759    there is no section entitled "History" in the Document, create one
760    stating the title, year, authors, and publisher of the Document as
761    given on its Title Page, then add an item describing the Modified
762    Version as stated in the previous sentence.
763 J. Preserve the network location, if any, given in the Document for
764    public access to a Transparent copy of the Document, and likewise
765    the network locations given in the Document for previous versions
766    it was based on.  These may be placed in the "History" section.
767    You may omit a network location for a work that was published at
768    least four years before the Document itself, or if the original
769    publisher of the version it refers to gives permission.
770 K. In any section entitled "Acknowledgements" or "Dedications",
771    preserve the section's title, and preserve in the section all the
772    substance and tone of each of the contributor acknowledgements
773    and/or dedications given therein.
774 L. Preserve all the Invariant Sections of the Document,
775    unaltered in their text and in their titles.  Section numbers
776    or the equivalent are not considered part of the section titles.
777 M. Delete any section entitled "Endorsements".  Such a section
778    may not be included in the Modified Version.
779 N. Do not retitle any existing section as "Endorsements"
780    or to conflict in title with any Invariant Section.
782 If the Modified Version includes new front-matter sections or
783 appendices that qualify as Secondary Sections and contain no material
784 copied from the Document, you may at your option designate some or all
785 of these sections as invariant.  To do this, add their titles to the
786 list of Invariant Sections in the Modified Version's license notice.
787 These titles must be distinct from any other section titles.
789 You may add a section entitled "Endorsements", provided it contains
790 nothing but endorsements of your Modified Version by various
791 parties--for example, statements of peer review or that the text has
792 been approved by an organization as the authoritative definition of a
793 standard.
795 You may add a passage of up to five words as a Front-Cover Text, and a
796 passage of up to 25 words as a Back-Cover Text, to the end of the list
797 of Cover Texts in the Modified Version.  Only one passage of
798 Front-Cover Text and one of Back-Cover Text may be added by (or
799 through arrangements made by) any one entity.  If the Document already
800 includes a cover text for the same cover, previously added by you or
801 by arrangement made by the same entity you are acting on behalf of,
802 you may not add another; but you may replace the old one, on explicit
803 permission from the previous publisher that added the old one.
805 The author(s) and publisher(s) of the Document do not by this License
806 give permission to use their names for publicity for or to assert or
807 imply endorsement of any Modified Version.
810 5. COMBINING DOCUMENTS
812 You may combine the Document with other documents released under this
813 License, under the terms defined in section 4 above for modified
814 versions, provided that you include in the combination all of the
815 Invariant Sections of all of the original documents, unmodified, and
816 list them all as Invariant Sections of your combined work in its
817 license notice.
819 The combined work need only contain one copy of this License, and
820 multiple identical Invariant Sections may be replaced with a single
821 copy.  If there are multiple Invariant Sections with the same name but
822 different contents, make the title of each such section unique by
823 adding at the end of it, in parentheses, the name of the original
824 author or publisher of that section if known, or else a unique number.
825 Make the same adjustment to the section titles in the list of
826 Invariant Sections in the license notice of the combined work.
828 In the combination, you must combine any sections entitled "History"
829 in the various original documents, forming one section entitled
830 "History"; likewise combine any sections entitled "Acknowledgements",
831 and any sections entitled "Dedications".  You must delete all sections
832 entitled "Endorsements."
835 6. COLLECTIONS OF DOCUMENTS
837 You may make a collection consisting of the Document and other documents
838 released under this License, and replace the individual copies of this
839 License in the various documents with a single copy that is included in
840 the collection, provided that you follow the rules of this License for
841 verbatim copying of each of the documents in all other respects.
843 You may extract a single document from such a collection, and distribute
844 it individually under this License, provided you insert a copy of this
845 License into the extracted document, and follow this License in all
846 other respects regarding verbatim copying of that document.
849 7. AGGREGATION WITH INDEPENDENT WORKS
851 A compilation of the Document or its derivatives with other separate
852 and independent documents or works, in or on a volume of a storage or
853 distribution medium, does not as a whole count as a Modified Version
854 of the Document, provided no compilation copyright is claimed for the
855 compilation.  Such a compilation is called an "aggregate", and this
856 License does not apply to the other self-contained works thus compiled
857 with the Document, on account of their being thus compiled, if they
858 are not themselves derivative works of the Document.
860 If the Cover Text requirement of section 3 is applicable to these
861 copies of the Document, then if the Document is less than one quarter
862 of the entire aggregate, the Document's Cover Texts may be placed on
863 covers that surround only the Document within the aggregate.
864 Otherwise they must appear on covers around the whole aggregate.
867 8. TRANSLATION
869 Translation is considered a kind of modification, so you may
870 distribute translations of the Document under the terms of section 4.
871 Replacing Invariant Sections with translations requires special
872 permission from their copyright holders, but you may include
873 translations of some or all Invariant Sections in addition to the
874 original versions of these Invariant Sections.  You may include a
875 translation of this License provided that you also include the
876 original English version of this License.  In case of a disagreement
877 between the translation and the original English version of this
878 License, the original English version will prevail.
881 9. TERMINATION
883 You may not copy, modify, sublicense, or distribute the Document except
884 as expressly provided for under this License.  Any other attempt to
885 copy, modify, sublicense or distribute the Document is void, and will
886 automatically terminate your rights under this License.  However,
887 parties who have received copies, or rights, from you under this
888 License will not have their licenses terminated so long as such
889 parties remain in full compliance.
892 10. FUTURE REVISIONS OF THIS LICENSE
894 The Free Software Foundation may publish new, revised versions
895 of the GNU Free Documentation License from time to time.  Such new
896 versions will be similar in spirit to the present version, but may
897 differ in detail to address new problems or concerns.  See
898 http://www.gnu.org/copyleft/.
900 Each version of the License is given a distinguishing version number.
901 If the Document specifies that a particular numbered version of this
902 License "or any later version" applies to it, you have the option of
903 following the terms and conditions either of that specified version or
904 of any later version that has been published (not as a draft) by the
905 Free Software Foundation.  If the Document does not specify a version
906 number of this License, you may choose any version ever published (not
907 as a draft) by the Free Software Foundation.
910 ADDENDUM: How to use this License for your documents
912 To use this License in a document you have written, include a copy of
913 the License in the document and put the following copyright and
914 license notices just after the title page:
916 @smallexample
917     Copyright (c)  YEAR  YOUR NAME.
918     Permission is granted to copy, distribute and/or modify this document
919     under the terms of the GNU Free Documentation License, Version 1.1
920     or any later version published by the Free Software Foundation;
921     with the Invariant Sections being LIST THEIR TITLES, with the
922     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
923     A copy of the license is included in the section entitled "GNU
924     Free Documentation License".
925 @end smallexample
927 If you have no Invariant Sections, write "with no Invariant Sections"
928 instead of saying which ones are invariant.  If you have no
929 Front-Cover Texts, write "no Front-Cover Texts" instead of
930 "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
932 If your document contains nontrivial examples of program code, we
933 recommend releasing these examples in parallel under your choice of
934 free software license, such as the GNU General Public License,
935 to permit their use in free software.
937 @contents
938 @bye