2001-02-04 Philip Blundell <philb@gnu.org>
[binutils-gdb.git] / binutils / binutils.texi
1 \input texinfo @c -*- Texinfo -*-
2 @setfilename binutils.info
3 @include config.texi
4
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
27
28 @ifinfo
29 Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
30
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".
37
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).
43
44 @end ignore
45 @end ifinfo
46
47 @synindex ky cp
48 @c
49 @c This file documents the GNU binary utilities "ar", "ld", "objcopy",
50 @c "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib".
51 @c
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.
56 @c
57
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
70
71 @tex
72 {\parskip=0pt \hfill Cygnus Support\par \hfill
73 \TeX{}info \texinfoversion\par }
74 @end tex
75
76 @vskip 0pt plus 1filll
77 Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001 Free Software Foundation, Inc.
78
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".
85
86 @end titlepage
87
88 @node Top
89 @top Introduction
90
91 @cindex version
92 This brief manual contains preliminary documentation for the @sc{gnu} binary
93 utilities (collectively version @value{VERSION}):
94
95 @iftex
96 @table @code
97 @item ar
98 Create, modify, and extract from archives
99
100 @item nm
101 List symbols from object files
102
103 @item objcopy
104 Copy and translate object files
105
106 @item objdump
107 Display information from object files
108
109 @item ranlib
110 Generate index to archive contents
111
112 @item readelf
113 Display the contents of ELF format files.
114
115 @item size
116 List file section sizes and total size
117
118 @item strings
119 List printable strings from files
120
121 @item strip
122 Discard symbols
123
124 @item c++filt
125 Demangle encoded C++ symbols (on MS-DOS, this program is named
126 @code{cxxfilt})
127
128 @item addr2line
129 Convert addresses into file names and line numbers
130
131 @item nlmconv
132 Convert object code into a Netware Loadable Module
133
134 @item windres
135 Manipulate Windows resources
136
137 @item dlltool
138 Create the files needed to build and use Dynamic Link Libraries
139 @end table
140 @end iftex
141
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".
145
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
167
168 @node ar
169 @chapter ar
170
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
178
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).
183
184 The original files' contents, mode (permissions), timestamp, owner, and
185 group are preserved in the archive, and can be restored on
186 extraction.
187
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).
195
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.
200
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.
209
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.
213
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.
222
223 @menu
224 * ar cmdline:: Controlling @code{ar} on the command line
225 * ar scripts:: Controlling @code{ar} with a script
226 @end menu
227
228 @page
229 @node ar cmdline
230 @section Controlling @code{ar} on the command line
231
232 @smallexample
233 ar [-X32_64] [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
234 @end smallexample
235
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.
241
242 Most operations can also accept further @var{member} arguments,
243 specifying particular files to operate on.
244
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.
247
248 If you wish, you may begin the first command-line argument with a
249 dash.
250
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:
254
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.
261
262 If you specify the @samp{v} modifier, @code{ar} lists each module
263 as it is deleted.
264
265 @item m
266 @cindex moving in archive
267 Use this operation to @emph{move} members in an archive.
268
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.
272
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.
277
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.
283
284 If you specify no @var{member} arguments, all the files in the archive are
285 printed.
286
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.
291
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.
294
295 The modifier @samp{v} makes @code{ar} list each file as it is appended.
296
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.
300
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}.
303
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.
310
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.
314
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.
318
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.
323
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.
331
332 If you do not specify a @var{member}, all files in the archive
333 are listed.
334
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.
343
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.
349
350 If you do not specify a @var{member}, all files in the archive
351 are extracted.
352
353 @end table
354
355 A number of modifiers (@var{mod}) may immediately follow the @var{p}
356 keyletter, to specify variations on an operation's behavior:
357
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.
365
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}).
371
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.
378
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.
385
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}).
391
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
396
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.
401
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.
407
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.
415
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.
422
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.
430
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}.
440
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.
445
446 @item V
447 This modifier shows the version number of @code{ar}.
448 @end table
449
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}.
455
456 @node ar scripts
457 @section Controlling @code{ar} with a script
458
459 @smallexample
460 ar -M [ <@var{script} ]
461 @end smallexample
462
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.
473
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.
479
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.
486
487 @item
488 a single command may appear on each line; it is the first word on the
489 line.
490
491 @item
492 empty lines are allowed, and have no effect.
493
494 @item
495 comments are allowed; text after either of the characters @samp{*}
496 or @samp{;} is ignored.
497
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.
502
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
508
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:
511
512 @code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is
513 a temporary file required for most of the other commands.
514
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.
518
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.
524
525 Requires prior use of @code{OPEN} or @code{CREATE}.
526
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.
531
532 Requires prior use of @code{OPEN} or @code{CREATE}.
533
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.
538
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}.
545
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}}.
549
550 Requires prior use of @code{OPEN} or @code{CREATE}.
551
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{}}.
559
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.
563
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.
569
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{}}.
574
575 Requires prior use of @code{OPEN} or @code{CREATE}.
576
577 @ignore
578 @c FIXME Tokens but no commands???
579 @item FULLDIR
580
581 @item HELP
582 @end ignore
583
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.)
589
590 Requires prior use of @code{OPEN} or @code{CREATE}.
591
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}.
596
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.
602
603 Requires prior use of @code{OPEN} or @code{CREATE}.
604
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{}.
609
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.
614
615 Requires prior use of @code{OPEN} or @code{CREATE}.
616
617 @end table
618
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
627
628 @node nm
629 @chapter nm
630 @cindex symbols
631 @kindex nm
632
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
644
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}.
648
649 For each symbol, @code{nm} shows:
650
651 @itemize @bullet
652 @item
653 The symbol value, in the radix selected by options (see below), or
654 hexadecimal by default.
655
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).
660
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.
667
668 @item B
669 The symbol is in the uninitialized data section (known as BSS).
670
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}.
677
678 @item D
679 The symbol is in the initialized data section.
680
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.
685
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.
689
690 @item N
691 The symbol is a debugging symbol.
692
693 @item R
694 The symbol is in a read only data section.
695
696 @item S
697 The symbol is in an uninitialized data section for small objects.
698
699 @item T
700 The symbol is in the text (code) section.
701
702 @item U
703 The symbol is undefined.
704
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.
710
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.
717
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}.
724
725 @item ?
726 The symbol type is unknown, or object file format specific.
727 @end table
728
729 @item
730 The symbol name.
731 @end itemize
732
733 The long and short forms of options, shown here as alternatives, are
734 equivalent.
735
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.
746
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.
752
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}).
757
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.
767
768 @item --no-demangle
769 Do not demangle low-level symbol names. This is the default.
770
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.
777
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.
786
787 @item -g
788 @itemx --extern-only
789 @cindex external symbols
790 Display only external symbols.
791
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.
800
801 @item -n
802 @itemx -v
803 @itemx --numeric-sort
804 Sort symbols numerically by their addresses, rather than alphabetically
805 by their names.
806
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.
812
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}.
817
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.
824
825 @item -r
826 @itemx --reverse-sort
827 Reverse the order of the sort (whether numeric or alphabetic); let the
828 last come first.
829
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.
834
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.
839
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.
844
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).
850
851 @item --defined-only
852 @cindex external symbols
853 @cindex undefined symbols
854 Display only defined symbols for each object file.
855
856 @item -V
857 @itemx --version
858 Show the version number of @code{nm} and exit.
859
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}.
865
866 @item --help
867 Show a summary of the options to @code{nm} and exit.
868 @end table
869
870 @node objcopy
871 @chapter objcopy
872
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
903
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.
912
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}.
918
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}).
921
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.
928
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.
933
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}).
938
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}.
946
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.
951
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.
956
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.
962
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.
968
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.
974
975 @item -S
976 @itemx --strip-all
977 Do not copy relocation and symbol information from the source file.
978
979 @item -g
980 @itemx --strip-debug
981 Do not copy debugging symbols from the source file.
982
983 @item --strip-unneeded
984 Strip all symbols that are not needed for relocation processing.
985
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.
990
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.
995
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.
1000
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.
1004
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?
1009
1010 @item -X
1011 @itemx --discard-locals
1012 Do not copy compiler-generated local symbols.
1013 (These usually start with @samp{L} or @samp{.}.)
1014
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.
1023
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}.
1030
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.
1035
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.
1040
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}.
1046
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).
1051
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.
1055
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.
1061
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.
1071
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.
1081
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.
1094
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.
1108
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.
1114
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.
1120
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.
1131
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.
1137
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.
1147
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.
1158
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.
1163
1164 @item --srec-forceS3
1165 Meaningful only for srec output. Avoid generation of S1/S2 records,
1166 creating S3-only record format.
1167
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.
1172
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.
1178
1179 @item -V
1180 @itemx --version
1181 Show the version number of @code{objcopy}.
1182
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.
1187
1188 @item --help
1189 Show a summary of the options to @code{objcopy}.
1190 @end table
1191
1192 @node objdump
1193 @chapter objdump
1194
1195 @cindex object file information
1196 @kindex objdump
1197
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
1234
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.
1240
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.
1244
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.
1248
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.
1257
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.
1266
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.
1273
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.
1284
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.
1294
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.
1300
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.
1308
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.
1313
1314 @item --prefix-addresses
1315 When disassembling, print the complete address on each line. This is
1316 the older disassembly format.
1317
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.
1322
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.
1331
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.
1337
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.
1343
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.
1350
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.
1359
1360 @item --help
1361 Print a summary of the options to @code{objdump} and exit.
1362
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}.
1369
1370 @item -j @var{name}
1371 @itemx --section=@var{name}
1372 @cindex section information
1373 Display information only for section @var{name}.
1374
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}.
1381
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.
1390
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.
1395
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.
1404
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).
1409
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.
1415
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.
1421
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.
1428
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.
1435
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.
1441
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}.
1448
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.
1453
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.
1457
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}.
1472
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.
1477
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.
1482
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.
1488
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.
1496
1497 @item --version
1498 Print the version number of @code{objdump} and exit.
1499
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}.
1507
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
1513
1514 @node ranlib
1515 @chapter ranlib
1516
1517 @kindex ranlib
1518 @cindex archive contents
1519 @cindex symbol index
1520
1521 @smallexample
1522 ranlib [-vV] @var{archive}
1523 @end smallexample
1524
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.
1528
1529 You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
1530
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.
1534
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}.
1538
1539 @table @code
1540 @item -v
1541 @itemx -V
1542 @itemx --version
1543 Show the version number of @code{ranlib}.
1544 @end table
1545
1546 @node size
1547 @chapter size
1548
1549 @kindex size
1550 @cindex section sizes
1551
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
1558
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.
1563
1564 @var{objfile}@dots{} are the object files to be examined.
1565 If none are specified, the file @code{a.out} will be used.
1566
1567 The command line options have the following meanings:
1568
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.
1582
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
1591
1592 @noindent
1593 This is the same data, but displayed closer to System V conventions:
1594
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
1603
1604
1605 size :
1606 section size addr
1607 .text 294880 8192
1608 .data 81920 303104
1609 .bss 11888 385024
1610 Total 388688
1611 @end smallexample
1612
1613 @item --help
1614 Show a summary of acceptable arguments and options.
1615
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}.
1629
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.
1636
1637 @item -V
1638 @itemx --version
1639 Display the version number of @code{size}.
1640 @end table
1641
1642 @node strings
1643 @chapter strings
1644 @kindex strings
1645 @cindex listings strings
1646 @cindex printing strings
1647 @cindex strings, printing
1648
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
1655
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.
1662
1663 @code{strings} is mainly useful for determining the contents of non-text
1664 files.
1665
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.
1672
1673 @item -f
1674 @itemx --print-file-name
1675 Print the name of the file before each string.
1676
1677 @item --help
1678 Print a summary of the program usage on the standard output and exit.
1679
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.
1685
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.
1690
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.
1696
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.
1701
1702 @item -v
1703 @itemx --version
1704 Print the program version number on the standard output and exit.
1705 @end table
1706
1707 @node strip
1708 @chapter strip
1709
1710 @kindex strip
1711 @cindex removing symbols
1712 @cindex discarding symbols
1713 @cindex symbols, discarding
1714
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
1728
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.
1732
1733 @code{strip} modifies the files named in its argument,
1734 rather than writing modified copies under different names.
1735
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.
1742
1743 @item --help
1744 Show a summary of the options to @code{strip} and exit.
1745
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.
1751
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.
1756
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.
1762
1763 @item -s
1764 @itemx --strip-all
1765 Remove all symbols.
1766
1767 @item -g
1768 @itemx -S
1769 @itemx --strip-debug
1770 Remove debugging symbols only.
1771
1772 @item --strip-unneeded
1773 Remove all symbols that are not needed for relocation processing.
1774
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.
1779
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}.
1785
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.
1790
1791 @item -p
1792 @itemx --preserve-dates
1793 Preserve the access and modification dates of the file.
1794
1795 @item -x
1796 @itemx --discard-all
1797 Remove non-global symbols.
1798
1799 @item -X
1800 @itemx --discard-locals
1801 Remove compiler-generated local symbols.
1802 (These usually start with @samp{L} or @samp{.}.)
1803
1804 @item -V
1805 @itemx --version
1806 Show the version number for @code{strip}.
1807
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
1813
1814 @node c++filt, addr2line, strip, Top
1815 @chapter c++filt
1816
1817 @kindex c++filt
1818 @cindex demangling C++ symbols
1819
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
1827
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.
1839
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.
1844
1845 You can use @code{c++filt} to decipher individual symbols:
1846
1847 @example
1848 c++filt @var{symbol}
1849 @end example
1850
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.
1854
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.
1862
1863 @item -j
1864 @itemx --java
1865 Prints demangled names using Java syntax. The default is to use C++
1866 syntax.
1867
1868 @item -n
1869 @itemx --no-strip-underscores
1870 Do not remove the initial underscore.
1871
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:
1877
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
1892
1893 @item --help
1894 Print a summary of the options to @code{c++filt} and exit.
1895
1896 @item --version
1897 Print the version number of @code{c++filt} and exit.
1898 @end table
1899
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,
1905
1906 @example
1907 c++filt @var{symbol}
1908 @end example
1909
1910 @noindent
1911 may in a future release become
1912
1913 @example
1914 c++filt @var{option} @var{symbol}
1915 @end example
1916 @end quotation
1917
1918 @node addr2line
1919 @chapter addr2line
1920
1921 @kindex addr2line
1922 @cindex address to file name and line number
1923
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
1932
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.
1937
1938 The executable to use is specified with the @code{-e} option. The
1939 default is the file @file{a.out}.
1940
1941 @code{addr2line} has two modes of operation.
1942
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.
1946
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.
1951
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.
1957
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.
1961
1962 The long and short forms of options, shown here as alternatives, are
1963 equivalent.
1964
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}.
1971
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.
1981
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}.
1986
1987 @item -f
1988 @itemx --functions
1989 Display function names as well as file and line number information.
1990
1991 @item -s
1992 @itemx --basenames
1993 Display only the base of each file name.
1994 @end table
1995
1996 @node nlmconv
1997 @chapter nlmconv
1998
1999 @code{nlmconv} converts a relocatable object file into a NetWare
2000 Loadable Module.
2001
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
2010
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
2015
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
2024
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.
2035
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.
2040
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.
2047
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.
2054
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.
2062
2063 @item -d
2064 @itemx --debug
2065 Displays (on standard error) the linker command line used by @code{nlmconv}.
2066
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.
2071
2072 @item -h
2073 @itemx --help
2074 Prints a usage summary.
2075
2076 @item -V
2077 @itemx --version
2078 Prints the version number for @code{nlmconv}.
2079 @end table
2080
2081 @node windres
2082 @chapter windres
2083
2084 @code{windres} may be used to manipulate Windows resources.
2085
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
2090
2091 @smallexample
2092 windres [options] [input-file] [output-file]
2093 @end smallexample
2094
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:
2097
2098 @table @code
2099 @item rc
2100 A text format read by the Resource Compiler.
2101
2102 @item res
2103 A binary format generated by the Resource Compiler.
2104
2105 @item coff
2106 A COFF object or executable.
2107 @end table
2108
2109 The exact description of these different formats is available in
2110 documentation from Microsoft.
2111
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.
2116
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.
2121
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.
2128
2129 If no output file is specified, @code{windres} will print the resources
2130 in @code{rc} format to standard output.
2131
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.
2136
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.
2145
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.
2153
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.
2159
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.
2165
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}.
2173
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}.
2179
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.
2185
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.
2190
2191 @item -v
2192 Enable verbose mode. This tells you what the preprocessor is if you
2193 didn't specify one.
2194
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.
2199
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).
2206
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.
2210
2211 @item --help
2212 Prints a usage summary.
2213
2214 @item --version
2215 Prints the version number for @code{windres}.
2216
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
2221
2222
2223 @node dlltool
2224 @chapter Create files needed to build and use DLLs
2225 @cindex DLL
2226 @kindex dlltool
2227
2228 @code{dlltool} may be used to create the files needed to build and use
2229 dynamic link libraries (DLLs).
2230
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
2235
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
2253
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.
2261
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.
2265
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.
2273
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:
2278
2279 @smallexample
2280 asm (".section .drectve");
2281 asm (".ascii \"-export:my_func\"");
2282
2283 int my_func (void) @{ @dots{} @}
2284 @end smallexample
2285
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.
2291
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.
2296
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.
2306
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:
2310
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
2317
2318 The command line options have the following meanings:
2319
2320 @table @code
2321
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.
2326
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.
2333
2334 @item -e @var{filename}
2335 @itemx --output-exp @var{filename}
2336 Specifies the name of the export file to be created by dlltool.
2337
2338 @item -z @var{filename}
2339 @itemx --output-def @var{filename}
2340 Specifies the name of the .def file to be created by dlltool.
2341
2342 @item -l @var{filename}
2343 @itemx --output-lib @var{filename}
2344 Specifies the name of the library file to be created by dlltool.
2345
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.
2352
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.
2358
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.
2364
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.
2372
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.
2377
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.
2387
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.
2394
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.
2402
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!
2409
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.
2414
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.
2421
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>}.
2427
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.
2433
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.
2439
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.
2445
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.
2452
2453 @item -v
2454 @itemx --verbose
2455 Make dlltool describe what it is doing.
2456
2457 @item -h
2458 @itemx --help
2459 Displays a list of command line options and then exits.
2460
2461 @item -V
2462 @itemx --version
2463 Displays dlltool's version number and then exits.
2464
2465 @end table
2466
2467 @node readelf
2468 @chapter readelf
2469
2470 @cindex ELF file information
2471 @kindex readelf
2472
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 [ -d | --dynamic]
2483 [ -V | --version-info]
2484 [ -D | --use-dynamic]
2485 [ -x <number> | --hex-dump=<number>]
2486 [ -w[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
2487 [ --histogram]
2488 [ -v | --version]
2489 [ -H | --help]
2490 @var{elffile}@dots{}
2491 @end smallexample
2492
2493 @code{readelf} displays information about one or more ELF format object
2494 files. The options control what particular information to display.
2495
2496 @var{elffile}@dots{} are the object files to be examined. At the
2497 moment, @code{readelf} does not support examining archives, nor does it
2498 support examing 64 bit ELF files.
2499
2500 The long and short forms of options, shown here as alternatives, are
2501 equivalent. At least one option besides @samp{-v} or @samp{-H} must be
2502 given.
2503
2504 @table @code
2505 @item -a
2506 @itemx --all
2507 Equivalent to specifiying @samp{--file-header},
2508 @samp{--program-headers}, @samp{--sections}, @samp{--symbols},
2509 @samp{--relocs}, @samp{--dynamic}, @samp{--notes} and
2510 @samp{--version-info}.
2511
2512 @item -h
2513 @itemx --file-header
2514 @cindex ELF file header information
2515 Displays the information contained in the ELF header at the start of the
2516 file.
2517
2518 @item -l
2519 @itemx --program-headers
2520 @itemx --segments
2521 @cindex ELF program header information
2522 @cindex ELF segment information
2523 Displays the information contained in the file's segment headers, if it
2524 has any.
2525
2526 @item -S
2527 @itemx --sections
2528 @itemx --section-headers
2529 @cindex ELF section information
2530 Displays the information contained in the file's section headers, if it
2531 has any.
2532
2533 @item -s
2534 @itemx --symbols
2535 @itemx --syms
2536 @cindex ELF symbol table information
2537 Displays the entries in symbol table section of the file, if it has one.
2538
2539 @item -e
2540 @itemx --headers
2541 Display all the headers in the file. Equivalent to @samp{-h -l -S}.
2542
2543 @item -n
2544 @itemx --notes
2545 @cindex ELF core notes
2546 Displays the contents of the NOTE segment, if it exists.
2547
2548 @item -r
2549 @itemx --relocs
2550 @cindex ELF reloc information
2551 Displays the contents of the file's relocation section, if it ha one.
2552
2553 @item -d
2554 @itemx --dynamic
2555 @cindex ELF dynamic section information
2556 Displays the contents of the file's dynamic section, if it has one.
2557
2558 @item -V
2559 @itemx --version-info
2560 @cindex ELF version sections informations
2561 Displays the contents of the version sections in the file, it they
2562 exist.
2563
2564 @item -D
2565 @itemx --use-dynamic
2566 When displaying symbols, this option makes @code{readelf} use the
2567 symbol table in the file's dynamic section, rather than the one in the
2568 symbols section.
2569
2570 @item -x <number>
2571 @itemx --hex-dump=<number>
2572 Displays the contents of the indicated section as a hexadecimal dump.
2573
2574 @item -w[liaprf]
2575 @itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
2576 Displays the contents of the debug sections in the file, if any are
2577 present. If one of the optional letters or words follows the switch
2578 then only data found in those specific sections will be dumped.
2579
2580 @item --histogram
2581 Display a histogram of bucket list lengths when displaying the contents
2582 of the symbol tables.
2583
2584 @item -v
2585 @itemx --version
2586 Display the version number of readelf.
2587
2588 @item -H
2589 @itemx --help
2590 Display the command line options understood by @code{readelf}.
2591
2592 @end table
2593
2594
2595 @node Selecting The Target System
2596 @chapter Selecting the target system
2597
2598 You can specify three aspects of the target system to the @sc{gnu}
2599 binary file utilities, each in several ways:
2600
2601 @itemize @bullet
2602 @item
2603 the target
2604
2605 @item
2606 the architecture
2607
2608 @item
2609 the linker emulation (which applies to the linker only)
2610 @end itemize
2611
2612 In the following summaries, the lists of ways to specify values are in
2613 order of decreasing precedence. The ways listed first override those
2614 listed later.
2615
2616 The commands to list valid values only list the values for which the
2617 programs you are running were configured. If they were configured with
2618 @samp{--enable-targets=all}, the commands list most of the available
2619 values, but a few are left out; not all targets can be configured in at
2620 once because some of them can only be configured @dfn{native} (on hosts
2621 with the same type as the target system).
2622
2623 @menu
2624 * Target Selection::
2625 * Architecture Selection::
2626 * Linker Emulation Selection::
2627 @end menu
2628
2629 @node Target Selection
2630 @section Target Selection
2631
2632 A @dfn{target} is an object file format. A given target may be
2633 supported for multiple architectures (@pxref{Architecture Selection}).
2634 A target selection may also have variations for different operating
2635 systems or architectures.
2636
2637 The command to list valid target values is @samp{objdump -i}
2638 (the first column of output contains the relevant information).
2639
2640 Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
2641 @samp{a.out-sunos-big}.
2642
2643 You can also specify a target using a configuration triplet. This is
2644 the same sort of name that is passed to @file{configure} to specify a
2645 target. When you use a configuration triplet as an argument, it must be
2646 fully canonicalized. You can see the canonical version of a triplet by
2647 running the shell script @file{config.sub} which is included with the
2648 sources.
2649
2650 Some sample configuration triplets are: @samp{m68k-hp-bsd},
2651 @samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
2652
2653 @subheading @code{objdump} Target
2654
2655 Ways to specify:
2656
2657 @enumerate
2658 @item
2659 command line option: @samp{-b} or @samp{--target}
2660
2661 @item
2662 environment variable @code{GNUTARGET}
2663
2664 @item
2665 deduced from the input file
2666 @end enumerate
2667
2668 @subheading @code{objcopy} and @code{strip} Input Target
2669
2670 Ways to specify:
2671
2672 @enumerate
2673 @item
2674 command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
2675
2676 @item
2677 environment variable @code{GNUTARGET}
2678
2679 @item
2680 deduced from the input file
2681 @end enumerate
2682
2683 @subheading @code{objcopy} and @code{strip} Output Target
2684
2685 Ways to specify:
2686
2687 @enumerate
2688 @item
2689 command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
2690
2691 @item
2692 the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
2693
2694 @item
2695 environment variable @code{GNUTARGET}
2696
2697 @item
2698 deduced from the input file
2699 @end enumerate
2700
2701 @subheading @code{nm}, @code{size}, and @code{strings} Target
2702
2703 Ways to specify:
2704
2705 @enumerate
2706 @item
2707 command line option: @samp{--target}
2708
2709 @item
2710 environment variable @code{GNUTARGET}
2711
2712 @item
2713 deduced from the input file
2714 @end enumerate
2715
2716 @subheading Linker Input Target
2717
2718 Ways to specify:
2719
2720 @enumerate
2721 @item
2722 command line option: @samp{-b} or @samp{--format}
2723 (@pxref{Options,,Options,ld.info,Using LD})
2724
2725 @item
2726 script command @code{TARGET}
2727 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2728
2729 @item
2730 environment variable @code{GNUTARGET}
2731 (@pxref{Environment,,Environment,ld.info,Using LD})
2732
2733 @item
2734 the default target of the selected linker emulation
2735 (@pxref{Linker Emulation Selection})
2736 @end enumerate
2737
2738 @subheading Linker Output Target
2739
2740 Ways to specify:
2741
2742 @enumerate
2743 @item
2744 command line option: @samp{-oformat}
2745 (@pxref{Options,,Options,ld.info,Using LD})
2746
2747 @item
2748 script command @code{OUTPUT_FORMAT}
2749 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2750
2751 @item
2752 the linker input target (see ``Linker Input Target'' above)
2753 @end enumerate
2754
2755 @node Architecture Selection
2756 @section Architecture selection
2757
2758 An @dfn{architecture} is a type of @sc{cpu} on which an object file is
2759 to run. Its name may contain a colon, separating the name of the
2760 processor family from the name of the particular @sc{cpu}.
2761
2762 The command to list valid architecture values is @samp{objdump -i} (the
2763 second column contains the relevant information).
2764
2765 Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
2766
2767 @subheading @code{objdump} Architecture
2768
2769 Ways to specify:
2770
2771 @enumerate
2772 @item
2773 command line option: @samp{-m} or @samp{--architecture}
2774
2775 @item
2776 deduced from the input file
2777 @end enumerate
2778
2779 @subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
2780
2781 Ways to specify:
2782
2783 @enumerate
2784 @item
2785 deduced from the input file
2786 @end enumerate
2787
2788 @subheading Linker Input Architecture
2789
2790 Ways to specify:
2791
2792 @enumerate
2793 @item
2794 deduced from the input file
2795 @end enumerate
2796
2797 @subheading Linker Output Architecture
2798
2799 Ways to specify:
2800
2801 @enumerate
2802 @item
2803 script command @code{OUTPUT_ARCH}
2804 (@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2805
2806 @item
2807 the default architecture from the linker output target
2808 (@pxref{Target Selection})
2809 @end enumerate
2810
2811 @node Linker Emulation Selection
2812 @section Linker emulation selection
2813
2814 A linker @dfn{emulation} is a ``personality'' of the linker, which gives
2815 the linker default values for the other aspects of the target system.
2816 In particular, it consists of
2817
2818 @itemize @bullet
2819 @item
2820 the linker script
2821
2822 @item
2823 the target
2824
2825 @item
2826 several ``hook'' functions that are run at certain stages of the linking
2827 process to do special things that some targets require
2828 @end itemize
2829
2830 The command to list valid linker emulation values is @samp{ld -V}.
2831
2832 Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
2833
2834 Ways to specify:
2835
2836 @enumerate
2837 @item
2838 command line option: @samp{-m}
2839 (@pxref{Options,,Options,ld.info,Using LD})
2840
2841 @item
2842 environment variable @code{LDEMULATION}
2843
2844 @item
2845 compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
2846 which comes from @code{EMUL} in @file{config/@var{target}.mt}
2847 @end enumerate
2848
2849 @node Reporting Bugs
2850 @chapter Reporting Bugs
2851 @cindex bugs
2852 @cindex reporting bugs
2853
2854 Your bug reports play an essential role in making the binary utilities
2855 reliable.
2856
2857 Reporting a bug may help you by bringing a solution to your problem, or
2858 it may not. But in any case the principal function of a bug report is
2859 to help the entire community by making the next version of the binary
2860 utilities work better. Bug reports are your contribution to their
2861 maintenance.
2862
2863 In order for a bug report to serve its purpose, you must include the
2864 information that enables us to fix the bug.
2865
2866 @menu
2867 * Bug Criteria:: Have you found a bug?
2868 * Bug Reporting:: How to report bugs
2869 @end menu
2870
2871 @node Bug Criteria
2872 @section Have you found a bug?
2873 @cindex bug criteria
2874
2875 If you are not sure whether you have found a bug, here are some guidelines:
2876
2877 @itemize @bullet
2878 @cindex fatal signal
2879 @cindex crash
2880 @item
2881 If a binary utility gets a fatal signal, for any input whatever, that is
2882 a bug. Reliable utilities never crash.
2883
2884 @cindex error on valid input
2885 @item
2886 If a binary utility produces an error message for valid input, that is a
2887 bug.
2888
2889 @item
2890 If you are an experienced user of binary utilities, your suggestions for
2891 improvement are welcome in any case.
2892 @end itemize
2893
2894 @node Bug Reporting
2895 @section How to report bugs
2896 @cindex bug reports
2897 @cindex bugs, reporting
2898
2899 A number of companies and individuals offer support for @sc{gnu}
2900 products. If you obtained the binary utilities from a support
2901 organization, we recommend you contact that organization first.
2902
2903 You can find contact information for many support companies and
2904 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
2905 distribution.
2906
2907 In any event, we also recommend that you send bug reports for the binary
2908 utilities to @samp{bug-binutils@@gnu.org}.
2909
2910 The fundamental principle of reporting bugs usefully is this:
2911 @strong{report all the facts}. If you are not sure whether to state a
2912 fact or leave it out, state it!
2913
2914 Often people omit facts because they think they know what causes the
2915 problem and assume that some details do not matter. Thus, you might
2916 assume that the name of a file you use in an example does not matter.
2917 Well, probably it does not, but one cannot be sure. Perhaps the bug is
2918 a stray memory reference which happens to fetch from the location where
2919 that pathname is stored in memory; perhaps, if the pathname were
2920 different, the contents of that location would fool the utility into
2921 doing the right thing despite the bug. Play it safe and give a
2922 specific, complete example. That is the easiest thing for you to do,
2923 and the most helpful.
2924
2925 Keep in mind that the purpose of a bug report is to enable us to fix the bug if
2926 it is new to us. Therefore, always write your bug reports on the assumption
2927 that the bug has not been reported previously.
2928
2929 Sometimes people give a few sketchy facts and ask, ``Does this ring a
2930 bell?'' Those bug reports are useless, and we urge everyone to
2931 @emph{refuse to respond to them} except to chide the sender to report
2932 bugs properly.
2933
2934 To enable us to fix the bug, you should include all these things:
2935
2936 @itemize @bullet
2937 @item
2938 The version of the utility. Each utility announces it if you start it
2939 with the @samp{--version} argument.
2940
2941 Without this, we will not know whether there is any point in looking for
2942 the bug in the current version of the binary utilities.
2943
2944 @item
2945 Any patches you may have applied to the source, including any patches
2946 made to the @code{BFD} library.
2947
2948 @item
2949 The type of machine you are using, and the operating system name and
2950 version number.
2951
2952 @item
2953 What compiler (and its version) was used to compile the utilities---e.g.
2954 ``@code{gcc-2.7}''.
2955
2956 @item
2957 The command arguments you gave the utility to observe the bug. To
2958 guarantee you will not omit something important, list them all. A copy
2959 of the Makefile (or the output from make) is sufficient.
2960
2961 If we were to try to guess the arguments, we would probably guess wrong
2962 and then we might not encounter the bug.
2963
2964 @item
2965 A complete input file, or set of input files, that will reproduce the
2966 bug. If the utility is reading an object file or files, then it is
2967 generally most helpful to send the actual object files, uuencoded if
2968 necessary to get them through the mail system. Note that
2969 @samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid
2970 sending very large files to it. Making the files available for
2971 anonymous FTP is OK.
2972
2973 If the source files were produced exclusively using @sc{gnu} programs
2974 (e.g., @code{gcc}, @code{gas}, and/or the @sc{gnu} @code{ld}), then it
2975 may be OK to send the source files rather than the object files. In
2976 this case, be sure to say exactly what version of @code{gcc}, or
2977 whatever, was used to produce the object files. Also say how
2978 @code{gcc}, or whatever, was configured.
2979
2980 @item
2981 A description of what behavior you observe that you believe is
2982 incorrect. For example, ``It gets a fatal signal.''
2983
2984 Of course, if the bug is that the utility gets a fatal signal, then we
2985 will certainly notice it. But if the bug is incorrect output, we might
2986 not notice unless it is glaringly wrong. You might as well not give us
2987 a chance to make a mistake.
2988
2989 Even if the problem you experience is a fatal signal, you should still
2990 say so explicitly. Suppose something strange is going on, such as your
2991 copy of the utility is out of synch, or you have encountered a bug in
2992 the C library on your system. (This has happened!) Your copy might
2993 crash and ours would not. If you told us to expect a crash, then when
2994 ours fails to crash, we would know that the bug was not happening for
2995 us. If you had not told us to expect a crash, then we would not be able
2996 to draw any conclusion from our observations.
2997
2998 @item
2999 If you wish to suggest changes to the source, send us context diffs, as
3000 generated by @code{diff} with the @samp{-u}, @samp{-c}, or @samp{-p}
3001 option. Always send diffs from the old file to the new file. If you
3002 wish to discuss something in the @code{ld} source, refer to it by
3003 context, not by line number.
3004
3005 The line numbers in our development sources will not match those in your
3006 sources. Your line numbers would convey no useful information to us.
3007 @end itemize
3008
3009 Here are some things that are not necessary:
3010
3011 @itemize @bullet
3012 @item
3013 A description of the envelope of the bug.
3014
3015 Often people who encounter a bug spend a lot of time investigating
3016 which changes to the input file will make the bug go away and which
3017 changes will not affect it.
3018
3019 This is often time consuming and not very useful, because the way we
3020 will find the bug is by running a single example under the debugger
3021 with breakpoints, not by pure deduction from a series of examples.
3022 We recommend that you save your time for something else.
3023
3024 Of course, if you can find a simpler example to report @emph{instead}
3025 of the original one, that is a convenience for us. Errors in the
3026 output will be easier to spot, running under the debugger will take
3027 less time, and so on.
3028
3029 However, simplification is not vital; if you do not want to do this,
3030 report the bug anyway and send us the entire test case you used.
3031
3032 @item
3033 A patch for the bug.
3034
3035 A patch for the bug does help us if it is a good one. But do not omit
3036 the necessary information, such as the test case, on the assumption that
3037 a patch is all we need. We might see problems with your patch and decide
3038 to fix the problem another way, or we might not understand it at all.
3039
3040 Sometimes with programs as complicated as the binary utilities it is
3041 very hard to construct an example that will make the program follow a
3042 certain path through the code. If you do not send us the example, we
3043 will not be able to construct one, so we will not be able to verify that
3044 the bug is fixed.
3045
3046 And if we cannot understand what bug you are trying to fix, or why your
3047 patch should be an improvement, we will not install it. A test case will
3048 help us to understand.
3049
3050 @item
3051 A guess about what the bug is or what it depends on.
3052
3053 Such guesses are usually wrong. Even we cannot guess right about such
3054 things without first using the debugger to find the facts.
3055 @end itemize
3056
3057 @node GNU Free Documentation License
3058 @chapter GNU Free Documentation License
3059 @cindex GNU Free Documentation License
3060
3061 GNU Free Documentation License
3062
3063 Version 1.1, March 2000
3064
3065 Copyright (C) 2000 Free Software Foundation, Inc.
3066 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3067
3068 Everyone is permitted to copy and distribute verbatim copies
3069 of this license document, but changing it is not allowed.
3070
3071
3072 0. PREAMBLE
3073
3074 The purpose of this License is to make a manual, textbook, or other
3075 written document "free" in the sense of freedom: to assure everyone
3076 the effective freedom to copy and redistribute it, with or without
3077 modifying it, either commercially or noncommercially. Secondarily,
3078 this License preserves for the author and publisher a way to get
3079 credit for their work, while not being considered responsible for
3080 modifications made by others.
3081
3082 This License is a kind of "copyleft", which means that derivative
3083 works of the document must themselves be free in the same sense. It
3084 complements the GNU General Public License, which is a copyleft
3085 license designed for free software.
3086
3087 We have designed this License in order to use it for manuals for free
3088 software, because free software needs free documentation: a free
3089 program should come with manuals providing the same freedoms that the
3090 software does. But this License is not limited to software manuals;
3091 it can be used for any textual work, regardless of subject matter or
3092 whether it is published as a printed book. We recommend this License
3093 principally for works whose purpose is instruction or reference.
3094
3095
3096 1. APPLICABILITY AND DEFINITIONS
3097
3098 This License applies to any manual or other work that contains a
3099 notice placed by the copyright holder saying it can be distributed
3100 under the terms of this License. The "Document", below, refers to any
3101 such manual or work. Any member of the public is a licensee, and is
3102 addressed as "you".
3103
3104 A "Modified Version" of the Document means any work containing the
3105 Document or a portion of it, either copied verbatim, or with
3106 modifications and/or translated into another language.
3107
3108 A "Secondary Section" is a named appendix or a front-matter section of
3109 the Document that deals exclusively with the relationship of the
3110 publishers or authors of the Document to the Document's overall subject
3111 (or to related matters) and contains nothing that could fall directly
3112 within that overall subject. (For example, if the Document is in part a
3113 textbook of mathematics, a Secondary Section may not explain any
3114 mathematics.) The relationship could be a matter of historical
3115 connection with the subject or with related matters, or of legal,
3116 commercial, philosophical, ethical or political position regarding
3117 them.
3118
3119 The "Invariant Sections" are certain Secondary Sections whose titles
3120 are designated, as being those of Invariant Sections, in the notice
3121 that says that the Document is released under this License.
3122
3123 The "Cover Texts" are certain short passages of text that are listed,
3124 as Front-Cover Texts or Back-Cover Texts, in the notice that says that
3125 the Document is released under this License.
3126
3127 A "Transparent" copy of the Document means a machine-readable copy,
3128 represented in a format whose specification is available to the
3129 general public, whose contents can be viewed and edited directly and
3130 straightforwardly with generic text editors or (for images composed of
3131 pixels) generic paint programs or (for drawings) some widely available
3132 drawing editor, and that is suitable for input to text formatters or
3133 for automatic translation to a variety of formats suitable for input
3134 to text formatters. A copy made in an otherwise Transparent file
3135 format whose markup has been designed to thwart or discourage
3136 subsequent modification by readers is not Transparent. A copy that is
3137 not "Transparent" is called "Opaque".
3138
3139 Examples of suitable formats for Transparent copies include plain
3140 ASCII without markup, Texinfo input format, LaTeX input format, SGML
3141 or XML using a publicly available DTD, and standard-conforming simple
3142 HTML designed for human modification. Opaque formats include
3143 PostScript, PDF, proprietary formats that can be read and edited only
3144 by proprietary word processors, SGML or XML for which the DTD and/or
3145 processing tools are not generally available, and the
3146 machine-generated HTML produced by some word processors for output
3147 purposes only.
3148
3149 The "Title Page" means, for a printed book, the title page itself,
3150 plus such following pages as are needed to hold, legibly, the material
3151 this License requires to appear in the title page. For works in
3152 formats which do not have any title page as such, "Title Page" means
3153 the text near the most prominent appearance of the work's title,
3154 preceding the beginning of the body of the text.
3155
3156
3157 2. VERBATIM COPYING
3158
3159 You may copy and distribute the Document in any medium, either
3160 commercially or noncommercially, provided that this License, the
3161 copyright notices, and the license notice saying this License applies
3162 to the Document are reproduced in all copies, and that you add no other
3163 conditions whatsoever to those of this License. You may not use
3164 technical measures to obstruct or control the reading or further
3165 copying of the copies you make or distribute. However, you may accept
3166 compensation in exchange for copies. If you distribute a large enough
3167 number of copies you must also follow the conditions in section 3.
3168
3169 You may also lend copies, under the same conditions stated above, and
3170 you may publicly display copies.
3171
3172
3173 3. COPYING IN QUANTITY
3174
3175 If you publish printed copies of the Document numbering more than 100,
3176 and the Document's license notice requires Cover Texts, you must enclose
3177 the copies in covers that carry, clearly and legibly, all these Cover
3178 Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
3179 the back cover. Both covers must also clearly and legibly identify
3180 you as the publisher of these copies. The front cover must present
3181 the full title with all words of the title equally prominent and
3182 visible. You may add other material on the covers in addition.
3183 Copying with changes limited to the covers, as long as they preserve
3184 the title of the Document and satisfy these conditions, can be treated
3185 as verbatim copying in other respects.
3186
3187 If the required texts for either cover are too voluminous to fit
3188 legibly, you should put the first ones listed (as many as fit
3189 reasonably) on the actual cover, and continue the rest onto adjacent
3190 pages.
3191
3192 If you publish or distribute Opaque copies of the Document numbering
3193 more than 100, you must either include a machine-readable Transparent
3194 copy along with each Opaque copy, or state in or with each Opaque copy
3195 a publicly-accessible computer-network location containing a complete
3196 Transparent copy of the Document, free of added material, which the
3197 general network-using public has access to download anonymously at no
3198 charge using public-standard network protocols. If you use the latter
3199 option, you must take reasonably prudent steps, when you begin
3200 distribution of Opaque copies in quantity, to ensure that this
3201 Transparent copy will remain thus accessible at the stated location
3202 until at least one year after the last time you distribute an Opaque
3203 copy (directly or through your agents or retailers) of that edition to
3204 the public.
3205
3206 It is requested, but not required, that you contact the authors of the
3207 Document well before redistributing any large number of copies, to give
3208 them a chance to provide you with an updated version of the Document.
3209
3210
3211 4. MODIFICATIONS
3212
3213 You may copy and distribute a Modified Version of the Document under
3214 the conditions of sections 2 and 3 above, provided that you release
3215 the Modified Version under precisely this License, with the Modified
3216 Version filling the role of the Document, thus licensing distribution
3217 and modification of the Modified Version to whoever possesses a copy
3218 of it. In addition, you must do these things in the Modified Version:
3219
3220 A. Use in the Title Page (and on the covers, if any) a title distinct
3221 from that of the Document, and from those of previous versions
3222 (which should, if there were any, be listed in the History section
3223 of the Document). You may use the same title as a previous version
3224 if the original publisher of that version gives permission.
3225 B. List on the Title Page, as authors, one or more persons or entities
3226 responsible for authorship of the modifications in the Modified
3227 Version, together with at least five of the principal authors of the
3228 Document (all of its principal authors, if it has less than five).
3229 C. State on the Title page the name of the publisher of the
3230 Modified Version, as the publisher.
3231 D. Preserve all the copyright notices of the Document.
3232 E. Add an appropriate copyright notice for your modifications
3233 adjacent to the other copyright notices.
3234 F. Include, immediately after the copyright notices, a license notice
3235 giving the public permission to use the Modified Version under the
3236 terms of this License, in the form shown in the Addendum below.
3237 G. Preserve in that license notice the full lists of Invariant Sections
3238 and required Cover Texts given in the Document's license notice.
3239 H. Include an unaltered copy of this License.
3240 I. Preserve the section entitled "History", and its title, and add to
3241 it an item stating at least the title, year, new authors, and
3242 publisher of the Modified Version as given on the Title Page. If
3243 there is no section entitled "History" in the Document, create one
3244 stating the title, year, authors, and publisher of the Document as
3245 given on its Title Page, then add an item describing the Modified
3246 Version as stated in the previous sentence.
3247 J. Preserve the network location, if any, given in the Document for
3248 public access to a Transparent copy of the Document, and likewise
3249 the network locations given in the Document for previous versions
3250 it was based on. These may be placed in the "History" section.
3251 You may omit a network location for a work that was published at
3252 least four years before the Document itself, or if the original
3253 publisher of the version it refers to gives permission.
3254 K. In any section entitled "Acknowledgements" or "Dedications",
3255 preserve the section's title, and preserve in the section all the
3256 substance and tone of each of the contributor acknowledgements
3257 and/or dedications given therein.
3258 L. Preserve all the Invariant Sections of the Document,
3259 unaltered in their text and in their titles. Section numbers
3260 or the equivalent are not considered part of the section titles.
3261 M. Delete any section entitled "Endorsements". Such a section
3262 may not be included in the Modified Version.
3263 N. Do not retitle any existing section as "Endorsements"
3264 or to conflict in title with any Invariant Section.
3265
3266 If the Modified Version includes new front-matter sections or
3267 appendices that qualify as Secondary Sections and contain no material
3268 copied from the Document, you may at your option designate some or all
3269 of these sections as invariant. To do this, add their titles to the
3270 list of Invariant Sections in the Modified Version's license notice.
3271 These titles must be distinct from any other section titles.
3272
3273 You may add a section entitled "Endorsements", provided it contains
3274 nothing but endorsements of your Modified Version by various
3275 parties--for example, statements of peer review or that the text has
3276 been approved by an organization as the authoritative definition of a
3277 standard.
3278
3279 You may add a passage of up to five words as a Front-Cover Text, and a
3280 passage of up to 25 words as a Back-Cover Text, to the end of the list
3281 of Cover Texts in the Modified Version. Only one passage of
3282 Front-Cover Text and one of Back-Cover Text may be added by (or
3283 through arrangements made by) any one entity. If the Document already
3284 includes a cover text for the same cover, previously added by you or
3285 by arrangement made by the same entity you are acting on behalf of,
3286 you may not add another; but you may replace the old one, on explicit
3287 permission from the previous publisher that added the old one.
3288
3289 The author(s) and publisher(s) of the Document do not by this License
3290 give permission to use their names for publicity for or to assert or
3291 imply endorsement of any Modified Version.
3292
3293
3294 5. COMBINING DOCUMENTS
3295
3296 You may combine the Document with other documents released under this
3297 License, under the terms defined in section 4 above for modified
3298 versions, provided that you include in the combination all of the
3299 Invariant Sections of all of the original documents, unmodified, and
3300 list them all as Invariant Sections of your combined work in its
3301 license notice.
3302
3303 The combined work need only contain one copy of this License, and
3304 multiple identical Invariant Sections may be replaced with a single
3305 copy. If there are multiple Invariant Sections with the same name but
3306 different contents, make the title of each such section unique by
3307 adding at the end of it, in parentheses, the name of the original
3308 author or publisher of that section if known, or else a unique number.
3309 Make the same adjustment to the section titles in the list of
3310 Invariant Sections in the license notice of the combined work.
3311
3312 In the combination, you must combine any sections entitled "History"
3313 in the various original documents, forming one section entitled
3314 "History"; likewise combine any sections entitled "Acknowledgements",
3315 and any sections entitled "Dedications". You must delete all sections
3316 entitled "Endorsements."
3317
3318
3319 6. COLLECTIONS OF DOCUMENTS
3320
3321 You may make a collection consisting of the Document and other documents
3322 released under this License, and replace the individual copies of this
3323 License in the various documents with a single copy that is included in
3324 the collection, provided that you follow the rules of this License for
3325 verbatim copying of each of the documents in all other respects.
3326
3327 You may extract a single document from such a collection, and distribute
3328 it individually under this License, provided you insert a copy of this
3329 License into the extracted document, and follow this License in all
3330 other respects regarding verbatim copying of that document.
3331
3332
3333 7. AGGREGATION WITH INDEPENDENT WORKS
3334
3335 A compilation of the Document or its derivatives with other separate
3336 and independent documents or works, in or on a volume of a storage or
3337 distribution medium, does not as a whole count as a Modified Version
3338 of the Document, provided no compilation copyright is claimed for the
3339 compilation. Such a compilation is called an "aggregate", and this
3340 License does not apply to the other self-contained works thus compiled
3341 with the Document, on account of their being thus compiled, if they
3342 are not themselves derivative works of the Document.
3343
3344 If the Cover Text requirement of section 3 is applicable to these
3345 copies of the Document, then if the Document is less than one quarter
3346 of the entire aggregate, the Document's Cover Texts may be placed on
3347 covers that surround only the Document within the aggregate.
3348 Otherwise they must appear on covers around the whole aggregate.
3349
3350
3351 8. TRANSLATION
3352
3353 Translation is considered a kind of modification, so you may
3354 distribute translations of the Document under the terms of section 4.
3355 Replacing Invariant Sections with translations requires special
3356 permission from their copyright holders, but you may include
3357 translations of some or all Invariant Sections in addition to the
3358 original versions of these Invariant Sections. You may include a
3359 translation of this License provided that you also include the
3360 original English version of this License. In case of a disagreement
3361 between the translation and the original English version of this
3362 License, the original English version will prevail.
3363
3364
3365 9. TERMINATION
3366
3367 You may not copy, modify, sublicense, or distribute the Document except
3368 as expressly provided for under this License. Any other attempt to
3369 copy, modify, sublicense or distribute the Document is void, and will
3370 automatically terminate your rights under this License. However,
3371 parties who have received copies, or rights, from you under this
3372 License will not have their licenses terminated so long as such
3373 parties remain in full compliance.
3374
3375
3376 10. FUTURE REVISIONS OF THIS LICENSE
3377
3378 The Free Software Foundation may publish new, revised versions
3379 of the GNU Free Documentation License from time to time. Such new
3380 versions will be similar in spirit to the present version, but may
3381 differ in detail to address new problems or concerns. See
3382 http://www.gnu.org/copyleft/.
3383
3384 Each version of the License is given a distinguishing version number.
3385 If the Document specifies that a particular numbered version of this
3386 License "or any later version" applies to it, you have the option of
3387 following the terms and conditions either of that specified version or
3388 of any later version that has been published (not as a draft) by the
3389 Free Software Foundation. If the Document does not specify a version
3390 number of this License, you may choose any version ever published (not
3391 as a draft) by the Free Software Foundation.
3392
3393
3394 ADDENDUM: How to use this License for your documents
3395
3396 To use this License in a document you have written, include a copy of
3397 the License in the document and put the following copyright and
3398 license notices just after the title page:
3399
3400 @smallexample
3401 Copyright (c) YEAR YOUR NAME.
3402 Permission is granted to copy, distribute and/or modify this document
3403 under the terms of the GNU Free Documentation License, Version 1.1
3404 or any later version published by the Free Software Foundation;
3405 with the Invariant Sections being LIST THEIR TITLES, with the
3406 Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
3407 A copy of the license is included in the section entitled "GNU
3408 Free Documentation License".
3409 @end smallexample
3410
3411 If you have no Invariant Sections, write "with no Invariant Sections"
3412 instead of saying which ones are invariant. If you have no
3413 Front-Cover Texts, write "no Front-Cover Texts" instead of
3414 "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
3415
3416 If your document contains nontrivial examples of program code, we
3417 recommend releasing these examples in parallel under your choice of
3418 free software license, such as the GNU General Public License,
3419 to permit their use in free software.
3420
3421 @node Index
3422 @unnumbered Index
3423
3424 @printindex cp
3425
3426 @contents
3427 @bye