Revert 2001-08-08 changes.
[binutils.git] / ld / ldint.texinfo
blob47a98172137bd6686b11380c6c4c77965d6e4960
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 * Architecture Specific::       Some Architecture Specific Notes
88 * GNU Free Documentation License::  GNU Free Documentation License
89 @end menu
91 @node README
92 @chapter The @file{README} File
94 Check the @file{README} file; it often has useful information that does not
95 appear anywhere else in the directory.
97 @node Emulations
98 @chapter How linker emulations are generated
100 Each linker target has an @dfn{emulation}.  The emulation includes the
101 default linker script, and certain emulations also modify certain types
102 of linker behaviour.
104 Emulations are created during the build process by the shell script
105 @file{genscripts.sh}.
107 The @file{genscripts.sh} script starts by reading a file in the
108 @file{emulparams} directory.  This is a shell script which sets various
109 shell variables used by @file{genscripts.sh} and the other shell scripts
110 it invokes.
112 The @file{genscripts.sh} script will invoke a shell script in the
113 @file{scripttempl} directory in order to create default linker scripts
114 written in the linker command language.  The @file{scripttempl} script
115 will be invoked 5 (or, in some cases, 6) times, with different
116 assignments to shell variables, to create different default scripts.
117 The choice of script is made based on the command line options.
119 After creating the scripts, @file{genscripts.sh} will invoke yet another
120 shell script, this time in the @file{emultempl} directory.  That shell
121 script will create the emulation source file, which contains C code.
122 This C code permits the linker emulation to override various linker
123 behaviours.  Most targets use the generic emulation code, which is in
124 @file{emultempl/generic.em}.
126 To summarize, @file{genscripts.sh} reads three shell scripts: an
127 emulation parameters script in the @file{emulparams} directory, a linker
128 script generation script in the @file{scripttempl} directory, and an
129 emulation source file generation script in the @file{emultempl}
130 directory.
132 For example, the Sun 4 linker sets up variables in
133 @file{emulparams/sun4.sh}, creates linker scripts using
134 @file{scripttempl/aout.sc}, and creates the emulation code using
135 @file{emultempl/sunos.em}.
137 Note that the linker can support several emulations simultaneously,
138 depending upon how it is configured.  An emulation can be selected with
139 the @code{-m} option.  The @code{-V} option will list all supported
140 emulations.
142 @menu
143 * emulation parameters::        @file{emulparams} scripts
144 * linker scripts::              @file{scripttempl} scripts
145 * linker emulations::           @file{emultempl} scripts
146 @end menu
148 @node emulation parameters
149 @section @file{emulparams} scripts
151 Each target selects a particular file in the @file{emulparams} directory
152 by setting the shell variable @code{targ_emul} in @file{configure.tgt}.
153 This shell variable is used by the @file{configure} script to control
154 building an emulation source file.
156 Certain conventions are enforced.  Suppose the @code{targ_emul} variable
157 is set to @var{emul} in @file{configure.tgt}.  The name of the emulation
158 shell script will be @file{emulparams/@var{emul}.sh}.  The
159 @file{Makefile} must have a target named @file{e@var{emul}.c}; this
160 target must depend upon @file{emulparams/@var{emul}.sh}, as well as the
161 appropriate scripts in the @file{scripttempl} and @file{emultempl}
162 directories.  The @file{Makefile} target must invoke @code{GENSCRIPTS}
163 with two arguments: @var{emul}, and the value of the make variable
164 @code{tdir_@var{emul}}.  The value of the latter variable will be set by
165 the @file{configure} script, and is used to set the default target
166 directory to search.
168 By convention, the @file{emulparams/@var{emul}.sh} shell script should
169 only set shell variables.  It may set shell variables which are to be
170 interpreted by the @file{scripttempl} and the @file{emultempl} scripts.
171 Certain shell variables are interpreted directly by the
172 @file{genscripts.sh} script.
174 Here is a list of shell variables interpreted by @file{genscripts.sh},
175 as well as some conventional shell variables interpreted by the
176 @file{scripttempl} and @file{emultempl} scripts.
178 @table @code
179 @item SCRIPT_NAME
180 This is the name of the @file{scripttempl} script to use.  If
181 @code{SCRIPT_NAME} is set to @var{script}, @file{genscripts.sh} will use
182 the script @file{scriptteml/@var{script}.sc}.
184 @item TEMPLATE_NAME
185 This is the name of the @file{emultemlp} script to use.  If
186 @code{TEMPLATE_NAME} is set to @var{template}, @file{genscripts.sh} will
187 use the script @file{emultempl/@var{template}.em}.  If this variable is
188 not set, the default value is @samp{generic}.
190 @item GENERATE_SHLIB_SCRIPT
191 If this is set to a nonempty string, @file{genscripts.sh} will invoke
192 the @file{scripttempl} script an extra time to create a shared library
193 script.  @ref{linker scripts}.
195 @item OUTPUT_FORMAT
196 This is normally set to indicate the BFD output format use (e.g.,
197 @samp{"a.out-sunos-big"}.  The @file{scripttempl} script will normally
198 use it in an @code{OUTPUT_FORMAT} expression in the linker script.
200 @item ARCH
201 This is normally set to indicate the architecture to use (e.g.,
202 @samp{sparc}).  The @file{scripttempl} script will normally use it in an
203 @code{OUTPUT_ARCH} expression in the linker script.
205 @item ENTRY
206 Some @file{scripttempl} scripts use this to set the entry address, in an
207 @code{ENTRY} expression in the linker script.
209 @item TEXT_START_ADDR
210 Some @file{scripttempl} scripts use this to set the start address of the
211 @samp{.text} section.
213 @item NONPAGED_TEXT_START_ADDR
214 If this is defined, the @file{genscripts.sh} script sets
215 @code{TEXT_START_ADDR} to its value before running the
216 @file{scripttempl} script for the @code{-n} and @code{-N} options
217 (@pxref{linker scripts}).
219 @item SEGMENT_SIZE
220 The @file{genscripts.sh} script uses this to set the default value of
221 @code{DATA_ALIGNMENT} when running the @file{scripttempl} script.
223 @item TARGET_PAGE_SIZE
224 If @code{SEGMENT_SIZE} is not defined, the @file{genscripts.sh} script
225 uses this to define it.
227 @item ALIGNMENT
228 Some @file{scripttempl} scripts set this to a number to pass to
229 @code{ALIGN} to set the required alignment for the @code{end} symbol.
230 @end table
232 @node linker scripts
233 @section @file{scripttempl} scripts
235 Each linker target uses a @file{scripttempl} script to generate the
236 default linker scripts.  The name of the @file{scripttempl} script is
237 set by the @code{SCRIPT_NAME} variable in the @file{emulparams} script.
238 If @code{SCRIPT_NAME} is set to @var{script}, @code{genscripts.sh} will
239 invoke @file{scripttempl/@var{script}.sc}.
241 The @file{genscripts.sh} script will invoke the @file{scripttempl}
242 script 5 or 6 times.  Each time it will set the shell variable
243 @code{LD_FLAG} to a different value.  When the linker is run, the
244 options used will direct it to select a particular script.  (Script
245 selection is controlled by the @code{get_script} emulation entry point;
246 this describes the conventional behaviour).
248 The @file{scripttempl} script should just write a linker script, written
249 in the linker command language, to standard output.  If the emulation
250 name--the name of the @file{emulparams} file without the @file{.sc}
251 extension--is @var{emul}, then the output will be directed to
252 @file{ldscripts/@var{emul}.@var{extension}} in the build directory,
253 where @var{extension} changes each time the @file{scripttempl} script is
254 invoked.
256 Here is the list of values assigned to @code{LD_FLAG}.
258 @table @code
259 @item (empty)
260 The script generated is used by default (when none of the following
261 cases apply).  The output has an extension of @file{.x}.
262 @item n
263 The script generated is used when the linker is invoked with the
264 @code{-n} option.  The output has an extension of @file{.xn}.
265 @item N
266 The script generated is used when the linker is invoked with the
267 @code{-N} option.  The output has an extension of @file{.xbn}.
268 @item r
269 The script generated is used when the linker is invoked with the
270 @code{-r} option.  The output has an extension of @file{.xr}.
271 @item u
272 The script generated is used when the linker is invoked with the
273 @code{-Ur} option.  The output has an extension of @file{.xu}.
274 @item shared
275 The @file{scripttempl} script is only invoked with @code{LD_FLAG} set to
276 this value if @code{GENERATE_SHLIB_SCRIPT} is defined in the
277 @file{emulparams} file.  The @file{emultempl} script must arrange to use
278 this script at the appropriate time, normally when the linker is invoked
279 with the @code{-shared} option.  The output has an extension of
280 @file{.xs}.
281 @end table
283 Besides the shell variables set by the @file{emulparams} script, and the
284 @code{LD_FLAG} variable, the @file{genscripts.sh} script will set
285 certain variables for each run of the @file{scripttempl} script.
287 @table @code
288 @item RELOCATING
289 This will be set to a non-empty string when the linker is doing a final
290 relocation (e.g., all scripts other than @code{-r} and @code{-Ur}).
292 @item CONSTRUCTING
293 This will be set to a non-empty string when the linker is building
294 global constructor and destructor tables (e.g., all scripts other than
295 @code{-r}).
297 @item DATA_ALIGNMENT
298 This will be set to an @code{ALIGN} expression when the output should be
299 page aligned, or to @samp{.} when generating the @code{-N} script.
301 @item CREATE_SHLIB
302 This will be set to a non-empty string when generating a @code{-shared}
303 script.
304 @end table
306 The conventional way to write a @file{scripttempl} script is to first
307 set a few shell variables, and then write out a linker script using
308 @code{cat} with a here document.  The linker script will use variable
309 substitutions, based on the above variables and those set in the
310 @file{emulparams} script, to control its behaviour.
312 When there are parts of the @file{scripttempl} script which should only
313 be run when doing a final relocation, they should be enclosed within a
314 variable substitution based on @code{RELOCATING}.  For example, on many
315 targets special symbols such as @code{_end} should be defined when doing
316 a final link.  Naturally, those symbols should not be defined when doing
317 a relocateable link using @code{-r}.  The @file{scripttempl} script
318 could use a construct like this to define those symbols:
319 @smallexample
320   $@{RELOCATING+ _end = .;@}
321 @end smallexample
322 This will do the symbol assignment only if the @code{RELOCATING}
323 variable is defined.
325 The basic job of the linker script is to put the sections in the correct
326 order, and at the correct memory addresses.  For some targets, the
327 linker script may have to do some other operations.
329 For example, on most MIPS platforms, the linker is responsible for
330 defining the special symbol @code{_gp}, used to initialize the
331 @code{$gp} register.  It must be set to the start of the small data
332 section plus @code{0x8000}.  Naturally, it should only be defined when
333 doing a final relocation.  This will typically be done like this:
334 @smallexample
335   $@{RELOCATING+ _gp = ALIGN(16) + 0x8000;@}
336 @end smallexample
337 This line would appear just before the sections which compose the small
338 data section (@samp{.sdata}, @samp{.sbss}).  All those sections would be
339 contiguous in memory.
341 Many COFF systems build constructor tables in the linker script.  The
342 compiler will arrange to output the address of each global constructor
343 in a @samp{.ctor} section, and the address of each global destructor in
344 a @samp{.dtor} section (this is done by defining
345 @code{ASM_OUTPUT_CONSTRUCTOR} and @code{ASM_OUTPUT_DESTRUCTOR} in the
346 @code{gcc} configuration files).  The @code{gcc} runtime support
347 routines expect the constructor table to be named @code{__CTOR_LIST__}.
348 They expect it to be a list of words, with the first word being the
349 count of the number of entries.  There should be a trailing zero word.
350 (Actually, the count may be -1 if the trailing word is present, and the
351 trailing word may be omitted if the count is correct, but, as the
352 @code{gcc} behaviour has changed slightly over the years, it is safest
353 to provide both).  Here is a typical way that might be handled in a
354 @file{scripttempl} file.
355 @smallexample
356     $@{CONSTRUCTING+ __CTOR_LIST__ = .;@}
357     $@{CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)@}
358     $@{CONSTRUCTING+ *(.ctors)@}
359     $@{CONSTRUCTING+ LONG(0)@}
360     $@{CONSTRUCTING+ __CTOR_END__ = .;@}
361     $@{CONSTRUCTING+ __DTOR_LIST__ = .;@}
362     $@{CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)@}
363     $@{CONSTRUCTING+ *(.dtors)@}
364     $@{CONSTRUCTING+ LONG(0)@}
365     $@{CONSTRUCTING+ __DTOR_END__ = .;@}
366 @end smallexample
367 The use of @code{CONSTRUCTING} ensures that these linker script commands
368 will only appear when the linker is supposed to be building the
369 constructor and destructor tables.  This example is written for a target
370 which uses 4 byte pointers.
372 Embedded systems often need to set a stack address.  This is normally
373 best done by using the @code{PROVIDE} construct with a default stack
374 address.  This permits the user to easily override the stack address
375 using the @code{--defsym} option.  Here is an example:
376 @smallexample
377   $@{RELOCATING+ PROVIDE (__stack = 0x80000000);@}
378 @end smallexample
379 The value of the symbol @code{__stack} would then be used in the startup
380 code to initialize the stack pointer.
382 @node linker emulations
383 @section @file{emultempl} scripts
385 Each linker target uses an @file{emultempl} script to generate the
386 emulation code.  The name of the @file{emultempl} script is set by the
387 @code{TEMPLATE_NAME} variable in the @file{emulparams} script.  If the
388 @code{TEMPLATE_NAME} variable is not set, the default is
389 @samp{generic}.  If the value of @code{TEMPLATE_NAME} is @var{template},
390 @file{genscripts.sh} will use @file{emultempl/@var{template}.em}.
392 Most targets use the generic @file{emultempl} script,
393 @file{emultempl/generic.em}.  A different @file{emultempl} script is
394 only needed if the linker must support unusual actions, such as linking
395 against shared libraries.
397 The @file{emultempl} script is normally written as a simple invocation
398 of @code{cat} with a here document.  The document will use a few
399 variable substitutions.  Typically each function names uses a
400 substitution involving @code{EMULATION_NAME}, for ease of debugging when
401 the linker supports multiple emulations.
403 Every function and variable in the emitted file should be static.  The
404 only globally visible object must be named
405 @code{ld_@var{EMULATION_NAME}_emulation}, where @var{EMULATION_NAME} is
406 the name of the emulation set in @file{configure.tgt} (this is also the
407 name of the @file{emulparams} file without the @file{.sh} extension).
408 The @file{genscripts.sh} script will set the shell variable
409 @code{EMULATION_NAME} before invoking the @file{emultempl} script.
411 The @code{ld_@var{EMULATION_NAME}_emulation} variable must be a
412 @code{struct ld_emulation_xfer_struct}, as defined in @file{ldemul.h}.
413 It defines a set of function pointers which are invoked by the linker,
414 as well as strings for the emulation name (normally set from the shell
415 variable @code{EMULATION_NAME} and the default BFD target name (normally
416 set from the shell variable @code{OUTPUT_FORMAT} which is normally set
417 by the @file{emulparams} file).
419 The @file{genscripts.sh} script will set the shell variable
420 @code{COMPILE_IN} when it invokes the @file{emultempl} script for the
421 default emulation.  In this case, the @file{emultempl} script should
422 include the linker scripts directly, and return them from the
423 @code{get_scripts} entry point.  When the emulation is not the default,
424 the @code{get_scripts} entry point should just return a file name.  See
425 @file{emultempl/generic.em} for an example of how this is done.
427 At some point, the linker emulation entry points should be documented.
429 @node Emulation Walkthrough
430 @chapter A Walkthrough of a Typical Emulation
432 This chapter is to help people who are new to the way emulations
433 interact with the linker, or who are suddenly thrust into the position
434 of having to work with existing emulations.  It will discuss the files
435 you need to be aware of.  It will tell you when the given "hooks" in
436 the emulation will be called.  It will, hopefully, give you enough
437 information about when and how things happen that you'll be able to
438 get by.  As always, the source is the definitive reference to this.
440 The starting point for the linker is in @file{ldmain.c} where
441 @code{main} is defined.  The bulk of the code that's emulation
442 specific will initially be in @code{emultempl/@var{emulation}.em} but
443 will end up in @code{e@var{emulation}.c} when the build is done.
444 Most of the work to select and interface with emulations is in
445 @code{ldemul.h} and @code{ldemul.c}.  Specifically, @code{ldemul.h}
446 defines the @code{ld_emulation_xfer_struct} structure your emulation
447 exports.
449 Your emulation file exports a symbol
450 @code{ld_@var{EMULATION_NAME}_emulation}.  If your emulation is
451 selected (it usually is, since usually there's only one),
452 @code{ldemul.c} sets the variable @var{ld_emulation} to point to it.
453 @code{ldemul.c} also defines a number of API functions that interface
454 to your emulation, like @code{ldemul_after_parse} which simply calls
455 your @code{ld_@var{EMULATION}_emulation.after_parse} function.  For
456 the rest of this section, the functions will be mentioned, but you
457 should assume the indirect reference to your emulation also.
459 We will also skip or gloss over parts of the link process that don't
460 relate to emulations, like setting up internationalization.
462 After initialization, @code{main} selects an emulation by pre-scanning
463 the command line arguments.  It calls @code{ldemul_choose_target} to
464 choose a target.  If you set @code{choose_target} to
465 @code{ldemul_default_target}, it picks your @code{target_name} by
466 default.
468 @code{main} calls @code{ldemul_before_parse}, then @code{parse_args}.
469 @code{parse_args} calls @code{ldemul_parse_args} for each arg, which
470 must update the @code{getopt} globals if it recognizes the argument.
471 If the emulation doesn't recognize it, then parse_args checks to see
472 if it recognizes it.
474 Now that the emulation has had access to all its command-line options,
475 @code{main} calls @code{ldemul_set_symbols}.  This can be used for any
476 initialization that may be affected by options.  It is also supposed
477 to set up any variables needed by the emulation script.
479 @code{main} now calls @code{ldemul_get_script} to get the emulation
480 script to use (based on arguments, no doubt, @pxref{Emulations}) and
481 runs it.  While parsing, @code{ldgram.y} may call @code{ldemul_hll} or
482 @code{ldemul_syslib} to handle the @code{HLL} or @code{SYSLIB}
483 commands.  It may call @code{ldemul_unrecognized_file} if you asked
484 the linker to link a file it doesn't recognize.  It will call
485 @code{ldemul_recognized_file} for each file it does recognize, in case
486 the emulation wants to handle some files specially.  All the while,
487 it's loading the files (possibly calling
488 @code{ldemul_open_dynamic_archive}) and symbols and stuff.  After it's
489 done reading the script, @code{main} calls @code{ldemul_after_parse}.
490 Use the after-parse hook to set up anything that depends on stuff the
491 script might have set up, like the entry point.
493 @code{main} next calls @code{lang_process} in @code{ldlang.c}.  This
494 appears to be the main core of the linking itself, as far as emulation
495 hooks are concerned(*).  It first opens the output file's BFD, calling
496 @code{ldemul_set_output_arch}, and calls
497 @code{ldemul_create_output_section_statements} in case you need to use
498 other means to find or create object files (i.e. shared libraries
499 found on a path, or fake stub objects).  Despite the name, nobody
500 creates output sections here.
502 (*) In most cases, the BFD library does the bulk of the actual
503 linking, handling symbol tables, symbol resolution, relocations, and
504 building the final output file.  See the BFD reference for all the
505 details.  Your emulation is usually concerned more with managing
506 things at the file and section level, like "put this here, add this
507 section", etc.
509 Next, the objects to be linked are opened and BFDs created for them,
510 and @code{ldemul_after_open} is called.  At this point, you have all
511 the objects and symbols loaded, but none of the data has been placed
512 yet.
514 Next comes the Big Linking Thingy (except for the parts BFD does).
515 All input sections are mapped to output sections according to the
516 script.  If a section doesn't get mapped by default,
517 @code{ldemul_place_orphan} will get called to figure out where it goes.
518 Next it figures out the offsets for each section, calling
519 @code{ldemul_before_allocation} before and
520 @code{ldemul_after_allocation} after deciding where each input section
521 ends up in the output sections.
523 The last part of @code{lang_process} is to figure out all the symbols'
524 values.  After assigning final values to the symbols,
525 @code{ldemul_finish} is called, and after that, any undefined symbols
526 are turned into fatal errors.
528 OK, back to @code{main}, which calls @code{ldwrite} in
529 @file{ldwrite.c}.  @code{ldwrite} calls BFD's final_link, which does
530 all the relocation fixups and writes the output bfd to disk, and we're
531 done.
533 In summary,
535 @itemize @bullet
537 @item @code{main()} in @file{ldmain.c}
538 @item @file{emultempl/@var{EMULATION}.em} has your code
539 @item @code{ldemul_choose_target} (defaults to your @code{target_name})
540 @item @code{ldemul_before_parse}
541 @item Parse argv, calls @code{ldemul_parse_args} for each
542 @item @code{ldemul_set_symbols}
543 @item @code{ldemul_get_script}
544 @item parse script
546 @itemize @bullet
547 @item may call @code{ldemul_hll} or @code{ldemul_syslib}
548 @item may call @code{ldemul_open_dynamic_archive}
549 @end itemize
551 @item @code{ldemul_after_parse}
552 @item @code{lang_process()} in @file{ldlang.c}
554 @itemize @bullet
555 @item create @code{output_bfd}
556 @item @code{ldemul_set_output_arch}
557 @item @code{ldemul_create_output_section_statements}
558 @item read objects, create input bfds - all symbols exist, but have no values
559 @item may call @code{ldemul_unrecognized_file}
560 @item will call @code{ldemul_recognized_file}
561 @item @code{ldemul_after_open}
562 @item map input sections to output sections
563 @item may call @code{ldemul_place_orphan} for remaining sections
564 @item @code{ldemul_before_allocation}
565 @item gives input sections offsets into output sections, places output sections
566 @item @code{ldemul_after_allocation} - section addresses valid
567 @item assigns values to symbols
568 @item @code{ldemul_finish} - symbol values valid
569 @end itemize
571 @item output bfd is written to disk
573 @end itemize
575 @node Architecture Specific
576 @chapter Some Architecture Specific Notes
578 This is the place for notes on the behavior of @code{ld} on
579 specific platforms.  Currently, only Intel x86 is documented (and 
580 of that, only the auto-import behavior for DLLs).
582 @menu
583 * ix86::                        Intel x86
584 @end menu
586 @node ix86
587 @section Intel x86
589 @table @emph
590 @code{ld} can create DLLs that operate with various runtimes available
591 on a common x86 operating system.  These runtimes include native (using 
592 the mingw "platform"), cygwin, and pw.
594 @item auto-import from DLLs 
595 @enumerate
596 @item
597 With this feature on, DLL clients can import variables from DLL 
598 without any concern from their side (for example, without any source
599 code modifications).  Auto-import can be enabled using the 
600 @code{--enable-auto-import} flag, or disabled via the 
601 @code{--disable-auto-import} flag.  Auto-import is disabled by default.
603 @item
604 This is done completely in bounds of the PE specification (to be fair,
605 there's a minor violation of the spec at one point, but in practice 
606 auto-import works on all known variants of that common x86 operating
607 system)  So, the resulting DLL can be used with any other PE 
608 compiler/linker.
610 @item
611 Auto-import is fully compatible with standard import method, in which
612 variables are decorated using attribute modifiers. Libraries of either
613 type may be mixed together.
615 @item
616 Overhead (space): 8 bytes per imported symbol, plus 20 for each
617 reference to it; Overhead (load time): negligible; Overhead 
618 (virtual/physical memory): should be less than effect of DLL 
619 relocation.
620 @end enumerate
622 Motivation
624 The obvious and only way to get rid of dllimport insanity is 
625 to make client access variable directly in the DLL, bypassing 
626 the extra dereference imposed by ordinary DLL runtime linking.
627 I.e., whenever client contains someting like
629 @code{mov dll_var,%eax,}
631 address of dll_var in the command should be relocated to point 
632 into loaded DLL. The aim is to make OS loader do so, and than 
633 make ld help with that.  Import section of PE made following 
634 way: there's a vector of structures each describing imports 
635 from particular DLL. Each such structure points to two other 
636 parellel vectors: one holding imported names, and one which 
637 will hold address of corresponding imported name. So, the 
638 solution is de-vectorize these structures, making import 
639 locations be sparse and pointing directly into code.
641 Implementation
643 For each reference of data symbol to be imported from DLL (to 
644 set of which belong symbols with name <sym>, if __imp_<sym> is 
645 found in implib), the import fixup entry is generated. That 
646 entry is of type IMAGE_IMPORT_DESCRIPTOR and stored in .idata$3 
647 subsection. Each fixup entry contains pointer to symbol's address 
648 within .text section (marked with __fuN_<sym> symbol, where N is 
649 integer), pointer to DLL name (so, DLL name is referenced by 
650 multiple entries), and pointer to symbol name thunk. Symbol name 
651 thunk is singleton vector (__nm_th_<symbol>) pointing to 
652 IMAGE_IMPORT_BY_NAME structure (__nm_<symbol>) directly containing 
653 imported name. Here comes that "om the edge" problem mentioned above: 
654 PE specification rambles that name vector (OriginalFirstThunk) should 
655 run in parallel with addresses vector (FirstThunk), i.e. that they 
656 should have same number of elements and terminated with zero. We violate
657 this, since FirstThunk points directly into machine code. But in 
658 practice, OS loader implemented the sane way: it goes thru 
659 OriginalFirstThunk and puts addresses to FirstThunk, not something 
660 else. It once again should be noted that dll and symbol name 
661 structures are reused across fixup entries and should be there 
662 anyway to support standard import stuff, so sustained overhead is 
663 20 bytes per reference. Other question is whether having several 
664 IMAGE_IMPORT_DESCRIPTORS for the same DLL is possible. Answer is yes, 
665 it is done even by native compiler/linker (libth32's functions are in 
666 fact resident in windows9x kernel32.dll, so if you use it, you have 
667 two IMAGE_IMPORT_DESCRIPTORS for kernel32.dll). Yet other question is 
668 whether referencing the same PE structures several times is valid. 
669 The answer is why not, prohibiting that (detecting violation) would 
670 require more work on behalf of loader than not doing it.
672 @end table
674 @node GNU Free Documentation License
675 @chapter GNU Free Documentation License
677                 GNU Free Documentation License
678                 
679                    Version 1.1, March 2000
681  Copyright (C) 2000  Free Software Foundation, Inc.
682   59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
683      
684  Everyone is permitted to copy and distribute verbatim copies
685  of this license document, but changing it is not allowed.
688 0. PREAMBLE
690 The purpose of this License is to make a manual, textbook, or other
691 written document "free" in the sense of freedom: to assure everyone
692 the effective freedom to copy and redistribute it, with or without
693 modifying it, either commercially or noncommercially.  Secondarily,
694 this License preserves for the author and publisher a way to get
695 credit for their work, while not being considered responsible for
696 modifications made by others.
698 This License is a kind of "copyleft", which means that derivative
699 works of the document must themselves be free in the same sense.  It
700 complements the GNU General Public License, which is a copyleft
701 license designed for free software.
703 We have designed this License in order to use it for manuals for free
704 software, because free software needs free documentation: a free
705 program should come with manuals providing the same freedoms that the
706 software does.  But this License is not limited to software manuals;
707 it can be used for any textual work, regardless of subject matter or
708 whether it is published as a printed book.  We recommend this License
709 principally for works whose purpose is instruction or reference.
712 1. APPLICABILITY AND DEFINITIONS
714 This License applies to any manual or other work that contains a
715 notice placed by the copyright holder saying it can be distributed
716 under the terms of this License.  The "Document", below, refers to any
717 such manual or work.  Any member of the public is a licensee, and is
718 addressed as "you".
720 A "Modified Version" of the Document means any work containing the
721 Document or a portion of it, either copied verbatim, or with
722 modifications and/or translated into another language.
724 A "Secondary Section" is a named appendix or a front-matter section of
725 the Document that deals exclusively with the relationship of the
726 publishers or authors of the Document to the Document's overall subject
727 (or to related matters) and contains nothing that could fall directly
728 within that overall subject.  (For example, if the Document is in part a
729 textbook of mathematics, a Secondary Section may not explain any
730 mathematics.)  The relationship could be a matter of historical
731 connection with the subject or with related matters, or of legal,
732 commercial, philosophical, ethical or political position regarding
733 them.
735 The "Invariant Sections" are certain Secondary Sections whose titles
736 are designated, as being those of Invariant Sections, in the notice
737 that says that the Document is released under this License.
739 The "Cover Texts" are certain short passages of text that are listed,
740 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
741 the Document is released under this License.
743 A "Transparent" copy of the Document means a machine-readable copy,
744 represented in a format whose specification is available to the
745 general public, whose contents can be viewed and edited directly and
746 straightforwardly with generic text editors or (for images composed of
747 pixels) generic paint programs or (for drawings) some widely available
748 drawing editor, and that is suitable for input to text formatters or
749 for automatic translation to a variety of formats suitable for input
750 to text formatters.  A copy made in an otherwise Transparent file
751 format whose markup has been designed to thwart or discourage
752 subsequent modification by readers is not Transparent.  A copy that is
753 not "Transparent" is called "Opaque".
755 Examples of suitable formats for Transparent copies include plain
756 ASCII without markup, Texinfo input format, LaTeX input format, SGML
757 or XML using a publicly available DTD, and standard-conforming simple
758 HTML designed for human modification.  Opaque formats include
759 PostScript, PDF, proprietary formats that can be read and edited only
760 by proprietary word processors, SGML or XML for which the DTD and/or
761 processing tools are not generally available, and the
762 machine-generated HTML produced by some word processors for output
763 purposes only.
765 The "Title Page" means, for a printed book, the title page itself,
766 plus such following pages as are needed to hold, legibly, the material
767 this License requires to appear in the title page.  For works in
768 formats which do not have any title page as such, "Title Page" means
769 the text near the most prominent appearance of the work's title,
770 preceding the beginning of the body of the text.
773 2. VERBATIM COPYING
775 You may copy and distribute the Document in any medium, either
776 commercially or noncommercially, provided that this License, the
777 copyright notices, and the license notice saying this License applies
778 to the Document are reproduced in all copies, and that you add no other
779 conditions whatsoever to those of this License.  You may not use
780 technical measures to obstruct or control the reading or further
781 copying of the copies you make or distribute.  However, you may accept
782 compensation in exchange for copies.  If you distribute a large enough
783 number of copies you must also follow the conditions in section 3.
785 You may also lend copies, under the same conditions stated above, and
786 you may publicly display copies.
789 3. COPYING IN QUANTITY
791 If you publish printed copies of the Document numbering more than 100,
792 and the Document's license notice requires Cover Texts, you must enclose
793 the copies in covers that carry, clearly and legibly, all these Cover
794 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
795 the back cover.  Both covers must also clearly and legibly identify
796 you as the publisher of these copies.  The front cover must present
797 the full title with all words of the title equally prominent and
798 visible.  You may add other material on the covers in addition.
799 Copying with changes limited to the covers, as long as they preserve
800 the title of the Document and satisfy these conditions, can be treated
801 as verbatim copying in other respects.
803 If the required texts for either cover are too voluminous to fit
804 legibly, you should put the first ones listed (as many as fit
805 reasonably) on the actual cover, and continue the rest onto adjacent
806 pages.
808 If you publish or distribute Opaque copies of the Document numbering
809 more than 100, you must either include a machine-readable Transparent
810 copy along with each Opaque copy, or state in or with each Opaque copy
811 a publicly-accessible computer-network location containing a complete
812 Transparent copy of the Document, free of added material, which the
813 general network-using public has access to download anonymously at no
814 charge using public-standard network protocols.  If you use the latter
815 option, you must take reasonably prudent steps, when you begin
816 distribution of Opaque copies in quantity, to ensure that this
817 Transparent copy will remain thus accessible at the stated location
818 until at least one year after the last time you distribute an Opaque
819 copy (directly or through your agents or retailers) of that edition to
820 the public.
822 It is requested, but not required, that you contact the authors of the
823 Document well before redistributing any large number of copies, to give
824 them a chance to provide you with an updated version of the Document.
827 4. MODIFICATIONS
829 You may copy and distribute a Modified Version of the Document under
830 the conditions of sections 2 and 3 above, provided that you release
831 the Modified Version under precisely this License, with the Modified
832 Version filling the role of the Document, thus licensing distribution
833 and modification of the Modified Version to whoever possesses a copy
834 of it.  In addition, you must do these things in the Modified Version:
836 A. Use in the Title Page (and on the covers, if any) a title distinct
837    from that of the Document, and from those of previous versions
838    (which should, if there were any, be listed in the History section
839    of the Document).  You may use the same title as a previous version
840    if the original publisher of that version gives permission.
841 B. List on the Title Page, as authors, one or more persons or entities
842    responsible for authorship of the modifications in the Modified
843    Version, together with at least five of the principal authors of the
844    Document (all of its principal authors, if it has less than five).
845 C. State on the Title page the name of the publisher of the
846    Modified Version, as the publisher.
847 D. Preserve all the copyright notices of the Document.
848 E. Add an appropriate copyright notice for your modifications
849    adjacent to the other copyright notices.
850 F. Include, immediately after the copyright notices, a license notice
851    giving the public permission to use the Modified Version under the
852    terms of this License, in the form shown in the Addendum below.
853 G. Preserve in that license notice the full lists of Invariant Sections
854    and required Cover Texts given in the Document's license notice.
855 H. Include an unaltered copy of this License.
856 I. Preserve the section entitled "History", and its title, and add to
857    it an item stating at least the title, year, new authors, and
858    publisher of the Modified Version as given on the Title Page.  If
859    there is no section entitled "History" in the Document, create one
860    stating the title, year, authors, and publisher of the Document as
861    given on its Title Page, then add an item describing the Modified
862    Version as stated in the previous sentence.
863 J. Preserve the network location, if any, given in the Document for
864    public access to a Transparent copy of the Document, and likewise
865    the network locations given in the Document for previous versions
866    it was based on.  These may be placed in the "History" section.
867    You may omit a network location for a work that was published at
868    least four years before the Document itself, or if the original
869    publisher of the version it refers to gives permission.
870 K. In any section entitled "Acknowledgements" or "Dedications",
871    preserve the section's title, and preserve in the section all the
872    substance and tone of each of the contributor acknowledgements
873    and/or dedications given therein.
874 L. Preserve all the Invariant Sections of the Document,
875    unaltered in their text and in their titles.  Section numbers
876    or the equivalent are not considered part of the section titles.
877 M. Delete any section entitled "Endorsements".  Such a section
878    may not be included in the Modified Version.
879 N. Do not retitle any existing section as "Endorsements"
880    or to conflict in title with any Invariant Section.
882 If the Modified Version includes new front-matter sections or
883 appendices that qualify as Secondary Sections and contain no material
884 copied from the Document, you may at your option designate some or all
885 of these sections as invariant.  To do this, add their titles to the
886 list of Invariant Sections in the Modified Version's license notice.
887 These titles must be distinct from any other section titles.
889 You may add a section entitled "Endorsements", provided it contains
890 nothing but endorsements of your Modified Version by various
891 parties--for example, statements of peer review or that the text has
892 been approved by an organization as the authoritative definition of a
893 standard.
895 You may add a passage of up to five words as a Front-Cover Text, and a
896 passage of up to 25 words as a Back-Cover Text, to the end of the list
897 of Cover Texts in the Modified Version.  Only one passage of
898 Front-Cover Text and one of Back-Cover Text may be added by (or
899 through arrangements made by) any one entity.  If the Document already
900 includes a cover text for the same cover, previously added by you or
901 by arrangement made by the same entity you are acting on behalf of,
902 you may not add another; but you may replace the old one, on explicit
903 permission from the previous publisher that added the old one.
905 The author(s) and publisher(s) of the Document do not by this License
906 give permission to use their names for publicity for or to assert or
907 imply endorsement of any Modified Version.
910 5. COMBINING DOCUMENTS
912 You may combine the Document with other documents released under this
913 License, under the terms defined in section 4 above for modified
914 versions, provided that you include in the combination all of the
915 Invariant Sections of all of the original documents, unmodified, and
916 list them all as Invariant Sections of your combined work in its
917 license notice.
919 The combined work need only contain one copy of this License, and
920 multiple identical Invariant Sections may be replaced with a single
921 copy.  If there are multiple Invariant Sections with the same name but
922 different contents, make the title of each such section unique by
923 adding at the end of it, in parentheses, the name of the original
924 author or publisher of that section if known, or else a unique number.
925 Make the same adjustment to the section titles in the list of
926 Invariant Sections in the license notice of the combined work.
928 In the combination, you must combine any sections entitled "History"
929 in the various original documents, forming one section entitled
930 "History"; likewise combine any sections entitled "Acknowledgements",
931 and any sections entitled "Dedications".  You must delete all sections
932 entitled "Endorsements."
935 6. COLLECTIONS OF DOCUMENTS
937 You may make a collection consisting of the Document and other documents
938 released under this License, and replace the individual copies of this
939 License in the various documents with a single copy that is included in
940 the collection, provided that you follow the rules of this License for
941 verbatim copying of each of the documents in all other respects.
943 You may extract a single document from such a collection, and distribute
944 it individually under this License, provided you insert a copy of this
945 License into the extracted document, and follow this License in all
946 other respects regarding verbatim copying of that document.
949 7. AGGREGATION WITH INDEPENDENT WORKS
951 A compilation of the Document or its derivatives with other separate
952 and independent documents or works, in or on a volume of a storage or
953 distribution medium, does not as a whole count as a Modified Version
954 of the Document, provided no compilation copyright is claimed for the
955 compilation.  Such a compilation is called an "aggregate", and this
956 License does not apply to the other self-contained works thus compiled
957 with the Document, on account of their being thus compiled, if they
958 are not themselves derivative works of the Document.
960 If the Cover Text requirement of section 3 is applicable to these
961 copies of the Document, then if the Document is less than one quarter
962 of the entire aggregate, the Document's Cover Texts may be placed on
963 covers that surround only the Document within the aggregate.
964 Otherwise they must appear on covers around the whole aggregate.
967 8. TRANSLATION
969 Translation is considered a kind of modification, so you may
970 distribute translations of the Document under the terms of section 4.
971 Replacing Invariant Sections with translations requires special
972 permission from their copyright holders, but you may include
973 translations of some or all Invariant Sections in addition to the
974 original versions of these Invariant Sections.  You may include a
975 translation of this License provided that you also include the
976 original English version of this License.  In case of a disagreement
977 between the translation and the original English version of this
978 License, the original English version will prevail.
981 9. TERMINATION
983 You may not copy, modify, sublicense, or distribute the Document except
984 as expressly provided for under this License.  Any other attempt to
985 copy, modify, sublicense or distribute the Document is void, and will
986 automatically terminate your rights under this License.  However,
987 parties who have received copies, or rights, from you under this
988 License will not have their licenses terminated so long as such
989 parties remain in full compliance.
992 10. FUTURE REVISIONS OF THIS LICENSE
994 The Free Software Foundation may publish new, revised versions
995 of the GNU Free Documentation License from time to time.  Such new
996 versions will be similar in spirit to the present version, but may
997 differ in detail to address new problems or concerns.  See
998 http://www.gnu.org/copyleft/.
1000 Each version of the License is given a distinguishing version number.
1001 If the Document specifies that a particular numbered version of this
1002 License "or any later version" applies to it, you have the option of
1003 following the terms and conditions either of that specified version or
1004 of any later version that has been published (not as a draft) by the
1005 Free Software Foundation.  If the Document does not specify a version
1006 number of this License, you may choose any version ever published (not
1007 as a draft) by the Free Software Foundation.
1010 ADDENDUM: How to use this License for your documents
1012 To use this License in a document you have written, include a copy of
1013 the License in the document and put the following copyright and
1014 license notices just after the title page:
1016 @smallexample
1017     Copyright (c)  YEAR  YOUR NAME.
1018     Permission is granted to copy, distribute and/or modify this document
1019     under the terms of the GNU Free Documentation License, Version 1.1
1020     or any later version published by the Free Software Foundation;
1021     with the Invariant Sections being LIST THEIR TITLES, with the
1022     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
1023     A copy of the license is included in the section entitled "GNU
1024     Free Documentation License".
1025 @end smallexample
1027 If you have no Invariant Sections, write "with no Invariant Sections"
1028 instead of saying which ones are invariant.  If you have no
1029 Front-Cover Texts, write "no Front-Cover Texts" instead of
1030 "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
1032 If your document contains nontrivial examples of program code, we
1033 recommend releasing these examples in parallel under your choice of
1034 free software license, such as the GNU General Public License,
1035 to permit their use in free software.
1037 @contents
1038 @bye