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