file ld.info-6 was initially added on branch binutils-2_11-branch.
[binutils.git] / binutils / binutils.texi
blob648cd2beb34cd9ae9ad386bcb0ba5ac649498753
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, 2001 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, 2001 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, 2001 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 Note - @code{objcopy} is not able to change the endianness of its input
935 files.  If the input format has an endianness, (some formats do not),
936 @code{objcopy} can only copy the inputs into file formats that have the
937 same endianness or which have no endianness (eg @samp{srec}).
939 @table @code
940 @item @var{infile}
941 @itemx @var{outfile}
942 The input and output files, respectively.
943 If you do not specify @var{outfile}, @code{objcopy} creates a
944 temporary file and destructively renames the result with
945 the name of @var{infile}.
947 @item -I @var{bfdname}  
948 @itemx --input-target=@var{bfdname}
949 Consider the source file's object format to be @var{bfdname}, rather than
950 attempting to deduce it.  @xref{Target Selection}, for more information.
952 @item -O @var{bfdname}
953 @itemx --output-target=@var{bfdname}
954 Write the output file using the object format @var{bfdname}.
955 @xref{Target Selection}, for more information.
957 @item -F @var{bfdname}
958 @itemx --target=@var{bfdname}
959 Use @var{bfdname} as the object format for both the input and the output
960 file; i.e., simply transfer data from source to destination with no
961 translation.  @xref{Target Selection}, for more information.
963 @item -j @var{sectionname}
964 @itemx --only-section=@var{sectionname}
965 Copy only the named section from the input file to the output file.
966 This option may be given more than once.  Note that using this option
967 inappropriately may make the output file unusable.
969 @item -R @var{sectionname}
970 @itemx --remove-section=@var{sectionname}
971 Remove any section named @var{sectionname} from the output file.  This
972 option may be given more than once.  Note that using this option
973 inappropriately may make the output file unusable.
975 @item -S
976 @itemx --strip-all
977 Do not copy relocation and symbol information from the source file.
979 @item -g
980 @itemx --strip-debug
981 Do not copy debugging symbols from the source file.
983 @item --strip-unneeded
984 Strip all symbols that are not needed for relocation processing.
986 @item -K @var{symbolname}
987 @itemx --keep-symbol=@var{symbolname}
988 Copy only symbol @var{symbolname} from the source file.  This option may
989 be given more than once.
991 @item -N @var{symbolname}
992 @itemx --strip-symbol=@var{symbolname}
993 Do not copy symbol @var{symbolname} from the source file.  This option
994 may be given more than once.
996 @item -L @var{symbolname}
997 @itemx --localize-symbol=@var{symbolname}
998 Make symbol @var{symbolname} local to the file, so that it is not
999 visible externally.  This option may be given more than once.
1001 @item -W @var{symbolname}
1002 @itemx --weaken-symbol=@var{symbolname}
1003 Make symbol @var{symbolname} weak. This option may be given more than once.
1005 @item -x
1006 @itemx --discard-all
1007 Do not copy non-global symbols from the source file.
1008 @c FIXME any reason to prefer "non-global" to "local" here?
1010 @item -X
1011 @itemx --discard-locals
1012 Do not copy compiler-generated local symbols.
1013 (These usually start with @samp{L} or @samp{.}.)
1015 @item -b @var{byte}
1016 @itemx --byte=@var{byte}
1017 Keep only every @var{byte}th byte of the input file (header data is not
1018 affected).  @var{byte} can be in the range from 0 to @var{interleave}-1,
1019 where @var{interleave} is given by the @samp{-i} or @samp{--interleave}
1020 option, or the default of 4.  This option is useful for creating files
1021 to program @sc{rom}.  It is typically used with an @code{srec} output
1022 target.
1024 @item -i @var{interleave}
1025 @itemx --interleave=@var{interleave}
1026 Only copy one out of every @var{interleave} bytes.  Select which byte to
1027 copy with the @var{-b} or @samp{--byte} option.  The default is 4.
1028 @code{objcopy} ignores this option if you do not specify either @samp{-b} or
1029 @samp{--byte}.
1031 @item -p
1032 @itemx --preserve-dates
1033 Set the access and modification dates of the output file to be the same
1034 as those of the input file.
1036 @item --debugging
1037 Convert debugging information, if possible.  This is not the default
1038 because only certain debugging formats are supported, and the
1039 conversion process can be time consuming.
1041 @item --gap-fill @var{val}
1042 Fill gaps between sections with @var{val}.  This operation applies to
1043 the @emph{load address} (LMA) of the sections.  It is done by increasing
1044 the size of the section with the lower address, and filling in the extra
1045 space created with @var{val}.
1047 @item --pad-to @var{address}
1048 Pad the output file up to the load address @var{address}.  This is
1049 done by increasing the size of the last section.  The extra space is
1050 filled in with the value specified by @samp{--gap-fill} (default zero).
1052 @item --set-start @var{val}
1053 Set the start address of the new file to @var{val}.  Not all object file
1054 formats support setting the start address.
1056 @item --change-start @var{incr}
1057 @itemx --adjust-start @var{incr}
1058 @cindex changing start address
1059 Change the start address by adding @var{incr}.  Not all object file
1060 formats support setting the start address.
1062 @item --change-addresses @var{incr}
1063 @itemx --adjust-vma @var{incr}
1064 @cindex changing object addresses
1065 Change the VMA and LMA addresses of all sections, as well as the start
1066 address, by adding @var{incr}.  Some object file formats do not permit
1067 section addresses to be changed arbitrarily.  Note that this does not
1068 relocate the sections; if the program expects sections to be loaded at a
1069 certain address, and this option is used to change the sections such
1070 that they are loaded at a different address, the program may fail. 
1072 @item --change-section-address @var{section}@{=,+,-@}@var{val}
1073 @itemx --adjust-section-vma @var{section}@{=,+,-@}@var{val}
1074 @cindex changing section address
1075 Set or change both the VMA address and the LMA address of the named
1076 @var{section}.  If @samp{=} is used, the section address is set to
1077 @var{val}.  Otherwise, @var{val} is added to or subtracted from the
1078 section address.  See the comments under @samp{--change-addresses},
1079 above. If @var{section} does not exist in the input file, a warning will
1080 be issued, unless @samp{--no-change-warnings} is used.
1082 @item --change-section-lma @var{section}@{=,+,-@}@var{val}
1083 @cindex changing section LMA
1084 Set or change the LMA address of the named @var{section}.  The LMA
1085 address is the address where the section will be loaded into memory at
1086 program load time.  Normally this is the same as the VMA address, which
1087 is the address of the section at program run time, but on some systems,
1088 especially those where a program is held in ROM, the two can be
1089 different.  If @samp{=} is used, the section address is set to
1090 @var{val}.  Otherwise, @var{val} is added to or subtracted from the
1091 section address.  See the comments under @samp{--change-addresses},
1092 above.  If @var{section} does not exist in the input file, a warning
1093 will be issued, unless @samp{--no-change-warnings} is used.  
1095 @item --change-section-vma @var{section}@{=,+,-@}@var{val}
1096 @cindex changing section VMA
1097 Set or change the VMA address of the named @var{section}.  The VMA
1098 address is the address where the section will be located once the
1099 program has started executing.  Normally this is the same as the LMA
1100 address, which is the address where the section will be loaded into
1101 memory, but on some systems, especially those where a program is held in
1102 ROM, the two can be different.  If @samp{=} is used, the section address
1103 is set to @var{val}.  Otherwise, @var{val} is added to or subtracted
1104 from the section address.  See the comments under
1105 @samp{--change-addresses}, above.  If @var{section} does not exist in
1106 the input file, a warning will be issued, unless
1107 @samp{--no-change-warnings} is used.   
1109 @item --change-warnings
1110 @itemx --adjust-warnings
1111 If @samp{--change-section-address} or @samp{--change-section-lma} or
1112 @samp{--change-section-vma} is used, and the named section does not
1113 exist, issue a warning.  This is the default. 
1115 @item --no-change-warnings
1116 @itemx --no-adjust-warnings
1117 Do not issue a warning if @samp{--change-section-address} or
1118 @samp{--adjust-section-lma} or @samp{--adjust-section-vma} is used, even
1119 if the named section does not exist. 
1121 @item --set-section-flags @var{section}=@var{flags}
1122 Set the flags for the named section.  The @var{flags} argument is a
1123 comma separated string of flag names.  The recognized names are
1124 @samp{alloc}, @samp{contents}, @samp{load}, @samp{noload},
1125 @samp{readonly}, @samp{code}, @samp{data}, @samp{rom}, @samp{share}, and
1126 @samp{debug}.  You can set the @samp{contents} flag for a section which
1127 does not have contents, but it is not meaningful to clear the
1128 @samp{contents} flag of a section which does have contents--just remove
1129 the section instead.  Not all flags are meaningful for all object file
1130 formats.
1132 @item --add-section @var{sectionname}=@var{filename}
1133 Add a new section named @var{sectionname} while copying the file.  The
1134 contents of the new section are taken from the file @var{filename}.  The
1135 size of the section will be the size of the file.  This option only
1136 works on file formats which can support sections with arbitrary names.
1138 @item --change-leading-char
1139 Some object file formats use special characters at the start of
1140 symbols.  The most common such character is underscore, which compilers
1141 often add before every symbol.  This option tells @code{objcopy} to
1142 change the leading character of every symbol when it converts between
1143 object file formats.  If the object file formats use the same leading
1144 character, this option has no effect.  Otherwise, it will add a
1145 character, or remove a character, or change a character, as
1146 appropriate.
1148 @item --remove-leading-char
1149 If the first character of a global symbol is a special symbol leading
1150 character used by the object file format, remove the character.  The
1151 most common symbol leading character is underscore.  This option will
1152 remove a leading underscore from all global symbols.  This can be useful
1153 if you want to link together objects of different file formats with
1154 different conventions for symbol names.  This is different from
1155 @code{--change-leading-char} because it always changes the symbol name
1156 when appropriate, regardless of the object file format of the output
1157 file.
1159 @item --srec-len=@var{ival}
1160 Meaningful only for srec output.  Set the maximum length of the Srecords
1161 being produced to @var{ival}.  This length covers both address, data and
1162 crc fields.
1164 @item --srec-forceS3
1165 Meaningful only for srec output.  Avoid generation of S1/S2 records, 
1166 creating S3-only record format.
1168 @item --redefine-sym @var{old}=@var{new}
1169 Change the name of a symbol @var{old}, to @var{new}.  This can be useful
1170 when one is trying link two things together for which you have no
1171 source, and there are name collisions.
1173 @item --weaken
1174 Change all global symbols in the file to be weak.  This can be useful
1175 when building an object which will be linked against other objects using
1176 the @code{-R} option to the linker.  This option is only effective when
1177 using an object file format which supports weak symbols.
1179 @item -V
1180 @itemx --version
1181 Show the version number of @code{objcopy}.
1183 @item -v
1184 @itemx --verbose
1185 Verbose output: list all object files modified.  In the case of
1186 archives, @samp{objcopy -V} lists all members of the archive.
1188 @item --help
1189 Show a summary of the options to @code{objcopy}.
1190 @end table
1192 @node objdump
1193 @chapter objdump
1195 @cindex object file information
1196 @kindex objdump
1198 @smallexample
1199 objdump [ -a | --archive-headers ] 
1200         [ -b @var{bfdname} | --target=@var{bfdname} ] 
1201         [ -C | --demangle[=@var{style}] ]
1202         [ -d | --disassemble ]
1203         [ -D | --disassemble-all ]
1204         [ -z | --disassemble-zeroes ]
1205         [ -EB | -EL | --endian=@{big | little @} ]
1206         [ -f | --file-headers ]
1207         [ --file-start-context ]
1208         [ -g | --debugging ]
1209         [ -h | --section-headers | --headers ]
1210         [ -i | --info ]
1211         [ -j @var{section} | --section=@var{section} ]
1212         [ -l | --line-numbers ]
1213         [ -S | --source ]
1214         [ -m @var{machine} | --architecture=@var{machine} ]
1215         [ -M @var{options} | --disassembler-options=@var{options}]
1216         [ -p | --private-headers ]
1217         [ -r | --reloc ]
1218         [ -R | --dynamic-reloc ]
1219         [ -s | --full-contents ]
1220         [ -G | --stabs ]
1221         [ -t | --syms ]
1222         [ -T | --dynamic-syms ]
1223         [ -x | --all-headers ]
1224         [ -w | --wide ]
1225         [ --start-address=@var{address} ]
1226         [ --stop-address=@var{address} ]
1227         [ --prefix-addresses]
1228         [ --[no-]show-raw-insn ]
1229         [ --adjust-vma=@var{offset} ]
1230         [ -V | --version ]
1231         [ -H | --help ]
1232         @var{objfile}@dots{}
1233 @end smallexample
1235 @code{objdump} displays information about one or more object files.
1236 The options control what particular information to display.  This
1237 information is mostly useful to programmers who are working on the
1238 compilation tools, as opposed to programmers who just want their
1239 program to compile and work.
1241 @var{objfile}@dots{} are the object files to be examined.  When you
1242 specify archives, @code{objdump} shows information on each of the member
1243 object files.
1245 The long and short forms of options, shown here as alternatives, are
1246 equivalent.  At least one option from the list
1247 @samp{-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-S,-t,-T,-V,-x} must be given. 
1249 @table @code
1250 @item -a
1251 @itemx --archive-header
1252 @cindex archive headers
1253 If any of the @var{objfile} files are archives, display the archive
1254 header information (in a format similar to @samp{ls -l}).  Besides the
1255 information you could list with @samp{ar tv}, @samp{objdump -a} shows
1256 the object file format of each archive member.
1258 @item --adjust-vma=@var{offset}
1259 @cindex section addresses in objdump
1260 @cindex VMA in objdump
1261 When dumping information, first add @var{offset} to all the section
1262 addresses.  This is useful if the section addresses do not correspond to
1263 the symbol table, which can happen when putting sections at particular
1264 addresses when using a format which can not represent section addresses,
1265 such as a.out.
1267 @item -b @var{bfdname}
1268 @itemx --target=@var{bfdname}
1269 @cindex object code format
1270 Specify that the object-code format for the object files is
1271 @var{bfdname}.  This option may not be necessary; @var{objdump} can
1272 automatically recognize many formats.
1274 For example,
1275 @example
1276 objdump -b oasys -m vax -h fu.o
1277 @end example
1278 @noindent
1279 displays summary information from the section headers (@samp{-h}) of
1280 @file{fu.o}, which is explicitly identified (@samp{-m}) as a VAX object
1281 file in the format produced by Oasys compilers.  You can list the
1282 formats available with the @samp{-i} option.
1283 @xref{Target Selection}, for more information.
1285 @item -C
1286 @itemx --demangle[=@var{style}]
1287 @cindex demangling in objdump
1288 Decode (@dfn{demangle}) low-level symbol names into user-level names.
1289 Besides removing any initial underscore prepended by the system, this
1290 makes C++ function names readable.  Different compilers have different
1291 mangling styles. The optional demangling style argument can be used to 
1292 choose an appropriate demangling style for your compiler. @xref{c++filt}, 
1293 for more information on demangling.
1295 @item -G
1296 @item --debugging
1297 Display debugging information.  This attempts to parse debugging
1298 information stored in the file and print it out using a C like syntax.
1299 Only certain types of debugging information have been implemented.
1301 @item -d
1302 @itemx --disassemble
1303 @cindex disassembling object code
1304 @cindex machine instructions
1305 Display the assembler mnemonics for the machine instructions from
1306 @var{objfile}.  This option only disassembles those sections which are
1307 expected to contain instructions.
1309 @item -D
1310 @itemx --disassemble-all
1311 Like @samp{-d}, but disassemble the contents of all sections, not just
1312 those expected to contain instructions.
1314 @item --prefix-addresses
1315 When disassembling, print the complete address on each line.  This is
1316 the older disassembly format.
1318 @item --disassemble-zeroes
1319 Normally the disassembly output will skip blocks of zeroes.  This
1320 option directs the disassembler to disassemble those blocks, just like
1321 any other data.
1323 @item -EB
1324 @itemx -EL
1325 @itemx --endian=@{big|little@}
1326 @cindex endianness
1327 @cindex disassembly endianness
1328 Specify the endianness of the object files.  This only affects
1329 disassembly.  This can be useful when disassembling a file format which
1330 does not describe endianness information, such as S-records.
1332 @item -f
1333 @itemx --file-header
1334 @cindex object file header
1335 Display summary information from the overall header of
1336 each of the @var{objfile} files.
1338 @item --file-start-context
1339 @cindex source code context
1340 Specify that when displaying interlisted source code/disassembly
1341 (assumes '-S') from a file that has not yet been displayed, extend the
1342 context to the start of the file.
1344 @item -h
1345 @itemx --section-header
1346 @itemx --header
1347 @cindex section headers
1348 Display summary information from the section headers of the
1349 object file.
1351 File segments may be relocated to nonstandard addresses, for example by
1352 using the @samp{-Ttext}, @samp{-Tdata}, or @samp{-Tbss} options to
1353 @code{ld}.  However, some object file formats, such as a.out, do not
1354 store the starting address of the file segments.  In those situations,
1355 although @code{ld} relocates the sections correctly, using @samp{objdump
1356 -h} to list the file section headers cannot show the correct addresses.
1357 Instead, it shows the usual addresses, which are implicit for the
1358 target.
1360 @item --help
1361 Print a summary of the options to @code{objdump} and exit.
1363 @item -i
1364 @itemx --info
1365 @cindex architectures available
1366 @cindex object formats available
1367 Display a list showing all architectures and object formats available
1368 for specification with @samp{-b} or @samp{-m}.
1370 @item -j @var{name}
1371 @itemx --section=@var{name}
1372 @cindex section information
1373 Display information only for section @var{name}.
1375 @item -l
1376 @itemx --line-numbers
1377 @cindex source filenames for object files
1378 Label the display (using debugging information) with the filename and
1379 source line numbers corresponding to the object code or relocs shown.
1380 Only useful with @samp{-d}, @samp{-D}, or @samp{-r}.
1382 @item -m @var{machine}
1383 @itemx --architecture=@var{machine}
1384 @cindex architecture
1385 @cindex disassembly architecture
1386 Specify the architecture to use when disassembling object files.  This
1387 can be useful when disassembling object files which do not describe
1388 architecture information, such as S-records.  You can list the available
1389 architectures with the @samp{-i} option.
1391 @item -M @var{options}
1392 @itemx --disassembler-options=@var{options}
1393 Pass target specific information to the disassembler.  Only supported on
1394 some targets.
1396 If the target is an ARM architecture then this switch can be used to
1397 select which register name set is used during disassembler.  Specifying
1398 @samp{-M reg-name-std} (the default) will select the register names as
1399 used in ARM's instruction set documentation, but with register 13 called
1400 'sp', register 14 called 'lr' and register 15 called 'pc'.  Specifying
1401 @samp{-M reg-names-apcs} will select the name set used by the ARM
1402 Procedure Call Standard, whilst specifying @samp{-M reg-names-raw} will
1403 just use @samp{r} followed by the register number.
1405 There are also two variants on the APCS register naming scheme enabled
1406 by @samp{-M reg-names-atpcs} and @samp{-M reg-names-special-atpcs} which
1407 use the ARM/Thumb Procedure Call Standard naming conventions.  (Eiuther
1408 with the normal register name sor the special register names).
1410 This option can also be used for ARM architectures to force the
1411 disassembler to interpret all instructions as THUMB instructions by
1412 using the switch @samp{--disassembler-options=force-thumb}.  This can be
1413 useful when attempting to disassemble thumb code produced by other
1414 compilers.
1416 @item -p
1417 @itemx --private-headers
1418 Print information that is specific to the object file format.  The exact
1419 information printed depends upon the object file format.  For some
1420 object file formats, no additional information is printed.
1422 @item -r
1423 @itemx --reloc
1424 @cindex relocation entries, in object file
1425 Print the relocation entries of the file.  If used with @samp{-d} or
1426 @samp{-D}, the relocations are printed interspersed with the
1427 disassembly.
1429 @item -R
1430 @itemx --dynamic-reloc
1431 @cindex dynamic relocation entries, in object file
1432 Print the dynamic relocation entries of the file.  This is only
1433 meaningful for dynamic objects, such as certain types of shared
1434 libraries.
1436 @item -s
1437 @itemx --full-contents
1438 @cindex sections, full contents
1439 @cindex object file sections
1440 Display the full contents of any sections requested.
1442 @item -S
1443 @itemx --source
1444 @cindex source disassembly
1445 @cindex disassembly, with source
1446 Display source code intermixed with disassembly, if possible.  Implies
1447 @samp{-d}.
1449 @item --show-raw-insn
1450 When disassembling instructions, print the instruction in hex as well as
1451 in symbolic form.  This is the default except when
1452 @code{--prefix-addresses} is used.
1454 @item --no-show-raw-insn
1455 When disassembling instructions, do not print the instruction bytes.
1456 This is the default when @code{--prefix-addresses} is used.
1458 @item -G
1459 @item --stabs
1460 @cindex stab
1461 @cindex .stab
1462 @cindex debug symbols
1463 @cindex ELF object file format
1464 Display the full contents of any sections requested.  Display the
1465 contents of the .stab and .stab.index and .stab.excl sections from an
1466 ELF file.  This is only useful on systems (such as Solaris 2.0) in which
1467 @code{.stab} debugging symbol-table entries are carried in an ELF
1468 section.  In most other file formats, debugging symbol-table entries are
1469 interleaved with linkage symbols, and are visible in the @samp{--syms}
1470 output.  For more information on stabs symbols, see @ref{Top,Stabs,Stabs
1471 Overview,stabs.info, The ``stabs'' debug format}.
1473 @item --start-address=@var{address}
1474 @cindex start-address
1475 Start displaying data at the specified address.  This affects the output
1476 of the @code{-d}, @code{-r} and @code{-s} options.
1478 @item --stop-address=@var{address}
1479 @cindex stop-address
1480 Stop displaying data at the specified address.  This affects the output
1481 of the @code{-d}, @code{-r} and @code{-s} options.
1483 @item -t
1484 @itemx --syms
1485 @cindex symbol table entries, printing
1486 Print the symbol table entries of the file.
1487 This is similar to the information provided by the @samp{nm} program.
1489 @item -T
1490 @itemx --dynamic-syms
1491 @cindex dynamic symbol table entries, printing
1492 Print the dynamic symbol table entries of the file.  This is only
1493 meaningful for dynamic objects, such as certain types of shared
1494 libraries.  This is similar to the information provided by the @samp{nm}
1495 program when given the @samp{-D} (@samp{--dynamic}) option.
1497 @item --version
1498 Print the version number of @code{objdump} and exit.
1500 @item -x
1501 @itemx --all-header
1502 @cindex all header information, object file
1503 @cindex header information, all
1504 Display all available header information, including the symbol table and
1505 relocation entries.  Using @samp{-x} is equivalent to specifying all of
1506 @samp{-a -f -h -r -t}.
1508 @item -w
1509 @itemx --wide
1510 @cindex wide output, printing
1511 Format some lines for output devices that have more than 80 columns.
1512 @end table
1514 @node ranlib
1515 @chapter ranlib
1517 @kindex ranlib
1518 @cindex archive contents
1519 @cindex symbol index
1521 @smallexample
1522 ranlib [-vV] @var{archive}
1523 @end smallexample
1525 @code{ranlib} generates an index to the contents of an archive and
1526 stores it in the archive.  The index lists each symbol defined by a
1527 member of an archive that is a relocatable object file.  
1529 You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
1531 An archive with such an index speeds up linking to the library and
1532 allows routines in the library to call each other without regard to
1533 their placement in the archive.
1535 The @sc{gnu} @code{ranlib} program is another form of @sc{gnu} @code{ar}; running
1536 @code{ranlib} is completely equivalent to executing @samp{ar -s}.
1537 @xref{ar}.
1539 @table @code
1540 @item -v
1541 @itemx -V
1542 @itemx --version
1543 Show the version number of @code{ranlib}.
1544 @end table
1546 @node size
1547 @chapter size
1549 @kindex size
1550 @cindex section sizes
1552 @smallexample
1553 size [ -A | -B | --format=@var{compatibility} ]
1554      [ --help ]  [ -d | -o | -x | --radix=@var{number} ]
1555      [ --target=@var{bfdname} ]  [ -V | --version ]  
1556      [ @var{objfile}@dots{} ]
1557 @end smallexample
1559 The @sc{gnu} @code{size} utility lists the section sizes---and the total
1560 size---for each of the object or archive files @var{objfile} in its
1561 argument list.  By default, one line of output is generated for each
1562 object file or each module in an archive.
1564 @var{objfile}@dots{} are the object files to be examined.
1565 If none are specified, the file @code{a.out} will be used.
1567 The command line options have the following meanings:
1569 @table @code
1570 @item -A
1571 @itemx -B
1572 @itemx --format=@var{compatibility}
1573 @cindex @code{size} display format
1574 Using one of these options, you can choose whether the output from @sc{gnu}
1575 @code{size} resembles output from System V @code{size} (using @samp{-A},
1576 or @samp{--format=sysv}), or Berkeley @code{size} (using @samp{-B}, or
1577 @samp{--format=berkeley}).  The default is the one-line format similar to
1578 Berkeley's.  
1579 @c Bonus for doc-source readers: you can also say --format=strange (or
1580 @c anything else that starts with 's') for sysv, and --format=boring (or
1581 @c anything else that starts with 'b') for Berkeley.
1583 Here is an example of the Berkeley (default) format of output from
1584 @code{size}: 
1585 @smallexample
1586 $ size --format=Berkeley ranlib size
1587 text    data    bss     dec     hex     filename
1588 294880  81920   11592   388392  5ed28   ranlib
1589 294880  81920   11888   388688  5ee50   size
1590 @end smallexample
1592 @noindent
1593 This is the same data, but displayed closer to System V conventions:
1595 @smallexample
1596 $ size --format=SysV ranlib size
1597 ranlib  :
1598 section         size         addr
1599 .text         294880         8192       
1600 .data          81920       303104       
1601 .bss           11592       385024       
1602 Total         388392    
1605 size  :
1606 section         size         addr
1607 .text         294880         8192       
1608 .data          81920       303104       
1609 .bss           11888       385024       
1610 Total         388688    
1611 @end smallexample
1613 @item --help
1614 Show a summary of acceptable arguments and options.
1616 @item -d
1617 @itemx -o
1618 @itemx -x
1619 @itemx --radix=@var{number}
1620 @cindex @code{size} number format
1621 @cindex radix for section sizes
1622 Using one of these options, you can control whether the size of each
1623 section is given in decimal (@samp{-d}, or @samp{--radix=10}); octal
1624 (@samp{-o}, or @samp{--radix=8}); or hexadecimal (@samp{-x}, or
1625 @samp{--radix=16}).  In @samp{--radix=@var{number}}, only the three
1626 values (8, 10, 16) are supported.  The total size is always given in two
1627 radices; decimal and hexadecimal for @samp{-d} or @samp{-x} output, or
1628 octal and hexadecimal if you're using @samp{-o}.
1630 @item --target=@var{bfdname}
1631 @cindex object code format
1632 Specify that the object-code format for @var{objfile} is
1633 @var{bfdname}.  This option may not be necessary; @code{size} can
1634 automatically recognize many formats.
1635 @xref{Target Selection}, for more information.
1637 @item -V
1638 @itemx --version
1639 Display the version number of @code{size}.
1640 @end table
1642 @node strings
1643 @chapter strings
1644 @kindex strings
1645 @cindex listings strings
1646 @cindex printing strings
1647 @cindex strings, printing
1649 @smallexample
1650 strings [-afov] [-@var{min-len}] [-n @var{min-len}] [-t @var{radix}] [-]
1651         [--all] [--print-file-name] [--bytes=@var{min-len}]
1652         [--radix=@var{radix}] [--target=@var{bfdname}]
1653         [--help] [--version] @var{file}@dots{}
1654 @end smallexample
1656 For each @var{file} given, @sc{gnu} @code{strings} prints the printable
1657 character sequences that are at least 4 characters long (or the number
1658 given with the options below) and are followed by an unprintable
1659 character.  By default, it only prints the strings from the initialized
1660 and loaded sections of object files; for other types of files, it prints
1661 the strings from the whole file.
1663 @code{strings} is mainly useful for determining the contents of non-text
1664 files.
1666 @table @code
1667 @item -a
1668 @itemx --all
1669 @itemx -
1670 Do not scan only the initialized and loaded sections of object files;
1671 scan the whole files.
1673 @item -f
1674 @itemx --print-file-name
1675 Print the name of the file before each string.
1677 @item --help
1678 Print a summary of the program usage on the standard output and exit.
1680 @item -@var{min-len}
1681 @itemx -n @var{min-len}
1682 @itemx --bytes=@var{min-len}
1683 Print sequences of characters that are at least @var{min-len} characters
1684 long, instead of the default 4.
1686 @item -o
1687 Like @samp{-t o}.  Some other versions of @code{strings} have @samp{-o}
1688 act like @samp{-t d} instead.  Since we can not be compatible with both
1689 ways, we simply chose one.
1691 @item -t @var{radix}
1692 @itemx --radix=@var{radix}
1693 Print the offset within the file before each string.  The single
1694 character argument specifies the radix of the offset---@samp{o} for
1695 octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
1697 @item --target=@var{bfdname}
1698 @cindex object code format
1699 Specify an object code format other than your system's default format.
1700 @xref{Target Selection}, for more information.
1702 @item -v
1703 @itemx --version
1704 Print the program version number on the standard output and exit.
1705 @end table
1707 @node strip
1708 @chapter strip
1710 @kindex strip
1711 @cindex removing symbols
1712 @cindex discarding symbols
1713 @cindex symbols, discarding
1715 @smallexample
1716 strip [ -F @var{bfdname} | --target=@var{bfdname} ]
1717       [ -I @var{bfdname} | --input-target=@var{bfdname} ]
1718       [ -O @var{bfdname} | --output-target=@var{bfdname} ]
1719       [ -s | --strip-all ] [ -S | -g | --strip-debug ]
1720       [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
1721       [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
1722       [ -x | --discard-all ] [ -X | --discard-locals ]
1723       [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
1724       [ -o @var{file} ] [ -p | --preserve-dates ]
1725       [ -v | --verbose ]  [ -V | --version ]  [ --help ]
1726       @var{objfile}@dots{}
1727 @end smallexample
1729 @sc{gnu} @code{strip} discards all symbols from object files
1730 @var{objfile}.  The list of object files may include archives.
1731 At least one object file must be given.
1733 @code{strip} modifies the files named in its argument,
1734 rather than writing modified copies under different names.
1736 @table @code
1737 @item -F @var{bfdname}
1738 @itemx --target=@var{bfdname}
1739 Treat the original @var{objfile} as a file with the object
1740 code format @var{bfdname}, and rewrite it in the same format.
1741 @xref{Target Selection}, for more information.
1743 @item --help
1744 Show a summary of the options to @code{strip} and exit.
1746 @item -I @var{bfdname}  
1747 @itemx --input-target=@var{bfdname}
1748 Treat the original @var{objfile} as a file with the object
1749 code format @var{bfdname}.
1750 @xref{Target Selection}, for more information.
1752 @item -O @var{bfdname}
1753 @itemx --output-target=@var{bfdname}
1754 Replace @var{objfile} with a file in the output format @var{bfdname}.
1755 @xref{Target Selection}, for more information.
1757 @item -R @var{sectionname}
1758 @itemx --remove-section=@var{sectionname}
1759 Remove any section named @var{sectionname} from the output file.  This
1760 option may be given more than once.  Note that using this option
1761 inappropriately may make the output file unusable.
1763 @item -s
1764 @itemx --strip-all
1765 Remove all symbols.
1767 @item -g
1768 @itemx -S
1769 @itemx --strip-debug
1770 Remove debugging symbols only.
1772 @item --strip-unneeded
1773 Remove all symbols that are not needed for relocation processing.
1775 @item -K @var{symbolname}
1776 @itemx --keep-symbol=@var{symbolname}
1777 Keep only symbol @var{symbolname} from the source file.  This option may
1778 be given more than once.
1780 @item -N @var{symbolname}
1781 @itemx --strip-symbol=@var{symbolname}
1782 Remove symbol @var{symbolname} from the source file. This option may be
1783 given more than once, and may be combined with strip options other than
1784 @code{-K}.
1786 @item -o @var{file}
1787 Put the stripped output in @var{file}, rather than replacing the
1788 existing file.  When this argument is used, only one @var{objfile}
1789 argument may be specified.
1791 @item -p
1792 @itemx --preserve-dates
1793 Preserve the access and modification dates of the file.
1795 @item -x
1796 @itemx --discard-all
1797 Remove non-global symbols.
1799 @item -X
1800 @itemx --discard-locals
1801 Remove compiler-generated local symbols.
1802 (These usually start with @samp{L} or @samp{.}.)
1804 @item -V
1805 @itemx --version
1806 Show the version number for @code{strip}.
1808 @item -v
1809 @itemx --verbose
1810 Verbose output: list all object files modified.  In the case of
1811 archives, @samp{strip -v} lists all members of the archive.
1812 @end table
1814 @node c++filt, addr2line, strip, Top
1815 @chapter c++filt
1817 @kindex c++filt
1818 @cindex demangling C++ symbols
1820 @smallexample
1821 c++filt [ -_ | --strip-underscores ]
1822         [ -j | --java ]
1823         [ -n | --no-strip-underscores ]
1824         [ -s @var{format} | --format=@var{format} ]
1825         [ --help ]  [ --version ]  [ @var{symbol}@dots{} ]
1826 @end smallexample
1828 @kindex cxxfilt
1829 The C++ and Java languages provides function overloading, which means
1830 that you can write many functions with the same name (providing each
1831 takes parameters of different types).  All C++ and Java function names
1832 are encoded into a low-level assembly label (this process is known as
1833 @dfn{mangling}). The @code{c++filt}
1834 @footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
1835 MS-DOS this program is named @code{cxxfilt}.}
1836 program does the inverse mapping: it decodes (@dfn{demangles}) low-level
1837 names into user-level names so that the linker can keep these overloaded
1838 functions from clashing.
1840 Every alphanumeric word (consisting of letters, digits, underscores,
1841 dollars, or periods) seen in the input is a potential label.  If the
1842 label decodes into a C++ name, the C++ name replaces the low-level
1843 name in the output.
1845 You can use @code{c++filt} to decipher individual symbols:
1847 @example
1848 c++filt @var{symbol}
1849 @end example
1851 If no @var{symbol} arguments are given, @code{c++filt} reads symbol
1852 names from the standard input and writes the demangled names to the
1853 standard output.  All results are printed on the standard output.
1855 @table @code
1856 @item -_
1857 @itemx --strip-underscores
1858 On some systems, both the C and C++ compilers put an underscore in front
1859 of every name.  For example, the C name @code{foo} gets the low-level
1860 name @code{_foo}.  This option removes the initial underscore.  Whether
1861 @code{c++filt} removes the underscore by default is target dependent.
1863 @item -j
1864 @itemx --java
1865 Prints demangled names using Java syntax.  The default is to use C++
1866 syntax.
1868 @item -n
1869 @itemx --no-strip-underscores
1870 Do not remove the initial underscore.
1872 @item -s @var{format}
1873 @itemx --format=@var{format}
1874 @sc{gnu} @code{nm} can decode three different methods of mangling, used by
1875 different C++ compilers.  The argument to this option selects which
1876 method it uses:
1878 @table @code
1879 @item gnu
1880 the one used by the @sc{gnu} compiler (the default method)
1881 @item lucid
1882 the one used by the Lucid compiler
1883 @item arm
1884 the one specified by the C++ Annotated Reference Manual
1885 @item hp
1886 the one used by the HP compiler
1887 @item edg
1888 the one used by the EDG compiler
1889 @item gnu-new-abi
1890 the one used by the @sc{gnu} compiler with the new ABI.
1891 @end table
1893 @item --help
1894 Print a summary of the options to @code{c++filt} and exit.
1896 @item --version
1897 Print the version number of @code{c++filt} and exit.
1898 @end table
1900 @quotation
1901 @emph{Warning:} @code{c++filt} is a new utility, and the details of its
1902 user interface are subject to change in future releases.  In particular,
1903 a command-line option may be required in the the future to decode a name
1904 passed as an argument on the command line; in other words, 
1906 @example
1907 c++filt @var{symbol}
1908 @end example
1910 @noindent
1911 may in a future release become
1913 @example
1914 c++filt @var{option} @var{symbol}
1915 @end example
1916 @end quotation
1918 @node addr2line
1919 @chapter addr2line
1921 @kindex addr2line
1922 @cindex address to file name and line number
1924 @smallexample
1925 addr2line [ -b @var{bfdname} | --target=@var{bfdname} ]
1926           [ -C | --demangle[=@var{style} ]
1927           [ -e @var{filename} | --exe=@var{filename} ]
1928           [ -f | --functions ] [ -s | --basename ]
1929           [ -H | --help ] [ -V | --version ]
1930           [ addr addr ... ]
1931 @end smallexample
1933 @code{addr2line} translates program addresses into file names and line
1934 numbers.  Given an address and an executable, it uses the debugging
1935 information in the executable to figure out which file name and line
1936 number are associated with a given address.
1938 The executable to use is specified with the @code{-e} option.  The
1939 default is the file @file{a.out}.
1941 @code{addr2line} has two modes of operation.
1943 In the first, hexadecimal addresses are specified on the command line,
1944 and @code{addr2line} displays the file name and line number for each
1945 address.
1947 In the second, @code{addr2line} reads hexadecimal addresses from
1948 standard input, and prints the file name and line number for each
1949 address on standard output.  In this mode, @code{addr2line} may be used
1950 in a pipe to convert dynamically chosen addresses.
1952 The format of the output is @samp{FILENAME:LINENO}.  The file name and
1953 line number for each address is printed on a separate line.  If the
1954 @code{-f} option is used, then each @samp{FILENAME:LINENO} line is
1955 preceded by a @samp{FUNCTIONNAME} line which is the name of the function
1956 containing the address.
1958 If the file name or function name can not be determined,
1959 @code{addr2line} will print two question marks in their place.  If the
1960 line number can not be determined, @code{addr2line} will print 0.
1962 The long and short forms of options, shown here as alternatives, are
1963 equivalent.
1965 @table @code
1966 @item -b @var{bfdname}
1967 @itemx --target=@var{bfdname}
1968 @cindex object code format
1969 Specify that the object-code format for the object files is
1970 @var{bfdname}.
1972 @item -C
1973 @itemx --demangle[=@var{style}]
1974 @cindex demangling in objdump
1975 Decode (@dfn{demangle}) low-level symbol names into user-level names.
1976 Besides removing any initial underscore prepended by the system, this
1977 makes C++ function names readable.  Different compilers have different
1978 mangling styles. The optional demangling style argument can be used to 
1979 choose an appropriate demangling style for your compiler. @xref{c++filt}, 
1980 for more information on demangling.
1982 @item -e @var{filename}
1983 @itemx --exe=@var{filename}
1984 Specify the name of the executable for which addresses should be
1985 translated.  The default file is @file{a.out}.
1987 @item -f
1988 @itemx --functions
1989 Display function names as well as file and line number information.
1991 @item -s
1992 @itemx --basenames
1993 Display only the base of each file name.
1994 @end table
1996 @node nlmconv
1997 @chapter nlmconv
1999 @code{nlmconv} converts a relocatable object file into a NetWare
2000 Loadable Module.
2002 @ignore
2003 @code{nlmconv} currently works with @samp{i386} object
2004 files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
2005 object files in @sc{elf}, or @code{a.out} format@footnote{
2006 @code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
2007 format in the Binary File Descriptor library.  It has only been tested
2008 with the above formats.}.
2009 @end ignore
2011 @quotation
2012 @emph{Warning:} @code{nlmconv} is not always built as part of the binary
2013 utilities, since it is only useful for NLM targets.
2014 @end quotation
2016 @smallexample
2017 nlmconv [ -I @var{bfdname} | --input-target=@var{bfdname} ]
2018         [ -O @var{bfdname} | --output-target=@var{bfdname} ]
2019         [ -T @var{headerfile} | --header-file=@var{headerfile} ]
2020         [ -d | --debug]  [ -l @var{linker} | --linker=@var{linker} ]
2021         [ -h | --help ]  [ -V | --version ]
2022         @var{infile} @var{outfile}
2023 @end smallexample
2025 @code{nlmconv} converts the relocatable @samp{i386} object file
2026 @var{infile} into the NetWare Loadable Module @var{outfile}, optionally
2027 reading @var{headerfile} for NLM header information.  For instructions
2028 on writing the NLM command file language used in header files, see the
2029 @samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
2030 Development and Tools Overview}, which is part of the NLM Software
2031 Developer's Kit (``NLM SDK''), available from Novell, Inc.
2032 @code{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
2033 @var{infile}; see @ref{BFD,,BFD,ld.info,Using LD}, for
2034 more information.
2036 @code{nlmconv} can perform a link step.  In other words, you can list
2037 more than one object file for input if you list them in the definitions
2038 file (rather than simply specifying one input file on the command line).
2039 In this case, @code{nlmconv} calls the linker for you.
2041 @table @code
2042 @item -I @var{bfdname}
2043 @itemx --input-target=@var{bfdname}
2044 Object format of the input file.  @code{nlmconv} can usually determine
2045 the format of a given file (so no default is necessary).
2046 @xref{Target Selection}, for more information.
2048 @item -O @var{bfdname}
2049 @itemx --output-target=@var{bfdname}
2050 Object format of the output file.  @code{nlmconv} infers the output
2051 format based on the input format, e.g. for a @samp{i386} input file the
2052 output format is @samp{nlm32-i386}.
2053 @xref{Target Selection}, for more information.
2055 @item -T @var{headerfile}
2056 @itemx --header-file=@var{headerfile}
2057 Reads @var{headerfile} for NLM header information.  For instructions on
2058 writing the NLM command file language used in header files, see@ see the
2059 @samp{linkers} section, of the @cite{NLM Development and Tools
2060 Overview}, which is part of the NLM Software Developer's Kit, available
2061 from Novell, Inc.
2063 @item -d
2064 @itemx --debug
2065 Displays (on standard error) the linker command line used by @code{nlmconv}.
2067 @item -l @var{linker}
2068 @itemx --linker=@var{linker}
2069 Use @var{linker} for any linking.  @var{linker} can be an absolute or a
2070 relative pathname.
2072 @item -h
2073 @itemx --help
2074 Prints a usage summary.
2076 @item -V
2077 @itemx --version
2078 Prints the version number for @code{nlmconv}.
2079 @end table
2081 @node windres
2082 @chapter windres
2084 @code{windres} may be used to manipulate Windows resources.
2086 @quotation
2087 @emph{Warning:} @code{windres} is not always built as part of the binary
2088 utilities, since it is only useful for Windows targets.
2089 @end quotation
2091 @smallexample
2092 windres [options] [input-file] [output-file]
2093 @end smallexample
2095 @code{windres} reads resources from an input file and copies them into
2096 an output file.  Either file may be in one of three formats:
2098 @table @code
2099 @item rc
2100 A text format read by the Resource Compiler.
2102 @item res
2103 A binary format generated by the Resource Compiler.
2105 @item coff
2106 A COFF object or executable.
2107 @end table
2109 The exact description of these different formats is available in
2110 documentation from Microsoft.
2112 When @code{windres} converts from the @code{rc} format to the @code{res}
2113 format, it is acting like the Windows Resource Compiler.  When
2114 @code{windres} converts from the @code{res} format to the @code{coff}
2115 format, it is acting like the Windows @code{CVTRES} program.
2117 When @code{windres} generates an @code{rc} file, the output is similar
2118 but not identical to the format expected for the input.  When an input
2119 @code{rc} file refers to an external filename, an output @code{rc} file
2120 will instead include the file contents.
2122 If the input or output format is not specified, @code{windres} will
2123 guess based on the file name, or, for the input file, the file contents.
2124 A file with an extension of @file{.rc} will be treated as an @code{rc}
2125 file, a file with an extension of @file{.res} will be treated as a
2126 @code{res} file, and a file with an extension of @file{.o} or
2127 @file{.exe} will be treated as a @code{coff} file.
2129 If no output file is specified, @code{windres} will print the resources
2130 in @code{rc} format to standard output.
2132 The normal use is for you to write an @code{rc} file, use @code{windres}
2133 to convert it to a COFF object file, and then link the COFF file into
2134 your application.  This will make the resources described in the
2135 @code{rc} file available to Windows.
2137 @table @code
2138 @item -i @var{filename}
2139 @itemx --input @var{filename}
2140 The name of the input file.  If this option is not used, then
2141 @code{windres} will use the first non-option argument as the input file
2142 name.  If there are no non-option arguments, then @code{windres} will
2143 read from standard input.  @code{windres} can not read a COFF file from
2144 standard input.
2146 @item -o @var{filename}
2147 @itemx --output @var{filename}
2148 The name of the output file.  If this option is not used, then
2149 @code{windres} will use the first non-option argument, after any used
2150 for the input file name, as the output file name.  If there is no
2151 non-option argument, then @code{windres} will write to standard output.
2152 @code{windres} can not write a COFF file to standard output.
2154 @item -I @var{format}
2155 @itemx --input-format @var{format}
2156 The input format to read.  @var{format} may be @samp{res}, @samp{rc}, or
2157 @samp{coff}.  If no input format is specified, @code{windres} will
2158 guess, as described above.
2160 @item -O @var{format}
2161 @itemx --output-format @var{format}
2162 The output format to generate.  @var{format} may be @samp{res},
2163 @samp{rc}, or @samp{coff}.  If no output format is specified,
2164 @code{windres} will guess, as described above.
2166 @item -F @var{target}
2167 @itemx --target @var{target}
2168 Specify the BFD format to use for a COFF file as input or output.  This
2169 is a BFD target name; you can use the @code{--help} option to see a list
2170 of supported targets.  Normally @code{windres} will use the default
2171 format, which is the first one listed by the @code{--help} option.
2172 @ref{Target Selection}.
2174 @item --preprocessor @var{program}
2175 When @code{windres} reads an @code{rc} file, it runs it through the C
2176 preprocessor first.  This option may be used to specify the preprocessor
2177 to use, including any leading arguments.  The default preprocessor
2178 argument is @code{gcc -E -xc-header -DRC_INVOKED}.
2180 @item --include-dir @var{directory}
2181 Specify an include directory to use when reading an @code{rc} file.
2182 @code{windres} will pass this to the preprocessor as an @code{-I}
2183 option.  @code{windres} will also search this directory when looking for
2184 files named in the @code{rc} file.
2186 @item -D @var{target}
2187 @itemx --define @var{sym}[=@var{val}]
2188 Specify a @code{-D} option to pass to the preprocessor when reading an
2189 @code{rc} file.
2191 @item -v
2192 Enable verbose mode.  This tells you what the preprocessor is if you
2193 didn't specify one.
2195 @item --language @var{val}
2196 Specify the default language to use when reading an @code{rc} file.
2197 @var{val} should be a hexadecimal language code.  The low eight bits are
2198 the language, and the high eight bits are the sublanguage.
2200 @item --use-temp-file
2201 Use a temporary file to instead of using popen to read the output of
2202 the preprocessor. Use this option if the popen implementation is buggy 
2203 on the host (eg., certain non-English language versions of Windows 95 and 
2204 Windows 98 are known to have buggy popen where the output will instead
2205 go the console).
2207 @item --no-use-temp-file
2208 Use popen, not a temporary file, to read the output of the preprocessor.
2209 This is the default behaviour.
2211 @item --help
2212 Prints a usage summary.
2214 @item --version
2215 Prints the version number for @code{windres}.
2217 @item --yydebug
2218 If @code{windres} is compiled with @code{YYDEBUG} defined as @code{1},
2219 this will turn on parser debugging.
2220 @end table
2223 @node dlltool
2224 @chapter Create files needed to build and use DLLs
2225 @cindex DLL
2226 @kindex dlltool
2228 @code{dlltool} may be used to create the files needed to build and use
2229 dynamic link libraries (DLLs).
2231 @quotation
2232 @emph{Warning:} @code{dlltool} is not always built as part of the binary
2233 utilities, since it is only useful for those targets which support DLLs.
2234 @end quotation
2236 @smallexample
2237 dlltool [-d|--input-def @var{def-file-name}]
2238         [-b|--base-file @var{base-file-name}]
2239         [-e|--output-exp @var{exports-file-name}]
2240         [-z|--output-def @var{def-file-name}]
2241         [-l|--output-lib @var{library-file-name}]        
2242         [--export-all-symbols] [--no-export-all-symbols]
2243         [--exclude-symbols @var{list}]
2244         [--no-default-excludes]
2245         [-S|--as @var{path-to-assembler}] [-f|--as-flags @var{options}]
2246         [-D|--dllname @var{name}] [-m|--machine @var{machine}]
2247         [-a|--add-indirect] [-U|--add-underscore] [-k|--kill-at]
2248         [-A|--add-stdcall-alias]
2249         [-x|--no-idata4] [-c|--no-idata5] [-i|--interwork]
2250         [-n|--nodelete] [-v|--verbose] [-h|--help] [-V|--version]
2251         [object-file @dots{}]
2252 @end smallexample
2254 @code{dlltool} reads its inputs, which can come from the @samp{-d} and
2255 @samp{-b} options as well as object files specified on the command
2256 line.  It then processes these inputs and if the @samp{-e} option has
2257 been specified it creates a exports file.  If the @samp{-l} option
2258 has been specified it creates a library file and if the @samp{-z} option
2259 has been specified it creates a def file.  Any or all of the -e, -l
2260 and -z options can be present in one invocation of dlltool.
2262 When creating a DLL, along with the source for the DLL, it is necessary
2263 to have three other files.  @code{dlltool} can help with the creation of
2264 these files.
2266 The first file is a @samp{.def} file which specifies which functions are
2267 exported from the DLL, which functions the DLL imports, and so on.  This
2268 is a text file and can be created by hand, or @code{dlltool} can be used
2269 to create it using the @samp{-z} option.  In this case @code{dlltool}
2270 will scan the object files specified on its command line looking for
2271 those functions which have been specially marked as being exported and
2272 put entries for them in the .def file it creates.
2274 In order to mark a function as being exported from a DLL, it needs to
2275 have an @samp{-export:<name_of_function>} entry in the @samp{.drectve}
2276 section of the object file.  This can be done in C by using the
2277 asm() operator:
2279 @smallexample
2280   asm (".section .drectve");  
2281   asm (".ascii \"-export:my_func\"");
2283   int my_func (void) @{ @dots{} @}
2284 @end smallexample
2286 The second file needed for DLL creation is an exports file.  This file
2287 is linked with the object files that make up the body of the DLL and it
2288 handles the interface between the DLL and the outside world.  This is a
2289 binary file and it can be created by giving the @samp{-e} option to
2290 @code{dlltool} when it is creating or reading in a .def file. 
2292 The third file needed for DLL creation is the library file that programs
2293 will link with in order to access the functions in the DLL.  This file
2294 can be created by giving the @samp{-l} option to dlltool when it
2295 is creating or reading in a .def file.
2297 @code{dlltool} builds the library file by hand, but it builds the
2298 exports file by creating temporary files containing assembler statements
2299 and then assembling these.  The @samp{-S} command line option can be
2300 used to specify the path to the assembler that dlltool will use,
2301 and the @samp{-f} option can be used to pass specific flags to that
2302 assembler.  The @samp{-n} can be used to prevent dlltool from deleting
2303 these temporary assembler files when it is done, and if @samp{-n} is
2304 specified twice then this will prevent dlltool from deleting the
2305 temporary object files it used to build the library.
2307 Here is an example of creating a DLL from a source file @samp{dll.c} and
2308 also creating a program (from an object file called @samp{program.o})
2309 that uses that DLL:
2311 @smallexample
2312   gcc -c dll.c
2313   dlltool -e exports.o -l dll.lib dll.o
2314   gcc dll.o exports.o -o dll.dll
2315   gcc program.o dll.lib -o program
2316 @end smallexample
2318 The command line options have the following meanings:
2320 @table @code
2322 @item -d @var{filename}
2323 @itemx --input-def @var{filename}
2324 @cindex input .def file
2325 Specifies the name of a .def file to be read in and processed.
2327 @item -b @var{filename}
2328 @itemx --base-file @var{filename}
2329 @cindex base files
2330 Specifies the name of a base file to be read in and processed.  The
2331 contents of this file will be added to the relocation section in the
2332 exports file generated by dlltool.
2334 @item -e @var{filename}
2335 @itemx --output-exp @var{filename}
2336 Specifies the name of the export file to be created by dlltool.
2338 @item -z @var{filename}
2339 @itemx --output-def @var{filename}
2340 Specifies the name of the .def file to be created by dlltool.
2342 @item -l @var{filename}
2343 @itemx --output-lib @var{filename}
2344 Specifies the name of the library file to be created by dlltool.
2346 @item --export-all-symbols
2347 Treat all global and weak defined symbols found in the input object
2348 files as symbols to be exported.  There is a small list of symbols which
2349 are not exported by default; see the @code{--no-default-excludes}
2350 option.  You may add to the list of symbols to not export by using the
2351 @code{--exclude-symbols} option.
2353 @item --no-export-all-symbols
2354 Only export symbols explicitly listed in an input .def file or in
2355 @samp{.drectve} sections in the input object files.  This is the default
2356 behaviour.  The @samp{.drectve} sections are created by @samp{dllexport}
2357 attributes in the source code.
2359 @item --exclude-symbols @var{list}
2360 Do not export the symbols in @var{list}.  This is a list of symbol names
2361 separated by comma or colon characters.  The symbol names should not
2362 contain a leading underscore.  This is only meaningful when
2363 @code{--export-all-symbols} is used.
2365 @item --no-default-excludes
2366 When @code{--export-all-symbols} is used, it will by default avoid
2367 exporting certain special symbols.  The current list of symbols to avoid
2368 exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
2369 @samp{impure_ptr}.  You may use the @code{--no-default-excludes} option
2370 to go ahead and export these special symbols.  This is only meaningful
2371 when @code{--export-all-symbols} is used.
2373 @item -S @var{path}
2374 @itemx --as @var{path}
2375 Specifies the path, including the filename, of the assembler to be used
2376 to create the exports file.
2378 @item -f @var{switches}
2379 @itemx --as-flags @var{switches}
2380 Specifies any specific command line switches to be passed to the
2381 assembler when building the exports file.  This option will work even if
2382 the @samp{-S} option is not used.  This option only takes one argument,
2383 and if it occurs more than once on the command line, then later
2384 occurrences will override earlier occurrences.  So if it is necessary to
2385 pass multiple switches to the assembler they should be enclosed in
2386 double quotes.
2388 @item -D @var{name}
2389 @itemx --dll-name @var{name}
2390 Specifies the name to be stored in the .def file as the name of the DLL
2391 when the @samp{-e} option is used.  If this option is not present, then
2392 the filename given to the @samp{-e} option will be used as the name of
2393 the DLL.
2395 @item -m @var{machine}
2396 @itemx -machine @var{machine}
2397 Specifies the type of machine for which the library file should be
2398 built.  @code{dlltool} has a built in default type, depending upon how
2399 it was created, but this option can be used to override that.  This is
2400 normally only useful when creating DLLs for an ARM processor, when the
2401 contents of the DLL are actually encode using THUMB instructions.
2403 @item -a
2404 @itemx --add-indirect
2405 Specifies that when @code{dlltool} is creating the exports file it
2406 should add a section which allows the exported functions to be
2407 referenced without using the import library.  Whatever the hell that
2408 means! 
2410 @item -U
2411 @itemx --add-underscore
2412 Specifies that when @code{dlltool} is creating the exports file it
2413 should prepend an underscore to the names of the exported functions. 
2415 @item -k
2416 @itemx --kill-at
2417 Specifies that when @code{dlltool} is creating the exports file it
2418 should not append the string @samp{@@ <number>}.  These numbers are
2419 called ordinal numbers and they represent another way of accessing the
2420 function in a DLL, other than by name.
2422 @item -A
2423 @itemx --add-stdcall-alias
2424 Specifies that when @code{dlltool} is creating the exports file it
2425 should add aliases for stdcall symbols without @samp{@@ <number>}
2426 in addition to the symbols with @samp{@@ <number>}.
2428 @item -x
2429 @itemx --no-idata4
2430 Specifies that when @code{dlltool} is creating the exports and library
2431 files it should omit the .idata4 section.  This is for compatibility
2432 with certain operating systems.
2434 @item -c
2435 @itemx --no-idata5
2436 Specifies that when @code{dlltool} is creating the exports and library
2437 files it should omit the .idata5 section.  This is for compatibility
2438 with certain operating systems.
2440 @item -i
2441 @itemx --interwork
2442 Specifies that @code{dlltool} should mark the objects in the library
2443 file and exports file that it produces as supporting interworking
2444 between ARM and THUMB code.
2446 @item -n
2447 @itemx --nodelete
2448 Makes @code{dlltool} preserve the temporary assembler files it used to
2449 create the exports file.  If this option is repeated then dlltool will
2450 also preserve the temporary object files it uses to create the library
2451 file. 
2453 @item -v
2454 @itemx --verbose
2455 Make dlltool describe what it is doing.
2457 @item -h
2458 @itemx --help
2459 Displays a list of command line options and then exits.
2461 @item -V
2462 @itemx --version
2463 Displays dlltool's version number and then exits.
2465 @end table
2467 @node readelf
2468 @chapter readelf
2470 @cindex ELF file information
2471 @kindex readelf
2473 @smallexample
2474 readelf [ -a | --all ] 
2475         [ -h | --file-header]
2476         [ -l | --program-headers | --segments]
2477         [ -S | --section-headers | --sections]
2478         [ -e | --headers]
2479         [ -s | --syms | --symbols]
2480         [ -n | --notes]
2481         [ -r | --relocs]
2482         [ -u | --unwind]
2483         [ -d | --dynamic]
2484         [ -V | --version-info]
2485         [ -D | --use-dynamic]
2486         [ -x <number> | --hex-dump=<number>]
2487         [ -w[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
2488         [      --histogram]
2489         [ -v | --version]
2490         [ -H | --help]
2491         @var{elffile}@dots{}
2492 @end smallexample
2494 @code{readelf} displays information about one or more ELF format object
2495 files.  The options control what particular information to display.
2497 @var{elffile}@dots{} are the object files to be examined.  At the
2498 moment, @code{readelf} does not support examining archives, nor does it
2499 support examing 64 bit ELF files.
2501 The long and short forms of options, shown here as alternatives, are
2502 equivalent.  At least one option besides @samp{-v} or @samp{-H} must be
2503 given. 
2505 @table @code
2506 @item -a
2507 @itemx --all
2508 Equivalent to specifiying @samp{--file-header},
2509 @samp{--program-headers}, @samp{--sections}, @samp{--symbols},
2510 @samp{--relocs}, @samp{--dynamic}, @samp{--notes} and
2511 @samp{--version-info}. 
2513 @item -h
2514 @itemx --file-header
2515 @cindex ELF file header information
2516 Displays the information contained in the ELF header at the start of the
2517 file.
2519 @item -l
2520 @itemx --program-headers
2521 @itemx --segments
2522 @cindex ELF program header information
2523 @cindex ELF segment information
2524 Displays the information contained in the file's segment headers, if it
2525 has any.
2527 @item -S
2528 @itemx --sections
2529 @itemx --section-headers
2530 @cindex ELF section information
2531 Displays the information contained in the file's section headers, if it
2532 has any.
2534 @item -s
2535 @itemx --symbols
2536 @itemx --syms
2537 @cindex ELF symbol table information
2538 Displays the entries in symbol table section of the file, if it has one.
2540 @item -e
2541 @itemx --headers
2542 Display all the headers in the file.  Equivalent to @samp{-h -l -S}.
2544 @item -n
2545 @itemx --notes
2546 @cindex ELF core notes
2547 Displays the contents of the NOTE segment, if it exists.
2549 @item -r
2550 @itemx --relocs
2551 @cindex ELF reloc information
2552 Displays the contents of the file's relocation section, if it has one.
2554 @item -u
2555 @itemx --unwind
2556 @cindex unwind information
2557 Displays the contents of the file's unwind section, if it has one.  Only
2558 the unwind sections for IA64 ELF files are currently supported.
2560 @item -d
2561 @itemx --dynamic
2562 @cindex ELF dynamic section information
2563 Displays the contents of the file's dynamic section, if it has one.
2565 @item -V
2566 @itemx --version-info
2567 @cindex ELF version sections informations
2568 Displays the contents of the version sections in the file, it they
2569 exist.
2571 @item -D
2572 @itemx --use-dynamic
2573 When displaying symbols, this option makes @code{readelf} use the
2574 symbol table in the file's dynamic section, rather than the one in the
2575 symbols section.
2577 @item -x <number>
2578 @itemx --hex-dump=<number>
2579 Displays the contents of the indicated section as a hexadecimal dump.
2581 @item -w[liaprf]
2582 @itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
2583 Displays the contents of the debug sections in the file, if any are
2584 present.  If one of the optional letters or words follows the switch
2585 then only data found in those specific sections will be dumped.
2587 @item --histogram
2588 Display a histogram of bucket list lengths when displaying the contents
2589 of the symbol tables.
2591 @item -v
2592 @itemx --version
2593 Display the version number of readelf.
2595 @item -H
2596 @itemx --help
2597 Display the command line options understood by @code{readelf}.
2599 @end table
2602 @node Selecting The Target System
2603 @chapter Selecting the target system
2605 You can specify three aspects of the target system to the @sc{gnu}
2606 binary file utilities, each in several ways:
2608 @itemize @bullet
2609 @item
2610 the target
2612 @item
2613 the architecture
2615 @item
2616 the linker emulation (which applies to the linker only)
2617 @end itemize
2619 In the following summaries, the lists of ways to specify values are in
2620 order of decreasing precedence.  The ways listed first override those
2621 listed later.
2623 The commands to list valid values only list the values for which the
2624 programs you are running were configured.  If they were configured with
2625 @samp{--enable-targets=all}, the commands list most of the available
2626 values, but a few are left out; not all targets can be configured in at
2627 once because some of them can only be configured @dfn{native} (on hosts
2628 with the same type as the target system).
2630 @menu
2631 * Target Selection::            
2632 * Architecture Selection::      
2633 * Linker Emulation Selection::  
2634 @end menu
2636 @node Target Selection
2637 @section Target Selection
2639 A @dfn{target} is an object file format.  A given target may be
2640 supported for multiple architectures (@pxref{Architecture Selection}).
2641 A target selection may also have variations for different operating
2642 systems or architectures.
2644 The command to list valid target values is @samp{objdump -i}
2645 (the first column of output contains the relevant information).
2647 Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
2648 @samp{a.out-sunos-big}.
2650 You can also specify a target using a configuration triplet.  This is
2651 the same sort of name that is passed to @file{configure} to specify a
2652 target.  When you use a configuration triplet as an argument, it must be
2653 fully canonicalized.  You can see the canonical version of a triplet by
2654 running the shell script @file{config.sub} which is included with the
2655 sources.
2657 Some sample configuration triplets are: @samp{m68k-hp-bsd},
2658 @samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
2660 @subheading @code{objdump} Target
2662 Ways to specify:
2664 @enumerate
2665 @item
2666 command line option: @samp{-b} or @samp{--target}
2668 @item
2669 environment variable @code{GNUTARGET}
2671 @item
2672 deduced from the input file
2673 @end enumerate
2675 @subheading @code{objcopy} and @code{strip} Input Target
2677 Ways to specify:
2679 @enumerate
2680 @item
2681 command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
2683 @item
2684 environment variable @code{GNUTARGET}
2686 @item
2687 deduced from the input file
2688 @end enumerate
2690 @subheading @code{objcopy} and @code{strip} Output Target
2692 Ways to specify:
2694 @enumerate
2695 @item
2696 command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
2698 @item
2699 the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
2701 @item
2702 environment variable @code{GNUTARGET}
2704 @item
2705 deduced from the input file
2706 @end enumerate
2708 @subheading @code{nm}, @code{size}, and @code{strings} Target
2710 Ways to specify:
2712 @enumerate
2713 @item
2714 command line option: @samp{--target}
2716 @item
2717 environment variable @code{GNUTARGET}
2719 @item
2720 deduced from the input file
2721 @end enumerate
2723 @subheading Linker Input Target
2725 Ways to specify:
2727 @enumerate
2728 @item
2729 command line option: @samp{-b} or @samp{--format}
2730 (@pxref{Options,,Options,ld.info,Using LD})
2732 @item
2733 script command @code{TARGET}
2734 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2736 @item
2737 environment variable @code{GNUTARGET}
2738 (@pxref{Environment,,Environment,ld.info,Using LD})
2740 @item
2741 the default target of the selected linker emulation
2742 (@pxref{Linker Emulation Selection})
2743 @end enumerate
2745 @subheading Linker Output Target
2747 Ways to specify:
2749 @enumerate
2750 @item
2751 command line option: @samp{-oformat}
2752 (@pxref{Options,,Options,ld.info,Using LD})
2754 @item
2755 script command @code{OUTPUT_FORMAT}
2756 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2758 @item
2759 the linker input target (see ``Linker Input Target'' above)
2760 @end enumerate
2762 @node Architecture Selection
2763 @section Architecture selection
2765 An @dfn{architecture} is a type of @sc{cpu} on which an object file is
2766 to run.  Its name may contain a colon, separating the name of the
2767 processor family from the name of the particular @sc{cpu}.
2769 The command to list valid architecture values is @samp{objdump -i} (the
2770 second column contains the relevant information).
2772 Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
2774 @subheading @code{objdump} Architecture
2776 Ways to specify:
2778 @enumerate
2779 @item
2780 command line option: @samp{-m} or @samp{--architecture}
2782 @item
2783 deduced from the input file
2784 @end enumerate
2786 @subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
2788 Ways to specify:
2790 @enumerate
2791 @item
2792 deduced from the input file
2793 @end enumerate
2795 @subheading Linker Input Architecture
2797 Ways to specify:
2799 @enumerate
2800 @item
2801 deduced from the input file
2802 @end enumerate
2804 @subheading Linker Output Architecture
2806 Ways to specify:
2808 @enumerate
2809 @item
2810 script command @code{OUTPUT_ARCH}
2811 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2813 @item
2814 the default architecture from the linker output target
2815 (@pxref{Target Selection})
2816 @end enumerate
2818 @node Linker Emulation Selection
2819 @section Linker emulation selection
2821 A linker @dfn{emulation} is a ``personality'' of the linker, which gives
2822 the linker default values for the other aspects of the target system.
2823 In particular, it consists of
2825 @itemize @bullet
2826 @item
2827 the linker script
2829 @item
2830 the target
2832 @item
2833 several ``hook'' functions that are run at certain stages of the linking
2834 process to do special things that some targets require
2835 @end itemize
2837 The command to list valid linker emulation values is @samp{ld -V}.
2839 Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
2841 Ways to specify:
2843 @enumerate
2844 @item
2845 command line option: @samp{-m}
2846 (@pxref{Options,,Options,ld.info,Using LD})
2848 @item
2849 environment variable @code{LDEMULATION}
2851 @item
2852 compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
2853 which comes from @code{EMUL} in @file{config/@var{target}.mt}
2854 @end enumerate
2856 @node Reporting Bugs
2857 @chapter Reporting Bugs
2858 @cindex bugs
2859 @cindex reporting bugs
2861 Your bug reports play an essential role in making the binary utilities
2862 reliable.
2864 Reporting a bug may help you by bringing a solution to your problem, or
2865 it may not.  But in any case the principal function of a bug report is
2866 to help the entire community by making the next version of the binary
2867 utilities work better.  Bug reports are your contribution to their
2868 maintenance.
2870 In order for a bug report to serve its purpose, you must include the
2871 information that enables us to fix the bug.
2873 @menu
2874 * Bug Criteria::                Have you found a bug?
2875 * Bug Reporting::               How to report bugs
2876 @end menu
2878 @node Bug Criteria
2879 @section Have you found a bug?
2880 @cindex bug criteria
2882 If you are not sure whether you have found a bug, here are some guidelines:
2884 @itemize @bullet
2885 @cindex fatal signal
2886 @cindex crash
2887 @item
2888 If a binary utility gets a fatal signal, for any input whatever, that is
2889 a bug.  Reliable utilities never crash.
2891 @cindex error on valid input
2892 @item
2893 If a binary utility produces an error message for valid input, that is a
2894 bug.
2896 @item
2897 If you are an experienced user of binary utilities, your suggestions for
2898 improvement are welcome in any case.
2899 @end itemize
2901 @node Bug Reporting
2902 @section How to report bugs
2903 @cindex bug reports
2904 @cindex bugs, reporting
2906 A number of companies and individuals offer support for @sc{gnu}
2907 products.  If you obtained the binary utilities from a support
2908 organization, we recommend you contact that organization first.
2910 You can find contact information for many support companies and
2911 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
2912 distribution.
2914 In any event, we also recommend that you send bug reports for the binary
2915 utilities to @samp{bug-binutils@@gnu.org}.
2917 The fundamental principle of reporting bugs usefully is this:
2918 @strong{report all the facts}.  If you are not sure whether to state a
2919 fact or leave it out, state it!
2921 Often people omit facts because they think they know what causes the
2922 problem and assume that some details do not matter.  Thus, you might
2923 assume that the name of a file you use in an example does not matter.
2924 Well, probably it does not, but one cannot be sure.  Perhaps the bug is
2925 a stray memory reference which happens to fetch from the location where
2926 that pathname is stored in memory; perhaps, if the pathname were
2927 different, the contents of that location would fool the utility into
2928 doing the right thing despite the bug.  Play it safe and give a
2929 specific, complete example.  That is the easiest thing for you to do,
2930 and the most helpful.
2932 Keep in mind that the purpose of a bug report is to enable us to fix the bug if
2933 it is new to us.  Therefore, always write your bug reports on the assumption
2934 that the bug has not been reported previously.
2936 Sometimes people give a few sketchy facts and ask, ``Does this ring a
2937 bell?''  Those bug reports are useless, and we urge everyone to
2938 @emph{refuse to respond to them} except to chide the sender to report
2939 bugs properly.
2941 To enable us to fix the bug, you should include all these things:
2943 @itemize @bullet
2944 @item
2945 The version of the utility.  Each utility announces it if you start it
2946 with the @samp{--version} argument.
2948 Without this, we will not know whether there is any point in looking for
2949 the bug in the current version of the binary utilities.
2951 @item
2952 Any patches you may have applied to the source, including any patches
2953 made to the @code{BFD} library.
2955 @item
2956 The type of machine you are using, and the operating system name and
2957 version number.
2959 @item
2960 What compiler (and its version) was used to compile the utilities---e.g.
2961 ``@code{gcc-2.7}''.
2963 @item
2964 The command arguments you gave the utility to observe the bug.  To
2965 guarantee you will not omit something important, list them all.  A copy
2966 of the Makefile (or the output from make) is sufficient.
2968 If we were to try to guess the arguments, we would probably guess wrong
2969 and then we might not encounter the bug.
2971 @item
2972 A complete input file, or set of input files, that will reproduce the
2973 bug.  If the utility is reading an object file or files, then it is
2974 generally most helpful to send the actual object files, uuencoded if
2975 necessary to get them through the mail system.  Note that
2976 @samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid
2977 sending very large files to it.  Making the files available for
2978 anonymous FTP is OK.
2980 If the source files were produced exclusively using @sc{gnu} programs
2981 (e.g., @code{gcc}, @code{gas}, and/or the @sc{gnu} @code{ld}), then it
2982 may be OK to send the source files rather than the object files.  In
2983 this case, be sure to say exactly what version of @code{gcc}, or
2984 whatever, was used to produce the object files.  Also say how
2985 @code{gcc}, or whatever, was configured.
2987 @item
2988 A description of what behavior you observe that you believe is
2989 incorrect.  For example, ``It gets a fatal signal.''
2991 Of course, if the bug is that the utility gets a fatal signal, then we
2992 will certainly notice it.  But if the bug is incorrect output, we might
2993 not notice unless it is glaringly wrong.  You might as well not give us
2994 a chance to make a mistake.
2996 Even if the problem you experience is a fatal signal, you should still
2997 say so explicitly.  Suppose something strange is going on, such as your
2998 copy of the utility is out of synch, or you have encountered a bug in
2999 the C library on your system.  (This has happened!)  Your copy might
3000 crash and ours would not.  If you told us to expect a crash, then when
3001 ours fails to crash, we would know that the bug was not happening for
3002 us.  If you had not told us to expect a crash, then we would not be able
3003 to draw any conclusion from our observations.
3005 @item
3006 If you wish to suggest changes to the source, send us context diffs, as
3007 generated by @code{diff} with the @samp{-u}, @samp{-c}, or @samp{-p}
3008 option.  Always send diffs from the old file to the new file.  If you
3009 wish to discuss something in the @code{ld} source, refer to it by
3010 context, not by line number.
3012 The line numbers in our development sources will not match those in your
3013 sources.  Your line numbers would convey no useful information to us.
3014 @end itemize
3016 Here are some things that are not necessary:
3018 @itemize @bullet
3019 @item
3020 A description of the envelope of the bug.
3022 Often people who encounter a bug spend a lot of time investigating
3023 which changes to the input file will make the bug go away and which
3024 changes will not affect it.
3026 This is often time consuming and not very useful, because the way we
3027 will find the bug is by running a single example under the debugger
3028 with breakpoints, not by pure deduction from a series of examples.
3029 We recommend that you save your time for something else.
3031 Of course, if you can find a simpler example to report @emph{instead}
3032 of the original one, that is a convenience for us.  Errors in the
3033 output will be easier to spot, running under the debugger will take
3034 less time, and so on.
3036 However, simplification is not vital; if you do not want to do this,
3037 report the bug anyway and send us the entire test case you used.
3039 @item
3040 A patch for the bug.
3042 A patch for the bug does help us if it is a good one.  But do not omit
3043 the necessary information, such as the test case, on the assumption that
3044 a patch is all we need.  We might see problems with your patch and decide
3045 to fix the problem another way, or we might not understand it at all.
3047 Sometimes with programs as complicated as the binary utilities it is
3048 very hard to construct an example that will make the program follow a
3049 certain path through the code.  If you do not send us the example, we
3050 will not be able to construct one, so we will not be able to verify that
3051 the bug is fixed.
3053 And if we cannot understand what bug you are trying to fix, or why your
3054 patch should be an improvement, we will not install it.  A test case will
3055 help us to understand.
3057 @item
3058 A guess about what the bug is or what it depends on.
3060 Such guesses are usually wrong.  Even we cannot guess right about such
3061 things without first using the debugger to find the facts.
3062 @end itemize
3064 @node GNU Free Documentation License
3065 @chapter GNU Free Documentation License
3066 @cindex GNU Free Documentation License
3068                 GNU Free Documentation License
3069                 
3070                    Version 1.1, March 2000
3072  Copyright (C) 2000  Free Software Foundation, Inc.
3073   59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
3074      
3075  Everyone is permitted to copy and distribute verbatim copies
3076  of this license document, but changing it is not allowed.
3079 0. PREAMBLE
3081 The purpose of this License is to make a manual, textbook, or other
3082 written document "free" in the sense of freedom: to assure everyone
3083 the effective freedom to copy and redistribute it, with or without
3084 modifying it, either commercially or noncommercially.  Secondarily,
3085 this License preserves for the author and publisher a way to get
3086 credit for their work, while not being considered responsible for
3087 modifications made by others.
3089 This License is a kind of "copyleft", which means that derivative
3090 works of the document must themselves be free in the same sense.  It
3091 complements the GNU General Public License, which is a copyleft
3092 license designed for free software.
3094 We have designed this License in order to use it for manuals for free
3095 software, because free software needs free documentation: a free
3096 program should come with manuals providing the same freedoms that the
3097 software does.  But this License is not limited to software manuals;
3098 it can be used for any textual work, regardless of subject matter or
3099 whether it is published as a printed book.  We recommend this License
3100 principally for works whose purpose is instruction or reference.
3103 1. APPLICABILITY AND DEFINITIONS
3105 This License applies to any manual or other work that contains a
3106 notice placed by the copyright holder saying it can be distributed
3107 under the terms of this License.  The "Document", below, refers to any
3108 such manual or work.  Any member of the public is a licensee, and is
3109 addressed as "you".
3111 A "Modified Version" of the Document means any work containing the
3112 Document or a portion of it, either copied verbatim, or with
3113 modifications and/or translated into another language.
3115 A "Secondary Section" is a named appendix or a front-matter section of
3116 the Document that deals exclusively with the relationship of the
3117 publishers or authors of the Document to the Document's overall subject
3118 (or to related matters) and contains nothing that could fall directly
3119 within that overall subject.  (For example, if the Document is in part a
3120 textbook of mathematics, a Secondary Section may not explain any
3121 mathematics.)  The relationship could be a matter of historical
3122 connection with the subject or with related matters, or of legal,
3123 commercial, philosophical, ethical or political position regarding
3124 them.
3126 The "Invariant Sections" are certain Secondary Sections whose titles
3127 are designated, as being those of Invariant Sections, in the notice
3128 that says that the Document is released under this License.
3130 The "Cover Texts" are certain short passages of text that are listed,
3131 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
3132 the Document is released under this License.
3134 A "Transparent" copy of the Document means a machine-readable copy,
3135 represented in a format whose specification is available to the
3136 general public, whose contents can be viewed and edited directly and
3137 straightforwardly with generic text editors or (for images composed of
3138 pixels) generic paint programs or (for drawings) some widely available
3139 drawing editor, and that is suitable for input to text formatters or
3140 for automatic translation to a variety of formats suitable for input
3141 to text formatters.  A copy made in an otherwise Transparent file
3142 format whose markup has been designed to thwart or discourage
3143 subsequent modification by readers is not Transparent.  A copy that is
3144 not "Transparent" is called "Opaque".
3146 Examples of suitable formats for Transparent copies include plain
3147 ASCII without markup, Texinfo input format, LaTeX input format, SGML
3148 or XML using a publicly available DTD, and standard-conforming simple
3149 HTML designed for human modification.  Opaque formats include
3150 PostScript, PDF, proprietary formats that can be read and edited only
3151 by proprietary word processors, SGML or XML for which the DTD and/or
3152 processing tools are not generally available, and the
3153 machine-generated HTML produced by some word processors for output
3154 purposes only.
3156 The "Title Page" means, for a printed book, the title page itself,
3157 plus such following pages as are needed to hold, legibly, the material
3158 this License requires to appear in the title page.  For works in
3159 formats which do not have any title page as such, "Title Page" means
3160 the text near the most prominent appearance of the work's title,
3161 preceding the beginning of the body of the text.
3164 2. VERBATIM COPYING
3166 You may copy and distribute the Document in any medium, either
3167 commercially or noncommercially, provided that this License, the
3168 copyright notices, and the license notice saying this License applies
3169 to the Document are reproduced in all copies, and that you add no other
3170 conditions whatsoever to those of this License.  You may not use
3171 technical measures to obstruct or control the reading or further
3172 copying of the copies you make or distribute.  However, you may accept
3173 compensation in exchange for copies.  If you distribute a large enough
3174 number of copies you must also follow the conditions in section 3.
3176 You may also lend copies, under the same conditions stated above, and
3177 you may publicly display copies.
3180 3. COPYING IN QUANTITY
3182 If you publish printed copies of the Document numbering more than 100,
3183 and the Document's license notice requires Cover Texts, you must enclose
3184 the copies in covers that carry, clearly and legibly, all these Cover
3185 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
3186 the back cover.  Both covers must also clearly and legibly identify
3187 you as the publisher of these copies.  The front cover must present
3188 the full title with all words of the title equally prominent and
3189 visible.  You may add other material on the covers in addition.
3190 Copying with changes limited to the covers, as long as they preserve
3191 the title of the Document and satisfy these conditions, can be treated
3192 as verbatim copying in other respects.
3194 If the required texts for either cover are too voluminous to fit
3195 legibly, you should put the first ones listed (as many as fit
3196 reasonably) on the actual cover, and continue the rest onto adjacent
3197 pages.
3199 If you publish or distribute Opaque copies of the Document numbering
3200 more than 100, you must either include a machine-readable Transparent
3201 copy along with each Opaque copy, or state in or with each Opaque copy
3202 a publicly-accessible computer-network location containing a complete
3203 Transparent copy of the Document, free of added material, which the
3204 general network-using public has access to download anonymously at no
3205 charge using public-standard network protocols.  If you use the latter
3206 option, you must take reasonably prudent steps, when you begin
3207 distribution of Opaque copies in quantity, to ensure that this
3208 Transparent copy will remain thus accessible at the stated location
3209 until at least one year after the last time you distribute an Opaque
3210 copy (directly or through your agents or retailers) of that edition to
3211 the public.
3213 It is requested, but not required, that you contact the authors of the
3214 Document well before redistributing any large number of copies, to give
3215 them a chance to provide you with an updated version of the Document.
3218 4. MODIFICATIONS
3220 You may copy and distribute a Modified Version of the Document under
3221 the conditions of sections 2 and 3 above, provided that you release
3222 the Modified Version under precisely this License, with the Modified
3223 Version filling the role of the Document, thus licensing distribution
3224 and modification of the Modified Version to whoever possesses a copy
3225 of it.  In addition, you must do these things in the Modified Version:
3227 A. Use in the Title Page (and on the covers, if any) a title distinct
3228    from that of the Document, and from those of previous versions
3229    (which should, if there were any, be listed in the History section
3230    of the Document).  You may use the same title as a previous version
3231    if the original publisher of that version gives permission.
3232 B. List on the Title Page, as authors, one or more persons or entities
3233    responsible for authorship of the modifications in the Modified
3234    Version, together with at least five of the principal authors of the
3235    Document (all of its principal authors, if it has less than five).
3236 C. State on the Title page the name of the publisher of the
3237    Modified Version, as the publisher.
3238 D. Preserve all the copyright notices of the Document.
3239 E. Add an appropriate copyright notice for your modifications
3240    adjacent to the other copyright notices.
3241 F. Include, immediately after the copyright notices, a license notice
3242    giving the public permission to use the Modified Version under the
3243    terms of this License, in the form shown in the Addendum below.
3244 G. Preserve in that license notice the full lists of Invariant Sections
3245    and required Cover Texts given in the Document's license notice.
3246 H. Include an unaltered copy of this License.
3247 I. Preserve the section entitled "History", and its title, and add to
3248    it an item stating at least the title, year, new authors, and
3249    publisher of the Modified Version as given on the Title Page.  If
3250    there is no section entitled "History" in the Document, create one
3251    stating the title, year, authors, and publisher of the Document as
3252    given on its Title Page, then add an item describing the Modified
3253    Version as stated in the previous sentence.
3254 J. Preserve the network location, if any, given in the Document for
3255    public access to a Transparent copy of the Document, and likewise
3256    the network locations given in the Document for previous versions
3257    it was based on.  These may be placed in the "History" section.
3258    You may omit a network location for a work that was published at
3259    least four years before the Document itself, or if the original
3260    publisher of the version it refers to gives permission.
3261 K. In any section entitled "Acknowledgements" or "Dedications",
3262    preserve the section's title, and preserve in the section all the
3263    substance and tone of each of the contributor acknowledgements
3264    and/or dedications given therein.
3265 L. Preserve all the Invariant Sections of the Document,
3266    unaltered in their text and in their titles.  Section numbers
3267    or the equivalent are not considered part of the section titles.
3268 M. Delete any section entitled "Endorsements".  Such a section
3269    may not be included in the Modified Version.
3270 N. Do not retitle any existing section as "Endorsements"
3271    or to conflict in title with any Invariant Section.
3273 If the Modified Version includes new front-matter sections or
3274 appendices that qualify as Secondary Sections and contain no material
3275 copied from the Document, you may at your option designate some or all
3276 of these sections as invariant.  To do this, add their titles to the
3277 list of Invariant Sections in the Modified Version's license notice.
3278 These titles must be distinct from any other section titles.
3280 You may add a section entitled "Endorsements", provided it contains
3281 nothing but endorsements of your Modified Version by various
3282 parties--for example, statements of peer review or that the text has
3283 been approved by an organization as the authoritative definition of a
3284 standard.
3286 You may add a passage of up to five words as a Front-Cover Text, and a
3287 passage of up to 25 words as a Back-Cover Text, to the end of the list
3288 of Cover Texts in the Modified Version.  Only one passage of
3289 Front-Cover Text and one of Back-Cover Text may be added by (or
3290 through arrangements made by) any one entity.  If the Document already
3291 includes a cover text for the same cover, previously added by you or
3292 by arrangement made by the same entity you are acting on behalf of,
3293 you may not add another; but you may replace the old one, on explicit
3294 permission from the previous publisher that added the old one.
3296 The author(s) and publisher(s) of the Document do not by this License
3297 give permission to use their names for publicity for or to assert or
3298 imply endorsement of any Modified Version.
3301 5. COMBINING DOCUMENTS
3303 You may combine the Document with other documents released under this
3304 License, under the terms defined in section 4 above for modified
3305 versions, provided that you include in the combination all of the
3306 Invariant Sections of all of the original documents, unmodified, and
3307 list them all as Invariant Sections of your combined work in its
3308 license notice.
3310 The combined work need only contain one copy of this License, and
3311 multiple identical Invariant Sections may be replaced with a single
3312 copy.  If there are multiple Invariant Sections with the same name but
3313 different contents, make the title of each such section unique by
3314 adding at the end of it, in parentheses, the name of the original
3315 author or publisher of that section if known, or else a unique number.
3316 Make the same adjustment to the section titles in the list of
3317 Invariant Sections in the license notice of the combined work.
3319 In the combination, you must combine any sections entitled "History"
3320 in the various original documents, forming one section entitled
3321 "History"; likewise combine any sections entitled "Acknowledgements",
3322 and any sections entitled "Dedications".  You must delete all sections
3323 entitled "Endorsements."
3326 6. COLLECTIONS OF DOCUMENTS
3328 You may make a collection consisting of the Document and other documents
3329 released under this License, and replace the individual copies of this
3330 License in the various documents with a single copy that is included in
3331 the collection, provided that you follow the rules of this License for
3332 verbatim copying of each of the documents in all other respects.
3334 You may extract a single document from such a collection, and distribute
3335 it individually under this License, provided you insert a copy of this
3336 License into the extracted document, and follow this License in all
3337 other respects regarding verbatim copying of that document.
3340 7. AGGREGATION WITH INDEPENDENT WORKS
3342 A compilation of the Document or its derivatives with other separate
3343 and independent documents or works, in or on a volume of a storage or
3344 distribution medium, does not as a whole count as a Modified Version
3345 of the Document, provided no compilation copyright is claimed for the
3346 compilation.  Such a compilation is called an "aggregate", and this
3347 License does not apply to the other self-contained works thus compiled
3348 with the Document, on account of their being thus compiled, if they
3349 are not themselves derivative works of the Document.
3351 If the Cover Text requirement of section 3 is applicable to these
3352 copies of the Document, then if the Document is less than one quarter
3353 of the entire aggregate, the Document's Cover Texts may be placed on
3354 covers that surround only the Document within the aggregate.
3355 Otherwise they must appear on covers around the whole aggregate.
3358 8. TRANSLATION
3360 Translation is considered a kind of modification, so you may
3361 distribute translations of the Document under the terms of section 4.
3362 Replacing Invariant Sections with translations requires special
3363 permission from their copyright holders, but you may include
3364 translations of some or all Invariant Sections in addition to the
3365 original versions of these Invariant Sections.  You may include a
3366 translation of this License provided that you also include the
3367 original English version of this License.  In case of a disagreement
3368 between the translation and the original English version of this
3369 License, the original English version will prevail.
3372 9. TERMINATION
3374 You may not copy, modify, sublicense, or distribute the Document except
3375 as expressly provided for under this License.  Any other attempt to
3376 copy, modify, sublicense or distribute the Document is void, and will
3377 automatically terminate your rights under this License.  However,
3378 parties who have received copies, or rights, from you under this
3379 License will not have their licenses terminated so long as such
3380 parties remain in full compliance.
3383 10. FUTURE REVISIONS OF THIS LICENSE
3385 The Free Software Foundation may publish new, revised versions
3386 of the GNU Free Documentation License from time to time.  Such new
3387 versions will be similar in spirit to the present version, but may
3388 differ in detail to address new problems or concerns.  See
3389 http://www.gnu.org/copyleft/.
3391 Each version of the License is given a distinguishing version number.
3392 If the Document specifies that a particular numbered version of this
3393 License "or any later version" applies to it, you have the option of
3394 following the terms and conditions either of that specified version or
3395 of any later version that has been published (not as a draft) by the
3396 Free Software Foundation.  If the Document does not specify a version
3397 number of this License, you may choose any version ever published (not
3398 as a draft) by the Free Software Foundation.
3401 ADDENDUM: How to use this License for your documents
3403 To use this License in a document you have written, include a copy of
3404 the License in the document and put the following copyright and
3405 license notices just after the title page:
3407 @smallexample
3408     Copyright (c)  YEAR  YOUR NAME.
3409     Permission is granted to copy, distribute and/or modify this document
3410     under the terms of the GNU Free Documentation License, Version 1.1
3411     or any later version published by the Free Software Foundation;
3412     with the Invariant Sections being LIST THEIR TITLES, with the
3413     Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
3414     A copy of the license is included in the section entitled "GNU
3415     Free Documentation License".
3416 @end smallexample
3418 If you have no Invariant Sections, write "with no Invariant Sections"
3419 instead of saying which ones are invariant.  If you have no
3420 Front-Cover Texts, write "no Front-Cover Texts" instead of
3421 "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
3423 If your document contains nontrivial examples of program code, we
3424 recommend releasing these examples in parallel under your choice of
3425 free software license, such as the GNU General Public License,
3426 to permit their use in free software.
3428 @node Index
3429 @unnumbered Index
3431 @printindex cp
3433 @contents
3434 @bye