Always set machine type based on cpu_variant.
[deliverable/binutils-gdb.git] / binutils / binutils.texi
CommitLineData
252b5132
RH
1\input texinfo @c -*- Texinfo -*-
2@setfilename binutils.info
3@include config.texi
4
5@ifinfo
6@format
7START-INFO-DIR-ENTRY
ad0481cd
AS
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
252b5132
RH
24END-INFO-DIR-ENTRY
25@end format
26@end ifinfo
27
28@ifinfo
18356cf2 29Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
252b5132 30
cf055d54
NC
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".
252b5132
RH
37
38@ignore
39Permission is granted to process this file through TeX and print the
40results, provided the printed document carries a copying permission
41notice 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
252b5132
RH
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
18356cf2 52@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
252b5132
RH
53@c
54@c This text may be freely distributed under the terms of the GNU
cf055d54 55@c Free Documentation License.
252b5132
RH
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
18356cf2 77Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001 Free Software Foundation, Inc.
252b5132 78
cf055d54
NC
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".
252b5132 85
252b5132
RH
86@end titlepage
87
88@node Top
89@top Introduction
90
91@cindex version
92This brief manual contains preliminary documentation for the @sc{gnu} binary
93utilities (collectively version @value{VERSION}):
94
95@iftex
96@table @code
97@item ar
98Create, modify, and extract from archives
99
100@item nm
101List symbols from object files
102
103@item objcopy
104Copy and translate object files
105
106@item objdump
107Display information from object files
108
109@item ranlib
110Generate index to archive contents
111
112@item readelf
113Display the contents of ELF format files.
114
115@item size
116List file section sizes and total size
117
118@item strings
119List printable strings from files
120
121@item strip
122Discard symbols
123
124@item c++filt
9d51cc66
ILT
125Demangle encoded C++ symbols (on MS-DOS, this program is named
126@code{cxxfilt})
252b5132
RH
127
128@item addr2line
129Convert addresses into file names and line numbers
130
131@item nlmconv
132Convert object code into a Netware Loadable Module
133
134@item windres
135Manipulate Windows resources
136
137@item dlltool
138Create the files needed to build and use Dynamic Link Libraries
139@end table
140@end iftex
141
cf055d54
NC
142This document is distributed under the terms of the GNU Free
143Documentation License. A copy of the license is included in the
144section entitled "GNU Free Documentation License".
145
252b5132
RH
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
9d51cc66 157* cxxfilt: c++filt. MS-DOS name for c++filt
252b5132
RH
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
cf055d54 164* GNU Free Documentation License:: GNU Free Documentation License
252b5132
RH
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
3de39064 175ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
252b5132
RH
176ar -M [ <mri-script ]
177@end smallexample
178
179The @sc{gnu} @code{ar} program creates, modifies, and extracts from
180archives. An @dfn{archive} is a single file holding a collection of
181other files in a structure that makes it possible to retrieve
182the original individual files (called @dfn{members} of the archive).
183
184The original files' contents, mode (permissions), timestamp, owner, and
185group are preserved in the archive, and can be restored on
186extraction.
187
188@cindex name length
189@sc{gnu} @code{ar} can maintain archives whose members have names of any
190length; however, depending on how @code{ar} is configured on your
191system, a limit on member-name length may be imposed for compatibility
192with archive formats maintained with other tools. If it exists, the
193limit is often 15 characters (typical of formats related to a.out) or 16
194characters (typical of formats related to coff).
195
196@cindex libraries
197@code{ar} is considered a binary utility because archives of this sort
198are most often used as @dfn{libraries} holding commonly needed
199subroutines.
200
201@cindex symbol index
202@code{ar} creates an index to the symbols defined in relocatable
203object modules in the archive when you specify the modifier @samp{s}.
204Once created, this index is updated in the archive whenever @code{ar}
205makes a change to its contents (save for the @samp{q} update operation).
206An archive with such an index speeds up linking to the library, and
207allows routines in the library to call each other without regard to
208their placement in the archive.
209
210You may use @samp{nm -s} or @samp{nm --print-armap} to list this index
211table. 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
217facilities. You can control its activity using command-line options,
218like the different varieties of @code{ar} on Unix systems; or, if you
219specify the single command-line option @samp{-M}, you can control it
220with a script supplied via standard input, like the MRI ``librarian''
221program.
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
6e800839 233ar [-X32_64] [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
252b5132
RH
234@end smallexample
235
236@cindex Unix compatibility, @code{ar}
237When you use @code{ar} in the Unix style, @code{ar} insists on at least two
238arguments 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
242Most operations can also accept further @var{member} arguments,
243specifying particular files to operate on.
244
245@sc{gnu} @code{ar} allows you to mix the operation code @var{p} and modifier
246flags @var{mod} in any order, within the first command-line argument.
247
248If you wish, you may begin the first command-line argument with a
249dash.
250
251@cindex operations on archive
252The @var{p} keyletter specifies what operation to execute; it may be
253any 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
259be deleted as @var{member}@dots{}; the archive is untouched if you
260specify no files to delete.
261
262If you specify the @samp{v} modifier, @code{ar} lists each module
263as it is deleted.
264
265@item m
266@cindex moving in archive
267Use this operation to @emph{move} members in an archive.
268
269The ordering of members in an archive can make a difference in how
270programs are linked using the library, if a symbol is defined in more
271than one member.
272
273If 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;
275you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
276specified place instead.
277
278@item p
279@cindex printing from archive
280@emph{Print} the specified members of the archive, to the standard
281output file. If the @samp{v} modifier is specified, show the member
282name before copying its contents to standard output.
283
284If you specify no @var{member} arguments, all the files in the archive are
285printed.
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
292The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
293operation; new members are always placed at the end of the archive.
294
295The modifier @samp{v} makes @code{ar} list each file as it is appended.
296
297Since the point of this operation is speed, the archive's symbol table
298index 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
301However, too many different systems assume quick append rebuilds the
302index, so GNU ar implements @code{q} as a synonym for @code{r}.
303
304@item r
305@cindex replacement in archive
306Insert the files @var{member}@dots{} into @var{archive} (with
307@emph{replacement}). This operation differs from @samp{q} in that any
308previously existing members are deleted if their names match those being
309added.
310
311If one of the files named in @var{member}@dots{} does not exist, @code{ar}
312displays an error message, and leaves undisturbed any existing members
313of the archive matching that name.
314
315By default, new members are added at the end of the file; but you may
316use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request
317placement relative to some existing member.
318
319The modifier @samp{v} used with this operation elicits a line of
320output 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
322deleted) or replaced.
323
324@item t
325@cindex contents of archive
326Display a @emph{table} listing the contents of @var{archive}, or those
327of the files listed in @var{member}@dots{} that are present in the
328archive. Normally only the member name is shown; if you also want to
329see the modes (permissions), timestamp, owner, group, and size, you can
330request that by also specifying the @samp{v} modifier.
331
332If you do not specify a @var{member}, all files in the archive
333are listed.
334
335@cindex repeated names in archive
336@cindex name duplication in archive
337If there is more than one file with the same name (say, @samp{fie}) in
338an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the
339first instance; to see them all, you must ask for a complete
340listing---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
347use the @samp{v} modifier with this operation, to request that
348@code{ar} list each name as it extracts it.
349
350If you do not specify a @var{member}, all files in the archive
351are extracted.
352
353@end table
354
355A number of modifiers (@var{mod}) may immediately follow the @var{p}
356keyletter, to specify variations on an operation's behavior:
357
358@table @code
359@item a
360@cindex relative placement in archive
361Add new files @emph{after} an existing member of the
362archive. If you use the modifier @samp{a}, the name of an existing archive
363member must be present as the @var{relpos} argument, before the
364@var{archive} specification.
365
366@item b
367Add new files @emph{before} an existing member of the
368archive. If you use the modifier @samp{b}, the name of an existing archive
369member 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
375created if it did not exist, when you request an update. But a warning is
376issued unless you specify in advance that you expect to create it, by
377using this modifier.
378
379@item f
380Truncate names in the archive. @sc{gnu} @code{ar} will normally permit file
381names of any length. This will cause it to create archives which are
382not compatible with the native @code{ar} program on some systems. If
383this is a concern, the @samp{f} modifier may be used to truncate file
384names when putting them in the archive.
385
386@item i
387Insert new files @emph{before} an existing member of the
388archive. If you use the modifier @samp{i}, the name of an existing archive
389member must be present as the @var{relpos} argument, before the
390@var{archive} specification. (same as @samp{b}).
391
392@item l
393This modifier is accepted but not used.
394@c whaffor ar l modifier??? presumably compat; with
395@c what???---doc@@cygnus.com, 25jan91
396
3de39064
ILT
397@item N
398Uses the @var{count} parameter. This is used if there are multiple
399entries in the archive with the same name. Extract or delete instance
400@var{count} of the given name from the archive.
401
252b5132
RH
402@item o
403@cindex dates in archive
404Preserve the @emph{original} dates of members when extracting them. If
405you do not specify this modifier, files extracted from the archive
406are stamped with the time of extraction.
407
3de39064
ILT
408@item P
409Use 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
411are not POSIX complaint), but other archive creators can. This option
412will cause @sc{gnu} @code{ar} to match file names using a complete path
413name, which can be convenient when extracting a single file from an
414archive created by another tool.
415
252b5132
RH
416@item s
417@cindex writing archive index
418Write an object-file index into the archive, or update an existing one,
419even if no other change is made to the archive. You may use this modifier
420flag either with any operation, or alone. Running @samp{ar s} on an
421archive is equivalent to running @samp{ranlib} on it.
422
423@item S
424@cindex not writing archive index
425Do not generate an archive symbol table. This can speed up building a
426large library in several steps. The resulting archive can not be used
427with 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
433Normally, @samp{ar r}@dots{} inserts all files
434listed into the archive. If you would like to insert @emph{only} those
435of the files you list that are newer than existing members of the same
436names, use this modifier. The @samp{u} modifier is allowed only for the
437operation @samp{r} (replace). In particular, the combination @samp{qu} is
438not allowed, since checking the timestamps would lose any speed
439advantage from the operation @samp{q}.
440
441@item v
442This modifier requests the @emph{verbose} version of an operation. Many
443operations display additional information, such as filenames processed,
444when the modifier @samp{v} is appended.
445
446@item V
447This modifier shows the version number of @code{ar}.
448@end table
449
6e800839
GK
450@code{ar} ignores an initial option spelt @code{-X32_64}, for
451compatibility with AIX. The behaviour produced by this option is the
452default 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}
454which is the default for AIX @code{ar}.
455
252b5132
RH
456@node ar scripts
457@section Controlling @code{ar} with a script
458
459@smallexample
460ar -M [ <@var{script} ]
461@end smallexample
462
463@cindex MRI compatibility, @code{ar}
464@cindex scripts, @code{ar}
465If you use the single command-line option @samp{-M} with @code{ar}, you
466can control its operation with a rudimentary command language. This
467form of @code{ar} operates interactively if standard input is coming
468directly from a terminal. During interactive use, @code{ar} prompts for
469input (the prompt is @samp{AR >}), and continues executing even after
470errors. If you redirect standard input to a script file, no prompts are
471issued, and @code{ar} abandons execution (with a nonzero exit code)
472on any error.
473
474The @code{ar} command language is @emph{not} designed to be equivalent
475to the command-line options; in fact, it provides somewhat less control
476over archives. The only purpose of the command language is to ease the
477transition to @sc{gnu} @code{ar} for developers who already have scripts
478written for the MRI ``librarian'' program.
479
480The syntax for the @code{ar} command language is straightforward:
481@itemize @bullet
482@item
483commands are recognized in upper or lower case; for example, @code{LIST}
484is the same as @code{list}. In the following descriptions, commands are
485shown in upper case for clarity.
486
487@item
488a single command may appear on each line; it is the first word on the
489line.
490
491@item
492empty lines are allowed, and have no effect.
493
494@item
495comments are allowed; text after either of the characters @samp{*}
496or @samp{;} is ignored.
497
498@item
499Whenever you use a list of names as part of the argument to an @code{ar}
500command, you can separate the individual names with either commas or
501blanks. Commas are shown in the explanations below, for clarity.
502
503@item
504@samp{+} is used as a line continuation character; if @samp{+} appears
505at the end of a line, the text on the following line is considered part
506of the current command.
507@end itemize
508
509Here 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
513a temporary file required for most of the other commands.
514
515@code{SAVE} commits the changes so far specified by the script. Prior
516to @code{SAVE}, commands affect only the temporary copy of the current
517archive.
518
519@table @code
520@item ADDLIB @var{archive}
521@itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
522Add all the contents of @var{archive} (or, if specified, each named
523@var{module} from @var{archive}) to the current archive.
524
525Requires 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..."
530Add each named @var{member} as a module in the current archive.
531
532Requires prior use of @code{OPEN} or @code{CREATE}.
533
534@item CLEAR
535Discard the contents of the current archive, canceling the effect of
536any operations since the last @code{SAVE}. May be executed (with no
537effect) even if no current archive is specified.
538
539@item CREATE @var{archive}
540Creates an archive, and makes it the current archive (required for many
541other commands). The new archive is created with a temporary name; it
542is not actually saved as @var{archive} until you use @code{SAVE}.
543You can overwrite existing archives; similarly, the contents of any
544existing file named @var{archive} will not be destroyed until @code{SAVE}.
545
546@item DELETE @var{module}, @var{module}, @dots{} @var{module}
547Delete each listed @var{module} from the current archive; equivalent to
548@samp{ar -d @var{archive} @var{module} @dots{} @var{module}}.
549
550Requires 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}
554List each named @var{module} present in @var{archive}. The separate
555command @code{VERBOSE} specifies the form of the output: when verbose
556output 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
560Output normally goes to the standard output stream; however, if you
561specify @var{outputfile} as a final argument, @code{ar} directs the
562output to that file.
563
564@item END
565Exit from @code{ar}, with a @code{0} exit code to indicate successful
566completion. This command does not save the output file; if you have
567changed the current archive since the last @code{SAVE} command, those
568changes are lost.
569
570@item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
571Extract each named @var{module} from the current archive, writing them
572into the current directory as separate files. Equivalent to @samp{ar -x
573@var{archive} @var{module}@dots{}}.
574
575Requires 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
585Display full contents of the current archive, in ``verbose'' style
586regardless of the state of @code{VERBOSE}. The effect is like @samp{ar
c89746f6 587tv @var{archive}}. (This single command is a @sc{gnu} @code{ar}
252b5132
RH
588enhancement, rather than present for MRI compatibility.)
589
590Requires prior use of @code{OPEN} or @code{CREATE}.
591
592@item OPEN @var{archive}
593Opens an existing archive for use as the current archive (required for
594many other commands). Any changes as the result of subsequent commands
595will not actually affect @var{archive} until you next use @code{SAVE}.
596
597@item REPLACE @var{module}, @var{module}, @dots{} @var{module}
598In the current archive, replace each existing @var{module} (named in
599the @code{REPLACE} arguments) from files in the current working directory.
600To execute this command without errors, both the file, and the module in
601the current archive, must exist.
602
603Requires prior use of @code{OPEN} or @code{CREATE}.
604
605@item VERBOSE
606Toggle an internal flag governing the output from @code{DIRECTORY}.
607When the flag is on, @code{DIRECTORY} output matches output from
608@samp{ar -tv }@dots{}.
609
610@item SAVE
611Commit your changes to the current archive, and actually save it as a
612file with the name specified in the last @code{CREATE} or @code{OPEN}
613command.
614
615Requires 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
624The @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
634nm [ -a | --debug-syms ] [ -g | --extern-only ]
28c309a2 635 [ -B ] [ -C | --demangle[=@var{style}] ] [ -D | --dynamic ]
252b5132
RH
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} ]
6e800839
GK
641 [ --defined-only ] [-l | --line-numbers ] [ --no-demangle ]
642 [ -V | --version ] [ -X 32_64 ] [ --help ] [ @var{objfile}@dots{} ]
252b5132
RH
643@end smallexample
644
645@sc{gnu} @code{nm} lists the symbols from object files @var{objfile}@dots{}.
f20a759a 646If no object files are listed as arguments, @code{nm} assumes the file
252b5132
RH
647@file{a.out}.
648
649For each symbol, @code{nm} shows:
650
651@itemize @bullet
652@item
653The symbol value, in the radix selected by options (see below), or
654hexadecimal by default.
655
656@item
657The symbol type. At least the following types are used; others are, as
658well, depending on the object file format. If lowercase, the symbol is
659local; 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
665The symbol's value is absolute, and will not be changed by further
666linking.
667
668@item B
669The symbol is in the uninitialized data section (known as BSS).
670
671@item C
672The symbol is common. Common symbols are uninitialized data. When
673linking, multiple common symbols may appear with the same name. If the
674symbol is defined anywhere, the common symbols are treated as undefined
675references. 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
679The symbol is in the initialized data section.
680
681@item G
682The symbol is in an initialized data section for small objects. Some
683object file formats permit more efficient access to small data objects,
684such as a global int variable as opposed to a large global array.
685
686@item I
687The symbol is an indirect reference to another symbol. This is a GNU
688extension to the a.out object file format which is rarely used.
689
690@item N
691The symbol is a debugging symbol.
692
693@item R
694The symbol is in a read only data section.
695
696@item S
697The symbol is in an uninitialized data section for small objects.
698
699@item T
700The symbol is in the text (code) section.
701
702@item U
703The symbol is undefined.
704
fad6fcbb
NC
705@item V
706The symbol is a weak object. When a weak defined symbol is linked with
707a normal defined symbol, the normal defined symbol is used with no error.
708When a weak undefined symbol is linked and the symbol is not defined,
709the value of the weak symbol becomes zero with no error.
710
252b5132 711@item W
fad6fcbb
NC
712The symbol is a weak symbol that has not been specifically tagged as a
713weak object symbol. When a weak defined symbol is linked with a normal
714defined symbol, the normal defined symbol is used with no error.
715When a weak undefined symbol is linked and the symbol is not defined,
716the value of the weak symbol becomes zero with no error.
252b5132
RH
717
718@item -
719The symbol is a stabs symbol in an a.out object file. In this case, the
720next values printed are the stabs other field, the stabs desc field, and
721the stab type. Stabs symbols are used to hold debugging information;
722for more information, see @ref{Top,Stabs,Stabs Overview,stabs.info, The
723``stabs'' debug format}.
724
725@item ?
726The symbol type is unknown, or object file format specific.
727@end table
728
729@item
730The symbol name.
731@end itemize
732
733The long and short forms of options, shown here as alternatives, are
734equivalent.
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
f20a759a 743Precede each symbol by the name of the input file (or archive member)
252b5132
RH
744in which it was found, rather than identifying the input file once only,
745before all of its symbols.
746
747@item -a
748@itemx --debug-syms
749@cindex debugging symbols
750Display all symbols, even debugger-only symbols; normally these are not
751listed.
752
753@item -B
754@cindex @code{nm} format
755@cindex @code{nm} compatibility
756The same as @samp{--format=bsd} (for compatibility with the MIPS @code{nm}).
757
758@item -C
28c309a2 759@itemx --demangle[=@var{style}]
252b5132
RH
760@cindex demangling in nm
761Decode (@dfn{demangle}) low-level symbol names into user-level names.
762Besides removing any initial underscore prepended by the system, this
28c309a2
NC
763makes C++ function names readable. Different compilers have different
764mangling styles. The optional demangling style argument can be used to
765choose an appropriate demangling style for your compiler. @xref{c++filt},
766for more information on demangling.
252b5132
RH
767
768@item --no-demangle
769Do not demangle low-level symbol names. This is the default.
770
771@item -D
772@itemx --dynamic
773@cindex dynamic symbols
774Display the dynamic symbols rather than the normal symbols. This is
775only meaningful for dynamic objects, such as certain types of shared
776libraries.
777
778@item -f @var{format}
779@itemx --format=@var{format}
780@cindex @code{nm} format
781@cindex @code{nm} compatibility
782Use the output format @var{format}, which can be @code{bsd},
783@code{sysv}, or @code{posix}. The default is @code{bsd}.
784Only the first character of @var{format} is significant; it can be
785either upper or lower case.
786
787@item -g
788@itemx --extern-only
789@cindex external symbols
790Display only external symbols.
791
792@item -l
793@itemx --line-numbers
794@cindex symbol line numbers
795For each symbol, use debugging information to try to find a filename and
796line number. For a defined symbol, look for the line number of the
797address of the symbol. For an undefined symbol, look for the line
798number of a relocation entry which refers to the symbol. If line number
799information can be found, print it after the other symbol information.
800
801@item -n
802@itemx -v
803@itemx --numeric-sort
804Sort symbols numerically by their addresses, rather than alphabetically
805by their names.
806
807@item -p
808@itemx --no-sort
809@cindex sorting symbols
810Do not bother to sort the symbols in any order; print them in the order
811encountered.
812
813@item -P
814@itemx --portability
815Use the POSIX.2 standard output format instead of the default format.
816Equivalent to @samp{-f posix}.
817
818@item -s
819@itemx --print-armap
820@cindex symbol index, listing
821When listing symbols from archive members, include the index: a mapping
822(stored in the archive by @code{ar} or @code{ranlib}) of which modules
823contain definitions for which names.
824
825@item -r
826@itemx --reverse-sort
827Reverse the order of the sort (whether numeric or alphabetic); let the
828last come first.
829
830@item --size-sort
831Sort symbols by size. The size is computed as the difference between
832the value of the symbol and the value of the symbol with the next higher
833value. The size of the symbol is printed, rather than the value.
834
835@item -t @var{radix}
836@itemx --radix=@var{radix}
837Use @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
842Specify 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
849Display only undefined symbols (those external to each object file).
850
851@item --defined-only
852@cindex external symbols
853@cindex undefined symbols
854Display only defined symbols for each object file.
855
856@item -V
857@itemx --version
858Show the version number of @code{nm} and exit.
859
6e800839
GK
860@item -X
861This 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
864to @code{-X 32}, which is not supported by @sc{gnu} @code{nm}.
865
252b5132
RH
866@item --help
867Show a summary of the options to @code{nm} and exit.
868@end table
869
870@node objcopy
871@chapter objcopy
872
873@smallexample
874objcopy [ -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} ]
f91ea849 885 [ -j @var{sectionname} | --only-section=@var{sectionname} ]
252b5132
RH
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} ]
57938635
AM
891 [ --change-section-address @var{section}@{=,+,-@}@var{val} ]
892 [ --change-section-lma @var{section}@{=,+,-@}@var{val} ]
893 [ --change-section-vma @var{section}@{=,+,-@}@var{val} ]
252b5132 894 [ --change-warnings ] [ --no-change-warnings ]
57938635
AM
895 [ --set-section-flags @var{section}=@var{flags} ]
896 [ --add-section @var{sectionname}=@var{filename} ]
252b5132 897 [ --change-leading-char ] [ --remove-leading-char ]
420496c1 898 [ --srec-len=@var{ival} ] [ --srec-forceS3 ]
57938635 899 [ --redefine-sym @var{old}=@var{new} ] [ --weaken ]
252b5132
RH
900 [ -v | --verbose ] [ -V | --version ] [ --help ]
901 @var{infile} [@var{outfile}]
902@end smallexample
903
904The @sc{gnu} @code{objcopy} utility copies the contents of an object
905file to another. @code{objcopy} uses the @sc{gnu} @sc{bfd} Library to
906read and write the object files. It can write the destination object
907file in a format different from that of the source object file. The
908exact behavior of @code{objcopy} is controlled by command-line options.
ccd13d18
L
909Note that @code{objcopy} should be able to copy a fully linked file
910between any two formats. However, copying a relocatable object file
911between any two formats may not work as expected.
252b5132
RH
912
913@code{objcopy} creates temporary files to do its translations and
914deletes them afterward. @code{objcopy} uses @sc{bfd} to do all its
915translation work; it has access to all the formats described in @sc{bfd}
916and thus is able to recognize most formats without being told
917explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
918
919@code{objcopy} can be used to generate S-records by using an output
920target 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
923output target of @samp{binary} (e.g., use @samp{-O binary}). When
924@code{objcopy} generates a raw binary file, it will essentially produce
925a memory dump of the contents of the input object file. All symbols and
926relocation information will be discarded. The memory dump will start at
927the load address of the lowest section copied into the output file.
928
929When generating an S-record or a raw binary file, it may be helpful to
930use @samp{-S} to remove sections containing debugging information. In
931some cases @samp{-R} will be useful to remove sections which contain
f20a759a 932information that is not needed by the binary file.
252b5132 933
18356cf2
NC
934Note - @code{objcopy} is not able to change the endianness of its input
935files. 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
937same endianness or which have no endianness (eg @samp{srec}).
938
252b5132
RH
939@table @code
940@item @var{infile}
941@itemx @var{outfile}
f20a759a 942The input and output files, respectively.
252b5132
RH
943If you do not specify @var{outfile}, @code{objcopy} creates a
944temporary file and destructively renames the result with
945the name of @var{infile}.
946
947@item -I @var{bfdname}
948@itemx --input-target=@var{bfdname}
949Consider the source file's object format to be @var{bfdname}, rather than
950attempting to deduce it. @xref{Target Selection}, for more information.
951
952@item -O @var{bfdname}
953@itemx --output-target=@var{bfdname}
954Write 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}
959Use @var{bfdname} as the object format for both the input and the output
960file; i.e., simply transfer data from source to destination with no
961translation. @xref{Target Selection}, for more information.
962
f91ea849
ILT
963@item -j @var{sectionname}
964@itemx --only-section=@var{sectionname}
965Copy only the named section from the input file to the output file.
966This option may be given more than once. Note that using this option
967inappropriately may make the output file unusable.
968
252b5132
RH
969@item -R @var{sectionname}
970@itemx --remove-section=@var{sectionname}
971Remove any section named @var{sectionname} from the output file. This
972option may be given more than once. Note that using this option
973inappropriately may make the output file unusable.
974
975@item -S
976@itemx --strip-all
977Do not copy relocation and symbol information from the source file.
978
979@item -g
980@itemx --strip-debug
981Do not copy debugging symbols from the source file.
982
983@item --strip-unneeded
984Strip all symbols that are not needed for relocation processing.
985
986@item -K @var{symbolname}
987@itemx --keep-symbol=@var{symbolname}
988Copy only symbol @var{symbolname} from the source file. This option may
989be given more than once.
990
991@item -N @var{symbolname}
992@itemx --strip-symbol=@var{symbolname}
993Do not copy symbol @var{symbolname} from the source file. This option
994may be given more than once.
995
996@item -L @var{symbolname}
997@itemx --localize-symbol=@var{symbolname}
998Make symbol @var{symbolname} local to the file, so that it is not
999visible externally. This option may be given more than once.
1000
1001@item -W @var{symbolname}
1002@itemx --weaken-symbol=@var{symbolname}
1003Make symbol @var{symbolname} weak. This option may be given more than once.
1004
1005@item -x
1006@itemx --discard-all
1007Do 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
1012Do 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}
1017Keep only every @var{byte}th byte of the input file (header data is not
1018affected). @var{byte} can be in the range from 0 to @var{interleave}-1,
1019where @var{interleave} is given by the @samp{-i} or @samp{--interleave}
1020option, or the default of 4. This option is useful for creating files
1021to program @sc{rom}. It is typically used with an @code{srec} output
1022target.
1023
1024@item -i @var{interleave}
1025@itemx --interleave=@var{interleave}
1026Only copy one out of every @var{interleave} bytes. Select which byte to
1027copy 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
1033Set the access and modification dates of the output file to be the same
1034as those of the input file.
1035
1036@item --debugging
1037Convert debugging information, if possible. This is not the default
1038because only certain debugging formats are supported, and the
1039conversion process can be time consuming.
1040
1041@item --gap-fill @var{val}
1042Fill gaps between sections with @var{val}. This operation applies to
1043the @emph{load address} (LMA) of the sections. It is done by increasing
1044the size of the section with the lower address, and filling in the extra
1045space created with @var{val}.
1046
1047@item --pad-to @var{address}
1048Pad the output file up to the load address @var{address}. This is
1049done by increasing the size of the last section. The extra space is
1050filled in with the value specified by @samp{--gap-fill} (default zero).
1051
1052@item --set-start @var{val}
f20a759a 1053Set the start address of the new file to @var{val}. Not all object file
252b5132
RH
1054formats support setting the start address.
1055
1056@item --change-start @var{incr}
1057@itemx --adjust-start @var{incr}
1058@cindex changing start address
1059Change the start address by adding @var{incr}. Not all object file
1060formats support setting the start address.
1061
1062@item --change-addresses @var{incr}
1063@itemx --adjust-vma @var{incr}
1064@cindex changing object addresses
1065Change the VMA and LMA addresses of all sections, as well as the start
1066address, by adding @var{incr}. Some object file formats do not permit
1067section addresses to be changed arbitrarily. Note that this does not
1068relocate the sections; if the program expects sections to be loaded at a
1069certain address, and this option is used to change the sections such
1070that 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
1075Set 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
1078section address. See the comments under @samp{--change-addresses},
1079above. If @var{section} does not exist in the input file, a warning will
1080be issued, unless @samp{--no-change-warnings} is used.
1081
1082@item --change-section-lma @var{section}@{=,+,-@}@var{val}
1083@cindex changing section LMA
1084Set or change the LMA address of the named @var{section}. The LMA
1085address is the address where the section will be loaded into memory at
1086program load time. Normally this is the same as the VMA address, which
1087is the address of the section at program run time, but on some systems,
1088especially those where a program is held in ROM, the two can be
1089different. If @samp{=} is used, the section address is set to
1090@var{val}. Otherwise, @var{val} is added to or subtracted from the
1091section address. See the comments under @samp{--change-addresses},
1092above. If @var{section} does not exist in the input file, a warning
1093will be issued, unless @samp{--no-change-warnings} is used.
1094
1095@item --change-section-vma @var{section}@{=,+,-@}@var{val}
1096@cindex changing section VMA
1097Set or change the VMA address of the named @var{section}. The VMA
1098address is the address where the section will be located once the
1099program has started executing. Normally this is the same as the LMA
1100address, which is the address where the section will be loaded into
1101memory, but on some systems, especially those where a program is held in
1102ROM, the two can be different. If @samp{=} is used, the section address
1103is set to @var{val}. Otherwise, @var{val} is added to or subtracted
1104from the section address. See the comments under
1105@samp{--change-addresses}, above. If @var{section} does not exist in
1106the input file, a warning will be issued, unless
1107@samp{--no-change-warnings} is used.
1108
1109@item --change-warnings
1110@itemx --adjust-warnings
1111If @samp{--change-section-address} or @samp{--change-section-lma} or
1112@samp{--change-section-vma} is used, and the named section does not
1113exist, issue a warning. This is the default.
1114
1115@item --no-change-warnings
1116@itemx --no-adjust-warnings
1117Do not issue a warning if @samp{--change-section-address} or
1118@samp{--adjust-section-lma} or @samp{--adjust-section-vma} is used, even
1119if the named section does not exist.
1120
1121@item --set-section-flags @var{section}=@var{flags}
1122Set the flags for the named section. The @var{flags} argument is a
1123comma separated string of flag names. The recognized names are
3994e2c6
ILT
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
1127does not have contents, but it is not meaningful to clear the
1128@samp{contents} flag of a section which does have contents--just remove
1129the section instead. Not all flags are meaningful for all object file
1130formats.
252b5132
RH
1131
1132@item --add-section @var{sectionname}=@var{filename}
1133Add a new section named @var{sectionname} while copying the file. The
1134contents of the new section are taken from the file @var{filename}. The
1135size of the section will be the size of the file. This option only
1136works on file formats which can support sections with arbitrary names.
1137
1138@item --change-leading-char
1139Some object file formats use special characters at the start of
1140symbols. The most common such character is underscore, which compilers
1141often add before every symbol. This option tells @code{objcopy} to
1142change the leading character of every symbol when it converts between
1143object file formats. If the object file formats use the same leading
1144character, this option has no effect. Otherwise, it will add a
1145character, or remove a character, or change a character, as
1146appropriate.
1147
1148@item --remove-leading-char
1149If the first character of a global symbol is a special symbol leading
1150character used by the object file format, remove the character. The
1151most common symbol leading character is underscore. This option will
1152remove a leading underscore from all global symbols. This can be useful
1153if you want to link together objects of different file formats with
1154different conventions for symbol names. This is different from
1155@code{--change-leading-char} because it always changes the symbol name
1156when appropriate, regardless of the object file format of the output
1157file.
1158
420496c1
NC
1159@item --srec-len=@var{ival}
1160Meaningful only for srec output. Set the maximum length of the Srecords
1161being produced to @var{ival}. This length covers both address, data and
1162crc fields.
1163
1164@item --srec-forceS3
1165Meaningful only for srec output. Avoid generation of S1/S2 records,
1166creating S3-only record format.
1167
57938635
AM
1168@item --redefine-sym @var{old}=@var{new}
1169Change the name of a symbol @var{old}, to @var{new}. This can be useful
1170when one is trying link two things together for which you have no
1171source, and there are name collisions.
1172
252b5132
RH
1173@item --weaken
1174Change all global symbols in the file to be weak. This can be useful
1175when building an object which will be linked against other objects using
1176the @code{-R} option to the linker. This option is only effective when
1177using an object file format which supports weak symbols.
1178
1179@item -V
1180@itemx --version
1181Show the version number of @code{objcopy}.
1182
1183@item -v
1184@itemx --verbose
1185Verbose output: list all object files modified. In the case of
1186archives, @samp{objcopy -V} lists all members of the archive.
1187
1188@item --help
1189Show 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
1199objdump [ -a | --archive-headers ]
1dada9c5 1200 [ -b @var{bfdname} | --target=@var{bfdname} ]
28c309a2 1201 [ -C | --demangle[=@var{style}] ]
1dada9c5
NC
1202 [ -d | --disassemble ]
1203 [ -D | --disassemble-all ]
1204 [ -z | --disassemble-zeroes ]
252b5132
RH
1205 [ -EB | -EL | --endian=@{big | little @} ]
1206 [ -f | --file-headers ]
f1563258 1207 [ --file-start-context ]
1dada9c5
NC
1208 [ -g | --debugging ]
1209 [ -h | --section-headers | --headers ]
1210 [ -i | --info ]
252b5132 1211 [ -j @var{section} | --section=@var{section} ]
1dada9c5
NC
1212 [ -l | --line-numbers ]
1213 [ -S | --source ]
252b5132 1214 [ -m @var{machine} | --architecture=@var{machine} ]
dd92f639 1215 [ -M @var{options} | --disassembler-options=@var{options}]
252b5132 1216 [ -p | --private-headers ]
1dada9c5
NC
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} ]
252b5132 1226 [ --stop-address=@var{address} ]
1dada9c5
NC
1227 [ --prefix-addresses]
1228 [ --[no-]show-raw-insn ]
252b5132 1229 [ --adjust-vma=@var{offset} ]
1dada9c5
NC
1230 [ -V | --version ]
1231 [ -H | --help ]
252b5132
RH
1232 @var{objfile}@dots{}
1233@end smallexample
1234
1235@code{objdump} displays information about one or more object files.
1236The options control what particular information to display. This
1237information is mostly useful to programmers who are working on the
1238compilation tools, as opposed to programmers who just want their
1239program to compile and work.
1240
1241@var{objfile}@dots{} are the object files to be examined. When you
1242specify archives, @code{objdump} shows information on each of the member
1243object files.
1244
1245The long and short forms of options, shown here as alternatives, are
1dada9c5
NC
1246equivalent. 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.
252b5132
RH
1248
1249@table @code
1250@item -a
1251@itemx --archive-header
1252@cindex archive headers
1253If any of the @var{objfile} files are archives, display the archive
1254header information (in a format similar to @samp{ls -l}). Besides the
1255information you could list with @samp{ar tv}, @samp{objdump -a} shows
1256the 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
1261When dumping information, first add @var{offset} to all the section
1262addresses. This is useful if the section addresses do not correspond to
1263the symbol table, which can happen when putting sections at particular
1264addresses when using a format which can not represent section addresses,
1265such as a.out.
1266
1267@item -b @var{bfdname}
1268@itemx --target=@var{bfdname}
1269@cindex object code format
1270Specify that the object-code format for the object files is
1271@var{bfdname}. This option may not be necessary; @var{objdump} can
1272automatically recognize many formats.
1273
1274For example,
1275@example
1276objdump -b oasys -m vax -h fu.o
1277@end example
1278@noindent
1279displays summary information from the section headers (@samp{-h}) of
1280@file{fu.o}, which is explicitly identified (@samp{-m}) as a VAX object
1281file in the format produced by Oasys compilers. You can list the
1282formats available with the @samp{-i} option.
1283@xref{Target Selection}, for more information.
1284
1285@item -C
28c309a2 1286@itemx --demangle[=@var{style}]
252b5132
RH
1287@cindex demangling in objdump
1288Decode (@dfn{demangle}) low-level symbol names into user-level names.
1289Besides removing any initial underscore prepended by the system, this
28c309a2
NC
1290makes C++ function names readable. Different compilers have different
1291mangling styles. The optional demangling style argument can be used to
1292choose an appropriate demangling style for your compiler. @xref{c++filt},
1293for more information on demangling.
252b5132 1294
1dada9c5 1295@item -G
252b5132
RH
1296@item --debugging
1297Display debugging information. This attempts to parse debugging
1298information stored in the file and print it out using a C like syntax.
1299Only certain types of debugging information have been implemented.
1300
1301@item -d
1302@itemx --disassemble
1303@cindex disassembling object code
1304@cindex machine instructions
1305Display the assembler mnemonics for the machine instructions from
1306@var{objfile}. This option only disassembles those sections which are
1307expected to contain instructions.
1308
1309@item -D
1310@itemx --disassemble-all
1311Like @samp{-d}, but disassemble the contents of all sections, not just
1312those expected to contain instructions.
1313
1314@item --prefix-addresses
1315When disassembling, print the complete address on each line. This is
1316the older disassembly format.
1317
1318@item --disassemble-zeroes
1319Normally the disassembly output will skip blocks of zeroes. This
1320option directs the disassembler to disassemble those blocks, just like
1321any other data.
1322
1323@item -EB
1324@itemx -EL
1325@itemx --endian=@{big|little@}
1326@cindex endianness
1327@cindex disassembly endianness
1328Specify the endianness of the object files. This only affects
1329disassembly. This can be useful when disassembling a file format which
1330does not describe endianness information, such as S-records.
1331
1332@item -f
1333@itemx --file-header
1334@cindex object file header
1335Display summary information from the overall header of
1336each of the @var{objfile} files.
1337
f1563258
TW
1338@item --file-start-context
1339@cindex source code context
1340Specify that when displaying interlisted source code/disassembly
1341(assumes '-S') from a file that has not yet been displayed, extend the
1342context to the start of the file.
1343
252b5132
RH
1344@item -h
1345@itemx --section-header
1346@itemx --header
1347@cindex section headers
1348Display summary information from the section headers of the
1349object file.
1350
1351File segments may be relocated to nonstandard addresses, for example by
1352using the @samp{-Ttext}, @samp{-Tdata}, or @samp{-Tbss} options to
1353@code{ld}. However, some object file formats, such as a.out, do not
1354store the starting address of the file segments. In those situations,
1355although @code{ld} relocates the sections correctly, using @samp{objdump
1356-h} to list the file section headers cannot show the correct addresses.
1357Instead, it shows the usual addresses, which are implicit for the
1358target.
1359
1360@item --help
1361Print 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
1367Display a list showing all architectures and object formats available
1368for specification with @samp{-b} or @samp{-m}.
1369
1370@item -j @var{name}
1371@itemx --section=@var{name}
1372@cindex section information
1373Display information only for section @var{name}.
1374
1375@item -l
1376@itemx --line-numbers
1377@cindex source filenames for object files
1378Label the display (using debugging information) with the filename and
1379source line numbers corresponding to the object code or relocs shown.
1380Only 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
1386Specify the architecture to use when disassembling object files. This
1387can be useful when disassembling object files which do not describe
1388architecture information, such as S-records. You can list the available
1389architectures with the @samp{-i} option.
1390
dd92f639
NC
1391@item -M @var{options}
1392@itemx --disassembler-options=@var{options}
1393Pass target specific information to the disassembler. Only supported on
1394some targets.
1395
1396If the target is an ARM architecture then this switch can be used to
1397select which register name set is used during disassembler. Specifying
58efb6c0
NC
1398@samp{-M reg-name-std} (the default) will select the register names as
1399used 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
1402Procedure Call Standard, whilst specifying @samp{-M reg-names-raw} will
1403just use @samp{r} followed by the register number.
1404
1405There are also two variants on the APCS register naming scheme enabled
0fff8110 1406by @samp{-M reg-names-atpcs} and @samp{-M reg-names-special-atpcs} which
58efb6c0
NC
1407use the ARM/Thumb Procedure Call Standard naming conventions. (Eiuther
1408with the normal register name sor the special register names).
dd92f639 1409
8f915f68
NC
1410This option can also be used for ARM architectures to force the
1411disassembler to interpret all instructions as THUMB instructions by
1412using the switch @samp{--disassembler-options=force-thumb}. This can be
1413useful when attempting to disassemble thumb code produced by other
1414compilers.
1415
252b5132
RH
1416@item -p
1417@itemx --private-headers
1418Print information that is specific to the object file format. The exact
1419information printed depends upon the object file format. For some
1420object file formats, no additional information is printed.
1421
1422@item -r
1423@itemx --reloc
1424@cindex relocation entries, in object file
1425Print the relocation entries of the file. If used with @samp{-d} or
1426@samp{-D}, the relocations are printed interspersed with the
1427disassembly.
1428
1429@item -R
1430@itemx --dynamic-reloc
1431@cindex dynamic relocation entries, in object file
1432Print the dynamic relocation entries of the file. This is only
1433meaningful for dynamic objects, such as certain types of shared
1434libraries.
1435
1436@item -s
1437@itemx --full-contents
1438@cindex sections, full contents
1439@cindex object file sections
1440Display the full contents of any sections requested.
1441
1442@item -S
1443@itemx --source
1444@cindex source disassembly
1445@cindex disassembly, with source
1446Display source code intermixed with disassembly, if possible. Implies
1447@samp{-d}.
1448
1449@item --show-raw-insn
1450When disassembling instructions, print the instruction in hex as well as
1451in symbolic form. This is the default except when
1452@code{--prefix-addresses} is used.
1453
1454@item --no-show-raw-insn
1455When disassembling instructions, do not print the instruction bytes.
1456This is the default when @code{--prefix-addresses} is used.
1457
1dada9c5 1458@item -G
252b5132
RH
1459@item --stabs
1460@cindex stab
1461@cindex .stab
1462@cindex debug symbols
1463@cindex ELF object file format
1464Display the full contents of any sections requested. Display the
1465contents of the .stab and .stab.index and .stab.excl sections from an
1466ELF 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
1468section. In most other file formats, debugging symbol-table entries are
1469interleaved with linkage symbols, and are visible in the @samp{--syms}
1470output. For more information on stabs symbols, see @ref{Top,Stabs,Stabs
1471Overview,stabs.info, The ``stabs'' debug format}.
1472
1473@item --start-address=@var{address}
1474@cindex start-address
1475Start displaying data at the specified address. This affects the output
1476of the @code{-d}, @code{-r} and @code{-s} options.
1477
1478@item --stop-address=@var{address}
1479@cindex stop-address
1480Stop displaying data at the specified address. This affects the output
1481of the @code{-d}, @code{-r} and @code{-s} options.
1482
1483@item -t
1484@itemx --syms
1485@cindex symbol table entries, printing
1486Print the symbol table entries of the file.
1487This 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
1492Print the dynamic symbol table entries of the file. This is only
1493meaningful for dynamic objects, such as certain types of shared
1494libraries. This is similar to the information provided by the @samp{nm}
1495program when given the @samp{-D} (@samp{--dynamic}) option.
1496
1497@item --version
1498Print 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
1504Display all available header information, including the symbol table and
1505relocation 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
1511Format 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
1522ranlib [-vV] @var{archive}
1523@end smallexample
1524
1525@code{ranlib} generates an index to the contents of an archive and
1526stores it in the archive. The index lists each symbol defined by a
1527member of an archive that is a relocatable object file.
1528
1529You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
1530
1531An archive with such an index speeds up linking to the library and
1532allows routines in the library to call each other without regard to
1533their placement in the archive.
1534
1535The @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
f20a759a 1542@itemx --version
252b5132
RH
1543Show 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
1553size [ -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
1559The @sc{gnu} @code{size} utility lists the section sizes---and the total
1560size---for each of the object or archive files @var{objfile} in its
1561argument list. By default, one line of output is generated for each
1562object file or each module in an archive.
1563
1564@var{objfile}@dots{} are the object files to be examined.
1565If none are specified, the file @code{a.out} will be used.
1566
1567The 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
1574Using 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},
1576or @samp{--format=sysv}), or Berkeley @code{size} (using @samp{-B}, or
1577@samp{--format=berkeley}). The default is the one-line format similar to
1578Berkeley'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
1583Here is an example of the Berkeley (default) format of output from
1584@code{size}:
1585@smallexample
f20a759a 1586$ size --format=Berkeley ranlib size
252b5132
RH
1587text data bss dec hex filename
1588294880 81920 11592 388392 5ed28 ranlib
1589294880 81920 11888 388688 5ee50 size
1590@end smallexample
1591
1592@noindent
1593This is the same data, but displayed closer to System V conventions:
1594
1595@smallexample
f20a759a 1596$ size --format=SysV ranlib size
252b5132
RH
1597ranlib :
1598section size addr
1599.text 294880 8192
1600.data 81920 303104
1601.bss 11592 385024
1602Total 388392
1603
1604
1605size :
1606section size addr
1607.text 294880 8192
1608.data 81920 303104
1609.bss 11888 385024
1610Total 388688
1611@end smallexample
1612
1613@item --help
1614Show 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
1622Using one of these options, you can control whether the size of each
1623section 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
1626values (8, 10, 16) are supported. The total size is always given in two
1627radices; decimal and hexadecimal for @samp{-d} or @samp{-x} output, or
1628octal and hexadecimal if you're using @samp{-o}.
1629
1630@item --target=@var{bfdname}
1631@cindex object code format
1632Specify that the object-code format for @var{objfile} is
1633@var{bfdname}. This option may not be necessary; @code{size} can
1634automatically recognize many formats.
1635@xref{Target Selection}, for more information.
1636
1637@item -V
1638@itemx --version
1639Display 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
1650strings [-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
1656For each @var{file} given, @sc{gnu} @code{strings} prints the printable
1657character sequences that are at least 4 characters long (or the number
1658given with the options below) and are followed by an unprintable
1659character. By default, it only prints the strings from the initialized
1660and loaded sections of object files; for other types of files, it prints
1661the strings from the whole file.
1662
1663@code{strings} is mainly useful for determining the contents of non-text
1664files.
1665
1666@table @code
1667@item -a
1668@itemx --all
1669@itemx -
1670Do not scan only the initialized and loaded sections of object files;
1671scan the whole files.
1672
1673@item -f
1674@itemx --print-file-name
1675Print the name of the file before each string.
1676
1677@item --help
1678Print 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}
1683Print sequences of characters that are at least @var{min-len} characters
1684long, instead of the default 4.
1685
1686@item -o
1687Like @samp{-t o}. Some other versions of @code{strings} have @samp{-o}
1688act like @samp{-t d} instead. Since we can not be compatible with both
1689ways, we simply chose one.
1690
1691@item -t @var{radix}
1692@itemx --radix=@var{radix}
1693Print the offset within the file before each string. The single
1694character argument specifies the radix of the offset---@samp{o} for
1695octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
1696
1697@item --target=@var{bfdname}
1698@cindex object code format
1699Specify 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
1704Print 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
1716strip [ -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.
1731At least one object file must be given.
1732
1733@code{strip} modifies the files named in its argument,
1734rather than writing modified copies under different names.
1735
1736@table @code
1737@item -F @var{bfdname}
1738@itemx --target=@var{bfdname}
1739Treat the original @var{objfile} as a file with the object
1740code format @var{bfdname}, and rewrite it in the same format.
1741@xref{Target Selection}, for more information.
1742
1743@item --help
1744Show a summary of the options to @code{strip} and exit.
1745
1746@item -I @var{bfdname}
1747@itemx --input-target=@var{bfdname}
1748Treat the original @var{objfile} as a file with the object
1749code format @var{bfdname}.
1750@xref{Target Selection}, for more information.
1751
1752@item -O @var{bfdname}
1753@itemx --output-target=@var{bfdname}
1754Replace @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}
1759Remove any section named @var{sectionname} from the output file. This
1760option may be given more than once. Note that using this option
1761inappropriately may make the output file unusable.
1762
1763@item -s
1764@itemx --strip-all
1765Remove all symbols.
1766
1767@item -g
1768@itemx -S
1769@itemx --strip-debug
1770Remove debugging symbols only.
1771
1772@item --strip-unneeded
1773Remove all symbols that are not needed for relocation processing.
1774
1775@item -K @var{symbolname}
1776@itemx --keep-symbol=@var{symbolname}
1777Keep only symbol @var{symbolname} from the source file. This option may
1778be given more than once.
1779
1780@item -N @var{symbolname}
1781@itemx --strip-symbol=@var{symbolname}
1782Remove symbol @var{symbolname} from the source file. This option may be
1783given more than once, and may be combined with strip options other than
1784@code{-K}.
1785
1786@item -o @var{file}
1787Put the stripped output in @var{file}, rather than replacing the
1788existing file. When this argument is used, only one @var{objfile}
1789argument may be specified.
1790
1791@item -p
1792@itemx --preserve-dates
1793Preserve the access and modification dates of the file.
1794
1795@item -x
1796@itemx --discard-all
1797Remove non-global symbols.
1798
1799@item -X
1800@itemx --discard-locals
1801Remove compiler-generated local symbols.
1802(These usually start with @samp{L} or @samp{.}.)
1803
1804@item -V
1805@itemx --version
1806Show the version number for @code{strip}.
1807
1808@item -v
1809@itemx --verbose
1810Verbose output: list all object files modified. In the case of
1811archives, @samp{strip -v} lists all members of the archive.
1812@end table
1813
9d51cc66 1814@node c++filt, addr2line, strip, Top
252b5132
RH
1815@chapter c++filt
1816
1817@kindex c++filt
1818@cindex demangling C++ symbols
1819
1820@smallexample
1821c++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
9d51cc66 1828@kindex cxxfilt
252b5132
RH
1829The C++ and Java languages provides function overloading, which means
1830that you can write many functions with the same name (providing each
1831takes parameters of different types). All C++ and Java function names
1832are encoded into a low-level assembly label (this process is known as
9d51cc66
ILT
1833@dfn{mangling}). The @code{c++filt}
1834@footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
1835MS-DOS this program is named @code{cxxfilt}.}
1836program does the inverse mapping: it decodes (@dfn{demangles}) low-level
1837names into user-level names so that the linker can keep these overloaded
1838functions from clashing.
252b5132
RH
1839
1840Every alphanumeric word (consisting of letters, digits, underscores,
1841dollars, or periods) seen in the input is a potential label. If the
1842label decodes into a C++ name, the C++ name replaces the low-level
1843name in the output.
1844
1845You can use @code{c++filt} to decipher individual symbols:
1846
1847@example
1848c++filt @var{symbol}
1849@end example
1850
1851If no @var{symbol} arguments are given, @code{c++filt} reads symbol
1852names from the standard input and writes the demangled names to the
1853standard output. All results are printed on the standard output.
1854
1855@table @code
1856@item -_
1857@itemx --strip-underscores
1858On some systems, both the C and C++ compilers put an underscore in front
1859of every name. For example, the C name @code{foo} gets the low-level
1860name @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
1865Prints demangled names using Java syntax. The default is to use C++
1866syntax.
1867
1868@item -n
1869@itemx --no-strip-underscores
1870Do 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
1875different C++ compilers. The argument to this option selects which
1876method it uses:
1877
1878@table @code
1879@item gnu
1880the one used by the @sc{gnu} compiler (the default method)
1881@item lucid
1882the one used by the Lucid compiler
1883@item arm
1884the one specified by the C++ Annotated Reference Manual
1885@item hp
1886the one used by the HP compiler
1887@item edg
1888the one used by the EDG compiler
28c309a2
NC
1889@item gnu-new-abi
1890the one used by the @sc{gnu} compiler with the new ABI.
252b5132
RH
1891@end table
1892
1893@item --help
1894Print a summary of the options to @code{c++filt} and exit.
1895
1896@item --version
1897Print 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
1902user interface are subject to change in future releases. In particular,
1903a command-line option may be required in the the future to decode a name
1904passed as an argument on the command line; in other words,
1905
1906@example
1907c++filt @var{symbol}
1908@end example
1909
1910@noindent
1911may in a future release become
1912
1913@example
1914c++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
1925addr2line [ -b @var{bfdname} | --target=@var{bfdname} ]
28c309a2 1926 [ -C | --demangle[=@var{style} ]
252b5132
RH
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
1934numbers. Given an address and an executable, it uses the debugging
1935information in the executable to figure out which file name and line
1936number are associated with a given address.
1937
1938The executable to use is specified with the @code{-e} option. The
f20a759a 1939default is the file @file{a.out}.
252b5132
RH
1940
1941@code{addr2line} has two modes of operation.
1942
1943In the first, hexadecimal addresses are specified on the command line,
1944and @code{addr2line} displays the file name and line number for each
1945address.
1946
1947In the second, @code{addr2line} reads hexadecimal addresses from
1948standard input, and prints the file name and line number for each
1949address on standard output. In this mode, @code{addr2line} may be used
1950in a pipe to convert dynamically chosen addresses.
1951
1952The format of the output is @samp{FILENAME:LINENO}. The file name and
1953line 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
1955preceded by a @samp{FUNCTIONNAME} line which is the name of the function
1956containing the address.
1957
1958If the file name or function name can not be determined,
1959@code{addr2line} will print two question marks in their place. If the
1960line number can not be determined, @code{addr2line} will print 0.
1961
1962The long and short forms of options, shown here as alternatives, are
1963equivalent.
1964
1965@table @code
1966@item -b @var{bfdname}
1967@itemx --target=@var{bfdname}
1968@cindex object code format
1969Specify that the object-code format for the object files is
1970@var{bfdname}.
1971
1972@item -C
28c309a2 1973@itemx --demangle[=@var{style}]
252b5132
RH
1974@cindex demangling in objdump
1975Decode (@dfn{demangle}) low-level symbol names into user-level names.
1976Besides removing any initial underscore prepended by the system, this
28c309a2
NC
1977makes C++ function names readable. Different compilers have different
1978mangling styles. The optional demangling style argument can be used to
1979choose an appropriate demangling style for your compiler. @xref{c++filt},
1980for more information on demangling.
252b5132
RH
1981
1982@item -e @var{filename}
1983@itemx --exe=@var{filename}
1984Specify the name of the executable for which addresses should be
1985translated. The default file is @file{a.out}.
1986
1987@item -f
1988@itemx --functions
1989Display function names as well as file and line number information.
1990
1991@item -s
1992@itemx --basenames
1993Display only the base of each file name.
e107c42f 1994@end table
252b5132
RH
1995
1996@node nlmconv
1997@chapter nlmconv
1998
1999@code{nlmconv} converts a relocatable object file into a NetWare
2000Loadable Module.
2001
2002@ignore
2003@code{nlmconv} currently works with @samp{i386} object
2004files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
2005object files in @sc{elf}, or @code{a.out} format@footnote{
2006@code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
2007format in the Binary File Descriptor library. It has only been tested
2008with the above formats.}.
2009@end ignore
2010
2011@quotation
2012@emph{Warning:} @code{nlmconv} is not always built as part of the binary
2013utilities, since it is only useful for NLM targets.
2014@end quotation
2015
2016@smallexample
2017nlmconv [ -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
2027reading @var{headerfile} for NLM header information. For instructions
2028on writing the NLM command file language used in header files, see the
2029@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
2030Development and Tools Overview}, which is part of the NLM Software
2031Developer'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
2034more information.
2035
2036@code{nlmconv} can perform a link step. In other words, you can list
2037more than one object file for input if you list them in the definitions
2038file (rather than simply specifying one input file on the command line).
2039In this case, @code{nlmconv} calls the linker for you.
2040
2041@table @code
2042@item -I @var{bfdname}
2043@itemx --input-target=@var{bfdname}
2044Object format of the input file. @code{nlmconv} can usually determine
2045the 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}
2050Object format of the output file. @code{nlmconv} infers the output
2051format based on the input format, e.g. for a @samp{i386} input file the
2052output format is @samp{nlm32-i386}.
2053@xref{Target Selection}, for more information.
2054
2055@item -T @var{headerfile}
2056@itemx --header-file=@var{headerfile}
2057Reads @var{headerfile} for NLM header information. For instructions on
2058writing the NLM command file language used in header files, see@ see the
2059@samp{linkers} section, of the @cite{NLM Development and Tools
2060Overview}, which is part of the NLM Software Developer's Kit, available
2061from Novell, Inc.
2062
2063@item -d
2064@itemx --debug
2065Displays (on standard error) the linker command line used by @code{nlmconv}.
2066
2067@item -l @var{linker}
2068@itemx --linker=@var{linker}
2069Use @var{linker} for any linking. @var{linker} can be an absolute or a
2070relative pathname.
2071
2072@item -h
2073@itemx --help
2074Prints a usage summary.
2075
2076@item -V
2077@itemx --version
2078Prints 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
2088utilities, since it is only useful for Windows targets.
2089@end quotation
2090
2091@smallexample
2092windres [options] [input-file] [output-file]
2093@end smallexample
2094
2095@code{windres} reads resources from an input file and copies them into
2096an output file. Either file may be in one of three formats:
2097
2098@table @code
2099@item rc
2100A text format read by the Resource Compiler.
2101
2102@item res
2103A binary format generated by the Resource Compiler.
2104
2105@item coff
2106A COFF object or executable.
2107@end table
2108
2109The exact description of these different formats is available in
2110documentation from Microsoft.
2111
2112When @code{windres} converts from the @code{rc} format to the @code{res}
2113format, it is acting like the Windows Resource Compiler. When
2114@code{windres} converts from the @code{res} format to the @code{coff}
2115format, it is acting like the Windows @code{CVTRES} program.
2116
2117When @code{windres} generates an @code{rc} file, the output is similar
2118but 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
2120will instead include the file contents.
2121
2122If the input or output format is not specified, @code{windres} will
2123guess based on the file name, or, for the input file, the file contents.
2124A file with an extension of @file{.rc} will be treated as an @code{rc}
2125file, 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
2129If no output file is specified, @code{windres} will print the resources
2130in @code{rc} format to standard output.
2131
2132The normal use is for you to write an @code{rc} file, use @code{windres}
2133to convert it to a COFF object file, and then link the COFF file into
2134your 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}
2140The 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
2142name. If there are no non-option arguments, then @code{windres} will
2143read from standard input. @code{windres} can not read a COFF file from
2144standard input.
2145
2146@item -o @var{filename}
2147@itemx --output @var{filename}
2148The 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
2150for the input file name, as the output file name. If there is no
2151non-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}
2156The 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
2158guess, as described above.
2159
2160@item -O @var{format}
2161@itemx --output-format @var{format}
2162The 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}
2168Specify the BFD format to use for a COFF file as input or output. This
2169is a BFD target name; you can use the @code{--help} option to see a list
2170of supported targets. Normally @code{windres} will use the default
2171format, which is the first one listed by the @code{--help} option.
2172@ref{Target Selection}.
2173
2174@item --preprocessor @var{program}
2175When @code{windres} reads an @code{rc} file, it runs it through the C
2176preprocessor first. This option may be used to specify the preprocessor
2177to use, including any leading arguments. The default preprocessor
2178argument is @code{gcc -E -xc-header -DRC_INVOKED}.
2179
2180@item --include-dir @var{directory}
2181Specify an include directory to use when reading an @code{rc} file.
2182@code{windres} will pass this to the preprocessor as an @code{-I}
2183option. @code{windres} will also search this directory when looking for
2184files named in the @code{rc} file.
2185
751d21b5 2186@item -D @var{target}
ad0481cd 2187@itemx --define @var{sym}[=@var{val}]
252b5132
RH
2188Specify a @code{-D} option to pass to the preprocessor when reading an
2189@code{rc} file.
2190
751d21b5
DD
2191@item -v
2192Enable verbose mode. This tells you what the preprocessor is if you
2193didn't specify one.
2194
252b5132
RH
2195@item --language @var{val}
2196Specify 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
2198the language, and the high eight bits are the sublanguage.
2199
5a298d2d
NC
2200@item --use-temp-file
2201Use a temporary file to instead of using popen to read the output of
2202the preprocessor. Use this option if the popen implementation is buggy
2203on the host (eg., certain non-English language versions of Windows 95 and
2204Windows 98 are known to have buggy popen where the output will instead
2205go the console).
2206
2207@item --no-use-temp-file
2208Use popen, not a temporary file, to read the output of the preprocessor.
2209This is the default behaviour.
2210
252b5132
RH
2211@item --help
2212Prints a usage summary.
2213
2214@item --version
2215Prints the version number for @code{windres}.
2216
2217@item --yydebug
2218If @code{windres} is compiled with @code{YYDEBUG} defined as @code{1},
2219this 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
2229dynamic link libraries (DLLs).
2230
2231@quotation
2232@emph{Warning:} @code{dlltool} is not always built as part of the binary
2233utilities, since it is only useful for those targets which support DLLs.
2234@end quotation
2235
2236@smallexample
2237dlltool [-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
2256line. It then processes these inputs and if the @samp{-e} option has
2257been specified it creates a exports file. If the @samp{-l} option
2258has been specified it creates a library file and if the @samp{-z} option
2259has been specified it creates a def file. Any or all of the -e, -l
2260and -z options can be present in one invocation of dlltool.
2261
2262When creating a DLL, along with the source for the DLL, it is necessary
2263to have three other files. @code{dlltool} can help with the creation of
2264these files.
2265
2266The first file is a @samp{.def} file which specifies which functions are
2267exported from the DLL, which functions the DLL imports, and so on. This
2268is a text file and can be created by hand, or @code{dlltool} can be used
2269to create it using the @samp{-z} option. In this case @code{dlltool}
2270will scan the object files specified on its command line looking for
2271those functions which have been specially marked as being exported and
2272put entries for them in the .def file it creates.
2273
2274In order to mark a function as being exported from a DLL, it needs to
2275have an @samp{-export:<name_of_function>} entry in the @samp{.drectve}
2276section of the object file. This can be done in C by using the
2277asm() 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
2286The second file needed for DLL creation is an exports file. This file
2287is linked with the object files that make up the body of the DLL and it
2288handles the interface between the DLL and the outside world. This is a
2289binary 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
2292The third file needed for DLL creation is the library file that programs
2293will link with in order to access the functions in the DLL. This file
2294can be created by giving the @samp{-l} option to dlltool when it
2295is creating or reading in a .def file.
2296
2297@code{dlltool} builds the library file by hand, but it builds the
2298exports file by creating temporary files containing assembler statements
2299and then assembling these. The @samp{-S} command line option can be
2300used to specify the path to the assembler that dlltool will use,
2301and the @samp{-f} option can be used to pass specific flags to that
2302assembler. The @samp{-n} can be used to prevent dlltool from deleting
2303these temporary assembler files when it is done, and if @samp{-n} is
2304specified twice then this will prevent dlltool from deleting the
2305temporary object files it used to build the library.
2306
2307Here is an example of creating a DLL from a source file @samp{dll.c} and
2308also creating a program (from an object file called @samp{program.o})
2309that 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
2318The 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
2325Specifies 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
2330Specifies the name of a base file to be read in and processed. The
2331contents of this file will be added to the relocation section in the
2332exports file generated by dlltool.
2333
2334@item -e @var{filename}
2335@itemx --output-exp @var{filename}
2336Specifies the name of the export file to be created by dlltool.
2337
2338@item -z @var{filename}
2339@itemx --output-def @var{filename}
2340Specifies the name of the .def file to be created by dlltool.
2341
2342@item -l @var{filename}
2343@itemx --output-lib @var{filename}
2344Specifies the name of the library file to be created by dlltool.
2345
2346@item --export-all-symbols
2347Treat all global and weak defined symbols found in the input object
2348files as symbols to be exported. There is a small list of symbols which
2349are not exported by default; see the @code{--no-default-excludes}
2350option. 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
2354Only export symbols explicitly listed in an input .def file or in
2355@samp{.drectve} sections in the input object files. This is the default
2356behaviour. The @samp{.drectve} sections are created by @samp{dllexport}
2357attributes in the source code.
2358
2359@item --exclude-symbols @var{list}
2360Do not export the symbols in @var{list}. This is a list of symbol names
2361separated by comma or colon characters. The symbol names should not
2362contain a leading underscore. This is only meaningful when
2363@code{--export-all-symbols} is used.
2364
2365@item --no-default-excludes
2366When @code{--export-all-symbols} is used, it will by default avoid
2367exporting certain special symbols. The current list of symbols to avoid
2368exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
2369@samp{impure_ptr}. You may use the @code{--no-default-excludes} option
2370to go ahead and export these special symbols. This is only meaningful
2371when @code{--export-all-symbols} is used.
2372
2373@item -S @var{path}
2374@itemx --as @var{path}
2375Specifies the path, including the filename, of the assembler to be used
2376to create the exports file.
2377
2378@item -f @var{switches}
2379@itemx --as-flags @var{switches}
2380Specifies any specific command line switches to be passed to the
2381assembler when building the exports file. This option will work even if
2382the @samp{-S} option is not used. This option only takes one argument,
2383and if it occurs more than once on the command line, then later
2384occurrences will override earlier occurrences. So if it is necessary to
2385pass multiple switches to the assembler they should be enclosed in
2386double quotes.
2387
2388@item -D @var{name}
2389@itemx --dll-name @var{name}
2390Specifies the name to be stored in the .def file as the name of the DLL
2391when the @samp{-e} option is used. If this option is not present, then
2392the filename given to the @samp{-e} option will be used as the name of
2393the DLL.
2394
2395@item -m @var{machine}
2396@itemx -machine @var{machine}
2397Specifies the type of machine for which the library file should be
2398built. @code{dlltool} has a built in default type, depending upon how
2399it was created, but this option can be used to override that. This is
2400normally only useful when creating DLLs for an ARM processor, when the
2401contents of the DLL are actually encode using THUMB instructions.
2402
2403@item -a
2404@itemx --add-indirect
2405Specifies that when @code{dlltool} is creating the exports file it
2406should add a section which allows the exported functions to be
2407referenced without using the import library. Whatever the hell that
2408means!
2409
2410@item -U
2411@itemx --add-underscore
2412Specifies that when @code{dlltool} is creating the exports file it
2413should prepend an underscore to the names of the exported functions.
2414
2415@item -k
2416@itemx --kill-at
2417Specifies that when @code{dlltool} is creating the exports file it
2418should not append the string @samp{@@ <number>}. These numbers are
2419called ordinal numbers and they represent another way of accessing the
2420function in a DLL, other than by name.
2421
2422@item -A
2423@itemx --add-stdcall-alias
2424Specifies that when @code{dlltool} is creating the exports file it
2425should add aliases for stdcall symbols without @samp{@@ <number>}
2426in addition to the symbols with @samp{@@ <number>}.
2427
2428@item -x
2429@itemx --no-idata4
2430Specifies that when @code{dlltool} is creating the exports and library
2431files it should omit the .idata4 section. This is for compatibility
2432with certain operating systems.
2433
2434@item -c
2435@itemx --no-idata5
2436Specifies that when @code{dlltool} is creating the exports and library
2437files it should omit the .idata5 section. This is for compatibility
2438with certain operating systems.
2439
2440@item -i
2441@itemx --interwork
2442Specifies that @code{dlltool} should mark the objects in the library
2443file and exports file that it produces as supporting interworking
2444between ARM and THUMB code.
2445
2446@item -n
2447@itemx --nodelete
2448Makes @code{dlltool} preserve the temporary assembler files it used to
2449create the exports file. If this option is repeated then dlltool will
2450also preserve the temporary object files it uses to create the library
2451file.
2452
2453@item -v
2454@itemx --verbose
2455Make dlltool describe what it is doing.
2456
2457@item -h
2458@itemx --help
2459Displays a list of command line options and then exits.
2460
2461@item -V
2462@itemx --version
2463Displays 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
2474readelf [ -a | --all ]
2475 [ -h | --file-header]
2476 [ -l | --program-headers | --segments]
2477 [ -S | --section-headers | --sections]
2478 [ -e | --headers]
2479 [ -s | --syms | --symbols]
779fe533 2480 [ -n | --notes]
252b5132 2481 [ -r | --relocs]
f5e21966 2482 [ -u | --unwind]
252b5132
RH
2483 [ -d | --dynamic]
2484 [ -V | --version-info]
2485 [ -D | --use-dynamic]
2486 [ -x <number> | --hex-dump=<number>]
c47d488e 2487 [ -w[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
252b5132
RH
2488 [ --histogram]
2489 [ -v | --version]
2490 [ -H | --help]
2491 @var{elffile}@dots{}
2492@end smallexample
2493
2494@code{readelf} displays information about one or more ELF format object
2495files. The options control what particular information to display.
2496
2497@var{elffile}@dots{} are the object files to be examined. At the
2498moment, @code{readelf} does not support examining archives, nor does it
2499support examing 64 bit ELF files.
2500
2501The long and short forms of options, shown here as alternatives, are
2502equivalent. At least one option besides @samp{-v} or @samp{-H} must be
2503given.
2504
2505@table @code
2506@item -a
2507@itemx --all
2508Equivalent to specifiying @samp{--file-header},
2509@samp{--program-headers}, @samp{--sections}, @samp{--symbols},
779fe533
NC
2510@samp{--relocs}, @samp{--dynamic}, @samp{--notes} and
2511@samp{--version-info}.
252b5132
RH
2512
2513@item -h
2514@itemx --file-header
2515@cindex ELF file header information
2516Displays the information contained in the ELF header at the start of the
2517file.
2518
2519@item -l
2520@itemx --program-headers
2521@itemx --segments
2522@cindex ELF program header information
2523@cindex ELF segment information
2524Displays the information contained in the file's segment headers, if it
2525has any.
2526
2527@item -S
2528@itemx --sections
2529@itemx --section-headers
2530@cindex ELF section information
2531Displays the information contained in the file's section headers, if it
2532has any.
2533
2534@item -s
2535@itemx --symbols
2536@itemx --syms
2537@cindex ELF symbol table information
2538Displays the entries in symbol table section of the file, if it has one.
2539
2540@item -e
2541@itemx --headers
2542Display all the headers in the file. Equivalent to @samp{-h -l -S}.
2543
779fe533
NC
2544@item -n
2545@itemx --notes
2546@cindex ELF core notes
2547Displays the contents of the NOTE segment, if it exists.
2548
252b5132
RH
2549@item -r
2550@itemx --relocs
2551@cindex ELF reloc information
f5e21966
NC
2552Displays the contents of the file's relocation section, if it has one.
2553
2554@item -u
2555@itemx --unwind
2556@cindex unwind information
2557Displays the contents of the file's unwind section, if it has one. Only
2558the unwind sections for IA64 ELF files are currently supported.
252b5132
RH
2559
2560@item -d
2561@itemx --dynamic
2562@cindex ELF dynamic section information
2563Displays the contents of the file's dynamic section, if it has one.
2564
2565@item -V
2566@itemx --version-info
2567@cindex ELF version sections informations
2568Displays the contents of the version sections in the file, it they
2569exist.
2570
2571@item -D
2572@itemx --use-dynamic
2573When displaying symbols, this option makes @code{readelf} use the
6dbb55b6 2574symbol table in the file's dynamic section, rather than the one in the
252b5132
RH
2575symbols section.
2576
2577@item -x <number>
2578@itemx --hex-dump=<number>
2579Displays the contents of the indicated section as a hexadecimal dump.
2580
c47d488e
DD
2581@item -w[liaprf]
2582@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
252b5132
RH
2583Displays the contents of the debug sections in the file, if any are
2584present. If one of the optional letters or words follows the switch
2585then only data found in those specific sections will be dumped.
2586
2587@item --histogram
2588Display a histogram of bucket list lengths when displaying the contents
2589of the symbol tables.
2590
2591@item -v
2592@itemx --version
2593Display the version number of readelf.
2594
2595@item -H
2596@itemx --help
2597Display the command line options understood by @code{readelf}.
2598
2599@end table
2600
2601
2602@node Selecting The Target System
2603@chapter Selecting the target system
2604
2605You can specify three aspects of the target system to the @sc{gnu}
2606binary file utilities, each in several ways:
2607
2608@itemize @bullet
2609@item
2610the target
2611
2612@item
2613the architecture
2614
2615@item
2616the linker emulation (which applies to the linker only)
2617@end itemize
2618
2619In the following summaries, the lists of ways to specify values are in
2620order of decreasing precedence. The ways listed first override those
2621listed later.
2622
2623The commands to list valid values only list the values for which the
2624programs you are running were configured. If they were configured with
2625@samp{--enable-targets=all}, the commands list most of the available
2626values, but a few are left out; not all targets can be configured in at
2627once because some of them can only be configured @dfn{native} (on hosts
2628with the same type as the target system).
2629
2630@menu
2631* Target Selection::
2632* Architecture Selection::
2633* Linker Emulation Selection::
2634@end menu
2635
2636@node Target Selection
2637@section Target Selection
2638
2639A @dfn{target} is an object file format. A given target may be
2640supported for multiple architectures (@pxref{Architecture Selection}).
2641A target selection may also have variations for different operating
2642systems or architectures.
2643
2644The command to list valid target values is @samp{objdump -i}
2645(the first column of output contains the relevant information).
2646
2647Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
2648@samp{a.out-sunos-big}.
2649
2650You can also specify a target using a configuration triplet. This is
f20a759a
ILT
2651the same sort of name that is passed to @file{configure} to specify a
2652target. When you use a configuration triplet as an argument, it must be
2653fully canonicalized. You can see the canonical version of a triplet by
252b5132
RH
2654running the shell script @file{config.sub} which is included with the
2655sources.
2656
2657Some sample configuration triplets are: @samp{m68k-hp-bsd},
2658@samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
2659
2660@subheading @code{objdump} Target
2661
2662Ways to specify:
2663
2664@enumerate
2665@item
2666command line option: @samp{-b} or @samp{--target}
2667
2668@item
2669environment variable @code{GNUTARGET}
2670
2671@item
2672deduced from the input file
2673@end enumerate
2674
2675@subheading @code{objcopy} and @code{strip} Input Target
2676
2677Ways to specify:
2678
2679@enumerate
2680@item
2681command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
2682
2683@item
2684environment variable @code{GNUTARGET}
2685
2686@item
2687deduced from the input file
2688@end enumerate
2689
2690@subheading @code{objcopy} and @code{strip} Output Target
2691
2692Ways to specify:
2693
2694@enumerate
2695@item
2696command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
2697
2698@item
2699the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
2700
2701@item
2702environment variable @code{GNUTARGET}
2703
2704@item
2705deduced from the input file
2706@end enumerate
2707
2708@subheading @code{nm}, @code{size}, and @code{strings} Target
2709
2710Ways to specify:
2711
2712@enumerate
2713@item
2714command line option: @samp{--target}
2715
2716@item
2717environment variable @code{GNUTARGET}
2718
2719@item
2720deduced from the input file
2721@end enumerate
2722
2723@subheading Linker Input Target
2724
2725Ways to specify:
2726
2727@enumerate
2728@item
2729command line option: @samp{-b} or @samp{--format}
2730(@pxref{Options,,Options,ld.info,Using LD})
2731
2732@item
2733script command @code{TARGET}
2734(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2735
2736@item
2737environment variable @code{GNUTARGET}
2738(@pxref{Environment,,Environment,ld.info,Using LD})
2739
2740@item
2741the default target of the selected linker emulation
2742(@pxref{Linker Emulation Selection})
2743@end enumerate
2744
2745@subheading Linker Output Target
2746
2747Ways to specify:
2748
2749@enumerate
2750@item
2751command line option: @samp{-oformat}
2752(@pxref{Options,,Options,ld.info,Using LD})
2753
2754@item
2755script command @code{OUTPUT_FORMAT}
2756(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2757
2758@item
2759the linker input target (see ``Linker Input Target'' above)
2760@end enumerate
2761
2762@node Architecture Selection
2763@section Architecture selection
2764
2765An @dfn{architecture} is a type of @sc{cpu} on which an object file is
2766to run. Its name may contain a colon, separating the name of the
2767processor family from the name of the particular @sc{cpu}.
2768
2769The command to list valid architecture values is @samp{objdump -i} (the
2770second column contains the relevant information).
2771
2772Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
2773
2774@subheading @code{objdump} Architecture
2775
2776Ways to specify:
2777
2778@enumerate
2779@item
2780command line option: @samp{-m} or @samp{--architecture}
2781
2782@item
2783deduced from the input file
2784@end enumerate
2785
2786@subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
2787
2788Ways to specify:
2789
2790@enumerate
2791@item
2792deduced from the input file
2793@end enumerate
2794
2795@subheading Linker Input Architecture
2796
2797Ways to specify:
2798
2799@enumerate
2800@item
2801deduced from the input file
2802@end enumerate
2803
2804@subheading Linker Output Architecture
2805
2806Ways to specify:
2807
2808@enumerate
2809@item
2810script command @code{OUTPUT_ARCH}
2811(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
2812
2813@item
2814the default architecture from the linker output target
2815(@pxref{Target Selection})
2816@end enumerate
2817
2818@node Linker Emulation Selection
2819@section Linker emulation selection
2820
2821A linker @dfn{emulation} is a ``personality'' of the linker, which gives
2822the linker default values for the other aspects of the target system.
2823In particular, it consists of
2824
2825@itemize @bullet
2826@item
2827the linker script
2828
2829@item
2830the target
2831
2832@item
2833several ``hook'' functions that are run at certain stages of the linking
2834process to do special things that some targets require
2835@end itemize
2836
2837The command to list valid linker emulation values is @samp{ld -V}.
2838
2839Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
2840
2841Ways to specify:
2842
2843@enumerate
2844@item
2845command line option: @samp{-m}
2846(@pxref{Options,,Options,ld.info,Using LD})
2847
2848@item
2849environment variable @code{LDEMULATION}
2850
2851@item
2852compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
2853which comes from @code{EMUL} in @file{config/@var{target}.mt}
2854@end enumerate
2855
2856@node Reporting Bugs
2857@chapter Reporting Bugs
2858@cindex bugs
2859@cindex reporting bugs
2860
2861Your bug reports play an essential role in making the binary utilities
2862reliable.
2863
2864Reporting a bug may help you by bringing a solution to your problem, or
2865it may not. But in any case the principal function of a bug report is
2866to help the entire community by making the next version of the binary
2867utilities work better. Bug reports are your contribution to their
2868maintenance.
2869
2870In order for a bug report to serve its purpose, you must include the
2871information that enables us to fix the bug.
2872
2873@menu
2874* Bug Criteria:: Have you found a bug?
2875* Bug Reporting:: How to report bugs
2876@end menu
2877
2878@node Bug Criteria
2879@section Have you found a bug?
2880@cindex bug criteria
2881
2882If you are not sure whether you have found a bug, here are some guidelines:
2883
2884@itemize @bullet
2885@cindex fatal signal
2886@cindex crash
2887@item
2888If a binary utility gets a fatal signal, for any input whatever, that is
2889a bug. Reliable utilities never crash.
2890
2891@cindex error on valid input
2892@item
2893If a binary utility produces an error message for valid input, that is a
2894bug.
2895
2896@item
2897If you are an experienced user of binary utilities, your suggestions for
2898improvement are welcome in any case.
2899@end itemize
2900
2901@node Bug Reporting
2902@section How to report bugs
2903@cindex bug reports
2904@cindex bugs, reporting
2905
2906A number of companies and individuals offer support for @sc{gnu}
2907products. If you obtained the binary utilities from a support
2908organization, we recommend you contact that organization first.
2909
2910You can find contact information for many support companies and
2911individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
2912distribution.
2913
2914In any event, we also recommend that you send bug reports for the binary
2f952d20 2915utilities to @samp{bug-binutils@@gnu.org}.
252b5132
RH
2916
2917The fundamental principle of reporting bugs usefully is this:
2918@strong{report all the facts}. If you are not sure whether to state a
2919fact or leave it out, state it!
2920
2921Often people omit facts because they think they know what causes the
2922problem and assume that some details do not matter. Thus, you might
2923assume that the name of a file you use in an example does not matter.
2924Well, probably it does not, but one cannot be sure. Perhaps the bug is
2925a stray memory reference which happens to fetch from the location where
2926that pathname is stored in memory; perhaps, if the pathname were
2927different, the contents of that location would fool the utility into
2928doing the right thing despite the bug. Play it safe and give a
2929specific, complete example. That is the easiest thing for you to do,
2930and the most helpful.
2931
2932Keep in mind that the purpose of a bug report is to enable us to fix the bug if
2933it is new to us. Therefore, always write your bug reports on the assumption
2934that the bug has not been reported previously.
2935
2936Sometimes people give a few sketchy facts and ask, ``Does this ring a
2937bell?'' Those bug reports are useless, and we urge everyone to
2938@emph{refuse to respond to them} except to chide the sender to report
2939bugs properly.
2940
2941To enable us to fix the bug, you should include all these things:
2942
2943@itemize @bullet
2944@item
2945The version of the utility. Each utility announces it if you start it
2946with the @samp{--version} argument.
2947
2948Without this, we will not know whether there is any point in looking for
2949the bug in the current version of the binary utilities.
2950
2951@item
2952Any patches you may have applied to the source, including any patches
2953made to the @code{BFD} library.
2954
2955@item
2956The type of machine you are using, and the operating system name and
2957version number.
2958
2959@item
2960What compiler (and its version) was used to compile the utilities---e.g.
2961``@code{gcc-2.7}''.
2962
2963@item
2964The command arguments you gave the utility to observe the bug. To
2965guarantee you will not omit something important, list them all. A copy
2966of the Makefile (or the output from make) is sufficient.
2967
2968If we were to try to guess the arguments, we would probably guess wrong
2969and then we might not encounter the bug.
2970
2971@item
2972A complete input file, or set of input files, that will reproduce the
2973bug. If the utility is reading an object file or files, then it is
2974generally most helpful to send the actual object files, uuencoded if
757acbc5 2975necessary to get them through the mail system. Note that
2f952d20 2976@samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid
757acbc5
ILT
2977sending very large files to it. Making the files available for
2978anonymous FTP is OK.
252b5132
RH
2979
2980If the source files were produced exclusively using @sc{gnu} programs
2981(e.g., @code{gcc}, @code{gas}, and/or the @sc{gnu} @code{ld}), then it
2982may be OK to send the source files rather than the object files. In
2983this case, be sure to say exactly what version of @code{gcc}, or
2984whatever, was used to produce the object files. Also say how
2985@code{gcc}, or whatever, was configured.
2986
2987@item
2988A description of what behavior you observe that you believe is
2989incorrect. For example, ``It gets a fatal signal.''
2990
2991Of course, if the bug is that the utility gets a fatal signal, then we
2992will certainly notice it. But if the bug is incorrect output, we might
2993not notice unless it is glaringly wrong. You might as well not give us
2994a chance to make a mistake.
2995
2996Even if the problem you experience is a fatal signal, you should still
f20a759a 2997say so explicitly. Suppose something strange is going on, such as your
252b5132
RH
2998copy of the utility is out of synch, or you have encountered a bug in
2999the C library on your system. (This has happened!) Your copy might
3000crash and ours would not. If you told us to expect a crash, then when
3001ours fails to crash, we would know that the bug was not happening for
3002us. If you had not told us to expect a crash, then we would not be able
3003to draw any conclusion from our observations.
3004
3005@item
3006If you wish to suggest changes to the source, send us context diffs, as
3007generated by @code{diff} with the @samp{-u}, @samp{-c}, or @samp{-p}
3008option. Always send diffs from the old file to the new file. If you
f20a759a
ILT
3009wish to discuss something in the @code{ld} source, refer to it by
3010context, not by line number.
252b5132
RH
3011
3012The line numbers in our development sources will not match those in your
3013sources. Your line numbers would convey no useful information to us.
3014@end itemize
3015
3016Here are some things that are not necessary:
3017
3018@itemize @bullet
3019@item
3020A description of the envelope of the bug.
3021
3022Often people who encounter a bug spend a lot of time investigating
3023which changes to the input file will make the bug go away and which
3024changes will not affect it.
3025
3026This is often time consuming and not very useful, because the way we
3027will find the bug is by running a single example under the debugger
3028with breakpoints, not by pure deduction from a series of examples.
3029We recommend that you save your time for something else.
3030
3031Of course, if you can find a simpler example to report @emph{instead}
3032of the original one, that is a convenience for us. Errors in the
3033output will be easier to spot, running under the debugger will take
3034less time, and so on.
3035
3036However, simplification is not vital; if you do not want to do this,
3037report the bug anyway and send us the entire test case you used.
3038
3039@item
3040A patch for the bug.
3041
3042A patch for the bug does help us if it is a good one. But do not omit
3043the necessary information, such as the test case, on the assumption that
3044a patch is all we need. We might see problems with your patch and decide
3045to fix the problem another way, or we might not understand it at all.
3046
3047Sometimes with programs as complicated as the binary utilities it is
3048very hard to construct an example that will make the program follow a
3049certain path through the code. If you do not send us the example, we
3050will not be able to construct one, so we will not be able to verify that
3051the bug is fixed.
3052
3053And if we cannot understand what bug you are trying to fix, or why your
3054patch should be an improvement, we will not install it. A test case will
3055help us to understand.
3056
3057@item
3058A guess about what the bug is or what it depends on.
3059
3060Such guesses are usually wrong. Even we cannot guess right about such
3061things without first using the debugger to find the facts.
3062@end itemize
3063
cf055d54
NC
3064@node GNU Free Documentation License
3065@chapter GNU Free Documentation License
3066@cindex GNU Free Documentation License
3067
3068 GNU Free Documentation License
3069
3070 Version 1.1, March 2000
3071
3072 Copyright (C) 2000 Free Software Foundation, Inc.
3073 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3074
3075 Everyone is permitted to copy and distribute verbatim copies
3076 of this license document, but changing it is not allowed.
3077
3078
30790. PREAMBLE
3080
3081The purpose of this License is to make a manual, textbook, or other
3082written document "free" in the sense of freedom: to assure everyone
3083the effective freedom to copy and redistribute it, with or without
3084modifying it, either commercially or noncommercially. Secondarily,
3085this License preserves for the author and publisher a way to get
3086credit for their work, while not being considered responsible for
3087modifications made by others.
3088
3089This License is a kind of "copyleft", which means that derivative
3090works of the document must themselves be free in the same sense. It
3091complements the GNU General Public License, which is a copyleft
3092license designed for free software.
3093
3094We have designed this License in order to use it for manuals for free
3095software, because free software needs free documentation: a free
3096program should come with manuals providing the same freedoms that the
3097software does. But this License is not limited to software manuals;
3098it can be used for any textual work, regardless of subject matter or
3099whether it is published as a printed book. We recommend this License
3100principally for works whose purpose is instruction or reference.
3101
3102
31031. APPLICABILITY AND DEFINITIONS
3104
3105This License applies to any manual or other work that contains a
3106notice placed by the copyright holder saying it can be distributed
3107under the terms of this License. The "Document", below, refers to any
3108such manual or work. Any member of the public is a licensee, and is
3109addressed as "you".
3110
3111A "Modified Version" of the Document means any work containing the
3112Document or a portion of it, either copied verbatim, or with
3113modifications and/or translated into another language.
3114
3115A "Secondary Section" is a named appendix or a front-matter section of
3116the Document that deals exclusively with the relationship of the
3117publishers or authors of the Document to the Document's overall subject
3118(or to related matters) and contains nothing that could fall directly
3119within that overall subject. (For example, if the Document is in part a
3120textbook of mathematics, a Secondary Section may not explain any
3121mathematics.) The relationship could be a matter of historical
3122connection with the subject or with related matters, or of legal,
3123commercial, philosophical, ethical or political position regarding
3124them.
3125
3126The "Invariant Sections" are certain Secondary Sections whose titles
3127are designated, as being those of Invariant Sections, in the notice
3128that says that the Document is released under this License.
3129
3130The "Cover Texts" are certain short passages of text that are listed,
3131as Front-Cover Texts or Back-Cover Texts, in the notice that says that
3132the Document is released under this License.
3133
3134A "Transparent" copy of the Document means a machine-readable copy,
3135represented in a format whose specification is available to the
3136general public, whose contents can be viewed and edited directly and
3137straightforwardly with generic text editors or (for images composed of
3138pixels) generic paint programs or (for drawings) some widely available
3139drawing editor, and that is suitable for input to text formatters or
3140for automatic translation to a variety of formats suitable for input
3141to text formatters. A copy made in an otherwise Transparent file
3142format whose markup has been designed to thwart or discourage
3143subsequent modification by readers is not Transparent. A copy that is
3144not "Transparent" is called "Opaque".
3145
3146Examples of suitable formats for Transparent copies include plain
3147ASCII without markup, Texinfo input format, LaTeX input format, SGML
3148or XML using a publicly available DTD, and standard-conforming simple
3149HTML designed for human modification. Opaque formats include
3150PostScript, PDF, proprietary formats that can be read and edited only
3151by proprietary word processors, SGML or XML for which the DTD and/or
3152processing tools are not generally available, and the
3153machine-generated HTML produced by some word processors for output
3154purposes only.
3155
3156The "Title Page" means, for a printed book, the title page itself,
3157plus such following pages as are needed to hold, legibly, the material
3158this License requires to appear in the title page. For works in
3159formats which do not have any title page as such, "Title Page" means
3160the text near the most prominent appearance of the work's title,
3161preceding the beginning of the body of the text.
3162
3163
31642. VERBATIM COPYING
3165
3166You may copy and distribute the Document in any medium, either
3167commercially or noncommercially, provided that this License, the
3168copyright notices, and the license notice saying this License applies
3169to the Document are reproduced in all copies, and that you add no other
3170conditions whatsoever to those of this License. You may not use
3171technical measures to obstruct or control the reading or further
3172copying of the copies you make or distribute. However, you may accept
3173compensation in exchange for copies. If you distribute a large enough
3174number of copies you must also follow the conditions in section 3.
3175
3176You may also lend copies, under the same conditions stated above, and
3177you may publicly display copies.
3178
3179
31803. COPYING IN QUANTITY
3181
3182If you publish printed copies of the Document numbering more than 100,
3183and the Document's license notice requires Cover Texts, you must enclose
3184the copies in covers that carry, clearly and legibly, all these Cover
3185Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
3186the back cover. Both covers must also clearly and legibly identify
3187you as the publisher of these copies. The front cover must present
3188the full title with all words of the title equally prominent and
3189visible. You may add other material on the covers in addition.
3190Copying with changes limited to the covers, as long as they preserve
3191the title of the Document and satisfy these conditions, can be treated
3192as verbatim copying in other respects.
3193
3194If the required texts for either cover are too voluminous to fit
3195legibly, you should put the first ones listed (as many as fit
3196reasonably) on the actual cover, and continue the rest onto adjacent
3197pages.
3198
3199If you publish or distribute Opaque copies of the Document numbering
3200more than 100, you must either include a machine-readable Transparent
3201copy along with each Opaque copy, or state in or with each Opaque copy
3202a publicly-accessible computer-network location containing a complete
3203Transparent copy of the Document, free of added material, which the
3204general network-using public has access to download anonymously at no
3205charge using public-standard network protocols. If you use the latter
3206option, you must take reasonably prudent steps, when you begin
3207distribution of Opaque copies in quantity, to ensure that this
3208Transparent copy will remain thus accessible at the stated location
3209until at least one year after the last time you distribute an Opaque
3210copy (directly or through your agents or retailers) of that edition to
3211the public.
3212
3213It is requested, but not required, that you contact the authors of the
3214Document well before redistributing any large number of copies, to give
3215them a chance to provide you with an updated version of the Document.
3216
3217
32184. MODIFICATIONS
3219
3220You may copy and distribute a Modified Version of the Document under
3221the conditions of sections 2 and 3 above, provided that you release
3222the Modified Version under precisely this License, with the Modified
3223Version filling the role of the Document, thus licensing distribution
3224and modification of the Modified Version to whoever possesses a copy
3225of it. In addition, you must do these things in the Modified Version:
3226
3227A. Use in the Title Page (and on the covers, if any) a title distinct
3228 from that of the Document, and from those of previous versions
3229 (which should, if there were any, be listed in the History section
3230 of the Document). You may use the same title as a previous version
3231 if the original publisher of that version gives permission.
3232B. List on the Title Page, as authors, one or more persons or entities
3233 responsible for authorship of the modifications in the Modified
3234 Version, together with at least five of the principal authors of the
3235 Document (all of its principal authors, if it has less than five).
3236C. State on the Title page the name of the publisher of the
3237 Modified Version, as the publisher.
3238D. Preserve all the copyright notices of the Document.
3239E. Add an appropriate copyright notice for your modifications
3240 adjacent to the other copyright notices.
3241F. Include, immediately after the copyright notices, a license notice
3242 giving the public permission to use the Modified Version under the
3243 terms of this License, in the form shown in the Addendum below.
3244G. Preserve in that license notice the full lists of Invariant Sections
3245 and required Cover Texts given in the Document's license notice.
3246H. Include an unaltered copy of this License.
3247I. Preserve the section entitled "History", and its title, and add to
3248 it an item stating at least the title, year, new authors, and
3249 publisher of the Modified Version as given on the Title Page. If
3250 there is no section entitled "History" in the Document, create one
3251 stating the title, year, authors, and publisher of the Document as
3252 given on its Title Page, then add an item describing the Modified
3253 Version as stated in the previous sentence.
3254J. Preserve the network location, if any, given in the Document for
3255 public access to a Transparent copy of the Document, and likewise
3256 the network locations given in the Document for previous versions
3257 it was based on. These may be placed in the "History" section.
3258 You may omit a network location for a work that was published at
3259 least four years before the Document itself, or if the original
3260 publisher of the version it refers to gives permission.
3261K. In any section entitled "Acknowledgements" or "Dedications",
3262 preserve the section's title, and preserve in the section all the
3263 substance and tone of each of the contributor acknowledgements
3264 and/or dedications given therein.
3265L. Preserve all the Invariant Sections of the Document,
3266 unaltered in their text and in their titles. Section numbers
3267 or the equivalent are not considered part of the section titles.
3268M. Delete any section entitled "Endorsements". Such a section
3269 may not be included in the Modified Version.
3270N. Do not retitle any existing section as "Endorsements"
3271 or to conflict in title with any Invariant Section.
3272
3273If the Modified Version includes new front-matter sections or
3274appendices that qualify as Secondary Sections and contain no material
3275copied from the Document, you may at your option designate some or all
3276of these sections as invariant. To do this, add their titles to the
3277list of Invariant Sections in the Modified Version's license notice.
3278These titles must be distinct from any other section titles.
3279
3280You may add a section entitled "Endorsements", provided it contains
3281nothing but endorsements of your Modified Version by various
3282parties--for example, statements of peer review or that the text has
3283been approved by an organization as the authoritative definition of a
3284standard.
3285
3286You may add a passage of up to five words as a Front-Cover Text, and a
3287passage of up to 25 words as a Back-Cover Text, to the end of the list
3288of Cover Texts in the Modified Version. Only one passage of
3289Front-Cover Text and one of Back-Cover Text may be added by (or
3290through arrangements made by) any one entity. If the Document already
3291includes a cover text for the same cover, previously added by you or
3292by arrangement made by the same entity you are acting on behalf of,
3293you may not add another; but you may replace the old one, on explicit
3294permission from the previous publisher that added the old one.
3295
3296The author(s) and publisher(s) of the Document do not by this License
3297give permission to use their names for publicity for or to assert or
3298imply endorsement of any Modified Version.
3299
3300
33015. COMBINING DOCUMENTS
3302
3303You may combine the Document with other documents released under this
3304License, under the terms defined in section 4 above for modified
3305versions, provided that you include in the combination all of the
3306Invariant Sections of all of the original documents, unmodified, and
3307list them all as Invariant Sections of your combined work in its
3308license notice.
3309
3310The combined work need only contain one copy of this License, and
3311multiple identical Invariant Sections may be replaced with a single
3312copy. If there are multiple Invariant Sections with the same name but
3313different contents, make the title of each such section unique by
3314adding at the end of it, in parentheses, the name of the original
3315author or publisher of that section if known, or else a unique number.
3316Make the same adjustment to the section titles in the list of
3317Invariant Sections in the license notice of the combined work.
3318
3319In the combination, you must combine any sections entitled "History"
3320in the various original documents, forming one section entitled
3321"History"; likewise combine any sections entitled "Acknowledgements",
3322and any sections entitled "Dedications". You must delete all sections
3323entitled "Endorsements."
3324
3325
33266. COLLECTIONS OF DOCUMENTS
3327
3328You may make a collection consisting of the Document and other documents
3329released under this License, and replace the individual copies of this
3330License in the various documents with a single copy that is included in
3331the collection, provided that you follow the rules of this License for
3332verbatim copying of each of the documents in all other respects.
3333
3334You may extract a single document from such a collection, and distribute
3335it individually under this License, provided you insert a copy of this
3336License into the extracted document, and follow this License in all
3337other respects regarding verbatim copying of that document.
3338
3339
33407. AGGREGATION WITH INDEPENDENT WORKS
3341
3342A compilation of the Document or its derivatives with other separate
3343and independent documents or works, in or on a volume of a storage or
3344distribution medium, does not as a whole count as a Modified Version
3345of the Document, provided no compilation copyright is claimed for the
3346compilation. Such a compilation is called an "aggregate", and this
3347License does not apply to the other self-contained works thus compiled
3348with the Document, on account of their being thus compiled, if they
3349are not themselves derivative works of the Document.
3350
3351If the Cover Text requirement of section 3 is applicable to these
3352copies of the Document, then if the Document is less than one quarter
3353of the entire aggregate, the Document's Cover Texts may be placed on
3354covers that surround only the Document within the aggregate.
3355Otherwise they must appear on covers around the whole aggregate.
3356
3357
33588. TRANSLATION
3359
3360Translation is considered a kind of modification, so you may
3361distribute translations of the Document under the terms of section 4.
3362Replacing Invariant Sections with translations requires special
3363permission from their copyright holders, but you may include
3364translations of some or all Invariant Sections in addition to the
3365original versions of these Invariant Sections. You may include a
3366translation of this License provided that you also include the
3367original English version of this License. In case of a disagreement
3368between the translation and the original English version of this
3369License, the original English version will prevail.
3370
3371
33729. TERMINATION
3373
3374You may not copy, modify, sublicense, or distribute the Document except
3375as expressly provided for under this License. Any other attempt to
3376copy, modify, sublicense or distribute the Document is void, and will
3377automatically terminate your rights under this License. However,
3378parties who have received copies, or rights, from you under this
3379License will not have their licenses terminated so long as such
3380parties remain in full compliance.
3381
3382
338310. FUTURE REVISIONS OF THIS LICENSE
3384
3385The Free Software Foundation may publish new, revised versions
3386of the GNU Free Documentation License from time to time. Such new
3387versions will be similar in spirit to the present version, but may
3388differ in detail to address new problems or concerns. See
3389http://www.gnu.org/copyleft/.
3390
3391Each version of the License is given a distinguishing version number.
3392If the Document specifies that a particular numbered version of this
3393License "or any later version" applies to it, you have the option of
3394following the terms and conditions either of that specified version or
3395of any later version that has been published (not as a draft) by the
3396Free Software Foundation. If the Document does not specify a version
3397number of this License, you may choose any version ever published (not
3398as a draft) by the Free Software Foundation.
3399
3400
3401ADDENDUM: How to use this License for your documents
3402
3403To use this License in a document you have written, include a copy of
3404the License in the document and put the following copyright and
3405license notices just after the title page:
3406
3407@smallexample
3408 Copyright (c) YEAR YOUR NAME.
3409 Permission is granted to copy, distribute and/or modify this document
3410 under the terms of the GNU Free Documentation License, Version 1.1
3411 or any later version published by the Free Software Foundation;
3412 with the Invariant Sections being LIST THEIR TITLES, with the
3413 Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
3414 A copy of the license is included in the section entitled "GNU
3415 Free Documentation License".
3416@end smallexample
3417
3418If you have no Invariant Sections, write "with no Invariant Sections"
3419instead of saying which ones are invariant. If you have no
3420Front-Cover Texts, write "no Front-Cover Texts" instead of
3421"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
3422
3423If your document contains nontrivial examples of program code, we
3424recommend releasing these examples in parallel under your choice of
3425free software license, such as the GNU General Public License,
3426to permit their use in free software.
3427
252b5132
RH
3428@node Index
3429@unnumbered Index
3430
3431@printindex cp
3432
3433@contents
3434@bye
This page took 0.215977 seconds and 4 git commands to generate.