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