Update address for bug reports.
[binutils.git] / binutils / binutils.texi
blob064db955e1058a3441ec5f72d8d64baf87869303
1 \input texinfo       @c                    -*- Texinfo -*-
2 @setfilename binutils.info
3 @include config.texi
5 @ifinfo
6 @format
7 START-INFO-DIR-ENTRY
8 * Binutils: (binutils).         The GNU binary utilities.
9 * ar: (binutils)ar.               Create, modify, and extract from archives
10 * nm: (binutils)nm.               List symbols from object files
11 * objcopy: (binutils)objcopy.     Copy and translate object files
12 * objdump: (binutils)objdump.     Display information from object files
13 * ranlib: (binutils)ranlib.       Generate index to archive contents
14 * readelf: (binutils)readelf.     Display the contents of ELF format files.
15 * size: (binutils)size.           List section sizes and total size
16 * strings: (binutils)strings.     List printable strings from files
17 * strip: (binutils)strip.         Discard symbols
18 * c++filt: (binutils)c++filt.     Filter to demangle encoded C++ symbols
19 * cxxfilt: (binutils)c++filt.     MS-DOS name for c++filt
20 * addr2line: (binutils)addr2line. Convert addresses to file and line
21 * nlmconv: (binutils)nlmconv.     Converts object code into an NLM
22 * windres: (binutils)windres.     Manipulate Windows resources
23 * dlltool: (binutils)dlltool.     Create files needed to build and use DLLs
24 END-INFO-DIR-ENTRY
25 @end format
26 @end ifinfo
28 @ifinfo
29 Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
31       Permission is granted to copy, distribute and/or modify this document
32       under the terms of the GNU Free Documentation License, Version 1.1
33       or any later version published by the Free Software Foundation;
34       with no Invariant Sections, with no Front-Cover Texts, and with no
35       Back-Cover Texts.  A copy of the license is included in the
36       section entitled "GNU Free Documentation License".
38 @ignore
39 Permission is granted to process this file through TeX and print the
40 results, provided the printed document carries a copying permission
41 notice identical to this one except for the removal of this paragraph
42 (this paragraph not being relevant to the printed manual).
44 @end ignore
45 @end ifinfo
47 @synindex ky cp
49 @c This file documents the GNU binary utilities "ar", "ld", "objcopy",
50 @c  "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib".
52 @c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
53 @c 
54 @c This text may be freely distributed under the terms of the GNU
55 @c Free Documentation License.
58 @setchapternewpage odd
59 @settitle @sc{gnu} Binary Utilities
60 @titlepage
61 @finalout
62 @title The @sc{gnu} Binary Utilities
63 @subtitle Version @value{VERSION}
64 @sp 1
65 @subtitle May 1993
66 @author Roland H. Pesch
67 @author Jeffrey M. Osier
68 @author Cygnus Support
69 @page
71 @tex
72 {\parskip=0pt \hfill Cygnus Support\par \hfill
73 \TeX{}info \texinfoversion\par }
74 @end tex
76 @vskip 0pt plus 1filll
77 Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation, Inc.
79       Permission is granted to copy, distribute and/or modify this document
80       under the terms of the GNU Free Documentation License, Version 1.1
81       or any later version published by the Free Software Foundation;
82       with no Invariant Sections, with no Front-Cover Texts, and with no
83       Back-Cover Texts.  A copy of the license is included in the
84       section entitled "GNU Free Documentation License".
86 @end titlepage
88 @node Top
89 @top Introduction
91 @cindex version
92 This brief manual contains preliminary documentation for the @sc{gnu} binary
93 utilities (collectively version @value{VERSION}): 
95 @iftex
96 @table @code
97 @item ar
98 Create, modify, and extract from archives
100 @item nm
101 List symbols from object files
103 @item objcopy
104 Copy and translate object files
106 @item objdump
107 Display information from object files
109 @item ranlib
110 Generate index to archive contents
112 @item readelf
113 Display the contents of ELF format files.
115 @item size
116 List file section sizes and total size
118 @item strings
119 List printable strings from files
121 @item strip
122 Discard symbols
124 @item c++filt
125 Demangle encoded C++ symbols (on MS-DOS, this program is named
126 @code{cxxfilt})
128 @item addr2line
129 Convert addresses into file names and line numbers
131 @item nlmconv
132 Convert object code into a Netware Loadable Module
134 @item windres
135 Manipulate Windows resources
137 @item dlltool
138 Create the files needed to build and use Dynamic Link Libraries
139 @end table
140 @end iftex
142 This document is distributed under the terms of the GNU Free
143 Documentation License.  A copy of the license is included in the
144 section entitled "GNU Free Documentation License".
146 @menu
147 * ar::                          Create, modify, and extract from archives
148 * nm::                          List symbols from object files
149 * objcopy::                     Copy and translate object files
150 * objdump::                     Display information from object files
151 * ranlib::                      Generate index to archive contents
152 * readelf::                     Display the contents of ELF format files.
153 * size::                        List section sizes and total size
154 * strings::                     List printable strings from files
155 * strip::                       Discard symbols
156 * c++filt::                     Filter to demangle encoded C++ symbols
157 * cxxfilt: c++filt.             MS-DOS name for c++filt
158 * addr2line::                   Convert addresses to file and line
159 * nlmconv::                     Converts object code into an NLM
160 * windres::                     Manipulate Windows resources
161 * dlltool::                     Create files needed to build and use DLLs
162 * Selecting The Target System:: How these utilities determine the target.
163 * Reporting Bugs::              Reporting Bugs
164 * GNU Free Documentation License::  GNU Free Documentation License
165 * Index::                       Index
166 @end menu
168 @node ar
169 @chapter ar
171 @kindex ar
172 @cindex archives
173 @cindex collections of files
174 @smallexample
175 ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
176 ar -M [ <mri-script ]
177 @end smallexample
179 The @sc{gnu} @code{ar} program creates, modifies, and extracts from
180 archives.  An @dfn{archive} is a single file holding a collection of
181 other files in a structure that makes it possible to retrieve
182 the original individual files (called @dfn{members} of the archive).
184 The original files' contents, mode (permissions), timestamp, owner, and
185 group are preserved in the archive, and can be restored on
186 extraction.  
188 @cindex name length
189 @sc{gnu} @code{ar} can maintain archives whose members have names of any
190 length; however, depending on how @code{ar} is configured on your
191 system, a limit on member-name length may be imposed for compatibility
192 with archive formats maintained with other tools.  If it exists, the
193 limit is often 15 characters (typical of formats related to a.out) or 16
194 characters (typical of formats related to coff).
196 @cindex libraries
197 @code{ar} is considered a binary utility because archives of this sort
198 are most often used as @dfn{libraries} holding commonly needed
199 subroutines.
201 @cindex symbol index
202 @code{ar} creates an index to the symbols defined in relocatable
203 object modules in the archive when you specify the modifier @samp{s}.
204 Once created, this index is updated in the archive whenever @code{ar}
205 makes a change to its contents (save for the @samp{q} update operation).
206 An archive with such an index speeds up linking to the library, and
207 allows routines in the library to call each other without regard to
208 their placement in the archive.
210 You may use @samp{nm -s} or @samp{nm --print-armap} to list this index
211 table.  If an archive lacks the table, another form of @code{ar} called
212 @code{ranlib} can be used to add just the table.
214 @cindex compatibility, @code{ar}
215 @cindex @code{ar} compatibility
216 @sc{gnu} @code{ar} is designed to be compatible with two different
217 facilities.  You can control its activity using command-line options,
218 like the different varieties of @code{ar} on Unix systems; or, if you
219 specify the single command-line option @samp{-M}, you can control it
220 with a script supplied via standard input, like the MRI ``librarian''
221 program.
223 @menu
224 * ar cmdline::                  Controlling @code{ar} on the command line
225 * ar scripts::                  Controlling @code{ar} with a script
226 @end menu
228 @page
229 @node ar cmdline
230 @section Controlling @code{ar} on the command line
232 @smallexample
233 ar [-X32_64] [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
234 @end smallexample
236 @cindex Unix compatibility, @code{ar}
237 When you use @code{ar} in the Unix style, @code{ar} insists on at least two
238 arguments to execute: one keyletter specifying the @emph{operation}
239 (optionally accompanied by other keyletters specifying
240 @emph{modifiers}), and the archive name to act on.
242 Most operations can also accept further @var{member} arguments,
243 specifying particular files to operate on.
245 @sc{gnu} @code{ar} allows you to mix the operation code @var{p} and modifier
246 flags @var{mod} in any order, within the first command-line argument.
248 If you wish, you may begin the first command-line argument with a
249 dash.
251 @cindex operations on archive
252 The @var{p} keyletter specifies what operation to execute; it may be
253 any of the following, but you must specify only one of them:
255 @table @code
256 @item d
257 @cindex deleting from archive
258 @emph{Delete} modules from the archive.  Specify the names of modules to
259 be deleted as @var{member}@dots{}; the archive is untouched if you
260 specify no files to delete.
262 If you specify the @samp{v} modifier, @code{ar} lists each module
263 as it is deleted.
265 @item m
266 @cindex moving in archive
267 Use this operation to @emph{move} members in an archive.
269 The ordering of members in an archive can make a difference in how
270 programs are linked using the library, if a symbol is defined in more
271 than one member.  
273 If no modifiers are used with @code{m}, any members you name in the
274 @var{member} arguments are moved to the @emph{end} of the archive;
275 you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
276 specified place instead.
278 @item p
279 @cindex printing from archive
280 @emph{Print} the specified members of the archive, to the standard
281 output file.  If the @samp{v} modifier is specified, show the member
282 name before copying its contents to standard output.
284 If you specify no @var{member} arguments, all the files in the archive are
285 printed.
287 @item q
288 @cindex quick append to archive
289 @emph{Quick append}; Historically, add the files @var{member}@dots{} to the end of
290 @var{archive}, without checking for replacement.
292 The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
293 operation; new members are always placed at the end of the archive.
295 The modifier @samp{v} makes @code{ar} list each file as it is appended.
297 Since the point of this operation is speed, the archive's symbol table
298 index is not updated, even if it already existed; you can use @samp{ar s} or
299 @code{ranlib} explicitly to update the symbol table index.
301 However, too many different systems assume quick append rebuilds the
302 index, so GNU ar implements @code{q} as a synonym for @code{r}.
304 @item r
305 @cindex replacement in archive
306 Insert the files @var{member}@dots{} into @var{archive} (with
307 @emph{replacement}). This operation differs from @samp{q} in that any
308 previously existing members are deleted if their names match those being
309 added.
311 If one of the files named in @var{member}@dots{} does not exist, @code{ar}
312 displays an error message, and leaves undisturbed any existing members
313 of the archive matching that name.
315 By default, new members are added at the end of the file; but you may
316 use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request
317 placement relative to some existing member.
319 The modifier @samp{v} used with this operation elicits a line of
320 output for each file inserted, along with one of the letters @samp{a} or
321 @samp{r} to indicate whether the file was appended (no old member
322 deleted) or replaced.
324 @item t
325 @cindex contents of archive
326 Display a @emph{table} listing the contents of @var{archive}, or those
327 of the files listed in @var{member}@dots{} that are present in the
328 archive.  Normally only the member name is shown; if you also want to
329 see the modes (permissions), timestamp, owner, group, and size, you can
330 request that by also specifying the @samp{v} modifier.
332 If you do not specify a @var{member}, all files in the archive
333 are listed.
335 @cindex repeated names in archive
336 @cindex name duplication in archive
337 If there is more than one file with the same name (say, @samp{fie}) in
338 an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the
339 first instance; to see them all, you must ask for a complete
340 listing---in our example, @samp{ar t b.a}.
341 @c WRS only; per Gumby, this is implementation-dependent, and in a more
342 @c recent case in fact works the other way.
344 @item x
345 @cindex extract from archive
346 @emph{Extract} members (named @var{member}) from the archive.  You can
347 use the @samp{v} modifier with this operation, to request that
348 @code{ar} list each name as it extracts it.
350 If you do not specify a @var{member}, all files in the archive
351 are extracted.
353 @end table
355 A number of modifiers (@var{mod}) may immediately follow the @var{p}
356 keyletter, to specify variations on an operation's behavior:
358 @table @code
359 @item a
360 @cindex relative placement in archive
361 Add new files @emph{after} an existing member of the
362 archive.  If you use the modifier @samp{a}, the name of an existing archive
363 member must be present as the @var{relpos} argument, before the
364 @var{archive} specification.
366 @item b
367 Add new files @emph{before} an existing member of the
368 archive.  If you use the modifier @samp{b}, the name of an existing archive
369 member must be present as the @var{relpos} argument, before the
370 @var{archive} specification.  (same as @samp{i}).
372 @item c
373 @cindex creating archives
374 @emph{Create} the archive.  The specified @var{archive} is always
375 created if it did not exist, when you request an update.  But a warning is
376 issued unless you specify in advance that you expect to create it, by
377 using this modifier.
379 @item f
380 Truncate names in the archive.  @sc{gnu} @code{ar} will normally permit file
381 names of any length.  This will cause it to create archives which are
382 not compatible with the native @code{ar} program on some systems.  If
383 this is a concern, the @samp{f} modifier may be used to truncate file
384 names when putting them in the archive.
386 @item i
387 Insert new files @emph{before} an existing member of the
388 archive.  If you use the modifier @samp{i}, the name of an existing archive
389 member must be present as the @var{relpos} argument, before the
390 @var{archive} specification.  (same as @samp{b}).
392 @item l
393 This modifier is accepted but not used.
394 @c whaffor ar l modifier??? presumably compat; with
395 @c what???---doc@@cygnus.com, 25jan91 
397 @item N
398 Uses the @var{count} parameter.  This is used if there are multiple
399 entries in the archive with the same name.  Extract or delete instance
400 @var{count} of the given name from the archive.
402 @item o
403 @cindex dates in archive
404 Preserve the @emph{original} dates of members when extracting them.  If
405 you do not specify this modifier, files extracted from the archive
406 are stamped with the time of extraction.
408 @item P
409 Use the full path name when matching names in the archive.  @sc{gnu}
410 @code{ar} can not create an archive with a full path name (such archives
411 are not POSIX complaint), but other archive creators can.  This option
412 will cause @sc{gnu} @code{ar} to match file names using a complete path
413 name, which can be convenient when extracting a single file from an
414 archive created by another tool.
416 @item s
417 @cindex writing archive index
418 Write an object-file index into the archive, or update an existing one,
419 even if no other change is made to the archive.  You may use this modifier
420 flag either with any operation, or alone.  Running @samp{ar s} on an
421 archive is equivalent to running @samp{ranlib} on it.
423 @item S
424 @cindex not writing archive index
425 Do not generate an archive symbol table.  This can speed up building a
426 large library in several steps.  The resulting archive can not be used
427 with the linker.  In order to build a symbol table, you must omit the
428 @samp{S} modifier on the last execution of @samp{ar}, or you must run
429 @samp{ranlib} on the archive.
431 @item u
432 @cindex updating an archive
433 Normally, @samp{ar r}@dots{} inserts all files
434 listed into the archive.  If you would like to insert @emph{only} those
435 of the files you list that are newer than existing members of the same
436 names, use this modifier.  The @samp{u} modifier is allowed only for the
437 operation @samp{r} (replace).  In particular, the combination @samp{qu} is
438 not allowed, since checking the timestamps would lose any speed
439 advantage from the operation @samp{q}.
441 @item v
442 This modifier requests the @emph{verbose} version of an operation.  Many
443 operations display additional information, such as filenames processed,
444 when the modifier @samp{v} is appended.
446 @item V
447 This modifier shows the version number of @code{ar}.
448 @end table
450 @code{ar} ignores an initial option spelt @code{-X32_64}, for
451 compatibility with AIX.  The behaviour produced by this option is the
452 default for GNU @code{ar}.  @code{ar} does not support any of the other
453 @code{-X} options; in particular, it does not support @code{-X32}
454 which is the default for AIX @code{ar}.
456 @node ar scripts
457 @section Controlling @code{ar} with a script
459 @smallexample
460 ar -M [ <@var{script} ]
461 @end smallexample
463 @cindex MRI compatibility, @code{ar}
464 @cindex scripts, @code{ar}
465 If you use the single command-line option @samp{-M} with @code{ar}, you
466 can control its operation with a rudimentary command language.  This
467 form of @code{ar} operates interactively if standard input is coming
468 directly from a terminal.  During interactive use, @code{ar} prompts for
469 input (the prompt is @samp{AR >}), and continues executing even after
470 errors.  If you redirect standard input to a script file, no prompts are
471 issued, and @code{ar} abandons execution (with a nonzero exit code)
472 on any error.
474 The @code{ar} command language is @emph{not} designed to be equivalent
475 to the command-line options; in fact, it provides somewhat less control
476 over archives.  The only purpose of the command language is to ease the
477 transition to @sc{gnu} @code{ar} for developers who already have scripts
478 written for the MRI ``librarian'' program.
480 The syntax for the @code{ar} command language is straightforward:
481 @itemize @bullet
482 @item
483 commands are recognized in upper or lower case; for example, @code{LIST}
484 is the same as @code{list}.  In the following descriptions, commands are
485 shown in upper case for clarity.
487 @item
488 a single command may appear on each line; it is the first word on the
489 line.
491 @item
492 empty lines are allowed, and have no effect.
494 @item
495 comments are allowed; text after either of the characters @samp{*}
496 or @samp{;} is ignored.
498 @item
499 Whenever you use a list of names as part of the argument to an @code{ar}
500 command, you can separate the individual names with either commas or
501 blanks.  Commas are shown in the explanations below, for clarity.
503 @item
504 @samp{+} is used as a line continuation character; if @samp{+} appears
505 at the end of a line, the text on the following line is considered part
506 of the current command.
507 @end itemize
509 Here are the commands you can use in @code{ar} scripts, or when using
510 @code{ar} interactively.  Three of them have special significance:
512 @code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is
513 a temporary file required for most of the other commands.
515 @code{SAVE} commits the changes so far specified by the script.  Prior
516 to @code{SAVE}, commands affect only the temporary copy of the current
517 archive.
519 @table @code
520 @item ADDLIB @var{archive} 
521 @itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
522 Add all the contents of @var{archive} (or, if specified, each named
523 @var{module} from @var{archive}) to the current archive.
525 Requires prior use of @code{OPEN} or @code{CREATE}.
527 @item ADDMOD @var{member}, @var{member}, @dots{} @var{member}
528 @c FIXME! w/Replacement??  If so, like "ar r @var{archive} @var{names}"
529 @c        else like "ar q..."
530 Add each named @var{member} as a module in the current archive.
532 Requires prior use of @code{OPEN} or @code{CREATE}.
534 @item CLEAR
535 Discard the contents of the current archive, canceling the effect of
536 any operations since the last @code{SAVE}.  May be executed (with no
537 effect) even if  no current archive is specified.
539 @item CREATE @var{archive}
540 Creates an archive, and makes it the current archive (required for many
541 other commands).  The new archive is created with a temporary name; it
542 is not actually saved as @var{archive} until you use @code{SAVE}.
543 You can overwrite existing archives; similarly, the contents of any
544 existing file named @var{archive} will not be destroyed until @code{SAVE}.
546 @item DELETE @var{module}, @var{module}, @dots{} @var{module}
547 Delete each listed @var{module} from the current archive; equivalent to
548 @samp{ar -d @var{archive} @var{module} @dots{} @var{module}}.
550 Requires prior use of @code{OPEN} or @code{CREATE}.
552 @item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module})
553 @itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile}
554 List each named @var{module} present in @var{archive}.  The separate
555 command @code{VERBOSE} specifies the form of the output: when verbose
556 output is off, output is like that of @samp{ar -t @var{archive}
557 @var{module}@dots{}}.  When verbose output is on, the listing is like
558 @samp{ar -tv @var{archive} @var{module}@dots{}}.
560 Output normally goes to the standard output stream; however, if you
561 specify @var{outputfile} as a final argument, @code{ar} directs the
562 output to that file.
564 @item END
565 Exit from @code{ar}, with a @code{0} exit code to indicate successful
566 completion.  This command does not save the output file; if you have
567 changed the current archive since the last @code{SAVE} command, those
568 changes are lost.
570 @item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
571 Extract each named @var{module} from the current archive, writing them
572 into the current directory as separate files.  Equivalent to @samp{ar -x
573 @var{archive} @var{module}@dots{}}.
575 Requires prior use of @code{OPEN} or @code{CREATE}.
577 @ignore
578 @c FIXME Tokens but no commands???
579 @item FULLDIR
581 @item HELP
582 @end ignore
584 @item LIST
585 Display full contents of the current archive, in ``verbose'' style
586 regardless of the state of @code{VERBOSE}.  The effect is like @samp{ar
587 tv @var{archive}}.  (This single command is a @sc{gnu} @code{ar}
588 enhancement, rather than present for MRI compatibility.)
590 Requires prior use of @code{OPEN} or @code{CREATE}.
592 @item OPEN @var{archive}
593 Opens an existing archive for use as the current archive (required for
594 many other commands).  Any changes as the result of subsequent commands
595 will not actually affect @var{archive} until you next use @code{SAVE}.
597 @item REPLACE @var{module}, @var{module}, @dots{} @var{module}
598 In the current archive, replace each existing @var{module} (named in
599 the @code{REPLACE} arguments) from files in the current working directory.
600 To execute this command without errors, both the file, and the module in
601 the current archive, must exist. 
603 Requires prior use of @code{OPEN} or @code{CREATE}.
605 @item VERBOSE
606 Toggle an internal flag governing the output from @code{DIRECTORY}.
607 When the flag is on, @code{DIRECTORY} output matches output from
608 @samp{ar -tv }@dots{}.
610 @item SAVE
611 Commit your changes to the current archive, and actually save it as a
612 file with the name specified in the last @code{CREATE} or @code{OPEN}
613 command. 
615 Requires prior use of @code{OPEN} or @code{CREATE}.
617 @end table
619 @iftex
620 @node ld
621 @chapter ld
622 @cindex linker
623 @kindex ld
624 The @sc{gnu} linker @code{ld} is now described in a separate manual.
625 @xref{Top,, Overview,, Using LD: the @sc{gnu} linker}.
626 @end iftex
628 @node nm
629 @chapter nm
630 @cindex symbols
631 @kindex nm
633 @smallexample
634 nm [ -a | --debug-syms ]  [ -g | --extern-only ]
635    [ -B ]  [ -C | --demangle[=@var{style}] ] [ -D | --dynamic ]
636    [ -s | --print-armap ]  [ -A | -o | --print-file-name ]
637    [ -n | -v | --numeric-sort ]  [ -p | --no-sort ]
638    [ -r | --reverse-sort ]  [ --size-sort ] [ -u | --undefined-only ]
639    [ -t @var{radix} | --radix=@var{radix} ] [ -P | --portability ]
640    [ --target=@var{bfdname} ] [ -f @var{format} | --format=@var{format} ]
641    [ --defined-only ] [-l | --line-numbers ]  [ --no-demangle ]
642    [ -V | --version ]  [ -X 32_64 ]  [ --help ]  [ @var{objfile}@dots{} ]
643 @end smallexample
645 @sc{gnu} @code{nm} lists the symbols from object files @var{objfile}@dots{}.
646 If no object files are listed as arguments, @code{nm} assumes the file
647 @file{a.out}.
649 For each symbol, @code{nm} shows:
651 @itemize @bullet
652 @item
653 The symbol value, in the radix selected by options (see below), or
654 hexadecimal by default.
656 @item
657 The symbol type.  At least the following types are used; others are, as
658 well, depending on the object file format.  If lowercase, the symbol is
659 local; if uppercase, the symbol is global (external).
661 @c Some more detail on exactly what these symbol types are used for
662 @c would be nice.
663 @table @code
664 @item A
665 The symbol's value is absolute, and will not be changed by further
666 linking.
668 @item B
669 The symbol is in the uninitialized data section (known as BSS).
671 @item C
672 The symbol is common.  Common symbols are uninitialized data.  When
673 linking, multiple common symbols may appear with the same name.  If the
674 symbol is defined anywhere, the common symbols are treated as undefined
675 references.  For more details on common symbols, see the discussion of
676 --warn-common in @ref{Options,,Linker options,ld.info,The GNU linker}.
678 @item D
679 The symbol is in the initialized data section.
681 @item G
682 The symbol is in an initialized data section for small objects.  Some
683 object file formats permit more efficient access to small data objects,
684 such as a global int variable as opposed to a large global array.
686 @item I
687 The symbol is an indirect reference to another symbol.  This is a GNU
688 extension to the a.out object file format which is rarely used.
690 @item N
691 The symbol is a debugging symbol.
693 @item R
694 The symbol is in a read only data section.
696 @item S
697 The symbol is in an uninitialized data section for small objects.
699 @item T
700 The symbol is in the text (code) section.
702 @item U
703 The symbol is undefined.
705 @item V
706 The symbol is a weak object.  When a weak defined symbol is linked with
707 a normal defined symbol, the normal defined symbol is used with no error.
708 When a weak undefined symbol is linked and the symbol is not defined,
709 the value of the weak symbol becomes zero with no error.
711 @item W
712 The symbol is a weak symbol that has not been specifically tagged as a
713 weak object symbol.  When a weak defined symbol is linked with a normal
714 defined symbol, the normal defined symbol is used with no error.
715 When a weak undefined symbol is linked and the symbol is not defined,
716 the value of the weak symbol becomes zero with no error.
718 @item -
719 The symbol is a stabs symbol in an a.out object file.  In this case, the
720 next values printed are the stabs other field, the stabs desc field, and
721 the stab type.  Stabs symbols are used to hold debugging information;
722 for more information, see @ref{Top,Stabs,Stabs Overview,stabs.info, The
723 ``stabs'' debug format}.
725 @item ?
726 The symbol type is unknown, or object file format specific.
727 @end table
729 @item
730 The symbol name.
731 @end itemize
733 The long and short forms of options, shown here as alternatives, are
734 equivalent.
736 @table @code
737 @item -A
738 @itemx -o
739 @itemx --print-file-name 
740 @cindex input file name
741 @cindex file name
742 @cindex source file name
743 Precede each symbol by the name of the input file (or archive member)
744 in which it was found, rather than identifying the input file once only,
745 before all of its symbols.
747 @item -a
748 @itemx --debug-syms 
749 @cindex debugging symbols
750 Display all symbols, even debugger-only symbols; normally these are not
751 listed.
753 @item -B
754 @cindex @code{nm} format
755 @cindex @code{nm} compatibility
756 The same as @samp{--format=bsd} (for compatibility with the MIPS @code{nm}).
758 @item -C
759 @itemx --demangle[=@var{style}]
760 @cindex demangling in nm
761 Decode (@dfn{demangle}) low-level symbol names into user-level names.
762 Besides removing any initial underscore prepended by the system, this
763 makes C++ function names readable. Different compilers have different
764 mangling styles. The optional demangling style argument can be used to 
765 choose an appropriate demangling style for your compiler. @xref{c++filt}, 
766 for more information on demangling.
768 @item --no-demangle
769 Do not demangle low-level symbol names.  This is the default.
771 @item -D
772 @itemx --dynamic
773 @cindex dynamic symbols
774 Display the dynamic symbols rather than the normal symbols.  This is
775 only meaningful for dynamic objects, such as certain types of shared
776 libraries.
778 @item -f @var{format}
779 @itemx --format=@var{format}
780 @cindex @code{nm} format
781 @cindex @code{nm} compatibility
782 Use the output format @var{format}, which can be @code{bsd},
783 @code{sysv}, or @code{posix}.  The default is @code{bsd}.
784 Only the first character of @var{format} is significant; it can be
785 either upper or lower case.
787 @item -g
788 @itemx --extern-only 
789 @cindex external symbols
790 Display only external symbols.
792 @item -l
793 @itemx --line-numbers
794 @cindex symbol line numbers
795 For each symbol, use debugging information to try to find a filename and
796 line number.  For a defined symbol, look for the line number of the
797 address of the symbol.  For an undefined symbol, look for the line
798 number of a relocation entry which refers to the symbol.  If line number
799 information can be found, print it after the other symbol information.
801 @item -n
802 @itemx -v
803 @itemx --numeric-sort 
804 Sort symbols numerically by their addresses, rather than alphabetically
805 by their names. 
807 @item -p
808 @itemx --no-sort 
809 @cindex sorting symbols
810 Do not bother to sort the symbols in any order; print them in the order
811 encountered.
813 @item -P
814 @itemx --portability
815 Use the POSIX.2 standard output format instead of the default format.
816 Equivalent to @samp{-f posix}.
818 @item -s
819 @itemx --print-armap
820 @cindex symbol index, listing
821 When listing symbols from archive members, include the index: a mapping
822 (stored in the archive by @code{ar} or @code{ranlib}) of which modules
823 contain definitions for which names.
825 @item -r
826 @itemx --reverse-sort 
827 Reverse the order of the sort (whether numeric or alphabetic); let the
828 last come first.
830 @item --size-sort
831 Sort symbols by size.  The size is computed as the difference between
832 the value of the symbol and the value of the symbol with the next higher
833 value.  The size of the symbol is printed, rather than the value.
835 @item -t @var{radix}
836 @itemx --radix=@var{radix}
837 Use @var{radix} as the radix for printing the symbol values.  It must be
838 @samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal.
840 @item --target=@var{bfdname}
841 @cindex object code format
842 Specify an object code format other than your system's default format.
843 @xref{Target Selection}, for more information.
845 @item -u
846 @itemx --undefined-only 
847 @cindex external symbols
848 @cindex undefined symbols
849 Display only undefined symbols (those external to each object file).
851 @item --defined-only
852 @cindex external symbols
853 @cindex undefined symbols
854 Display only defined symbols for each object file.
856 @item -V
857 @itemx --version
858 Show the version number of @code{nm} and exit.
860 @item -X
861 This option is ignored for compatibility with the AIX version of
862 @code{nm}.  It takes one parameter which must be the string
863 @code{32_64}.  The default mode of AIX @code{nm} corresponds
864 to @code{-X 32}, which is not supported by @sc{gnu} @code{nm}.
866 @item --help
867 Show a summary of the options to @code{nm} and exit.
868 @end table
870 @node objcopy
871 @chapter objcopy
873 @smallexample
874 objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
875         [ -I @var{bfdname} | --input-target=@var{bfdname} ]
876         [ -O @var{bfdname} | --output-target=@var{bfdname} ]
877         [ -S | --strip-all ]  [ -g | --strip-debug ]
878         [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
879         [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
880         [ -L @var{symbolname} | --localize-symbol=@var{symbolname} ]
881         [ -W @var{symbolname} | --weaken-symbol=@var{symbolname} ]
882         [ -x | --discard-all ]  [ -X | --discard-locals ]
883         [ -b @var{byte} | --byte=@var{byte} ]
884         [ -i @var{interleave} | --interleave=@var{interleave} ]
885         [ -j @var{sectionname} | --only-section=@var{sectionname} ]
886         [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
887         [ -p | --preserve-dates ] [ --debugging ]
888         [ --gap-fill=@var{val} ] [ --pad-to=@var{address} ]
889         [ --set-start=@var{val} ] [ --adjust-start=@var{incr} ]
890         [ --change-addresses=@var{incr} ]
891         [ --change-section-address @var{section}@{=,+,-@}@var{val} ]
892         [ --change-section-lma @var{section}@{=,+,-@}@var{val} ]
893         [ --change-section-vma @var{section}@{=,+,-@}@var{val} ]
894         [ --change-warnings ] [ --no-change-warnings ]
895         [ --set-section-flags @var{section}=@var{flags} ]
896         [ --add-section @var{sectionname}=@var{filename} ]
897         [ --change-leading-char ] [ --remove-leading-char ]
898         [ --srec-len=@var{ival} ] [ --srec-forceS3 ]
899         [ --redefine-sym @var{old}=@var{new} ] [ --weaken ]
900         [ -v | --verbose ] [ -V | --version ]  [ --help ]
901         @var{infile} [@var{outfile}]
902 @end smallexample
904 The @sc{gnu} @code{objcopy} utility copies the contents of an object
905 file to another.  @code{objcopy} uses the @sc{gnu} @sc{bfd} Library to
906 read and write the object files.  It can write the destination object
907 file in a format different from that of the source object file.  The
908 exact behavior of @code{objcopy} is controlled by command-line options.
909 Note that @code{objcopy} should be able to copy a fully linked file
910 between any two formats. However, copying a relocatable object file
911 between any two formats may not work as expected.
913 @code{objcopy} creates temporary files to do its translations and
914 deletes them afterward.  @code{objcopy} uses @sc{bfd} to do all its
915 translation work; it has access to all the formats described in @sc{bfd}
916 and thus is able to recognize most formats without being told
917 explicitly.  @xref{BFD,,BFD,ld.info,Using LD}.
919 @code{objcopy} can be used to generate S-records by using an output
920 target of @samp{srec} (e.g., use @samp{-O srec}).
922 @code{objcopy} can be used to generate a raw binary file by using an
923 output target of @samp{binary} (e.g., use @samp{-O binary}).  When
924 @code{objcopy} generates a raw binary file, it will essentially produce
925 a memory dump of the contents of the input object file.  All symbols and
926 relocation information will be discarded.  The memory dump will start at
927 the load address of the lowest section copied into the output file.
929 When generating an S-record or a raw binary file, it may be helpful to
930 use @samp{-S} to remove sections containing debugging information.  In
931 some cases @samp{-R} will be useful to remove sections which contain
932 information that is not needed by the binary file.
934 @table @code
935 @item @var{infile}
936 @itemx @var{outfile}
937 The input and output files, respectively.
938 If you do not specify @var{outfile}, @code{objcopy} creates a
939 temporary file and destructively renames the result with
940 the name of @var{infile}.
942 @item -I @var{bfdname}  
943 @itemx --input-target=@var{bfdname}
944 Consider the source file's object format to be @var{bfdname}, rather than
945 attempting to deduce it.  @xref{Target Selection}, for more information.
947 @item -O @var{bfdname}
948 @itemx --output-target=@var{bfdname}
949 Write the output file using the object format @var{bfdname}.
950 @xref{Target Selection}, for more information.
952 @item -F @var{bfdname}
953 @itemx --target=@var{bfdname}
954 Use @var{bfdname} as the object format for both the input and the output
955 file; i.e., simply transfer data from source to destination with no
956 translation.  @xref{Target Selection}, for more information.
958 @item -j @var{sectionname}
959 @itemx --only-section=@var{sectionname}
960 Copy only the named section from the input file to the output file.
961 This option may be given more than once.  Note that using this option
962 inappropriately may make the output file unusable.
964 @item -R @var{sectionname}
965 @itemx --remove-section=@var{sectionname}
966 Remove any section named @var{sectionname} from the output file.  This
967 option may be given more than once.  Note that using this option
968 inappropriately may make the output file unusable.
970 @item -S
971 @itemx --strip-all
972 Do not copy relocation and symbol information from the source file.
974 @item -g
975 @itemx --strip-debug
976 Do not copy debugging symbols from the source file.
978 @item --strip-unneeded
979 Strip all symbols that are not needed for relocation processing.
981 @item -K @var{symbolname}
982 @itemx --keep-symbol=@var{symbolname}
983 Copy only symbol @var{symbolname} from the source file.  This option may
984 be given more than once.
986 @item -N @var{symbolname}
987 @itemx --strip-symbol=@var{symbolname}
988 Do not copy symbol @var{symbolname} from the source file.  This option
989 may be given more than once.
991 @item -L @var{symbolname}
992 @itemx --localize-symbol=@var{symbolname}
993 Make symbol @var{symbolname} local to the file, so that it is not
994 visible externally.  This option may be given more than once.
996 @item -W @var{symbolname}
997 @itemx --weaken-symbol=@var{symbolname}
998 Make symbol @var{symbolname} weak. This option may be given more than once.
1000 @item -x
1001 @itemx --discard-all
1002 Do not copy non-global symbols from the source file.
1003 @c FIXME any reason to prefer "non-global" to "local" here?
1005 @item -X
1006 @itemx --discard-locals
1007 Do not copy compiler-generated local symbols.
1008 (These usually start with @samp{L} or @samp{.}.)
1010 @item -b @var{byte}
1011 @itemx --byte=@var{byte}
1012 Keep only every @var{byte}th byte of the input file (header data is not
1013 affected).  @var{byte} can be in the range from 0 to @var{interleave}-1,
1014 where @var{interleave} is given by the @samp{-i} or @samp{--interleave}
1015 option, or the default of 4.  This option is useful for creating files
1016 to program @sc{rom}.  It is typically used with an @code{srec} output
1017 target.
1019 @item -i @var{interleave}
1020 @itemx --interleave=@var{interleave}
1021 Only copy one out of every @var{interleave} bytes.  Select which byte to
1022 copy with the @var{-b} or @samp{--byte} option.  The default is 4.
1023 @code{objcopy} ignores this option if you do not specify either @samp{-b} or
1024 @samp{--byte}.
1026 @item -p
1027 @itemx --preserve-dates
1028 Set the access and modification dates of the output file to be the same
1029 as those of the input file.
1031 @item --debugging
1032 Convert debugging information, if possible.  This is not the default
1033 because only certain debugging formats are supported, and the
1034 conversion process can be time consuming.
1036 @item --gap-fill @var{val}
1037 Fill gaps between sections with @var{val}.  This operation applies to
1038 the @emph{load address} (LMA) of the sections.  It is done by increasing
1039 the size of the section with the lower address, and filling in the extra
1040 space created with @var{val}.
1042 @item --pad-to @var{address}
1043 Pad the output file up to the load address @var{address}.  This is
1044 done by increasing the size of the last section.  The extra space is
1045 filled in with the value specified by @samp{--gap-fill} (default zero).
1047 @item --set-start @var{val}
1048 Set the start address of the new file to @var{val}.  Not all object file
1049 formats support setting the start address.
1051 @item --change-start @var{incr}
1052 @itemx --adjust-start @var{incr}
1053 @cindex changing start address
1054 Change the start address by adding @var{incr}.  Not all object file
1055 formats support setting the start address.
1057 @item --change-addresses @var{incr}
1058 @itemx --adjust-vma @var{incr}
1059 @cindex changing object addresses
1060 Change the VMA and LMA addresses of all sections, as well as the start
1061 address, by adding @var{incr}.  Some object file formats do not permit
1062 section addresses to be changed arbitrarily.  Note that this does not
1063 relocate the sections; if the program expects sections to be loaded at a
1064 certain address, and this option is used to change the sections such
1065 that they are loaded at a different address, the program may fail. 
1067 @item --change-section-address @var{section}@{=,+,-@}@var{val}
1068 @itemx --adjust-section-vma @var{section}@{=,+,-@}@var{val}
1069 @cindex changing section address
1070 Set or change both the VMA address and the LMA address of the named
1071 @var{section}.  If @samp{=} is used, the section address is set to
1072 @var{val}.  Otherwise, @var{val} is added to or subtracted from the
1073 section address.  See the comments under @samp{--change-addresses},
1074 above. If @var{section} does not exist in the input file, a warning will
1075 be issued, unless @samp{--no-change-warnings} is used.
1077 @item --change-section-lma @var{section}@{=,+,-@}@var{val}
1078 @cindex changing section LMA
1079 Set or change the LMA address of the named @var{section}.  The LMA
1080 address is the address where the section will be loaded into memory at
1081 program load time.  Normally this is the same as the VMA address, which
1082 is the address of the section at program run time, but on some systems,
1083 especially those where a program is held in ROM, the two can be
1084 different.  If @samp{=} is used, the section address is set to
1085 @var{val}.  Otherwise, @var{val} is added to or subtracted from the
1086 section address.  See the comments under @samp{--change-addresses},
1087 above.  If @var{section} does not exist in the input file, a warning
1088 will be issued, unless @samp{--no-change-warnings} is used.  
1090 @item --change-section-vma @var{section}@{=,+,-@}@var{val}
1091 @cindex changing section VMA
1092 Set or change the VMA address of the named @var{section}.  The VMA
1093 address is the address where the section will be located once the
1094 program has started executing.  Normally this is the same as the LMA
1095 address, which is the address where the section will be loaded into
1096 memory, but on some systems, especially those where a program is held in
1097 ROM, the two can be different.  If @samp{=} is used, the section address
1098 is set to @var{val}.  Otherwise, @var{val} is added to or subtracted
1099 from the section address.  See the comments under
1100 @samp{--change-addresses}, above.  If @var{section} does not exist in
1101 the input file, a warning will be issued, unless
1102 @samp{--no-change-warnings} is used.   
1104 @item --change-warnings
1105 @itemx --adjust-warnings
1106 If @samp{--change-section-address} or @samp{--change-section-lma} or
1107 @samp{--change-section-vma} is used, and the named section does not
1108 exist, issue a warning.  This is the default. 
1110 @item --no-change-warnings
1111 @itemx --no-adjust-warnings
1112 Do not issue a warning if @samp{--change-section-address} or
1113 @samp{--adjust-section-lma} or @samp{--adjust-section-vma} is used, even
1114 if the named section does not exist. 
1116 @item --set-section-flags @var{section}=@var{flags}
1117 Set the flags for the named section.  The @var{flags} argument is a
1118 comma separated string of flag names.  The recognized names are
1119 @samp{alloc}, @samp{contents}, @samp{load}, @samp{noload},
1120 @samp{readonly}, @samp{code}, @samp{data}, @samp{rom}, @samp{share}, and
1121 @samp{debug}.  You can set the @samp{contents} flag for a section which
1122 does not have contents, but it is not meaningful to clear the
1123 @samp{contents} flag of a section which does have contents--just remove
1124 the section instead.  Not all flags are meaningful for all object file
1125 formats.
1127 @item --add-section @var{sectionname}=@var{filename}
1128 Add a new section named @var{sectionname} while copying the file.  The
1129 contents of the new section are taken from the file @var{filename}.  The
1130 size of the section will be the size of the file.  This option only
1131 works on file formats which can support sections with arbitrary names.
1133 @item --change-leading-char
1134 Some object file formats use special characters at the start of
1135 symbols.  The most common such character is underscore, which compilers
1136 often add before every symbol.  This option tells @code{objcopy} to
1137 change the leading character of every symbol when it converts between
1138 object file formats.  If the object file formats use the same leading
1139 character, this option has no effect.  Otherwise, it will add a
1140 character, or remove a character, or change a character, as
1141 appropriate.
1143 @item --remove-leading-char
1144 If the first character of a global symbol is a special symbol leading
1145 character used by the object file format, remove the character.  The
1146 most common symbol leading character is underscore.  This option will
1147 remove a leading underscore from all global symbols.  This can be useful
1148 if you want to link together objects of different file formats with
1149 different conventions for symbol names.  This is different from
1150 @code{--change-leading-char} because it always changes the symbol name
1151 when appropriate, regardless of the object file format of the output
1152 file.
1154 @item --srec-len=@var{ival}
1155 Meaningful only for srec output.  Set the maximum length of the Srecords
1156 being produced to @var{ival}.  This length covers both address, data and
1157 crc fields.
1159 @item --srec-forceS3
1160 Meaningful only for srec output.  Avoid generation of S1/S2 records, 
1161 creating S3-only record format.
1163 @item --redefine-sym @var{old}=@var{new}
1164 Change the name of a symbol @var{old}, to @var{new}.  This can be useful
1165 when one is trying link two things together for which you have no
1166 source, and there are name collisions.
1168 @item --weaken
1169 Change all global symbols in the file to be weak.  This can be useful
1170 when building an object which will be linked against other objects using
1171 the @code{-R} option to the linker.  This option is only effective when
1172 using an object file format which supports weak symbols.
1174 @item -V
1175 @itemx --version
1176 Show the version number of @code{objcopy}.
1178 @item -v
1179 @itemx --verbose
1180 Verbose output: list all object files modified.  In the case of
1181 archives, @samp{objcopy -V} lists all members of the archive.
1183 @item --help
1184 Show a summary of the options to @code{objcopy}.
1185 @end table
1187 @node objdump
1188 @chapter objdump
1190 @cindex object file information
1191 @kindex objdump
1193 @smallexample
1194 objdump [ -a | --archive-headers ] 
1195         [ -b @var{bfdname} | --target=@var{bfdname} ] 
1196         [ -C | --demangle[=@var{style}] ]
1197         [ -d | --disassemble ]
1198         [ -D | --disassemble-all ]
1199         [ -z | --disassemble-zeroes ]
1200         [ -EB | -EL | --endian=@{big | little @} ]
1201         [ -f | --file-headers ]
1202         [ --file-start-context ]
1203         [ -g | --debugging ]
1204         [ -h | --section-headers | --headers ]
1205         [ -i | --info ]
1206         [ -j @var{section} | --section=@var{section} ]
1207         [ -l | --line-numbers ]
1208         [ -S | --source ]
1209         [ -m @var{machine} | --architecture=@var{machine} ]
1210         [ -M @var{options} | --disassembler-options=@var{options}]
1211         [ -p | --private-headers ]
1212         [ -r | --reloc ]
1213         [ -R | --dynamic-reloc ]
1214         [ -s | --full-contents ]
1215         [ -G | --stabs ]
1216         [ -t | --syms ]
1217         [ -T | --dynamic-syms ]
1218         [ -x | --all-headers ]
1219         [ -w | --wide ]
1220         [ --start-address=@var{address} ]
1221         [ --stop-address=@var{address} ]
1222         [ --prefix-addresses]
1223         [ --[no-]show-raw-insn ]
1224         [ --adjust-vma=@var{offset} ]
1225         [ -V | --version ]
1226         [ -H | --help ]
1227         @var{objfile}@dots{}
1228 @end smallexample
1230 @code{objdump} displays information about one or more object files.
1231 The options control what particular information to display.  This
1232 information is mostly useful to programmers who are working on the
1233 compilation tools, as opposed to programmers who just want their
1234 program to compile and work.
1236 @var{objfile}@dots{} are the object files to be examined.  When you
1237 specify archives, @code{objdump} shows information on each of the member
1238 object files.
1240 The long and short forms of options, shown here as alternatives, are
1241 equivalent.  At least one option from the list
1242 @samp{-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-S,-t,-T,-V,-x} must be given. 
1244 @table @code
1245 @item -a
1246 @itemx --archive-header
1247 @cindex archive headers
1248 If any of the @var{objfile} files are archives, display the archive
1249 header information (in a format similar to @samp{ls -l}).  Besides the
1250 information you could list with @samp{ar tv}, @samp{objdump -a} shows
1251 the object file format of each archive member.
1253 @item --adjust-vma=@var{offset}
1254 @cindex section addresses in objdump
1255 @cindex VMA in objdump
1256 When dumping information, first add @var{offset} to all the section
1257 addresses.  This is useful if the section addresses do not correspond to
1258 the symbol table, which can happen when putting sections at particular
1259 addresses when using a format which can not represent section addresses,
1260 such as a.out.
1262 @item -b @var{bfdname}
1263 @itemx --target=@var{bfdname}
1264 @cindex object code format
1265 Specify that the object-code format for the object files is
1266 @var{bfdname}.  This option may not be necessary; @var{objdump} can
1267 automatically recognize many formats.
1269 For example,
1270 @example
1271 objdump -b oasys -m vax -h fu.o
1272 @end example
1273 @noindent
1274 displays summary information from the section headers (@samp{-h}) of
1275 @file{fu.o}, which is explicitly identified (@samp{-m}) as a VAX object
1276 file in the format produced by Oasys compilers.  You can list the
1277 formats available with the @samp{-i} option.
1278 @xref{Target Selection}, for more information.
1280 @item -C
1281 @itemx --demangle[=@var{style}]
1282 @cindex demangling in objdump
1283 Decode (@dfn{demangle}) low-level symbol names into user-level names.
1284 Besides removing any initial underscore prepended by the system, this
1285 makes C++ function names readable.  Different compilers have different
1286 mangling styles. The optional demangling style argument can be used to 
1287 choose an appropriate demangling style for your compiler. @xref{c++filt}, 
1288 for more information on demangling.
1290 @item -G
1291 @item --debugging
1292 Display debugging information.  This attempts to parse debugging
1293 information stored in the file and print it out using a C like syntax.
1294 Only certain types of debugging information have been implemented.
1296 @item -d
1297 @itemx --disassemble
1298 @cindex disassembling object code
1299 @cindex machine instructions
1300 Display the assembler mnemonics for the machine instructions from
1301 @var{objfile}.  This option only disassembles those sections which are
1302 expected to contain instructions.
1304 @item -D
1305 @itemx --disassemble-all
1306 Like @samp{-d}, but disassemble the contents of all sections, not just
1307 those expected to contain instructions.
1309 @item --prefix-addresses
1310 When disassembling, print the complete address on each line.  This is
1311 the older disassembly format.
1313 @item --disassemble-zeroes
1314 Normally the disassembly output will skip blocks of zeroes.  This
1315 option directs the disassembler to disassemble those blocks, just like
1316 any other data.
1318 @item -EB
1319 @itemx -EL
1320 @itemx --endian=@{big|little@}
1321 @cindex endianness
1322 @cindex disassembly endianness
1323 Specify the endianness of the object files.  This only affects
1324 disassembly.  This can be useful when disassembling a file format which
1325 does not describe endianness information, such as S-records.
1327 @item -f
1328 @itemx --file-header
1329 @cindex object file header
1330 Display summary information from the overall header of
1331 each of the @var{objfile} files.
1333 @item --file-start-context
1334 @cindex source code context
1335 Specify that when displaying interlisted source code/disassembly
1336 (assumes '-S') from a file that has not yet been displayed, extend the
1337 context to the start of the file.
1339 @item -h
1340 @itemx --section-header
1341 @itemx --header
1342 @cindex section headers
1343 Display summary information from the section headers of the
1344 object file.
1346 File segments may be relocated to nonstandard addresses, for example by
1347 using the @samp{-Ttext}, @samp{-Tdata}, or @samp{-Tbss} options to
1348 @code{ld}.  However, some object file formats, such as a.out, do not
1349 store the starting address of the file segments.  In those situations,
1350 although @code{ld} relocates the sections correctly, using @samp{objdump
1351 -h} to list the file section headers cannot show the correct addresses.
1352 Instead, it shows the usual addresses, which are implicit for the
1353 target.
1355 @item --help
1356 Print a summary of the options to @code{objdump} and exit.
1358 @item -i
1359 @itemx --info
1360 @cindex architectures available
1361 @cindex object formats available
1362 Display a list showing all architectures and object formats available
1363 for specification with @samp{-b} or @samp{-m}.
1365 @item -j @var{name}
1366 @itemx --section=@var{name}
1367 @cindex section information
1368 Display information only for section @var{name}.
1370 @item -l
1371 @itemx --line-numbers
1372 @cindex source filenames for object files
1373 Label the display (using debugging information) with the filename and
1374 source line numbers corresponding to the object code or relocs shown.
1375 Only useful with @samp{-d}, @samp{-D}, or @samp{-r}.
1377 @item -m @var{machine}
1378 @itemx --architecture=@var{machine}
1379 @cindex architecture
1380 @cindex disassembly architecture
1381 Specify the architecture to use when disassembling object files.  This
1382 can be useful when disassembling object files which do not describe
1383 architecture information, such as S-records.  You can list the available
1384 architectures with the @samp{-i} option.
1386 @item -M @var{options}
1387 @itemx --disassembler-options=@var{options}
1388 Pass target specific information to the disassembler.  Only supported on
1389 some targets.
1391 If the target is an ARM architecture then this switch can be used to
1392 select which register name set is used during disassembler.  Specifying
1393 @samp{-M reg-name-std} (the default) will select the register names as
1394 used in ARM's instruction set documentation, but with register 13 called
1395 'sp', register 14 called 'lr' and register 15 called 'pc'.  Specifying
1396 @samp{-M reg-names-apcs} will select the name set used by the ARM
1397 Procedure Call Standard, whilst specifying @samp{-M reg-names-raw} will
1398 just use @samp{r} followed by the register number.
1400 There are also two variants on the APCS register naming scheme enabled
1401 by @samp{-M reg-names-atpcs} and @samp{-M reg-names-special-atpcs} which
1402 use the ARM/Thumb Procedure Call Standard naming conventions.  (Eiuther
1403 with the normal register name sor the special register names).
1405 This option can also be used for ARM architectures to force the
1406 disassembler to interpret all instructions as THUMB instructions by
1407 using the switch @samp{--disassembler-options=force-thumb}.  This can be
1408 useful when attempting to disassemble thumb code produced by other
1409 compilers.
1411 @item -p
1412 @itemx --private-headers
1413 Print information that is specific to the object file format.  The exact
1414 information printed depends upon the object file format.  For some
1415 object file formats, no additional information is printed.
1417 @item -r
1418 @itemx --reloc
1419 @cindex relocation entries, in object file
1420 Print the relocation entries of the file.  If used with @samp{-d} or
1421 @samp{-D}, the relocations are printed interspersed with the
1422 disassembly.
1424 @item -R
1425 @itemx --dynamic-reloc
1426 @cindex dynamic relocation entries, in object file
1427 Print the dynamic relocation entries of the file.  This is only
1428 meaningful for dynamic objects, such as certain types of shared
1429 libraries.
1431 @item -s
1432 @itemx --full-contents
1433 @cindex sections, full contents
1434 @cindex object file sections
1435 Display the full contents of any sections requested.
1437 @item -S
1438 @itemx --source
1439 @cindex source disassembly
1440 @cindex disassembly, with source
1441 Display source code intermixed with disassembly, if possible.  Implies
1442 @samp{-d}.
1444 @item --show-raw-insn
1445 When disassembling instructions, print the instruction in hex as well as
1446 in symbolic form.  This is the default except when
1447 @code{--prefix-addresses} is used.
1449 @item --no-show-raw-insn
1450 When disassembling instructions, do not print the instruction bytes.
1451 This is the default when @code{--prefix-addresses} is used.
1453 @item -G
1454 @item --stabs
1455 @cindex stab
1456 @cindex .stab
1457 @cindex debug symbols
1458 @cindex ELF object file format
1459 Display the full contents of any sections requested.  Display the
1460 contents of the .stab and .stab.index and .stab.excl sections from an
1461 ELF file.  This is only useful on systems (such as Solaris 2.0) in which
1462 @code{.stab} debugging symbol-table entries are carried in an ELF
1463 section.  In most other file formats, debugging symbol-table entries are
1464 interleaved with linkage symbols, and are visible in the @samp{--syms}
1465 output.  For more information on stabs symbols, see @ref{Top,Stabs,Stabs
1466 Overview,stabs.info, The ``stabs'' debug format}.
1468 @item --start-address=@var{address}
1469 @cindex start-address
1470 Start displaying data at the specified address.  This affects the output
1471 of the @code{-d}, @code{-r} and @code{-s} options.
1473 @item --stop-address=@var{address}
1474 @cindex stop-address
1475 Stop displaying data at the specified address.  This affects the output
1476 of the @code{-d}, @code{-r} and @code{-s} options.
1478 @item -t
1479 @itemx --syms
1480 @cindex symbol table entries, printing
1481 Print the symbol table entries of the file.
1482 This is similar to the information provided by the @samp{nm} program.
1484 @item -T
1485 @itemx --dynamic-syms
1486 @cindex dynamic symbol table entries, printing
1487 Print the dynamic symbol table entries of the file.  This is only
1488 meaningful for dynamic objects, such as certain types of shared
1489 libraries.  This is similar to the information provided by the @samp{nm}
1490 program when given the @samp{-D} (@samp{--dynamic}) option.
1492 @item --version
1493 Print the version number of @code{objdump} and exit.
1495 @item -x
1496 @itemx --all-header
1497 @cindex all header information, object file
1498 @cindex header information, all
1499 Display all available header information, including the symbol table and
1500 relocation entries.  Using @samp{-x} is equivalent to specifying all of
1501 @samp{-a -f -h -r -t}.
1503 @item -w
1504 @itemx --wide
1505 @cindex wide output, printing
1506 Format some lines for output devices that have more than 80 columns.
1507 @end table
1509 @node ranlib
1510 @chapter ranlib
1512 @kindex ranlib
1513 @cindex archive contents
1514 @cindex symbol index
1516 @smallexample
1517 ranlib [-vV] @var{archive}
1518 @end smallexample
1520 @code{ranlib} generates an index to the contents of an archive and
1521 stores it in the archive.  The index lists each symbol defined by a
1522 member of an archive that is a relocatable object file.  
1524 You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
1526 An archive with such an index speeds up linking to the library and
1527 allows routines in the library to call each other without regard to
1528 their placement in the archive.
1530 The @sc{gnu} @code{ranlib} program is another form of @sc{gnu} @code{ar}; running
1531 @code{ranlib} is completely equivalent to executing @samp{ar -s}.
1532 @xref{ar}.
1534 @table @code
1535 @item -v
1536 @itemx -V
1537 @itemx --version
1538 Show the version number of @code{ranlib}.
1539 @end table
1541 @node size
1542 @chapter size
1544 @kindex size
1545 @cindex section sizes
1547 @smallexample
1548 size [ -A | -B | --format=@var{compatibility} ]
1549      [ --help ]  [ -d | -o | -x | --radix=@var{number} ]
1550      [ --target=@var{bfdname} ]  [ -V | --version ]  
1551      [ @var{objfile}@dots{} ]
1552 @end smallexample
1554 The @sc{gnu} @code{size} utility lists the section sizes---and the total
1555 size---for each of the object or archive files @var{objfile} in its
1556 argument list.  By default, one line of output is generated for each
1557 object file or each module in an archive.
1559 @var{objfile}@dots{} are the object files to be examined.
1560 If none are specified, the file @code{a.out} will be used.
1562 The command line options have the following meanings:
1564 @table @code
1565 @item -A
1566 @itemx -B
1567 @itemx --format=@var{compatibility}
1568 @cindex @code{size} display format
1569 Using one of these options, you can choose whether the output from @sc{gnu}
1570 @code{size} resembles output from System V @code{size} (using @samp{-A},
1571 or @samp{--format=sysv}), or Berkeley @code{size} (using @samp{-B}, or
1572 @samp{--format=berkeley}).  The default is the one-line format similar to
1573 Berkeley's.  
1574 @c Bonus for doc-source readers: you can also say --format=strange (or
1575 @c anything else that starts with 's') for sysv, and --format=boring (or
1576 @c anything else that starts with 'b') for Berkeley.
1578 Here is an example of the Berkeley (default) format of output from
1579 @code{size}: 
1580 @smallexample
1581 $ size --format=Berkeley ranlib size
1582 text    data    bss     dec     hex     filename
1583 294880  81920   11592   388392  5ed28   ranlib
1584 294880  81920   11888   388688  5ee50   size
1585 @end smallexample
1587 @noindent
1588 This is the same data, but displayed closer to System V conventions:
1590 @smallexample
1591 $ size --format=SysV ranlib size
1592 ranlib  :
1593 section         size         addr
1594 .text         294880         8192       
1595 .data          81920       303104       
1596 .bss           11592       385024       
1597 Total         388392    
1600 size  :
1601 section         size         addr
1602 .text         294880         8192       
1603 .data          81920       303104       
1604 .bss           11888       385024       
1605 Total         388688    
1606 @end smallexample
1608 @item --help
1609 Show a summary of acceptable arguments and options.
1611 @item -d
1612 @itemx -o
1613 @itemx -x
1614 @itemx --radix=@var{number}
1615 @cindex @code{size} number format
1616 @cindex radix for section sizes
1617 Using one of these options, you can control whether the size of each
1618 section is given in decimal (@samp{-d}, or @samp{--radix=10}); octal
1619 (@samp{-o}, or @samp{--radix=8}); or hexadecimal (@samp{-x}, or
1620 @samp{--radix=16}).  In @samp{--radix=@var{number}}, only the three
1621 values (8, 10, 16) are supported.  The total size is always given in two
1622 radices; decimal and hexadecimal for @samp{-d} or @samp{-x} output, or
1623 octal and hexadecimal if you're using @samp{-o}.
1625 @item --target=@var{bfdname}
1626 @cindex object code format
1627 Specify that the object-code format for @var{objfile} is
1628 @var{bfdname}.  This option may not be necessary; @code{size} can
1629 automatically recognize many formats.
1630 @xref{Target Selection}, for more information.
1632 @item -V
1633 @itemx --version
1634 Display the version number of @code{size}.
1635 @end table
1637 @node strings
1638 @chapter strings
1639 @kindex strings
1640 @cindex listings strings
1641 @cindex printing strings
1642 @cindex strings, printing
1644 @smallexample
1645 strings [-afov] [-@var{min-len}] [-n @var{min-len}] [-t @var{radix}] [-]
1646         [--all] [--print-file-name] [--bytes=@var{min-len}]
1647         [--radix=@var{radix}] [--target=@var{bfdname}]
1648         [--help] [--version] @var{file}@dots{}
1649 @end smallexample
1651 For each @var{file} given, @sc{gnu} @code{strings} prints the printable
1652 character sequences that are at least 4 characters long (or the number
1653 given with the options below) and are followed by an unprintable
1654 character.  By default, it only prints the strings from the initialized
1655 and loaded sections of object files; for other types of files, it prints
1656 the strings from the whole file.
1658 @code{strings} is mainly useful for determining the contents of non-text
1659 files.
1661 @table @code
1662 @item -a
1663 @itemx --all
1664 @itemx -
1665 Do not scan only the initialized and loaded sections of object files;
1666 scan the whole files.
1668 @item -f
1669 @itemx --print-file-name
1670 Print the name of the file before each string.
1672 @item --help
1673 Print a summary of the program usage on the standard output and exit.
1675 @item -@var{min-len}
1676 @itemx -n @var{min-len}
1677 @itemx --bytes=@var{min-len}
1678 Print sequences of characters that are at least @var{min-len} characters
1679 long, instead of the default 4.
1681 @item -o
1682 Like @samp{-t o}.  Some other versions of @code{strings} have @samp{-o}
1683 act like @samp{-t d} instead.  Since we can not be compatible with both
1684 ways, we simply chose one.
1686 @item -t @var{radix}
1687 @itemx --radix=@var{radix}
1688 Print the offset within the file before each string.  The single
1689 character argument specifies the radix of the offset---@samp{o} for
1690 octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
1692 @item --target=@var{bfdname}
1693 @cindex object code format
1694 Specify an object code format other than your system's default format.
1695 @xref{Target Selection}, for more information.
1697 @item -v
1698 @itemx --version
1699 Print the program version number on the standard output and exit.
1700 @end table
1702 @node strip
1703 @chapter strip
1705 @kindex strip
1706 @cindex removing symbols
1707 @cindex discarding symbols
1708 @cindex symbols, discarding
1710 @smallexample
1711 strip [ -F @var{bfdname} | --target=@var{bfdname} ]
1712       [ -I @var{bfdname} | --input-target=@var{bfdname} ]
1713       [ -O @var{bfdname} | --output-target=@var{bfdname} ]
1714       [ -s | --strip-all ] [ -S | -g | --strip-debug ]
1715       [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
1716       [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
1717       [ -x | --discard-all ] [ -X | --discard-locals ]
1718       [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
1719       [ -o @var{file} ] [ -p | --preserve-dates ]
1720       [ -v | --verbose ]  [ -V | --version ]  [ --help ]
1721       @var{objfile}@dots{}
1722 @end smallexample
1724 @sc{gnu} @code{strip} discards all symbols from object files
1725 @var{objfile}.  The list of object files may include archives.
1726 At least one object file must be given.
1728 @code{strip} modifies the files named in its argument,
1729 rather than writing modified copies under different names.
1731 @table @code
1732 @item -F @var{bfdname}
1733 @itemx --target=@var{bfdname}
1734 Treat the original @var{objfile} as a file with the object
1735 code format @var{bfdname}, and rewrite it in the same format.
1736 @xref{Target Selection}, for more information.
1738 @item --help
1739 Show a summary of the options to @code{strip} and exit.
1741 @item -I @var{bfdname}  
1742 @itemx --input-target=@var{bfdname}
1743 Treat the original @var{objfile} as a file with the object
1744 code format @var{bfdname}.
1745 @xref{Target Selection}, for more information.
1747 @item -O @var{bfdname}
1748 @itemx --output-target=@var{bfdname}
1749 Replace @var{objfile} with a file in the output format @var{bfdname}.
1750 @xref{Target Selection}, for more information.
1752 @item -R @var{sectionname}
1753 @itemx --remove-section=@var{sectionname}
1754 Remove any section named @var{sectionname} from the output file.  This
1755 option may be given more than once.  Note that using this option
1756 inappropriately may make the output file unusable.
1758 @item -s
1759 @itemx --strip-all
1760 Remove all symbols.
1762 @item -g
1763 @itemx -S
1764 @itemx --strip-debug
1765 Remove debugging symbols only.
1767 @item --strip-unneeded
1768 Remove all symbols that are not needed for relocation processing.
1770 @item -K @var{symbolname}
1771 @itemx --keep-symbol=@var{symbolname}
1772 Keep only symbol @var{symbolname} from the source file.  This option may
1773 be given more than once.
1775 @item -N @var{symbolname}
1776 @itemx --strip-symbol=@var{symbolname}
1777 Remove symbol @var{symbolname} from the source file. This option may be
1778 given more than once, and may be combined with strip options other than
1779 @code{-K}.
1781 @item -o @var{file}
1782 Put the stripped output in @var{file}, rather than replacing the
1783 existing file.  When this argument is used, only one @var{objfile}
1784 argument may be specified.
1786 @item -p
1787 @itemx --preserve-dates
1788 Preserve the access and modification dates of the file.
1790 @item -x
1791 @itemx --discard-all
1792 Remove non-global symbols.
1794 @item -X
1795 @itemx --discard-locals
1796 Remove compiler-generated local symbols.
1797 (These usually start with @samp{L} or @samp{.}.)
1799 @item -V
1800 @itemx --version
1801 Show the version number for @code{strip}.
1803 @item -v
1804 @itemx --verbose
1805 Verbose output: list all object files modified.  In the case of
1806 archives, @samp{strip -v} lists all members of the archive.
1807 @end table
1809 @node c++filt, addr2line, strip, Top
1810 @chapter c++filt
1812 @kindex c++filt
1813 @cindex demangling C++ symbols
1815 @smallexample
1816 c++filt [ -_ | --strip-underscores ]
1817         [ -j | --java ]
1818         [ -n | --no-strip-underscores ]
1819         [ -s @var{format} | --format=@var{format} ]
1820         [ --help ]  [ --version ]  [ @var{symbol}@dots{} ]
1821 @end smallexample
1823 @kindex cxxfilt
1824 The C++ and Java languages provides function overloading, which means
1825 that you can write many functions with the same name (providing each
1826 takes parameters of different types).  All C++ and Java function names
1827 are encoded into a low-level assembly label (this process is known as
1828 @dfn{mangling}). The @code{c++filt}
1829 @footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
1830 MS-DOS this program is named @code{cxxfilt}.}
1831 program does the inverse mapping: it decodes (@dfn{demangles}) low-level
1832 names into user-level names so that the linker can keep these overloaded
1833 functions from clashing.
1835 Every alphanumeric word (consisting of letters, digits, underscores,
1836 dollars, or periods) seen in the input is a potential label.  If the
1837 label decodes into a C++ name, the C++ name replaces the low-level
1838 name in the output.
1840 You can use @code{c++filt} to decipher individual symbols:
1842 @example
1843 c++filt @var{symbol}
1844 @end example
1846 If no @var{symbol} arguments are given, @code{c++filt} reads symbol
1847 names from the standard input and writes the demangled names to the
1848 standard output.  All results are printed on the standard output.
1850 @table @code
1851 @item -_
1852 @itemx --strip-underscores
1853 On some systems, both the C and C++ compilers put an underscore in front
1854 of every name.  For example, the C name @code{foo} gets the low-level
1855 name @code{_foo}.  This option removes the initial underscore.  Whether
1856 @code{c++filt} removes the underscore by default is target dependent.
1858 @item -j
1859 @itemx --java
1860 Prints demangled names using Java syntax.  The default is to use C++
1861 syntax.
1863 @item -n
1864 @itemx --no-strip-underscores
1865 Do not remove the initial underscore.
1867 @item -s @var{format}
1868 @itemx --format=@var{format}
1869 @sc{gnu} @code{nm} can decode three different methods of mangling, used by
1870 different C++ compilers.  The argument to this option selects which
1871 method it uses:
1873 @table @code
1874 @item gnu
1875 the one used by the @sc{gnu} compiler (the default method)
1876 @item lucid
1877 the one used by the Lucid compiler
1878 @item arm
1879 the one specified by the C++ Annotated Reference Manual
1880 @item hp
1881 the one used by the HP compiler
1882 @item edg
1883 the one used by the EDG compiler
1884 @item gnu-new-abi
1885 the one used by the @sc{gnu} compiler with the new ABI.
1886 @end table
1888 @item --help
1889 Print a summary of the options to @code{c++filt} and exit.
1891 @item --version
1892 Print the version number of @code{c++filt} and exit.
1893 @end table
1895 @quotation
1896 @emph{Warning:} @code{c++filt} is a new utility, and the details of its
1897 user interface are subject to change in future releases.  In particular,
1898 a command-line option may be required in the the future to decode a name
1899 passed as an argument on the command line; in other words, 
1901 @example
1902 c++filt @var{symbol}
1903 @end example
1905 @noindent
1906 may in a future release become
1908 @example
1909 c++filt @var{option} @var{symbol}
1910 @end example
1911 @end quotation
1913 @node addr2line
1914 @chapter addr2line
1916 @kindex addr2line
1917 @cindex address to file name and line number
1919 @smallexample
1920 addr2line [ -b @var{bfdname} | --target=@var{bfdname} ]
1921           [ -C | --demangle[=@var{style} ]
1922           [ -e @var{filename} | --exe=@var{filename} ]
1923           [ -f | --functions ] [ -s | --basename ]
1924           [ -H | --help ] [ -V | --version ]
1925           [ addr addr ... ]
1926 @end smallexample
1928 @code{addr2line} translates program addresses into file names and line
1929 numbers.  Given an address and an executable, it uses the debugging
1930 information in the executable to figure out which file name and line
1931 number are associated with a given address.
1933 The executable to use is specified with the @code{-e} option.  The
1934 default is the file @file{a.out}.
1936 @code{addr2line} has two modes of operation.
1938 In the first, hexadecimal addresses are specified on the command line,
1939 and @code{addr2line} displays the file name and line number for each
1940 address.
1942 In the second, @code{addr2line} reads hexadecimal addresses from
1943 standard input, and prints the file name and line number for each
1944 address on standard output.  In this mode, @code{addr2line} may be used
1945 in a pipe to convert dynamically chosen addresses.
1947 The format of the output is @samp{FILENAME:LINENO}.  The file name and
1948 line number for each address is printed on a separate line.  If the
1949 @code{-f} option is used, then each @samp{FILENAME:LINENO} line is
1950 preceded by a @samp{FUNCTIONNAME} line which is the name of the function
1951 containing the address.
1953 If the file name or function name can not be determined,
1954 @code{addr2line} will print two question marks in their place.  If the
1955 line number can not be determined, @code{addr2line} will print 0.
1957 The long and short forms of options, shown here as alternatives, are
1958 equivalent.
1960 @table @code
1961 @item -b @var{bfdname}
1962 @itemx --target=@var{bfdname}
1963 @cindex object code format
1964 Specify that the object-code format for the object files is
1965 @var{bfdname}.
1967 @item -C
1968 @itemx --demangle[=@var{style}]
1969 @cindex demangling in objdump
1970 Decode (@dfn{demangle}) low-level symbol names into user-level names.
1971 Besides removing any initial underscore prepended by the system, this
1972 makes C++ function names readable.  Different compilers have different
1973 mangling styles. The optional demangling style argument can be used to 
1974 choose an appropriate demangling style for your compiler. @xref{c++filt}, 
1975 for more information on demangling.
1977 @item -e @var{filename}
1978 @itemx --exe=@var{filename}
1979 Specify the name of the executable for which addresses should be
1980 translated.  The default file is @file{a.out}.
1982 @item -f
1983 @itemx --functions
1984 Display function names as well as file and line number information.
1986 @item -s
1987 @itemx --basenames
1988 Display only the base of each file name.
1989 @end table
1991 @node nlmconv
1992 @chapter nlmconv
1994 @code{nlmconv} converts a relocatable object file into a NetWare
1995 Loadable Module.
1997 @ignore
1998 @code{nlmconv} currently works with @samp{i386} object
1999 files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
2000 object files in @sc{elf}, or @code{a.out} format@footnote{
2001 @code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
2002 format in the Binary File Descriptor library.  It has only been tested
2003 with the above formats.}.
2004 @end ignore
2006 @quotation
2007 @emph{Warning:} @code{nlmconv} is not always built as part of the binary
2008 utilities, since it is only useful for NLM targets.
2009 @end quotation
2011 @smallexample
2012 nlmconv [ -I @var{bfdname} | --input-target=@var{bfdname} ]
2013         [ -O @var{bfdname} | --output-target=@var{bfdname} ]
2014         [ -T @var{headerfile} | --header-file=@var{headerfile} ]
2015         [ -d | --debug]  [ -l @var{linker} | --linker=@var{linker} ]
2016         [ -h | --help ]  [ -V | --version ]
2017         @var{infile} @var{outfile}
2018 @end smallexample
2020 @code{nlmconv} converts the relocatable @samp{i386} object file
2021 @var{infile} into the NetWare Loadable Module @var{outfile}, optionally
2022 reading @var{headerfile} for NLM header information.  For instructions
2023 on writing the NLM command file language used in header files, see the
2024 @samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
2025 Development and Tools Overview}, which is part of the NLM Software
2026 Developer's Kit (``NLM SDK''), available from Novell, Inc.
2027 @code{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
2028 @var{infile}; see @ref{BFD,,BFD,ld.info,Using LD}, for
2029 more information.
2031 @code{nlmconv} can perform a link step.  In other words, you can list
2032 more than one object file for input if you list them in the definitions
2033 file (rather than simply specifying one input file on the command line).
2034 In this case, @code{nlmconv} calls the linker for you.
2036 @table @code
2037 @item -I @var{bfdname}
2038 @itemx --input-target=@var{bfdname}
2039 Object format of the input file.  @code{nlmconv} can usually determine
2040 the format of a given file (so no default is necessary).
2041 @xref{Target Selection}, for more information.
2043 @item -O @var{bfdname}
2044 @itemx --output-target=@var{bfdname}
2045 Object format of the output file.  @code{nlmconv} infers the output
2046 format based on the input format, e.g. for a @samp{i386} input file the
2047 output format is @samp{nlm32-i386}.
2048 @xref{Target Selection}, for more information.
2050 @item -T @var{headerfile}
2051 @itemx --header-file=@var{headerfile}
2052 Reads @var{headerfile} for NLM header information.  For instructions on
2053 writing the NLM command file language used in header files, see@ see the
2054 @samp{linkers} section, of the @cite{NLM Development and Tools
2055 Overview}, which is part of the NLM Software Developer's Kit, available
2056 from Novell, Inc.
2058 @item -d
2059 @itemx --debug
2060 Displays (on standard error) the linker command line used by @code{nlmconv}.
2062 @item -l @var{linker}
2063 @itemx --linker=@var{linker}
2064 Use @var{linker} for any linking.  @var{linker} can be an absolute or a
2065 relative pathname.
2067 @item -h
2068 @itemx --help
2069 Prints a usage summary.
2071 @item -V
2072 @itemx --version
2073 Prints the version number for @code{nlmconv}.
2074 @end table
2076 @node windres
2077 @chapter windres
2079 @code{windres} may be used to manipulate Windows resources.
2081 @quotation
2082 @emph{Warning:} @code{windres} is not always built as part of the binary
2083 utilities, since it is only useful for Windows targets.
2084 @end quotation
2086 @smallexample
2087 windres [options] [input-file] [output-file]
2088 @end smallexample
2090 @code{windres} reads resources from an input file and copies them into
2091 an output file.  Either file may be in one of three formats:
2093 @table @code
2094 @item rc
2095 A text format read by the Resource Compiler.
2097 @item res
2098 A binary format generated by the Resource Compiler.
2100 @item coff
2101 A COFF object or executable.
2102 @end table
2104 The exact description of these different formats is available in
2105 documentation from Microsoft.
2107 When @code{windres} converts from the @code{rc} format to the @code{res}
2108 format, it is acting like the Windows Resource Compiler.  When
2109 @code{windres} converts from the @code{res} format to the @code{coff}
2110 format, it is acting like the Windows @code{CVTRES} program.
2112 When @code{windres} generates an @code{rc} file, the output is similar
2113 but not identical to the format expected for the input.  When an input
2114 @code{rc} file refers to an external filename, an output @code{rc} file
2115 will instead include the file contents.
2117 If the input or output format is not specified, @code{windres} will
2118 guess based on the file name, or, for the input file, the file contents.
2119 A file with an extension of @file{.rc} will be treated as an @code{rc}
2120 file, a file with an extension of @file{.res} will be treated as a
2121 @code{res} file, and a file with an extension of @file{.o} or
2122 @file{.exe} will be treated as a @code{coff} file.
2124 If no output file is specified, @code{windres} will print the resources
2125 in @code{rc} format to standard output.
2127 The normal use is for you to write an @code{rc} file, use @code{windres}
2128 to convert it to a COFF object file, and then link the COFF file into
2129 your application.  This will make the resources described in the
2130 @code{rc} file available to Windows.
2132 @table @code
2133 @item -i @var{filename}
2134 @itemx --input @var{filename}
2135 The name of the input file.  If this option is not used, then
2136 @code{windres} will use the first non-option argument as the input file
2137 name.  If there are no non-option arguments, then @code{windres} will
2138 read from standard input.  @code{windres} can not read a COFF file from
2139 standard input.
2141 @item -o @var{filename}
2142 @itemx --output @var{filename}
2143 The name of the output file.  If this option is not used, then
2144 @code{windres} will use the first non-option argument, after any used
2145 for the input file name, as the output file name.  If there is no
2146 non-option argument, then @code{windres} will write to standard output.
2147 @code{windres} can not write a COFF file to standard output.
2149 @item -I @var{format}
2150 @itemx --input-format @var{format}
2151 The input format to read.  @var{format} may be @samp{res}, @samp{rc}, or
2152 @samp{coff}.  If no input format is specified, @code{windres} will
2153 guess, as described above.
2155 @item -O @var{format}
2156 @itemx --output-format @var{format}
2157 The output format to generate.  @var{format} may be @samp{res},
2158 @samp{rc}, or @samp{coff}.  If no output format is specified,
2159 @code{windres} will guess, as described above.
2161 @item -F @var{target}
2162 @itemx --target @var{target}
2163 Specify the BFD format to use for a COFF file as input or output.  This
2164 is a BFD target name; you can use the @code{--help} option to see a list
2165 of supported targets.  Normally @code{windres} will use the default
2166 format, which is the first one listed by the @code{--help} option.
2167 @ref{Target Selection}.
2169 @item --preprocessor @var{program}
2170 When @code{windres} reads an @code{rc} file, it runs it through the C
2171 preprocessor first.  This option may be used to specify the preprocessor
2172 to use, including any leading arguments.  The default preprocessor
2173 argument is @code{gcc -E -xc-header -DRC_INVOKED}.
2175 @item --include-dir @var{directory}
2176 Specify an include directory to use when reading an @code{rc} file.
2177 @code{windres} will pass this to the preprocessor as an @code{-I}
2178 option.  @code{windres} will also search this directory when looking for
2179 files named in the @code{rc} file.
2181 @item -D @var{target}
2182 @itemx --define @var{sym}[=@var{val}]
2183 Specify a @code{-D} option to pass to the preprocessor when reading an
2184 @code{rc} file.
2186 @item -v
2187 Enable verbose mode.  This tells you what the preprocessor is if you
2188 didn't specify one.
2190 @item --language @var{val}
2191 Specify the default language to use when reading an @code{rc} file.
2192 @var{val} should be a hexadecimal language code.  The low eight bits are
2193 the language, and the high eight bits are the sublanguage.
2195 @item --use-temp-file
2196 Use a temporary file to instead of using popen to read the output of
2197 the preprocessor. Use this option if the popen implementation is buggy 
2198 on the host (eg., certain non-English language versions of Windows 95 and 
2199 Windows 98 are known to have buggy popen where the output will instead
2200 go the console).
2202 @item --no-use-temp-file
2203 Use popen, not a temporary file, to read the output of the preprocessor.
2204 This is the default behaviour.
2206 @item --help
2207 Prints a usage summary.
2209 @item --version
2210 Prints the version number for @code{windres}.
2212 @item --yydebug
2213 If @code{windres} is compiled with @code{YYDEBUG} defined as @code{1},
2214 this will turn on parser debugging.
2215 @end table
2218 @node dlltool
2219 @chapter Create files needed to build and use DLLs
2220 @cindex DLL
2221 @kindex dlltool
2223 @code{dlltool} may be used to create the files needed to build and use
2224 dynamic link libraries (DLLs).
2226 @quotation
2227 @emph{Warning:} @code{dlltool} is not always built as part of the binary
2228 utilities, since it is only useful for those targets which support DLLs.
2229 @end quotation
2231 @smallexample
2232 dlltool [-d|--input-def @var{def-file-name}]
2233         [-b|--base-file @var{base-file-name}]
2234         [-e|--output-exp @var{exports-file-name}]
2235         [-z|--output-def @var{def-file-name}]
2236         [-l|--output-lib @var{library-file-name}]        
2237         [--export-all-symbols] [--no-export-all-symbols]
2238         [--exclude-symbols @var{list}]
2239         [--no-default-excludes]
2240         [-S|--as @var{path-to-assembler}] [-f|--as-flags @var{options}]
2241         [-D|--dllname @var{name}] [-m|--machine @var{machine}]
2242         [-a|--add-indirect] [-U|--add-underscore] [-k|--kill-at]
2243         [-A|--add-stdcall-alias]
2244         [-x|--no-idata4] [-c|--no-idata5] [-i|--interwork]
2245         [-n|--nodelete] [-v|--verbose] [-h|--help] [-V|--version]
2246         [object-file @dots{}]
2247 @end smallexample
2249 @code{dlltool} reads its inputs, which can come from the @samp{-d} and
2250 @samp{-b} options as well as object files specified on the command
2251 line.  It then processes these inputs and if the @samp{-e} option has
2252 been specified it creates a exports file.  If the @samp{-l} option
2253 has been specified it creates a library file and if the @samp{-z} option
2254 has been specified it creates a def file.  Any or all of the -e, -l
2255 and -z options can be present in one invocation of dlltool.
2257 When creating a DLL, along with the source for the DLL, it is necessary
2258 to have three other files.  @code{dlltool} can help with the creation of
2259 these files.
2261 The first file is a @samp{.def} file which specifies which functions are
2262 exported from the DLL, which functions the DLL imports, and so on.  This
2263 is a text file and can be created by hand, or @code{dlltool} can be used
2264 to create it using the @samp{-z} option.  In this case @code{dlltool}
2265 will scan the object files specified on its command line looking for
2266 those functions which have been specially marked as being exported and
2267 put entries for them in the .def file it creates.
2269 In order to mark a function as being exported from a DLL, it needs to
2270 have an @samp{-export:<name_of_function>} entry in the @samp{.drectve}
2271 section of the object file.  This can be done in C by using the
2272 asm() operator:
2274 @smallexample
2275   asm (".section .drectve");  
2276   asm (".ascii \"-export:my_func\"");
2278   int my_func (void) @{ @dots{} @}
2279 @end smallexample
2281 The second file needed for DLL creation is an exports file.  This file
2282 is linked with the object files that make up the body of the DLL and it
2283 handles the interface between the DLL and the outside world.  This is a
2284 binary file and it can be created by giving the @samp{-e} option to
2285 @code{dlltool} when it is creating or reading in a .def file. 
2287 The third file needed for DLL creation is the library file that programs
2288 will link with in order to access the functions in the DLL.  This file
2289 can be created by giving the @samp{-l} option to dlltool when it
2290 is creating or reading in a .def file.
2292 @code{dlltool} builds the library file by hand, but it builds the
2293 exports file by creating temporary files containing assembler statements
2294 and then assembling these.  The @samp{-S} command line option can be
2295 used to specify the path to the assembler that dlltool will use,
2296 and the @samp{-f} option can be used to pass specific flags to that
2297 assembler.  The @samp{-n} can be used to prevent dlltool from deleting
2298 these temporary assembler files when it is done, and if @samp{-n} is
2299 specified twice then this will prevent dlltool from deleting the
2300 temporary object files it used to build the library.
2302 Here is an example of creating a DLL from a source file @samp{dll.c} and
2303 also creating a program (from an object file called @samp{program.o})
2304 that uses that DLL:
2306 @smallexample
2307   gcc -c dll.c
2308   dlltool -e exports.o -l dll.lib dll.o
2309   gcc dll.o exports.o -o dll.dll
2310   gcc program.o dll.lib -o program
2311 @end smallexample
2313 The command line options have the following meanings:
2315 @table @code
2317 @item -d @var{filename}
2318 @itemx --input-def @var{filename}
2319 @cindex input .def file
2320 Specifies the name of a .def file to be read in and processed.
2322 @item -b @var{filename}
2323 @itemx --base-file @var{filename}
2324 @cindex base files
2325 Specifies the name of a base file to be read in and processed.  The
2326 contents of this file will be added to the relocation section in the
2327 exports file generated by dlltool.
2329 @item -e @var{filename}
2330 @itemx --output-exp @var{filename}
2331 Specifies the name of the export file to be created by dlltool.
2333 @item -z @var{filename}
2334 @itemx --output-def @var{filename}
2335 Specifies the name of the .def file to be created by dlltool.
2337 @item -l @var{filename}
2338 @itemx --output-lib @var{filename}
2339 Specifies the name of the library file to be created by dlltool.
2341 @item --export-all-symbols
2342 Treat all global and weak defined symbols found in the input object
2343 files as symbols to be exported.  There is a small list of symbols which
2344 are not exported by default; see the @code{--no-default-excludes}
2345 option.  You may add to the list of symbols to not export by using the
2346 @code{--exclude-symbols} option.
2348 @item --no-export-all-symbols
2349 Only export symbols explicitly listed in an input .def file or in
2350 @samp{.drectve} sections in the input object files.  This is the default
2351 behaviour.  The @samp{.drectve} sections are created by @samp{dllexport}
2352 attributes in the source code.
2354 @item --exclude-symbols @var{list}
2355 Do not export the symbols in @var{list}.  This is a list of symbol names
2356 separated by comma or colon characters.  The symbol names should not
2357 contain a leading underscore.  This is only meaningful when
2358 @code{--export-all-symbols} is used.
2360 @item --no-default-excludes
2361 When @code{--export-all-symbols} is used, it will by default avoid
2362 exporting certain special symbols.  The current list of symbols to avoid
2363 exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
2364 @samp{impure_ptr}.  You may use the @code{--no-default-excludes} option
2365 to go ahead and export these special symbols.  This is only meaningful
2366 when @code{--export-all-symbols} is used.
2368 @item -S @var{path}
2369 @itemx --as @var{path}
2370 Specifies the path, including the filename, of the assembler to be used
2371 to create the exports file.
2373 @item -f @var{switches}
2374 @itemx --as-flags @var{switches}
2375 Specifies any specific command line switches to be passed to the
2376 assembler when building the exports file.  This option will work even if
2377 the @samp{-S} option is not used.  This option only takes one argument,
2378 and if it occurs more than once on the command line, then later
2379 occurrences will override earlier occurrences.  So if it is necessary to
2380 pass multiple switches to the assembler they should be enclosed in
2381 double quotes.
2383 @item -D @var{name}
2384 @itemx --dll-name @var{name}
2385 Specifies the name to be stored in the .def file as the name of the DLL
2386 when the @samp{-e} option is used.  If this option is not present, then
2387 the filename given to the @samp{-e} option will be used as the name of
2388 the DLL.
2390 @item -m @var{machine}
2391 @itemx -machine @var{machine}
2392 Specifies the type of machine for which the library file should be
2393 built.  @code{dlltool} has a built in default type, depending upon how
2394 it was created, but this option can be used to override that.  This is
2395 normally only useful when creating DLLs for an ARM processor, when the
2396 contents of the DLL are actually encode using THUMB instructions.
2398 @item -a
2399 @itemx --add-indirect
2400 Specifies that when @code{dlltool} is creating the exports file it
2401 should add a section which allows the exported functions to be
2402 referenced without using the import library.  Whatever the hell that
2403 means! 
2405 @item -U
2406 @itemx --add-underscore
2407 Specifies that when @code{dlltool} is creating the exports file it
2408 should prepend an underscore to the names of the exported functions. 
2410 @item -k
2411 @itemx --kill-at
2412 Specifies that when @code{dlltool} is creating the exports file it
2413 should not append the string @samp{@@ <number>}.  These numbers are
2414 called ordinal numbers and they represent another way of accessing the
2415 function in a DLL, other than by name.
2417 @item -A
2418 @itemx --add-stdcall-alias
2419 Specifies that when @code{dlltool} is creating the exports file it
2420 should add aliases for stdcall symbols without @samp{@@ <number>}
2421 in addition to the symbols with @samp{@@ <number>}.
2423 @item -x
2424 @itemx --no-idata4
2425 Specifies that when @code{dlltool} is creating the exports and library
2426 files it should omit the .idata4 section.  This is for compatibility
2427 with certain operating systems.
2429 @item -c
2430 @itemx --no-idata5
2431 Specifies that when @code{dlltool} is creating the exports and library
2432 files it should omit the .idata5 section.  This is for compatibility
2433 with certain operating systems.
2435 @item -i
2436 @itemx --interwork
2437 Specifies that @code{dlltool} should mark the objects in the library
2438 file and exports file that it produces as supporting interworking
2439 between ARM and THUMB code.
2441 @item -n
2442 @itemx --nodelete
2443 Makes @code{dlltool} preserve the temporary assembler files it used to
2444 create the exports file.  If this option is repeated then dlltool will
2445 also preserve the temporary object files it uses to create the library
2446 file. 
2448 @item -v
2449 @itemx --verbose
2450 Make dlltool describe what it is doing.
2452 @item -h
2453 @itemx --help
2454 Displays a list of command line options and then exits.
2456 @item -V
2457 @itemx --version
2458 Displays dlltool's version number and then exits.
2460 @end table
2462 @node readelf
2463 @chapter readelf
2465 @cindex ELF file information
2466 @kindex readelf
2468 @smallexample
2469 readelf [ -a | --all ] 
2470         [ -h | --file-header]
2471         [ -l | --program-headers | --segments]
2472         [ -S | --section-headers | --sections]
2473         [ -e | --headers]
2474         [ -s | --syms | --symbols]
2475         [ -n | --notes]
2476         [ -r | --relocs]
2477         [ -d | --dynamic]
2478         [ -V | --version-info]
2479         [ -D | --use-dynamic]
2480         [ -x <number> | --hex-dump=<number>]
2481         [ -w[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
2482         [      --histogram]
2483         [ -v | --version]
2484         [ -H | --help]
2485         @var{elffile}@dots{}
2486 @end smallexample
2488 @code{readelf} displays information about one or more ELF format object
2489 files.  The options control what particular information to display.
2491 @var{elffile}@dots{} are the object files to be examined.  At the
2492 moment, @code{readelf} does not support examining archives, nor does it
2493 support examing 64 bit ELF files.
2495 The long and short forms of options, shown here as alternatives, are
2496 equivalent.  At least one option besides @samp{-v} or @samp{-H} must be
2497 given. 
2499 @table @code
2500 @item -a
2501 @itemx --all
2502 Equivalent to specifiying @samp{--file-header},
2503 @samp{--program-headers}, @samp{--sections}, @samp{--symbols},
2504 @samp{--relocs}, @samp{--dynamic}, @samp{--notes} and
2505 @samp{--version-info}. 
2507 @item -h
2508 @itemx --file-header
2509 @cindex ELF file header information
2510 Displays the information contained in the ELF header at the start of the
2511 file.
2513 @item -l
2514 @itemx --program-headers
2515 @itemx --segments
2516 @cindex ELF program header information
2517 @cindex ELF segment information
2518 Displays the information contained in the file's segment headers, if it
2519 has any.
2521 @item -S
2522 @itemx --sections
2523 @itemx --section-headers
2524 @cindex ELF section information
2525 Displays the information contained in the file's section headers, if it
2526 has any.
2528 @item -s
2529 @itemx --symbols
2530 @itemx --syms
2531 @cindex ELF symbol table information
2532 Displays the entries in symbol table section of the file, if it has one.
2534 @item -e
2535 @itemx --headers
2536 Display all the headers in the file.  Equivalent to @samp{-h -l -S}.
2538 @item -n
2539 @itemx --notes
2540 @cindex ELF core notes
2541 Displays the contents of the NOTE segment, if it exists.
2543 @item -r
2544 @itemx --relocs
2545 @cindex ELF reloc information
2546 Displays the contents of the file's relocation section, if it ha one.
2548 @item -d
2549 @itemx --dynamic
2550 @cindex ELF dynamic section information
2551 Displays the contents of the file's dynamic section, if it has one.
2553 @item -V
2554 @itemx --version-info
2555 @cindex ELF version sections informations
2556 Displays the contents of the version sections in the file, it they
2557 exist.
2559 @item -D
2560 @itemx --use-dynamic
2561 When displaying symbols, this option makes @code{readelf} use the
2562 symbol table in the file's dynamic section, rather than the one in the
2563 symbols section.
2565 @item -x <number>
2566 @itemx --hex-dump=<number>
2567 Displays the contents of the indicated section as a hexadecimal dump.
2569 @item -w[liaprf]
2570 @itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
2571 Displays the contents of the debug sections in the file, if any are
2572 present.  If one of the optional letters or words follows the switch
2573 then only data found in those specific sections will be dumped.
2575 @item --histogram
2576 Display a histogram of bucket list lengths when displaying the contents
2577 of the symbol tables.
2579 @item -v
2580 @itemx --version
2581 Display the version number of readelf.
2583 @item -H
2584 @itemx --help
2585 Display the command line options understood by @code{readelf}.
2587 @end table
2590 @node Selecting The Target System
2591 @chapter Selecting the target system
2593 You can specify three aspects of the target system to the @sc{gnu}
2594 binary file utilities, each in several ways:
2596 @itemize @bullet
2597 @item
2598 the target
2600 @item
2601 the architecture
2603 @item
2604 the linker emulation (which applies to the linker only)
2605 @end itemize
2607 In the following summaries, the lists of ways to specify values are in
2608 order of decreasing precedence.  The ways listed first override those
2609 listed later.
2611 The commands to list valid values only list the values for which the
2612 programs you are running were configured.  If they were configured with
2613 @samp{--enable-targets=all}, the commands list most of the available
2614 values, but a few are left out; not all targets can be configured in at
2615 once because some of them can only be configured @dfn{native} (on hosts
2616 with the same type as the target system).
2618 @menu
2619 * Target Selection::            
2620 * Architecture Selection::      
2621 * Linker Emulation Selection::  
2622 @end menu
2624 @node Target Selection
2625 @section Target Selection
2627 A @dfn{target} is an object file format.  A given target may be
2628 supported for multiple architectures (@pxref{Architecture Selection}).
2629 A target selection may also have variations for different operating
2630 systems or architectures.
2632 The command to list valid target values is @samp{objdump -i}
2633 (the first column of output contains the relevant information).
2635 Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
2636 @samp{a.out-sunos-big}.
2638 You can also specify a target using a configuration triplet.  This is
2639 the same sort of name that is passed to @file{configure} to specify a
2640 target.  When you use a configuration triplet as an argument, it must be
2641 fully canonicalized.  You can see the canonical version of a triplet by
2642 running the shell script @file{config.sub} which is included with the
2643 sources.
2645 Some sample configuration triplets are: @samp{m68k-hp-bsd},
2646 @samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
2648 @subheading @code{objdump} Target
2650 Ways to specify:
2652 @enumerate
2653 @item
2654 command line option: @samp{-b} or @samp{--target}
2656 @item
2657 environment variable @code{GNUTARGET}
2659 @item
2660 deduced from the input file
2661 @end enumerate
2663 @subheading @code{objcopy} and @code{strip} Input Target
2665 Ways to specify:
2667 @enumerate
2668 @item
2669 command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
2671 @item
2672 environment variable @code{GNUTARGET}
2674 @item
2675 deduced from the input file
2676 @end enumerate
2678 @subheading @code{objcopy} and @code{strip} Output Target
2680 Ways to specify:
2682 @enumerate
2683 @item
2684 command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
2686 @item
2687 the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
2689 @item
2690 environment variable @code{GNUTARGET}
2692 @item
2693 deduced from the input file
2694 @end enumerate
2696 @subheading @code{nm}, @code{size}, and @code{strings} Target
2698 Ways to specify:
2700 @enumerate
2701 @item
2702 command line option: @samp{--target}
2704 @item
2705 environment variable @code{GNUTARGET}
2707 @item
2708 deduced from the input file
2709 @end enumerate
2711 @subheading Linker Input Target
2713 Ways to specify:
2715 @enumerate
2716 @item
2717 command line option: @samp{-b} or @samp{--format}
2718 (@pxref{Options,,Options,ld.info,Using LD})
2720 @item
2721 script command @code{TARGET}
2722 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2724 @item
2725 environment variable @code{GNUTARGET}
2726 (@pxref{Environment,,Environment,ld.info,Using LD})
2728 @item
2729 the default target of the selected linker emulation
2730 (@pxref{Linker Emulation Selection})
2731 @end enumerate
2733 @subheading Linker Output Target
2735 Ways to specify:
2737 @enumerate
2738 @item
2739 command line option: @samp{-oformat}
2740 (@pxref{Options,,Options,ld.info,Using LD})
2742 @item
2743 script command @code{OUTPUT_FORMAT}
2744 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2746 @item
2747 the linker input target (see ``Linker Input Target'' above)
2748 @end enumerate
2750 @node Architecture Selection
2751 @section Architecture selection
2753 An @dfn{architecture} is a type of @sc{cpu} on which an object file is
2754 to run.  Its name may contain a colon, separating the name of the
2755 processor family from the name of the particular @sc{cpu}.
2757 The command to list valid architecture values is @samp{objdump -i} (the
2758 second column contains the relevant information).
2760 Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
2762 @subheading @code{objdump} Architecture
2764 Ways to specify:
2766 @enumerate
2767 @item
2768 command line option: @samp{-m} or @samp{--architecture}
2770 @item
2771 deduced from the input file
2772 @end enumerate
2774 @subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
2776 Ways to specify:
2778 @enumerate
2779 @item
2780 deduced from the input file
2781 @end enumerate
2783 @subheading Linker Input Architecture
2785 Ways to specify:
2787 @enumerate
2788 @item
2789 deduced from the input file
2790 @end enumerate
2792 @subheading Linker Output Architecture
2794 Ways to specify:
2796 @enumerate
2797 @item
2798 script command @code{OUTPUT_ARCH}
2799 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2801 @item
2802 the default architecture from the linker output target
2803 (@pxref{Target Selection})
2804 @end enumerate
2806 @node Linker Emulation Selection
2807 @section Linker emulation selection
2809 A linker @dfn{emulation} is a ``personality'' of the linker, which gives
2810 the linker default values for the other aspects of the target system.
2811 In particular, it consists of
2813 @itemize @bullet
2814 @item
2815 the linker script
2817 @item
2818 the target
2820 @item
2821 several ``hook'' functions that are run at certain stages of the linking
2822 process to do special things that some targets require
2823 @end itemize
2825 The command to list valid linker emulation values is @samp{ld -V}.
2827 Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
2829 Ways to specify:
2831 @enumerate
2832 @item
2833 command line option: @samp{-m}
2834 (@pxref{Options,,Options,ld.info,Using LD})
2836 @item
2837 environment variable @code{LDEMULATION}
2839 @item
2840 compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
2841 which comes from @code{EMUL} in @file{config/@var{target}.mt}
2842 @end enumerate
2844 @node Reporting Bugs
2845 @chapter Reporting Bugs
2846 @cindex bugs
2847 @cindex reporting bugs
2849 Your bug reports play an essential role in making the binary utilities
2850 reliable.
2852 Reporting a bug may help you by bringing a solution to your problem, or
2853 it may not.  But in any case the principal function of a bug report is
2854 to help the entire community by making the next version of the binary
2855 utilities work better.  Bug reports are your contribution to their
2856 maintenance.
2858 In order for a bug report to serve its purpose, you must include the
2859 information that enables us to fix the bug.
2861 @menu
2862 * Bug Criteria::                Have you found a bug?
2863 * Bug Reporting::               How to report bugs
2864 @end menu
2866 @node Bug Criteria
2867 @section Have you found a bug?
2868 @cindex bug criteria
2870 If you are not sure whether you have found a bug, here are some guidelines:
2872 @itemize @bullet
2873 @cindex fatal signal
2874 @cindex crash
2875 @item
2876 If a binary utility gets a fatal signal, for any input whatever, that is
2877 a bug.  Reliable utilities never crash.
2879 @cindex error on valid input
2880 @item
2881 If a binary utility produces an error message for valid input, that is a
2882 bug.
2884 @item
2885 If you are an experienced user of binary utilities, your suggestions for
2886 improvement are welcome in any case.
2887 @end itemize
2889 @node Bug Reporting
2890 @section How to report bugs
2891 @cindex bug reports
2892 @cindex bugs, reporting
2894 A number of companies and individuals offer support for @sc{gnu}
2895 products.  If you obtained the binary utilities from a support
2896 organization, we recommend you contact that organization first.
2898 You can find contact information for many support companies and
2899 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
2900 distribution.
2902 In any event, we also recommend that you send bug reports for the binary
2903 utilities to @samp{bug-binutils@@gnu.org}.
2905 The fundamental principle of reporting bugs usefully is this:
2906 @strong{report all the facts}.  If you are not sure whether to state a
2907 fact or leave it out, state it!
2909 Often people omit facts because they think they know what causes the
2910 problem and assume that some details do not matter.  Thus, you might
2911 assume that the name of a file you use in an example does not matter.
2912 Well, probably it does not, but one cannot be sure.  Perhaps the bug is
2913 a stray memory reference which happens to fetch from the location where
2914 that pathname is stored in memory; perhaps, if the pathname were
2915 different, the contents of that location would fool the utility into
2916 doing the right thing despite the bug.  Play it safe and give a
2917 specific, complete example.  That is the easiest thing for you to do,
2918 and the most helpful.
2920 Keep in mind that the purpose of a bug report is to enable us to fix the bug if
2921 it is new to us.  Therefore, always write your bug reports on the assumption
2922 that the bug has not been reported previously.
2924 Sometimes people give a few sketchy facts and ask, ``Does this ring a
2925 bell?''  Those bug reports are useless, and we urge everyone to
2926 @emph{refuse to respond to them} except to chide the sender to report
2927 bugs properly.
2929 To enable us to fix the bug, you should include all these things:
2931 @itemize @bullet
2932 @item
2933 The version of the utility.  Each utility announces it if you start it
2934 with the @samp{--version} argument.
2936 Without this, we will not know whether there is any point in looking for
2937 the bug in the current version of the binary utilities.
2939 @item
2940 Any patches you may have applied to the source, including any patches
2941 made to the @code{BFD} library.
2943 @item
2944 The type of machine you are using, and the operating system name and
2945 version number.
2947 @item
2948 What compiler (and its version) was used to compile the utilities---e.g.
2949 ``@code{gcc-2.7}''.
2951 @item
2952 The command arguments you gave the utility to observe the bug.  To
2953 guarantee you will not omit something important, list them all.  A copy
2954 of the Makefile (or the output from make) is sufficient.
2956 If we were to try to guess the arguments, we would probably guess wrong
2957 and then we might not encounter the bug.
2959 @item
2960 A complete input file, or set of input files, that will reproduce the
2961 bug.  If the utility is reading an object file or files, then it is
2962 generally most helpful to send the actual object files, uuencoded if
2963 necessary to get them through the mail system.  Note that
2964 @samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid
2965 sending very large files to it.  Making the files available for
2966 anonymous FTP is OK.
2968 If the source files were produced exclusively using @sc{gnu} programs
2969 (e.g., @code{gcc}, @code{gas}, and/or the @sc{gnu} @code{ld}), then it
2970 may be OK to send the source files rather than the object files.  In
2971 this case, be sure to say exactly what version of @code{gcc}, or
2972 whatever, was used to produce the object files.  Also say how
2973 @code{gcc}, or whatever, was configured.
2975 @item
2976 A description of what behavior you observe that you believe is
2977 incorrect.  For example, ``It gets a fatal signal.''
2979 Of course, if the bug is that the utility gets a fatal signal, then we
2980 will certainly notice it.  But if the bug is incorrect output, we might
2981 not notice unless it is glaringly wrong.  You might as well not give us
2982 a chance to make a mistake.
2984 Even if the problem you experience is a fatal signal, you should still
2985 say so explicitly.  Suppose something strange is going on, such as your
2986 copy of the utility is out of synch, or you have encountered a bug in
2987 the C library on your system.  (This has happened!)  Your copy might
2988 crash and ours would not.  If you told us to expect a crash, then when
2989 ours fails to crash, we would know that the bug was not happening for
2990 us.  If you had not told us to expect a crash, then we would not be able
2991 to draw any conclusion from our observations.
2993 @item
2994 If you wish to suggest changes to the source, send us context diffs, as
2995 generated by @code{diff} with the @samp{-u}, @samp{-c}, or @samp{-p}
2996 option.  Always send diffs from the old file to the new file.  If you
2997 wish to discuss something in the @code{ld} source, refer to it by
2998 context, not by line number.
3000 The line numbers in our development sources will not match those in your
3001 sources.  Your line numbers would convey no useful information to us.
3002 @end itemize
3004 Here are some things that are not necessary:
3006 @itemize @bullet
3007 @item
3008 A description of the envelope of the bug.
3010 Often people who encounter a bug spend a lot of time investigating
3011 which changes to the input file will make the bug go away and which
3012 changes will not affect it.
3014 This is often time consuming and not very useful, because the way we
3015 will find the bug is by running a single example under the debugger
3016 with breakpoints, not by pure deduction from a series of examples.
3017 We recommend that you save your time for something else.
3019 Of course, if you can find a simpler example to report @emph{instead}
3020 of the original one, that is a convenience for us.  Errors in the
3021 output will be easier to spot, running under the debugger will take
3022 less time, and so on.
3024 However, simplification is not vital; if you do not want to do this,
3025 report the bug anyway and send us the entire test case you used.
3027 @item
3028 A patch for the bug.
3030 A patch for the bug does help us if it is a good one.  But do not omit
3031 the necessary information, such as the test case, on the assumption that
3032 a patch is all we need.  We might see problems with your patch and decide
3033 to fix the problem another way, or we might not understand it at all.
3035 Sometimes with programs as complicated as the binary utilities it is
3036 very hard to construct an example that will make the program follow a
3037 certain path through the code.  If you do not send us the example, we
3038 will not be able to construct one, so we will not be able to verify that
3039 the bug is fixed.
3041 And if we cannot understand what bug you are trying to fix, or why your
3042 patch should be an improvement, we will not install it.  A test case will
3043 help us to understand.
3045 @item
3046 A guess about what the bug is or what it depends on.
3048 Such guesses are usually wrong.  Even we cannot guess right about such
3049 things without first using the debugger to find the facts.
3050 @end itemize
3052 @node GNU Free Documentation License
3053 @chapter GNU Free Documentation License
3054 @cindex GNU Free Documentation License
3056                 GNU Free Documentation License
3057                 
3058                    Version 1.1, March 2000
3060  Copyright (C) 2000  Free Software Foundation, Inc.
3061   59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
3062      
3063  Everyone is permitted to copy and distribute verbatim copies
3064  of this license document, but changing it is not allowed.
3067 0. PREAMBLE
3069 The purpose of this License is to make a manual, textbook, or other
3070 written document "free" in the sense of freedom: to assure everyone
3071 the effective freedom to copy and redistribute it, with or without
3072 modifying it, either commercially or noncommercially.  Secondarily,
3073 this License preserves for the author and publisher a way to get
3074 credit for their work, while not being considered responsible for
3075 modifications made by others.
3077 This License is a kind of "copyleft", which means that derivative
3078 works of the document must themselves be free in the same sense.  It
3079 complements the GNU General Public License, which is a copyleft
3080 license designed for free software.
3082 We have designed this License in order to use it for manuals for free
3083 software, because free software needs free documentation: a free
3084 program should come with manuals providing the same freedoms that the
3085 software does.  But this License is not limited to software manuals;
3086 it can be used for any textual work, regardless of subject matter or
3087 whether it is published as a printed book.  We recommend this License
3088 principally for works whose purpose is instruction or reference.
3091 1. APPLICABILITY AND DEFINITIONS
3093 This License applies to any manual or other work that contains a
3094 notice placed by the copyright holder saying it can be distributed
3095 under the terms of this License.  The "Document", below, refers to any
3096 such manual or work.  Any member of the public is a licensee, and is
3097 addressed as "you".
3099 A "Modified Version" of the Document means any work containing the
3100 Document or a portion of it, either copied verbatim, or with
3101 modifications and/or translated into another language.
3103 A "Secondary Section" is a named appendix or a front-matter section of
3104 the Document that deals exclusively with the relationship of the
3105 publishers or authors of the Document to the Document's overall subject
3106 (or to related matters) and contains nothing that could fall directly
3107 within that overall subject.  (For example, if the Document is in part a
3108 textbook of mathematics, a Secondary Section may not explain any
3109 mathematics.)  The relationship could be a matter of historical
3110 connection with the subject or with related matters, or of legal,
3111 commercial, philosophical, ethical or political position regarding
3112 them.
3114 The "Invariant Sections" are certain Secondary Sections whose titles
3115 are designated, as being those of Invariant Sections, in the notice
3116 that says that the Document is released under this License.
3118 The "Cover Texts" are certain short passages of text that are listed,
3119 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
3120 the Document is released under this License.
3122 A "Transparent" copy of the Document means a machine-readable copy,
3123 represented in a format whose specification is available to the
3124 general public, whose contents can be viewed and edited directly and
3125 straightforwardly with generic text editors or (for images composed of
3126 pixels) generic paint programs or (for drawings) some widely available
3127 drawing editor, and that is suitable for input to text formatters or
3128 for automatic translation to a variety of formats suitable for input
3129 to text formatters.  A copy made in an otherwise Transparent file
3130 format whose markup has been designed to thwart or discourage
3131 subsequent modification by readers is not Transparent.  A copy that is
3132 not "Transparent" is called "Opaque".
3134 Examples of suitable formats for Transparent copies include plain
3135 ASCII without markup, Texinfo input format, LaTeX input format, SGML
3136 or XML using a publicly available DTD, and standard-conforming simple
3137 HTML designed for human modification.  Opaque formats include
3138 PostScript, PDF, proprietary formats that can be read and edited only
3139 by proprietary word processors, SGML or XML for which the DTD and/or
3140 processing tools are not generally available, and the
3141 machine-generated HTML produced by some word processors for output
3142 purposes only.
3144 The "Title Page" means, for a printed book, the title page itself,
3145 plus such following pages as are needed to hold, legibly, the material
3146 this License requires to appear in the title page.  For works in
3147 formats which do not have any title page as such, "Title Page" means
3148 the text near the most prominent appearance of the work's title,
3149 preceding the beginning of the body of the text.
3152 2. VERBATIM COPYING
3154 You may copy and distribute the Document in any medium, either
3155 commercially or noncommercially, provided that this License, the
3156 copyright notices, and the license notice saying this License applies
3157 to the Document are reproduced in all copies, and that you add no other
3158 conditions whatsoever to those of this License.  You may not use
3159 technical measures to obstruct or control the reading or further
3160 copying of the copies you make or distribute.  However, you may accept
3161 compensation in exchange for copies.  If you distribute a large enough
3162 number of copies you must also follow the conditions in section 3.
3164 You may also lend copies, under the same conditions stated above, and
3165 you may publicly display copies.
3168 3. COPYING IN QUANTITY
3170 If you publish printed copies of the Document numbering more than 100,
3171 and the Document's license notice requires Cover Texts, you must enclose
3172 the copies in covers that carry, clearly and legibly, all these Cover
3173 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
3174 the back cover.  Both covers must also clearly and legibly identify
3175 you as the publisher of these copies.  The front cover must present
3176 the full title with all words of the title equally prominent and
3177 visible.  You may add other material on the covers in addition.
3178 Copying with changes limited to the covers, as long as they preserve
3179 the title of the Document and satisfy these conditions, can be treated
3180 as verbatim copying in other respects.
3182 If the required texts for either cover are too voluminous to fit
3183 legibly, you should put the first ones listed (as many as fit
3184 reasonably) on the actual cover, and continue the rest onto adjacent
3185 pages.
3187 If you publish or distribute Opaque copies of the Document numbering
3188 more than 100, you must either include a machine-readable Transparent
3189 copy along with each Opaque copy, or state in or with each Opaque copy
3190 a publicly-accessible computer-network location containing a complete
3191 Transparent copy of the Document, free of added material, which the
3192 general network-using public has access to download anonymously at no
3193 charge using public-standard network protocols.  If you use the latter
3194 option, you must take reasonably prudent steps, when you begin
3195 distribution of Opaque copies in quantity, to ensure that this
3196 Transparent copy will remain thus accessible at the stated location
3197 until at least one year after the last time you distribute an Opaque
3198 copy (directly or through your agents or retailers) of that edition to
3199 the public.
3201 It is requested, but not required, that you contact the authors of the
3202 Document well before redistributing any large number of copies, to give
3203 them a chance to provide you with an updated version of the Document.
3206 4. MODIFICATIONS
3208 You may copy and distribute a Modified Version of the Document under
3209 the conditions of sections 2 and 3 above, provided that you release
3210 the Modified Version under precisely this License, with the Modified
3211 Version filling the role of the Document, thus licensing distribution
3212 and modification of the Modified Version to whoever possesses a copy
3213 of it.  In addition, you must do these things in the Modified Version:
3215 A. Use in the Title Page (and on the covers, if any) a title distinct
3216    from that of the Document, and from those of previous versions
3217    (which should, if there were any, be listed in the History section
3218    of the Document).  You may use the same title as a previous version
3219    if the original publisher of that version gives permission.
3220 B. List on the Title Page, as authors, one or more persons or entities
3221    responsible for authorship of the modifications in the Modified
3222    Version, together with at least five of the principal authors of the
3223    Document (all of its principal authors, if it has less than five).
3224 C. State on the Title page the name of the publisher of the
3225    Modified Version, as the publisher.
3226 D. Preserve all the copyright notices of the Document.
3227 E. Add an appropriate copyright notice for your modifications
3228    adjacent to the other copyright notices.
3229 F. Include, immediately after the copyright notices, a license notice
3230    giving the public permission to use the Modified Version under the
3231    terms of this License, in the form shown in the Addendum below.
3232 G. Preserve in that license notice the full lists of Invariant Sections
3233    and required Cover Texts given in the Document's license notice.
3234 H. Include an unaltered copy of this License.
3235 I. Preserve the section entitled "History", and its title, and add to
3236    it an item stating at least the title, year, new authors, and
3237    publisher of the Modified Version as given on the Title Page.  If
3238    there is no section entitled "History" in the Document, create one
3239    stating the title, year, authors, and publisher of the Document as
3240    given on its Title Page, then add an item describing the Modified
3241    Version as stated in the previous sentence.
3242 J. Preserve the network location, if any, given in the Document for
3243    public access to a Transparent copy of the Document, and likewise
3244    the network locations given in the Document for previous versions
3245    it was based on.  These may be placed in the "History" section.
3246    You may omit a network location for a work that was published at
3247    least four years before the Document itself, or if the original
3248    publisher of the version it refers to gives permission.
3249 K. In any section entitled "Acknowledgements" or "Dedications",
3250    preserve the section's title, and preserve in the section all the
3251    substance and tone of each of the contributor acknowledgements
3252    and/or dedications given therein.
3253 L. Preserve all the Invariant Sections of the Document,
3254    unaltered in their text and in their titles.  Section numbers
3255    or the equivalent are not considered part of the section titles.
3256 M. Delete any section entitled "Endorsements".  Such a section
3257    may not be included in the Modified Version.
3258 N. Do not retitle any existing section as "Endorsements"
3259    or to conflict in title with any Invariant Section.
3261 If the Modified Version includes new front-matter sections or
3262 appendices that qualify as Secondary Sections and contain no material
3263 copied from the Document, you may at your option designate some or all
3264 of these sections as invariant.  To do this, add their titles to the
3265 list of Invariant Sections in the Modified Version's license notice.
3266 These titles must be distinct from any other section titles.
3268 You may add a section entitled "Endorsements", provided it contains
3269 nothing but endorsements of your Modified Version by various
3270 parties--for example, statements of peer review or that the text has
3271 been approved by an organization as the authoritative definition of a
3272 standard.
3274 You may add a passage of up to five words as a Front-Cover Text, and a
3275 passage of up to 25 words as a Back-Cover Text, to the end of the list
3276 of Cover Texts in the Modified Version.  Only one passage of
3277 Front-Cover Text and one of Back-Cover Text may be added by (or
3278 through arrangements made by) any one entity.  If the Document already
3279 includes a cover text for the same cover, previously added by you or
3280 by arrangement made by the same entity you are acting on behalf of,
3281 you may not add another; but you may replace the old one, on explicit
3282 permission from the previous publisher that added the old one.
3284 The author(s) and publisher(s) of the Document do not by this License
3285 give permission to use their names for publicity for or to assert or
3286 imply endorsement of any Modified Version.
3289 5. COMBINING DOCUMENTS
3291 You may combine the Document with other documents released under this
3292 License, under the terms defined in section 4 above for modified
3293 versions, provided that you include in the combination all of the
3294 Invariant Sections of all of the original documents, unmodified, and
3295 list them all as Invariant Sections of your combined work in its
3296 license notice.
3298 The combined work need only contain one copy of this License, and
3299 multiple identical Invariant Sections may be replaced with a single
3300 copy.  If there are multiple Invariant Sections with the same name but
3301 different contents, make the title of each such section unique by
3302 adding at the end of it, in parentheses, the name of the original
3303 author or publisher of that section if known, or else a unique number.
3304 Make the same adjustment to the section titles in the list of
3305 Invariant Sections in the license notice of the combined work.
3307 In the combination, you must combine any sections entitled "History"
3308 in the various original documents, forming one section entitled
3309 "History"; likewise combine any sections entitled "Acknowledgements",
3310 and any sections entitled "Dedications".  You must delete all sections
3311 entitled "Endorsements."
3314 6. COLLECTIONS OF DOCUMENTS
3316 You may make a collection consisting of the Document and other documents
3317 released under this License, and replace the individual copies of this
3318 License in the various documents with a single copy that is included in
3319 the collection, provided that you follow the rules of this License for
3320 verbatim copying of each of the documents in all other respects.
3322 You may extract a single document from such a collection, and distribute
3323 it individually under this License, provided you insert a copy of this
3324 License into the extracted document, and follow this License in all
3325 other respects regarding verbatim copying of that document.
3328 7. AGGREGATION WITH INDEPENDENT WORKS
3330 A compilation of the Document or its derivatives with other separate
3331 and independent documents or works, in or on a volume of a storage or
3332 distribution medium, does not as a whole count as a Modified Version
3333 of the Document, provided no compilation copyright is claimed for the
3334 compilation.  Such a compilation is called an "aggregate", and this
3335 License does not apply to the other self-contained works thus compiled
3336 with the Document, on account of their being thus compiled, if they
3337 are not themselves derivative works of the Document.
3339 If the Cover Text requirement of section 3 is applicable to these
3340 copies of the Document, then if the Document is less than one quarter
3341 of the entire aggregate, the Document's Cover Texts may be placed on
3342 covers that surround only the Document within the aggregate.
3343 Otherwise they must appear on covers around the whole aggregate.
3346 8. TRANSLATION
3348 Translation is considered a kind of modification, so you may
3349 distribute translations of the Document under the terms of section 4.
3350 Replacing Invariant Sections with translations requires special
3351 permission from their copyright holders, but you may include
3352 translations of some or all Invariant Sections in addition to the
3353 original versions of these Invariant Sections.  You may include a
3354 translation of this License provided that you also include the
3355 original English version of this License.  In case of a disagreement
3356 between the translation and the original English version of this
3357 License, the original English version will prevail.
3360 9. TERMINATION
3362 You may not copy, modify, sublicense, or distribute the Document except
3363 as expressly provided for under this License.  Any other attempt to
3364 copy, modify, sublicense or distribute the Document is void, and will
3365 automatically terminate your rights under this License.  However,
3366 parties who have received copies, or rights, from you under this
3367 License will not have their licenses terminated so long as such
3368 parties remain in full compliance.
3371 10. FUTURE REVISIONS OF THIS LICENSE
3373 The Free Software Foundation may publish new, revised versions
3374 of the GNU Free Documentation License from time to time.  Such new
3375 versions will be similar in spirit to the present version, but may
3376 differ in detail to address new problems or concerns.  See
3377 http://www.gnu.org/copyleft/.
3379 Each version of the License is given a distinguishing version number.
3380 If the Document specifies that a particular numbered version of this
3381 License "or any later version" applies to it, you have the option of
3382 following the terms and conditions either of that specified version or
3383 of any later version that has been published (not as a draft) by the
3384 Free Software Foundation.  If the Document does not specify a version
3385 number of this License, you may choose any version ever published (not
3386 as a draft) by the Free Software Foundation.
3389 ADDENDUM: How to use this License for your documents
3391 To use this License in a document you have written, include a copy of
3392 the License in the document and put the following copyright and
3393 license notices just after the title page:
3395 @smallexample
3396     Copyright (c)  YEAR  YOUR NAME.
3397     Permission is granted to copy, distribute and/or modify this document
3398     under the terms of the GNU Free Documentation License, Version 1.1
3399     or any later version published by the Free Software Foundation;
3400     with the Invariant Sections being LIST THEIR TITLES, with the
3401     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
3402     A copy of the license is included in the section entitled "GNU
3403     Free Documentation License".
3404 @end smallexample
3406 If you have no Invariant Sections, write "with no Invariant Sections"
3407 instead of saying which ones are invariant.  If you have no
3408 Front-Cover Texts, write "no Front-Cover Texts" instead of
3409 "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
3411 If your document contains nontrivial examples of program code, we
3412 recommend releasing these examples in parallel under your choice of
3413 free software license, such as the GNU General Public License,
3414 to permit their use in free software.
3416 @node Index
3417 @unnumbered Index
3419 @printindex cp
3421 @contents
3422 @bye