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