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