arc/nps400: Add cp16/cp32 instructions to opcodes library
[deliverable/binutils-gdb.git] / binutils / doc / binutils.texi
CommitLineData
252b5132
RH
1\input texinfo @c -*- Texinfo -*-
2@setfilename binutils.info
e016ec1f
NC
3@settitle @sc{gnu} Binary Utilities
4@finalout
5@synindex ky cp
8c2bc687 6
dff70155 7@c man begin INCLUDE
c428fa83 8@include bfdver.texi
dff70155 9@c man end
252b5132 10
0e9517a9 11@copying
0285c67d 12@c man begin COPYRIGHT
2571583a 13Copyright @copyright{} 1991-2017 Free Software Foundation, Inc.
252b5132 14
0285c67d 15Permission is granted to copy, distribute and/or modify this document
793c5807 16under the terms of the GNU Free Documentation License, Version 1.3
0285c67d
NC
17or any later version published by the Free Software Foundation;
18with no Invariant Sections, with no Front-Cover Texts, and with no
19Back-Cover Texts. A copy of the license is included in the
947ed062 20section entitled ``GNU Free Documentation License''.
252b5132 21
0285c67d 22@c man end
0e9517a9 23@end copying
252b5132 24
e016ec1f
NC
25@dircategory Software development
26@direntry
27* Binutils: (binutils). The GNU binary utilities.
28@end direntry
29
30@dircategory Individual utilities
31@direntry
32* addr2line: (binutils)addr2line. Convert addresses to file and line.
33* ar: (binutils)ar. Create, modify, and extract from archives.
34* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols.
35* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt.
36* dlltool: (binutils)dlltool. Create files needed to build and use DLLs.
37* nlmconv: (binutils)nlmconv. Converts object code into an NLM.
38* nm: (binutils)nm. List symbols from object files.
39* objcopy: (binutils)objcopy. Copy and translate object files.
40* objdump: (binutils)objdump. Display information from object files.
41* ranlib: (binutils)ranlib. Generate index to archive contents.
42* readelf: (binutils)readelf. Display the contents of ELF format files.
43* size: (binutils)size. List section sizes and total size.
44* strings: (binutils)strings. List printable strings from files.
45* strip: (binutils)strip. Discard symbols.
30fd33bb 46* elfedit: (binutils)elfedit. Update the ELF header of ELF files.
e016ec1f
NC
47* windmc: (binutils)windmc. Generator for Windows message resources.
48* windres: (binutils)windres. Manipulate Windows resources.
49@end direntry
50
252b5132 51@titlepage
252b5132 52@title The @sc{gnu} Binary Utilities
e49e529d
JM
53@ifset VERSION_PACKAGE
54@subtitle @value{VERSION_PACKAGE}
55@end ifset
252b5132
RH
56@subtitle Version @value{VERSION}
57@sp 1
36607f99 58@subtitle @value{UPDATED}
252b5132
RH
59@author Roland H. Pesch
60@author Jeffrey M. Osier
61@author Cygnus Support
62@page
63
64@tex
65{\parskip=0pt \hfill Cygnus Support\par \hfill
e016ec1f 66Texinfo \texinfoversion\par }
252b5132
RH
67@end tex
68
69@vskip 0pt plus 1filll
e016ec1f 70@insertcopying
252b5132 71@end titlepage
4ecceb71 72@contents
252b5132
RH
73
74@node Top
75@top Introduction
76
77@cindex version
947ed062 78This brief manual contains documentation for the @sc{gnu} binary
e49e529d
JM
79utilities
80@ifset VERSION_PACKAGE
81@value{VERSION_PACKAGE}
82@end ifset
83version @value{VERSION}:
252b5132
RH
84
85@iftex
86@table @code
87@item ar
88Create, modify, and extract from archives
89
90@item nm
91List symbols from object files
92
93@item objcopy
94Copy and translate object files
95
96@item objdump
97Display information from object files
98
99@item ranlib
100Generate index to archive contents
101
102@item readelf
103Display the contents of ELF format files.
104
105@item size
106List file section sizes and total size
107
108@item strings
109List printable strings from files
110
111@item strip
112Discard symbols
113
30fd33bb
L
114@item elfedit
115Update the ELF header of ELF files.
116
252b5132 117@item c++filt
9d51cc66
ILT
118Demangle encoded C++ symbols (on MS-DOS, this program is named
119@code{cxxfilt})
252b5132
RH
120
121@item addr2line
122Convert addresses into file names and line numbers
123
124@item nlmconv
125Convert object code into a Netware Loadable Module
126
127@item windres
128Manipulate Windows resources
129
692ed3e7 130@item windmc
a8685210 131Generator for Windows message resources
692ed3e7 132
252b5132
RH
133@item dlltool
134Create the files needed to build and use Dynamic Link Libraries
135@end table
136@end iftex
137
cf055d54 138This document is distributed under the terms of the GNU Free
793c5807
NC
139Documentation License version 1.3. A copy of the license is included
140in the section entitled ``GNU Free Documentation License''.
cf055d54 141
252b5132
RH
142@menu
143* ar:: Create, modify, and extract from archives
144* nm:: List symbols from object files
145* objcopy:: Copy and translate object files
146* objdump:: Display information from object files
147* ranlib:: Generate index to archive contents
252b5132
RH
148* size:: List section sizes and total size
149* strings:: List printable strings from files
150* strip:: Discard symbols
151* c++filt:: Filter to demangle encoded C++ symbols
9d51cc66 152* cxxfilt: c++filt. MS-DOS name for c++filt
252b5132
RH
153* addr2line:: Convert addresses to file and line
154* nlmconv:: Converts object code into an NLM
692ed3e7 155* windmc:: Generator for Windows message resources
7ca01ed9 156* windres:: Manipulate Windows resources
252b5132 157* dlltool:: Create files needed to build and use DLLs
7ca01ed9
NC
158* readelf:: Display the contents of ELF format files
159* elfedit:: Update the ELF header of ELF files
07012eee 160* Common Options:: Command-line options for all utilities
fff279a7 161* Selecting the Target System:: How these utilities determine the target
252b5132 162* Reporting Bugs:: Reporting Bugs
cf055d54 163* GNU Free Documentation License:: GNU Free Documentation License
fa0d8a3e 164* Binutils Index:: Binutils Index
252b5132
RH
165@end menu
166
167@node ar
168@chapter ar
169
170@kindex ar
171@cindex archives
172@cindex collections of files
0285c67d
NC
173
174@c man title ar create, modify, and extract from archives
175
252b5132 176@smallexample
8a1373cc 177ar [-]@var{p}[@var{mod}] [@option{--plugin} @var{name}] [@option{--target} @var{bfdname}] [@var{relpos}] [@var{count}] @var{archive} [@var{member}@dots{}]
252b5132
RH
178ar -M [ <mri-script ]
179@end smallexample
180
0285c67d
NC
181@c man begin DESCRIPTION ar
182
c7c55b78 183The @sc{gnu} @command{ar} program creates, modifies, and extracts from
252b5132
RH
184archives. An @dfn{archive} is a single file holding a collection of
185other files in a structure that makes it possible to retrieve
186the original individual files (called @dfn{members} of the archive).
187
188The original files' contents, mode (permissions), timestamp, owner, and
189group are preserved in the archive, and can be restored on
c1c0eb9e 190extraction.
252b5132
RH
191
192@cindex name length
c7c55b78
NC
193@sc{gnu} @command{ar} can maintain archives whose members have names of any
194length; however, depending on how @command{ar} is configured on your
252b5132
RH
195system, a limit on member-name length may be imposed for compatibility
196with archive formats maintained with other tools. If it exists, the
197limit is often 15 characters (typical of formats related to a.out) or 16
198characters (typical of formats related to coff).
199
200@cindex libraries
c7c55b78 201@command{ar} is considered a binary utility because archives of this sort
252b5132
RH
202are most often used as @dfn{libraries} holding commonly needed
203subroutines.
204
205@cindex symbol index
c7c55b78 206@command{ar} creates an index to the symbols defined in relocatable
252b5132 207object modules in the archive when you specify the modifier @samp{s}.
c7c55b78 208Once created, this index is updated in the archive whenever @command{ar}
252b5132
RH
209makes a change to its contents (save for the @samp{q} update operation).
210An archive with such an index speeds up linking to the library, and
211allows routines in the library to call each other without regard to
212their placement in the archive.
213
214You may use @samp{nm -s} or @samp{nm --print-armap} to list this index
c7c55b78
NC
215table. If an archive lacks the table, another form of @command{ar} called
216@command{ranlib} can be used to add just the table.
252b5132 217
a8da6403
NC
218@cindex thin archives
219@sc{gnu} @command{ar} can optionally create a @emph{thin} archive,
220which contains a symbol index and references to the original copies
a043396b
NC
221of the member files of the archive. This is useful for building
222libraries for use within a local build tree, where the relocatable
223objects are expected to remain available, and copying the contents of
224each object would only waste time and space.
225
226An archive can either be @emph{thin} or it can be normal. It cannot
227be both at the same time. Once an archive is created its format
228cannot be changed without first deleting it and then creating a new
229archive in its place.
230
231Thin archives are also @emph{flattened}, so that adding one thin
232archive to another thin archive does not nest it, as would happen with
233a normal archive. Instead the elements of the first archive are added
234individually to the second archive.
235
a8da6403 236The paths to the elements of the archive are stored relative to the
d8f187c1 237archive itself.
a8da6403 238
c7c55b78
NC
239@cindex compatibility, @command{ar}
240@cindex @command{ar} compatibility
241@sc{gnu} @command{ar} is designed to be compatible with two different
252b5132 242facilities. You can control its activity using command-line options,
c7c55b78
NC
243like the different varieties of @command{ar} on Unix systems; or, if you
244specify the single command-line option @option{-M}, you can control it
252b5132
RH
245with a script supplied via standard input, like the MRI ``librarian''
246program.
247
0285c67d
NC
248@c man end
249
252b5132 250@menu
c7c55b78
NC
251* ar cmdline:: Controlling @command{ar} on the command line
252* ar scripts:: Controlling @command{ar} with a script
252b5132
RH
253@end menu
254
255@page
256@node ar cmdline
947ed062 257@section Controlling @command{ar} on the Command Line
252b5132
RH
258
259@smallexample
0285c67d 260@c man begin SYNOPSIS ar
8a1373cc 261ar [@option{-X32_64}] [@option{-}]@var{p}[@var{mod}] [@option{--plugin} @var{name}] [@option{--target} @var{bfdname}] [@var{relpos}] [@var{count}] @var{archive} [@var{member}@dots{}]
0285c67d 262@c man end
252b5132
RH
263@end smallexample
264
c7c55b78
NC
265@cindex Unix compatibility, @command{ar}
266When you use @command{ar} in the Unix style, @command{ar} insists on at least two
252b5132
RH
267arguments to execute: one keyletter specifying the @emph{operation}
268(optionally accompanied by other keyletters specifying
269@emph{modifiers}), and the archive name to act on.
270
271Most operations can also accept further @var{member} arguments,
272specifying particular files to operate on.
273
0285c67d
NC
274@c man begin OPTIONS ar
275
c7c55b78 276@sc{gnu} @command{ar} allows you to mix the operation code @var{p} and modifier
252b5132
RH
277flags @var{mod} in any order, within the first command-line argument.
278
279If you wish, you may begin the first command-line argument with a
280dash.
281
282@cindex operations on archive
283The @var{p} keyletter specifies what operation to execute; it may be
284any of the following, but you must specify only one of them:
285
c7c55b78 286@table @samp
252b5132
RH
287@item d
288@cindex deleting from archive
289@emph{Delete} modules from the archive. Specify the names of modules to
290be deleted as @var{member}@dots{}; the archive is untouched if you
291specify no files to delete.
292
c7c55b78 293If you specify the @samp{v} modifier, @command{ar} lists each module
252b5132
RH
294as it is deleted.
295
296@item m
297@cindex moving in archive
298Use this operation to @emph{move} members in an archive.
299
300The ordering of members in an archive can make a difference in how
301programs are linked using the library, if a symbol is defined in more
c1c0eb9e 302than one member.
252b5132
RH
303
304If no modifiers are used with @code{m}, any members you name in the
305@var{member} arguments are moved to the @emph{end} of the archive;
306you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
307specified place instead.
308
309@item p
310@cindex printing from archive
311@emph{Print} the specified members of the archive, to the standard
312output file. If the @samp{v} modifier is specified, show the member
313name before copying its contents to standard output.
314
315If you specify no @var{member} arguments, all the files in the archive are
316printed.
317
318@item q
319@cindex quick append to archive
320@emph{Quick append}; Historically, add the files @var{member}@dots{} to the end of
321@var{archive}, without checking for replacement.
322
323The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
324operation; new members are always placed at the end of the archive.
325
c7c55b78 326The modifier @samp{v} makes @command{ar} list each file as it is appended.
252b5132 327
ce0570c7
NC
328Since the point of this operation is speed, implementations of
329@command{ar} have the option of not updating the archive's symbol
330table if one exists. Too many different systems however assume that
331symbol tables are always up-to-date, so @sc{gnu} @command{ar} will
332rebuild the table even with a quick append.
333
5e080929 334Note - @sc{gnu} @command{ar} treats the command @samp{qs} as a
ce0570c7
NC
335synonym for @samp{r} - replacing already existing files in the
336archive and appending new ones at the end.
252b5132
RH
337
338@item r
339@cindex replacement in archive
340Insert the files @var{member}@dots{} into @var{archive} (with
341@emph{replacement}). This operation differs from @samp{q} in that any
342previously existing members are deleted if their names match those being
343added.
344
c7c55b78 345If one of the files named in @var{member}@dots{} does not exist, @command{ar}
252b5132
RH
346displays an error message, and leaves undisturbed any existing members
347of the archive matching that name.
348
349By default, new members are added at the end of the file; but you may
350use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request
351placement relative to some existing member.
352
353The modifier @samp{v} used with this operation elicits a line of
354output for each file inserted, along with one of the letters @samp{a} or
355@samp{r} to indicate whether the file was appended (no old member
356deleted) or replaced.
357
e58bcb8f
NC
358@item s
359@cindex ranlib
360Add an index to the archive, or update it if it already exists. Note
361this command is an exception to the rule that there can only be one
362command letter, as it is possible to use it as either a command or a
363modifier. In either case it does the same thing.
364
252b5132
RH
365@item t
366@cindex contents of archive
367Display a @emph{table} listing the contents of @var{archive}, or those
368of the files listed in @var{member}@dots{} that are present in the
369archive. Normally only the member name is shown; if you also want to
370see the modes (permissions), timestamp, owner, group, and size, you can
371request that by also specifying the @samp{v} modifier.
372
373If you do not specify a @var{member}, all files in the archive
374are listed.
375
376@cindex repeated names in archive
377@cindex name duplication in archive
378If there is more than one file with the same name (say, @samp{fie}) in
379an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the
380first instance; to see them all, you must ask for a complete
381listing---in our example, @samp{ar t b.a}.
382@c WRS only; per Gumby, this is implementation-dependent, and in a more
383@c recent case in fact works the other way.
384
385@item x
386@cindex extract from archive
387@emph{Extract} members (named @var{member}) from the archive. You can
388use the @samp{v} modifier with this operation, to request that
c7c55b78 389@command{ar} list each name as it extracts it.
252b5132
RH
390
391If you do not specify a @var{member}, all files in the archive
392are extracted.
393
a8da6403 394Files cannot be extracted from a thin archive.
252b5132
RH
395@end table
396
397A number of modifiers (@var{mod}) may immediately follow the @var{p}
398keyletter, to specify variations on an operation's behavior:
399
c7c55b78 400@table @samp
252b5132
RH
401@item a
402@cindex relative placement in archive
403Add new files @emph{after} an existing member of the
404archive. If you use the modifier @samp{a}, the name of an existing archive
405member must be present as the @var{relpos} argument, before the
406@var{archive} specification.
407
408@item b
409Add new files @emph{before} an existing member of the
410archive. If you use the modifier @samp{b}, the name of an existing archive
411member must be present as the @var{relpos} argument, before the
412@var{archive} specification. (same as @samp{i}).
413
414@item c
415@cindex creating archives
416@emph{Create} the archive. The specified @var{archive} is always
417created if it did not exist, when you request an update. But a warning is
418issued unless you specify in advance that you expect to create it, by
419using this modifier.
420
36e4dce6
CD
421@item D
422@cindex deterministic archives
9cb80f72 423@kindex --enable-deterministic-archives
36e4dce6
CD
424Operate in @emph{deterministic} mode. When adding files and the archive
425index use zero for UIDs, GIDs, timestamps, and use consistent file modes
426for all files. When this option is used, if @command{ar} is used with
427identical options and identical input files, multiple runs will create
428identical output files regardless of the input files' owners, groups,
429file modes, or modification times.
430
9cb80f72
RM
431If @file{binutils} was configured with
432@option{--enable-deterministic-archives}, then this mode is on by default.
433It can be disabled with the @samp{U} modifier, below.
434
252b5132 435@item f
c7c55b78 436Truncate names in the archive. @sc{gnu} @command{ar} will normally permit file
252b5132 437names of any length. This will cause it to create archives which are
c7c55b78 438not compatible with the native @command{ar} program on some systems. If
252b5132
RH
439this is a concern, the @samp{f} modifier may be used to truncate file
440names when putting them in the archive.
441
442@item i
443Insert new files @emph{before} an existing member of the
444archive. If you use the modifier @samp{i}, the name of an existing archive
445member must be present as the @var{relpos} argument, before the
446@var{archive} specification. (same as @samp{b}).
447
448@item l
449This modifier is accepted but not used.
450@c whaffor ar l modifier??? presumably compat; with
c1c0eb9e 451@c what???---doc@@cygnus.com, 25jan91
252b5132 452
3de39064
ILT
453@item N
454Uses the @var{count} parameter. This is used if there are multiple
455entries in the archive with the same name. Extract or delete instance
456@var{count} of the given name from the archive.
457
252b5132
RH
458@item o
459@cindex dates in archive
460Preserve the @emph{original} dates of members when extracting them. If
461you do not specify this modifier, files extracted from the archive
462are stamped with the time of extraction.
463
3de39064
ILT
464@item P
465Use the full path name when matching names in the archive. @sc{gnu}
c7c55b78 466@command{ar} can not create an archive with a full path name (such archives
3de39064 467are not POSIX complaint), but other archive creators can. This option
c7c55b78 468will cause @sc{gnu} @command{ar} to match file names using a complete path
3de39064
ILT
469name, which can be convenient when extracting a single file from an
470archive created by another tool.
471
252b5132
RH
472@item s
473@cindex writing archive index
474Write an object-file index into the archive, or update an existing one,
475even if no other change is made to the archive. You may use this modifier
476flag either with any operation, or alone. Running @samp{ar s} on an
477archive is equivalent to running @samp{ranlib} on it.
478
479@item S
480@cindex not writing archive index
481Do not generate an archive symbol table. This can speed up building a
482large library in several steps. The resulting archive can not be used
483with the linker. In order to build a symbol table, you must omit the
484@samp{S} modifier on the last execution of @samp{ar}, or you must run
485@samp{ranlib} on the archive.
486
a8da6403
NC
487@item T
488@cindex creating thin archive
489Make the specified @var{archive} a @emph{thin} archive. If it already
490exists and is a regular archive, the existing members must be present
491in the same directory as @var{archive}.
492
252b5132
RH
493@item u
494@cindex updating an archive
495Normally, @samp{ar r}@dots{} inserts all files
496listed into the archive. If you would like to insert @emph{only} those
497of the files you list that are newer than existing members of the same
498names, use this modifier. The @samp{u} modifier is allowed only for the
499operation @samp{r} (replace). In particular, the combination @samp{qu} is
500not allowed, since checking the timestamps would lose any speed
501advantage from the operation @samp{q}.
502
9cb80f72
RM
503@item U
504@cindex deterministic archives
505@kindex --enable-deterministic-archives
506Do @emph{not} operate in @emph{deterministic} mode. This is the inverse
507of the @samp{D} modifier, above: added files and the archive index will
508get their actual UID, GID, timestamp, and file mode values.
509
510This is the default unless @file{binutils} was configured with
511@option{--enable-deterministic-archives}.
512
252b5132
RH
513@item v
514This modifier requests the @emph{verbose} version of an operation. Many
515operations display additional information, such as filenames processed,
516when the modifier @samp{v} is appended.
517
518@item V
c7c55b78 519This modifier shows the version number of @command{ar}.
252b5132
RH
520@end table
521
387dd777
DP
522The @command{ar} program also supports some command line options which
523are neither modifiers nor actions, but which do change its behaviour
524in specific ways:
525
526@table @samp
527@item --help
528Displays the list of command line options supported by @command{ar}
529and then exits.
530
531@item --version
532Displays the version information of @command{ar} and then exits.
533
534@item -X32_64
c7c55b78 535@command{ar} ignores an initial option spelt @samp{-X32_64}, for
6e800839 536compatibility with AIX. The behaviour produced by this option is the
387dd777
DP
537default for @sc{gnu} @command{ar}. @command{ar} does not support any
538of the other @samp{-X} options; in particular, it does not support
539@option{-X32} which is the default for AIX @command{ar}.
6e800839 540
387dd777
DP
541@item --plugin @var{name}
542@cindex plugins
543The optional command line switch @option{--plugin @var{name}} causes
ce3c775b 544@command{ar} to load the plugin called @var{name} which adds support
387dd777
DP
545for more file formats, including object files with link-time
546optimization information.
547
548This option is only available if the toolchain has been built with
549plugin support enabled.
550
551If @option{--plugin} is not provided, but plugin support has been
552enabled then @command{ar} iterates over the files in
553@file{$@{libdir@}/bfd-plugins} in alphabetic order and the first
554plugin that claims the object in question is used.
555
556Please note that this plugin search directory is @emph{not} the one
557used by @command{ld}'s @option{-plugin} option. In order to make
558@command{ar} use the linker plugin it must be copied into the
559@file{$@{libdir@}/bfd-plugins} directory. For GCC based compilations
560the linker plugin is called @file{liblto_plugin.so.0.0.0}. For Clang
561based compilations it is called @file{LLVMgold.so}. The GCC plugin
562is always backwards compatible with earlier versions, so it is
563sufficient to just copy the newest one.
564
565@item --target @var{target}
566The optional command line switch @option{--target @var{bfdname}}
8adf5d70
NC
567specifies that the archive members are in an object code format
568different from your system's default format. See
569@xref{Target Selection}, for more information.
387dd777 570@end table
0285c67d
NC
571@c man end
572
573@ignore
574@c man begin SEEALSO ar
575nm(1), ranlib(1), and the Info entries for @file{binutils}.
576@c man end
577@end ignore
578
252b5132 579@node ar scripts
947ed062 580@section Controlling @command{ar} with a Script
252b5132
RH
581
582@smallexample
583ar -M [ <@var{script} ]
584@end smallexample
585
c7c55b78
NC
586@cindex MRI compatibility, @command{ar}
587@cindex scripts, @command{ar}
588If you use the single command-line option @samp{-M} with @command{ar}, you
252b5132 589can control its operation with a rudimentary command language. This
c7c55b78
NC
590form of @command{ar} operates interactively if standard input is coming
591directly from a terminal. During interactive use, @command{ar} prompts for
252b5132
RH
592input (the prompt is @samp{AR >}), and continues executing even after
593errors. If you redirect standard input to a script file, no prompts are
c7c55b78 594issued, and @command{ar} abandons execution (with a nonzero exit code)
252b5132
RH
595on any error.
596
c7c55b78 597The @command{ar} command language is @emph{not} designed to be equivalent
252b5132
RH
598to the command-line options; in fact, it provides somewhat less control
599over archives. The only purpose of the command language is to ease the
c7c55b78 600transition to @sc{gnu} @command{ar} for developers who already have scripts
252b5132
RH
601written for the MRI ``librarian'' program.
602
c7c55b78 603The syntax for the @command{ar} command language is straightforward:
252b5132
RH
604@itemize @bullet
605@item
606commands are recognized in upper or lower case; for example, @code{LIST}
607is the same as @code{list}. In the following descriptions, commands are
608shown in upper case for clarity.
609
610@item
611a single command may appear on each line; it is the first word on the
612line.
613
614@item
615empty lines are allowed, and have no effect.
616
617@item
618comments are allowed; text after either of the characters @samp{*}
619or @samp{;} is ignored.
620
621@item
c7c55b78 622Whenever you use a list of names as part of the argument to an @command{ar}
252b5132
RH
623command, you can separate the individual names with either commas or
624blanks. Commas are shown in the explanations below, for clarity.
625
626@item
627@samp{+} is used as a line continuation character; if @samp{+} appears
628at the end of a line, the text on the following line is considered part
629of the current command.
630@end itemize
631
c7c55b78
NC
632Here are the commands you can use in @command{ar} scripts, or when using
633@command{ar} interactively. Three of them have special significance:
252b5132
RH
634
635@code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is
636a temporary file required for most of the other commands.
637
638@code{SAVE} commits the changes so far specified by the script. Prior
639to @code{SAVE}, commands affect only the temporary copy of the current
640archive.
641
642@table @code
c1c0eb9e 643@item ADDLIB @var{archive}
252b5132
RH
644@itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
645Add all the contents of @var{archive} (or, if specified, each named
646@var{module} from @var{archive}) to the current archive.
647
648Requires prior use of @code{OPEN} or @code{CREATE}.
649
650@item ADDMOD @var{member}, @var{member}, @dots{} @var{member}
651@c FIXME! w/Replacement?? If so, like "ar r @var{archive} @var{names}"
652@c else like "ar q..."
653Add each named @var{member} as a module in the current archive.
654
655Requires prior use of @code{OPEN} or @code{CREATE}.
656
657@item CLEAR
658Discard the contents of the current archive, canceling the effect of
659any operations since the last @code{SAVE}. May be executed (with no
660effect) even if no current archive is specified.
661
662@item CREATE @var{archive}
663Creates an archive, and makes it the current archive (required for many
664other commands). The new archive is created with a temporary name; it
665is not actually saved as @var{archive} until you use @code{SAVE}.
666You can overwrite existing archives; similarly, the contents of any
667existing file named @var{archive} will not be destroyed until @code{SAVE}.
668
669@item DELETE @var{module}, @var{module}, @dots{} @var{module}
670Delete each listed @var{module} from the current archive; equivalent to
671@samp{ar -d @var{archive} @var{module} @dots{} @var{module}}.
672
673Requires prior use of @code{OPEN} or @code{CREATE}.
674
675@item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module})
676@itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile}
677List each named @var{module} present in @var{archive}. The separate
678command @code{VERBOSE} specifies the form of the output: when verbose
679output is off, output is like that of @samp{ar -t @var{archive}
680@var{module}@dots{}}. When verbose output is on, the listing is like
681@samp{ar -tv @var{archive} @var{module}@dots{}}.
682
683Output normally goes to the standard output stream; however, if you
c7c55b78 684specify @var{outputfile} as a final argument, @command{ar} directs the
252b5132
RH
685output to that file.
686
687@item END
c7c55b78 688Exit from @command{ar}, with a @code{0} exit code to indicate successful
252b5132
RH
689completion. This command does not save the output file; if you have
690changed the current archive since the last @code{SAVE} command, those
691changes are lost.
692
693@item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
694Extract each named @var{module} from the current archive, writing them
695into the current directory as separate files. Equivalent to @samp{ar -x
696@var{archive} @var{module}@dots{}}.
697
698Requires prior use of @code{OPEN} or @code{CREATE}.
699
700@ignore
701@c FIXME Tokens but no commands???
702@item FULLDIR
703
704@item HELP
705@end ignore
706
707@item LIST
708Display full contents of the current archive, in ``verbose'' style
709regardless of the state of @code{VERBOSE}. The effect is like @samp{ar
c7c55b78 710tv @var{archive}}. (This single command is a @sc{gnu} @command{ar}
252b5132
RH
711enhancement, rather than present for MRI compatibility.)
712
713Requires prior use of @code{OPEN} or @code{CREATE}.
714
715@item OPEN @var{archive}
716Opens an existing archive for use as the current archive (required for
717many other commands). Any changes as the result of subsequent commands
718will not actually affect @var{archive} until you next use @code{SAVE}.
719
720@item REPLACE @var{module}, @var{module}, @dots{} @var{module}
721In the current archive, replace each existing @var{module} (named in
722the @code{REPLACE} arguments) from files in the current working directory.
723To execute this command without errors, both the file, and the module in
c1c0eb9e 724the current archive, must exist.
252b5132
RH
725
726Requires prior use of @code{OPEN} or @code{CREATE}.
727
728@item VERBOSE
729Toggle an internal flag governing the output from @code{DIRECTORY}.
730When the flag is on, @code{DIRECTORY} output matches output from
731@samp{ar -tv }@dots{}.
732
733@item SAVE
734Commit your changes to the current archive, and actually save it as a
735file with the name specified in the last @code{CREATE} or @code{OPEN}
c1c0eb9e 736command.
252b5132
RH
737
738Requires prior use of @code{OPEN} or @code{CREATE}.
739
740@end table
741
742@iftex
743@node ld
744@chapter ld
745@cindex linker
746@kindex ld
c7c55b78 747The @sc{gnu} linker @command{ld} is now described in a separate manual.
252b5132
RH
748@xref{Top,, Overview,, Using LD: the @sc{gnu} linker}.
749@end iftex
750
751@node nm
752@chapter nm
753@cindex symbols
754@kindex nm
755
0285c67d
NC
756@c man title nm list symbols from object files
757
252b5132 758@smallexample
0285c67d 759@c man begin SYNOPSIS nm
fa8f3997
NC
760nm [@option{-A}|@option{-o}|@option{--print-file-name}] [@option{-a}|@option{--debug-syms}]
761 [@option{-B}|@option{--format=bsd}] [@option{-C}|@option{--demangle}[=@var{style}]]
762 [@option{-D}|@option{--dynamic}] [@option{-f}@var{format}|@option{--format=}@var{format}]
763 [@option{-g}|@option{--extern-only}] [@option{-h}|@option{--help}]
764 [@option{-l}|@option{--line-numbers}] [@option{-n}|@option{-v}|@option{--numeric-sort}]
765 [@option{-P}|@option{--portability}] [@option{-p}|@option{--no-sort}]
766 [@option{-r}|@option{--reverse-sort}] [@option{-S}|@option{--print-size}]
767 [@option{-s}|@option{--print-armap}] [@option{-t} @var{radix}|@option{--radix=}@var{radix}]
768 [@option{-u}|@option{--undefined-only}] [@option{-V}|@option{--version}]
769 [@option{-X 32_64}] [@option{--defined-only}] [@option{--no-demangle}]
770 [@option{--plugin} @var{name}] [@option{--size-sort}] [@option{--special-syms}]
df2c87b5 771 [@option{--synthetic}] [@option{--with-symbol-versions}] [@option{--target=}@var{bfdname}]
fa8f3997 772 [@var{objfile}@dots{}]
0285c67d 773@c man end
252b5132
RH
774@end smallexample
775
0285c67d 776@c man begin DESCRIPTION nm
c7c55b78
NC
777@sc{gnu} @command{nm} lists the symbols from object files @var{objfile}@dots{}.
778If no object files are listed as arguments, @command{nm} assumes the file
252b5132
RH
779@file{a.out}.
780
c7c55b78 781For each symbol, @command{nm} shows:
252b5132
RH
782
783@itemize @bullet
784@item
785The symbol value, in the radix selected by options (see below), or
786hexadecimal by default.
787
788@item
789The symbol type. At least the following types are used; others are, as
790well, depending on the object file format. If lowercase, the symbol is
0ba0c2b3
NC
791usually local; if uppercase, the symbol is global (external). There
792are however a few lowercase symbols that are shown for special global
793symbols (@code{u}, @code{v} and @code{w}).
252b5132
RH
794
795@c Some more detail on exactly what these symbol types are used for
796@c would be nice.
797@table @code
798@item A
799The symbol's value is absolute, and will not be changed by further
800linking.
801
802@item B
a1039809 803@itemx b
252b5132
RH
804The symbol is in the uninitialized data section (known as BSS).
805
806@item C
807The symbol is common. Common symbols are uninitialized data. When
808linking, multiple common symbols may appear with the same name. If the
809symbol is defined anywhere, the common symbols are treated as undefined
0285c67d
NC
810references.
811@ifclear man
812For more details on common symbols, see the discussion of
252b5132 813--warn-common in @ref{Options,,Linker options,ld.info,The GNU linker}.
0879a67a 814@end ifclear
252b5132
RH
815
816@item D
a1039809 817@itemx d
252b5132
RH
818The symbol is in the initialized data section.
819
820@item G
a1039809 821@itemx g
252b5132
RH
822The symbol is in an initialized data section for small objects. Some
823object file formats permit more efficient access to small data objects,
824such as a global int variable as opposed to a large global array.
825
a1039809 826@item i
3e7a7d11
NC
827For PE format files this indicates that the symbol is in a section
828specific to the implementation of DLLs. For ELF format files this
829indicates that the symbol is an indirect function. This is a GNU
830extension to the standard set of ELF symbol types. It indicates a
831symbol which if referenced by a relocation does not evaluate to its
832address, but instead must be invoked at runtime. The runtime
833execution will then return the value to be used in the relocation.
a1039809 834
021f8a30
NC
835@item I
836The symbol is an indirect reference to another symbol.
837
252b5132
RH
838@item N
839The symbol is a debugging symbol.
840
a1039809
NC
841@item p
842The symbols is in a stack unwind section.
843
252b5132 844@item R
a1039809 845@itemx r
252b5132
RH
846The symbol is in a read only data section.
847
848@item S
a1039809 849@itemx s
252b5132
RH
850The symbol is in an uninitialized data section for small objects.
851
852@item T
a1039809 853@itemx t
252b5132
RH
854The symbol is in the text (code) section.
855
856@item U
857The symbol is undefined.
858
3e7a7d11
NC
859@item u
860The symbol is a unique global symbol. This is a GNU extension to the
861standard set of ELF symbol bindings. For such a symbol the dynamic linker
862will make sure that in the entire process there is just one symbol with
863this name and type in use.
864
fad6fcbb 865@item V
a1039809 866@itemx v
fad6fcbb
NC
867The symbol is a weak object. When a weak defined symbol is linked with
868a normal defined symbol, the normal defined symbol is used with no error.
869When a weak undefined symbol is linked and the symbol is not defined,
a1039809
NC
870the value of the weak symbol becomes zero with no error. On some
871systems, uppercase indicates that a default value has been specified.
fad6fcbb 872
252b5132 873@item W
a1039809 874@itemx w
fad6fcbb
NC
875The symbol is a weak symbol that has not been specifically tagged as a
876weak object symbol. When a weak defined symbol is linked with a normal
877defined symbol, the normal defined symbol is used with no error.
878When a weak undefined symbol is linked and the symbol is not defined,
c87db184 879the value of the symbol is determined in a system-specific manner without
c1c0eb9e 880error. On some systems, uppercase indicates that a default value has been
977cdf5a
NC
881specified.
882
252b5132
RH
883@item -
884The symbol is a stabs symbol in an a.out object file. In this case, the
885next values printed are the stabs other field, the stabs desc field, and
c7c55b78 886the stab type. Stabs symbols are used to hold debugging information.
252b5132
RH
887
888@item ?
889The symbol type is unknown, or object file format specific.
890@end table
891
892@item
893The symbol name.
894@end itemize
895
0285c67d
NC
896@c man end
897
898@c man begin OPTIONS nm
252b5132
RH
899The long and short forms of options, shown here as alternatives, are
900equivalent.
901
c7c55b78 902@table @env
252b5132
RH
903@item -A
904@itemx -o
c1c0eb9e 905@itemx --print-file-name
252b5132
RH
906@cindex input file name
907@cindex file name
908@cindex source file name
f20a759a 909Precede each symbol by the name of the input file (or archive member)
252b5132
RH
910in which it was found, rather than identifying the input file once only,
911before all of its symbols.
912
913@item -a
c1c0eb9e 914@itemx --debug-syms
252b5132
RH
915@cindex debugging symbols
916Display all symbols, even debugger-only symbols; normally these are not
917listed.
918
919@item -B
c7c55b78
NC
920@cindex @command{nm} format
921@cindex @command{nm} compatibility
922The same as @option{--format=bsd} (for compatibility with the MIPS @command{nm}).
252b5132
RH
923
924@item -C
28c309a2 925@itemx --demangle[=@var{style}]
252b5132
RH
926@cindex demangling in nm
927Decode (@dfn{demangle}) low-level symbol names into user-level names.
928Besides removing any initial underscore prepended by the system, this
28c309a2 929makes C++ function names readable. Different compilers have different
c1c0eb9e
RM
930mangling styles. The optional demangling style argument can be used to
931choose an appropriate demangling style for your compiler. @xref{c++filt},
28c309a2 932for more information on demangling.
252b5132
RH
933
934@item --no-demangle
935Do not demangle low-level symbol names. This is the default.
936
937@item -D
938@itemx --dynamic
939@cindex dynamic symbols
940Display the dynamic symbols rather than the normal symbols. This is
941only meaningful for dynamic objects, such as certain types of shared
942libraries.
943
944@item -f @var{format}
945@itemx --format=@var{format}
c7c55b78
NC
946@cindex @command{nm} format
947@cindex @command{nm} compatibility
252b5132
RH
948Use the output format @var{format}, which can be @code{bsd},
949@code{sysv}, or @code{posix}. The default is @code{bsd}.
950Only the first character of @var{format} is significant; it can be
951either upper or lower case.
952
953@item -g
c1c0eb9e 954@itemx --extern-only
252b5132
RH
955@cindex external symbols
956Display only external symbols.
957
fa8f3997
NC
958@item -h
959@itemx --help
960Show a summary of the options to @command{nm} and exit.
ce3c775b 961
252b5132
RH
962@item -l
963@itemx --line-numbers
964@cindex symbol line numbers
965For each symbol, use debugging information to try to find a filename and
966line number. For a defined symbol, look for the line number of the
967address of the symbol. For an undefined symbol, look for the line
968number of a relocation entry which refers to the symbol. If line number
969information can be found, print it after the other symbol information.
970
971@item -n
972@itemx -v
c1c0eb9e 973@itemx --numeric-sort
252b5132 974Sort symbols numerically by their addresses, rather than alphabetically
c1c0eb9e 975by their names.
252b5132
RH
976
977@item -p
c1c0eb9e 978@itemx --no-sort
252b5132
RH
979@cindex sorting symbols
980Do not bother to sort the symbols in any order; print them in the order
981encountered.
982
983@item -P
984@itemx --portability
985Use the POSIX.2 standard output format instead of the default format.
986Equivalent to @samp{-f posix}.
987
fa8f3997
NC
988@item -r
989@itemx --reverse-sort
990Reverse the order of the sort (whether numeric or alphabetic); let the
991last come first.
992
72797995
L
993@item -S
994@itemx --print-size
1533edfb
AM
995Print both value and size of defined symbols for the @code{bsd} output style.
996This option has no effect for object formats that do not record symbol
997sizes, unless @samp{--size-sort} is also used in which case a
998calculated size is displayed.
72797995 999
252b5132
RH
1000@item -s
1001@itemx --print-armap
1002@cindex symbol index, listing
1003When listing symbols from archive members, include the index: a mapping
c7c55b78 1004(stored in the archive by @command{ar} or @command{ranlib}) of which modules
252b5132
RH
1005contain definitions for which names.
1006
fa8f3997
NC
1007@item -t @var{radix}
1008@itemx --radix=@var{radix}
1009Use @var{radix} as the radix for printing the symbol values. It must be
1010@samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal.
1011
1012@item -u
1013@itemx --undefined-only
1014@cindex external symbols
1015@cindex undefined symbols
1016Display only undefined symbols (those external to each object file).
1017
1018@item -V
1019@itemx --version
1020Show the version number of @command{nm} and exit.
1021
1022@item -X
1023This option is ignored for compatibility with the AIX version of
1024@command{nm}. It takes one parameter which must be the string
1025@option{32_64}. The default mode of AIX @command{nm} corresponds
1026to @option{-X 32}, which is not supported by @sc{gnu} @command{nm}.
1027
1028@item --defined-only
1029@cindex external symbols
1030@cindex undefined symbols
1031Display only defined symbols for each object file.
1032
1033@item --plugin @var{name}
387dd777 1034@cindex plugins
fa8f3997
NC
1035Load the plugin called @var{name} to add support for extra target
1036types. This option is only available if the toolchain has been built
1037with plugin support enabled.
252b5132 1038
387dd777
DP
1039If @option{--plugin} is not provided, but plugin support has been
1040enabled then @command{nm} iterates over the files in
1041@file{$@{libdir@}/bfd-plugins} in alphabetic order and the first
1042plugin that claims the object in question is used.
1043
1044Please note that this plugin search directory is @emph{not} the one
1045used by @command{ld}'s @option{-plugin} option. In order to make
1046@command{nm} use the linker plugin it must be copied into the
1047@file{$@{libdir@}/bfd-plugins} directory. For GCC based compilations
1048the linker plugin is called @file{liblto_plugin.so.0.0.0}. For Clang
1049based compilations it is called @file{LLVMgold.so}. The GCC plugin
1050is always backwards compatible with earlier versions, so it is
1051sufficient to just copy the newest one.
1052
252b5132 1053@item --size-sort
29f4fdc4
AB
1054Sort symbols by size. For ELF objects symbol sizes are read from the
1055ELF, for other object types the symbol sizes are computed as the
1056difference between the value of the symbol and the value of the symbol
1057with the next higher value. If the @code{bsd} output format is used
1058the size of the symbol is printed, rather than the value, and
1059@samp{-S} must be used in order both size and value to be printed.
252b5132 1060
3c9458e9
NC
1061@item --special-syms
1062Display symbols which have a target-specific special meaning. These
1063symbols are usually used by the target for some special processing and
a575c958
NC
1064are not normally helpful when included in the normal symbol lists.
1065For example for ARM targets this option would skip the mapping symbols
1066used to mark transitions between ARM code, THUMB code and data.
3c9458e9 1067
fa8f3997
NC
1068@item --synthetic
1069Include synthetic symbols in the output. These are special symbols
1070created by the linker for various purposes. They are not shown by
1071default since they are not part of the binary's original source code.
252b5132 1072
df2c87b5
NC
1073@item --with-symbol-versions
1074Enables the display of symbol version information if any exists. The
1075version string is displayed as a suffix to the symbol name, preceeded by
1076an @@ character. For example @samp{foo@@VER_1}. If the version is
1077the default version to be used when resolving unversioned references
1078to the symbol then it is displayed as a suffix preceeded by two @@
1079characters. For example @samp{foo@@@@VER_2}.
1080
252b5132
RH
1081@item --target=@var{bfdname}
1082@cindex object code format
1083Specify an object code format other than your system's default format.
1084@xref{Target Selection}, for more information.
1085
252b5132
RH
1086@end table
1087
0285c67d
NC
1088@c man end
1089
1090@ignore
1091@c man begin SEEALSO nm
1092ar(1), objdump(1), ranlib(1), and the Info entries for @file{binutils}.
1093@c man end
1094@end ignore
1095
252b5132
RH
1096@node objcopy
1097@chapter objcopy
1098
0285c67d
NC
1099@c man title objcopy copy and translate object files
1100
252b5132 1101@smallexample
0285c67d 1102@c man begin SYNOPSIS objcopy
c7c55b78
NC
1103objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}]
1104 [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}]
1105 [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}]
1106 [@option{-B} @var{bfdarch}|@option{--binary-architecture=}@var{bfdarch}]
2593f09a
NC
1107 [@option{-S}|@option{--strip-all}]
1108 [@option{-g}|@option{--strip-debug}]
c7c55b78
NC
1109 [@option{-K} @var{symbolname}|@option{--keep-symbol=}@var{symbolname}]
1110 [@option{-N} @var{symbolname}|@option{--strip-symbol=}@var{symbolname}]
bcf32829 1111 [@option{--strip-unneeded-symbol=}@var{symbolname}]
c7c55b78 1112 [@option{-G} @var{symbolname}|@option{--keep-global-symbol=}@var{symbolname}]
d58c2e3a 1113 [@option{--localize-hidden}]
c7c55b78 1114 [@option{-L} @var{symbolname}|@option{--localize-symbol=}@var{symbolname}]
7b4a0685 1115 [@option{--globalize-symbol=}@var{symbolname}]
c7c55b78 1116 [@option{-W} @var{symbolname}|@option{--weaken-symbol=}@var{symbolname}]
5fe11841 1117 [@option{-w}|@option{--wildcard}]
2593f09a
NC
1118 [@option{-x}|@option{--discard-all}]
1119 [@option{-X}|@option{--discard-locals}]
c7c55b78 1120 [@option{-b} @var{byte}|@option{--byte=}@var{byte}]
b7dd81f7
NC
1121 [@option{-i} [@var{breadth}]|@option{--interleave}[=@var{breadth}]]
1122 [@option{--interleave-width=}@var{width}]
2e62b721
NC
1123 [@option{-j} @var{sectionpattern}|@option{--only-section=}@var{sectionpattern}]
1124 [@option{-R} @var{sectionpattern}|@option{--remove-section=}@var{sectionpattern}]
d3e5f6c8 1125 [@option{--remove-relocations=}@var{sectionpattern}]
c7c55b78 1126 [@option{-p}|@option{--preserve-dates}]
2e30cb57 1127 [@option{-D}|@option{--enable-deterministic-archives}]
955d0b3b 1128 [@option{-U}|@option{--disable-deterministic-archives}]
c7c55b78 1129 [@option{--debugging}]
2593f09a
NC
1130 [@option{--gap-fill=}@var{val}]
1131 [@option{--pad-to=}@var{address}]
1132 [@option{--set-start=}@var{val}]
1133 [@option{--adjust-start=}@var{incr}]
c7c55b78 1134 [@option{--change-addresses=}@var{incr}]
2e62b721
NC
1135 [@option{--change-section-address} @var{sectionpattern}@{=,+,-@}@var{val}]
1136 [@option{--change-section-lma} @var{sectionpattern}@{=,+,-@}@var{val}]
1137 [@option{--change-section-vma} @var{sectionpattern}@{=,+,-@}@var{val}]
c7c55b78 1138 [@option{--change-warnings}] [@option{--no-change-warnings}]
2e62b721 1139 [@option{--set-section-flags} @var{sectionpattern}=@var{flags}]
c7c55b78 1140 [@option{--add-section} @var{sectionname}=@var{filename}]
bbad633b 1141 [@option{--dump-section} @var{sectionname}=@var{filename}]
acf1419f 1142 [@option{--update-section} @var{sectionname}=@var{filename}]
c7c55b78 1143 [@option{--rename-section} @var{oldname}=@var{newname}[,@var{flags}]]
0408dee6 1144 [@option{--long-section-names} @{enable,disable,keep@}]
2593f09a 1145 [@option{--change-leading-char}] [@option{--remove-leading-char}]
9e48b4c6 1146 [@option{--reverse-bytes=}@var{num}]
2593f09a
NC
1147 [@option{--srec-len=}@var{ival}] [@option{--srec-forceS3}]
1148 [@option{--redefine-sym} @var{old}=@var{new}]
1149 [@option{--redefine-syms=}@var{filename}]
c7c55b78
NC
1150 [@option{--weaken}]
1151 [@option{--keep-symbols=}@var{filename}]
1152 [@option{--strip-symbols=}@var{filename}]
bcf32829 1153 [@option{--strip-unneeded-symbols=}@var{filename}]
c7c55b78
NC
1154 [@option{--keep-global-symbols=}@var{filename}]
1155 [@option{--localize-symbols=}@var{filename}]
7b4a0685 1156 [@option{--globalize-symbols=}@var{filename}]
c7c55b78 1157 [@option{--weaken-symbols=}@var{filename}]
2b35fb28 1158 [@option{--add-symbol} @var{name}=[@var{section}:]@var{value}[,@var{flags}]
c51238bc
DA
1159 [@option{--alt-machine-code=}@var{index}]
1160 [@option{--prefix-symbols=}@var{string}]
1161 [@option{--prefix-sections=}@var{string}]
1162 [@option{--prefix-alloc-sections=}@var{string}]
ed1653a7 1163 [@option{--add-gnu-debuglink=}@var{path-to-file}]
1637cd90 1164 [@option{--keep-file-symbols}]
ed1653a7 1165 [@option{--only-keep-debug}]
96109726
CC
1166 [@option{--strip-dwo}]
1167 [@option{--extract-dwo}]
d3e52d40 1168 [@option{--extract-symbol}]
4087920c
MR
1169 [@option{--writable-text}]
1170 [@option{--readonly-text}]
1171 [@option{--pure}]
1172 [@option{--impure}]
92dd4511
L
1173 [@option{--file-alignment=}@var{num}]
1174 [@option{--heap=}@var{size}]
1175 [@option{--image-base=}@var{address}]
1176 [@option{--section-alignment=}@var{num}]
1177 [@option{--stack=}@var{size}]
1178 [@option{--subsystem=}@var{which}:@var{major}.@var{minor}]
4a114e3e
L
1179 [@option{--compress-debug-sections}]
1180 [@option{--decompress-debug-sections}]
b8871f35 1181 [@option{--elf-stt-common=@var{val}}]
9ef920e9 1182 [@option{--merge-notes}]
c7c55b78 1183 [@option{-v}|@option{--verbose}]
c1c0eb9e 1184 [@option{-V}|@option{--version}]
7c29036b 1185 [@option{--help}] [@option{--info}]
252b5132 1186 @var{infile} [@var{outfile}]
0285c67d 1187@c man end
252b5132
RH
1188@end smallexample
1189
0285c67d 1190@c man begin DESCRIPTION objcopy
c7c55b78
NC
1191The @sc{gnu} @command{objcopy} utility copies the contents of an object
1192file to another. @command{objcopy} uses the @sc{gnu} @sc{bfd} Library to
252b5132
RH
1193read and write the object files. It can write the destination object
1194file in a format different from that of the source object file. The
c7c55b78
NC
1195exact behavior of @command{objcopy} is controlled by command-line options.
1196Note that @command{objcopy} should be able to copy a fully linked file
ccd13d18
L
1197between any two formats. However, copying a relocatable object file
1198between any two formats may not work as expected.
252b5132 1199
c7c55b78
NC
1200@command{objcopy} creates temporary files to do its translations and
1201deletes them afterward. @command{objcopy} uses @sc{bfd} to do all its
252b5132
RH
1202translation work; it has access to all the formats described in @sc{bfd}
1203and thus is able to recognize most formats without being told
1204explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
1205
c7c55b78 1206@command{objcopy} can be used to generate S-records by using an output
252b5132
RH
1207target of @samp{srec} (e.g., use @samp{-O srec}).
1208
c7c55b78
NC
1209@command{objcopy} can be used to generate a raw binary file by using an
1210output target of @samp{binary} (e.g., use @option{-O binary}). When
1211@command{objcopy} generates a raw binary file, it will essentially produce
252b5132
RH
1212a memory dump of the contents of the input object file. All symbols and
1213relocation information will be discarded. The memory dump will start at
1214the load address of the lowest section copied into the output file.
1215
1216When generating an S-record or a raw binary file, it may be helpful to
c7c55b78
NC
1217use @option{-S} to remove sections containing debugging information. In
1218some cases @option{-R} will be useful to remove sections which contain
f20a759a 1219information that is not needed by the binary file.
252b5132 1220
947ed062
NC
1221Note---@command{objcopy} is not able to change the endianness of its input
1222files. If the input format has an endianness (some formats do not),
c7c55b78 1223@command{objcopy} can only copy the inputs into file formats that have the
947ed062 1224same endianness or which have no endianness (e.g., @samp{srec}).
9e48b4c6 1225(However, see the @option{--reverse-bytes} option.)
18356cf2 1226
0285c67d
NC
1227@c man end
1228
1229@c man begin OPTIONS objcopy
1230
c7c55b78 1231@table @env
252b5132
RH
1232@item @var{infile}
1233@itemx @var{outfile}
f20a759a 1234The input and output files, respectively.
c7c55b78 1235If you do not specify @var{outfile}, @command{objcopy} creates a
252b5132
RH
1236temporary file and destructively renames the result with
1237the name of @var{infile}.
1238
c7c55b78 1239@item -I @var{bfdname}
252b5132
RH
1240@itemx --input-target=@var{bfdname}
1241Consider the source file's object format to be @var{bfdname}, rather than
1242attempting to deduce it. @xref{Target Selection}, for more information.
1243
1244@item -O @var{bfdname}
1245@itemx --output-target=@var{bfdname}
1246Write the output file using the object format @var{bfdname}.
1247@xref{Target Selection}, for more information.
1248
1249@item -F @var{bfdname}
1250@itemx --target=@var{bfdname}
1251Use @var{bfdname} as the object format for both the input and the output
1252file; i.e., simply transfer data from source to destination with no
1253translation. @xref{Target Selection}, for more information.
1254
43a0748c
NC
1255@item -B @var{bfdarch}
1256@itemx --binary-architecture=@var{bfdarch}
8b31b6c4
NC
1257Useful when transforming a architecture-less input file into an object file.
1258In this case the output architecture can be set to @var{bfdarch}. This
1259option will be ignored if the input file has a known @var{bfdarch}. You
43a0748c
NC
1260can access this binary data inside a program by referencing the special
1261symbols that are created by the conversion process. These symbols are
1262called _binary_@var{objfile}_start, _binary_@var{objfile}_end and
1263_binary_@var{objfile}_size. e.g. you can transform a picture file into
c1c0eb9e 1264an object file and then access it in your code using these symbols.
43a0748c 1265
2e62b721
NC
1266@item -j @var{sectionpattern}
1267@itemx --only-section=@var{sectionpattern}
1268Copy only the indicated sections from the input file to the output file.
f91ea849 1269This option may be given more than once. Note that using this option
2e62b721
NC
1270inappropriately may make the output file unusable. Wildcard
1271characters are accepted in @var{sectionpattern}.
f91ea849 1272
e511c9b1
AB
1273If the first character of @var{sectionpattern} is the exclamation
1274point (!) then matching sections will not be copied, even if earlier
1275use of @option{--only-section} on the same command line would
1276otherwise copy it. For example:
1277
1278@smallexample
1279 --only-section=.text.* --only-section=!.text.foo
1280@end smallexample
1281
1282will copy all sectinos maching '.text.*' but not the section
1283'.text.foo'.
1284
2e62b721
NC
1285@item -R @var{sectionpattern}
1286@itemx --remove-section=@var{sectionpattern}
1287Remove any section matching @var{sectionpattern} from the output file.
1288This option may be given more than once. Note that using this option
1289inappropriately may make the output file unusable. Wildcard
1290characters are accepted in @var{sectionpattern}. Using both the
1291@option{-j} and @option{-R} options together results in undefined
1292behaviour.
252b5132 1293
e511c9b1
AB
1294If the first character of @var{sectionpattern} is the exclamation
1295point (!) then matching sections will not be removed even if an
1296earlier use of @option{--remove-section} on the same command line
1297would otherwise remove it. For example:
1298
1299@smallexample
1300 --remove-section=.text.* --remove-section=!.text.foo
1301@end smallexample
1302
1303will remove all sections matching the pattern '.text.*', but will not
1304remove the section '.text.foo'.
1305
d3e5f6c8
AB
1306@item --remove-relocations=@var{sectionpattern}
1307Remove relocations from the output file for any section matching
1308@var{sectionpattern}. This option may be given more than once. Note
1309that using this option inappropriately may make the output file
1310unusable. Wildcard characters are accepted in @var{sectionpattern}.
1311For example:
1312
1313@smallexample
1314 --remove-relocations=.text.*
1315@end smallexample
1316
1317will remove the relocations for all sections matching the patter
1318'.text.*'.
1319
1320If the first character of @var{sectionpattern} is the exclamation
1321point (!) then matching sections will not have their relocation
1322removed even if an earlier use of @option{--remove-relocations} on the
1323same command line would otherwise cause the relocations to be removed.
1324For example:
1325
1326@smallexample
1327 --remove-relocations=.text.* --remove-relocations=!.text.foo
1328@end smallexample
1329
1330will remove all relocations for sections matching the pattern
1331'.text.*', but will not remove relocations for the section
1332'.text.foo'.
1333
252b5132
RH
1334@item -S
1335@itemx --strip-all
1336Do not copy relocation and symbol information from the source file.
1337
1338@item -g
1339@itemx --strip-debug
2593f09a 1340Do not copy debugging symbols or sections from the source file.
252b5132
RH
1341
1342@item --strip-unneeded
1343Strip all symbols that are not needed for relocation processing.
1344
1345@item -K @var{symbolname}
1346@itemx --keep-symbol=@var{symbolname}
e7f918ad
NC
1347When stripping symbols, keep symbol @var{symbolname} even if it would
1348normally be stripped. This option may be given more than once.
252b5132
RH
1349
1350@item -N @var{symbolname}
1351@itemx --strip-symbol=@var{symbolname}
1352Do not copy symbol @var{symbolname} from the source file. This option
1353may be given more than once.
1354
bcf32829
JB
1355@item --strip-unneeded-symbol=@var{symbolname}
1356Do not copy symbol @var{symbolname} from the source file unless it is needed
1357by a relocation. This option may be given more than once.
1358
16b2b71c
NC
1359@item -G @var{symbolname}
1360@itemx --keep-global-symbol=@var{symbolname}
1361Keep only symbol @var{symbolname} global. Make all other symbols local
1362to the file, so that they are not visible externally. This option may
1363be given more than once.
1364
d58c2e3a
RS
1365@item --localize-hidden
1366In an ELF object, mark all symbols that have hidden or internal visibility
1367as local. This option applies on top of symbol-specific localization options
1368such as @option{-L}.
1369
252b5132
RH
1370@item -L @var{symbolname}
1371@itemx --localize-symbol=@var{symbolname}
f2629855
NC
1372Convert a global or weak symbol called @var{symbolname} into a local
1373symbol, so that it is not visible externally. This option may be
1374given more than once. Note - unique symbols are not converted.
252b5132
RH
1375
1376@item -W @var{symbolname}
1377@itemx --weaken-symbol=@var{symbolname}
1378Make symbol @var{symbolname} weak. This option may be given more than once.
1379
7b4a0685
NC
1380@item --globalize-symbol=@var{symbolname}
1381Give symbol @var{symbolname} global scoping so that it is visible
1382outside of the file in which it is defined. This option may be given
1383more than once.
1384
5fe11841
NC
1385@item -w
1386@itemx --wildcard
1387Permit regular expressions in @var{symbolname}s used in other command
1388line options. The question mark (?), asterisk (*), backslash (\) and
1389square brackets ([]) operators can be used anywhere in the symbol
1390name. If the first character of the symbol name is the exclamation
1391point (!) then the sense of the switch is reversed for that symbol.
1392For example:
1393
1394@smallexample
1395 -w -W !foo -W fo*
1396@end smallexample
1397
1398would cause objcopy to weaken all symbols that start with ``fo''
1399except for the symbol ``foo''.
1400
252b5132
RH
1401@item -x
1402@itemx --discard-all
1403Do not copy non-global symbols from the source file.
1404@c FIXME any reason to prefer "non-global" to "local" here?
1405
1406@item -X
1407@itemx --discard-locals
1408Do not copy compiler-generated local symbols.
1409(These usually start with @samp{L} or @samp{.}.)
1410
1411@item -b @var{byte}
1412@itemx --byte=@var{byte}
b7dd81f7
NC
1413If interleaving has been enabled via the @option{--interleave} option
1414then start the range of bytes to keep at the @var{byte}th byte.
1415@var{byte} can be in the range from 0 to @var{breadth}-1, where
1416@var{breadth} is the value given by the @option{--interleave} option.
1417
1418@item -i [@var{breadth}]
1419@itemx --interleave[=@var{breadth}]
1420Only copy a range out of every @var{breadth} bytes. (Header data is
1421not affected). Select which byte in the range begins the copy with
1422the @option{--byte} option. Select the width of the range with the
1423@option{--interleave-width} option.
1424
1425This option is useful for creating files to program @sc{rom}. It is
1426typically used with an @code{srec} output target. Note that
1427@command{objcopy} will complain if you do not specify the
1428@option{--byte} option as well.
1429
1430The default interleave breadth is 4, so with @option{--byte} set to 0,
1431@command{objcopy} would copy the first byte out of every four bytes
1432from the input to the output.
1433
1434@item --interleave-width=@var{width}
1435When used with the @option{--interleave} option, copy @var{width}
1436bytes at a time. The start of the range of bytes to be copied is set
1437by the @option{--byte} option, and the extent of the range is set with
1438the @option{--interleave} option.
1439
1440The default value for this option is 1. The value of @var{width} plus
1441the @var{byte} value set by the @option{--byte} option must not exceed
1442the interleave breadth set by the @option{--interleave} option.
1443
1444This option can be used to create images for two 16-bit flashes interleaved
1445in a 32-bit bus by passing @option{-b 0 -i 4 --interleave-width=2}
1446and @option{-b 2 -i 4 --interleave-width=2} to two @command{objcopy}
1447commands. If the input was '12345678' then the outputs would be
1448'1256' and '3478' respectively.
252b5132
RH
1449
1450@item -p
1451@itemx --preserve-dates
1452Set the access and modification dates of the output file to be the same
1453as those of the input file.
1454
2e30cb57
CC
1455@item -D
1456@itemx --enable-deterministic-archives
955d0b3b
RM
1457@cindex deterministic archives
1458@kindex --enable-deterministic-archives
2e30cb57
CC
1459Operate in @emph{deterministic} mode. When copying archive members
1460and writing the archive index, use zero for UIDs, GIDs, timestamps,
1461and use consistent file modes for all files.
1462
955d0b3b
RM
1463If @file{binutils} was configured with
1464@option{--enable-deterministic-archives}, then this mode is on by default.
1465It can be disabled with the @samp{-U} option, below.
1466
1467@item -U
1468@itemx --disable-deterministic-archives
1469@cindex deterministic archives
1470@kindex --enable-deterministic-archives
1471Do @emph{not} operate in @emph{deterministic} mode. This is the
1472inverse of the @option{-D} option, above: when copying archive members
1473and writing the archive index, use their actual UID, GID, timestamp,
1474and file mode values.
1475
1476This is the default unless @file{binutils} was configured with
1477@option{--enable-deterministic-archives}.
1478
252b5132
RH
1479@item --debugging
1480Convert debugging information, if possible. This is not the default
1481because only certain debugging formats are supported, and the
1482conversion process can be time consuming.
1483
1484@item --gap-fill @var{val}
1485Fill gaps between sections with @var{val}. This operation applies to
1486the @emph{load address} (LMA) of the sections. It is done by increasing
1487the size of the section with the lower address, and filling in the extra
1488space created with @var{val}.
1489
1490@item --pad-to @var{address}
1491Pad the output file up to the load address @var{address}. This is
1492done by increasing the size of the last section. The extra space is
c7c55b78 1493filled in with the value specified by @option{--gap-fill} (default zero).
252b5132
RH
1494
1495@item --set-start @var{val}
f20a759a 1496Set the start address of the new file to @var{val}. Not all object file
252b5132
RH
1497formats support setting the start address.
1498
1499@item --change-start @var{incr}
1500@itemx --adjust-start @var{incr}
1501@cindex changing start address
1502Change the start address by adding @var{incr}. Not all object file
1503formats support setting the start address.
1504
1505@item --change-addresses @var{incr}
1506@itemx --adjust-vma @var{incr}
1507@cindex changing object addresses
1508Change the VMA and LMA addresses of all sections, as well as the start
1509address, by adding @var{incr}. Some object file formats do not permit
1510section addresses to be changed arbitrarily. Note that this does not
1511relocate the sections; if the program expects sections to be loaded at a
1512certain address, and this option is used to change the sections such
c1c0eb9e 1513that they are loaded at a different address, the program may fail.
252b5132 1514
2e62b721
NC
1515@item --change-section-address @var{sectionpattern}@{=,+,-@}@var{val}
1516@itemx --adjust-section-vma @var{sectionpattern}@{=,+,-@}@var{val}
252b5132 1517@cindex changing section address
2e62b721
NC
1518Set or change both the VMA address and the LMA address of any section
1519matching @var{sectionpattern}. If @samp{=} is used, the section
1520address is set to @var{val}. Otherwise, @var{val} is added to or
1521subtracted from the section address. See the comments under
1522@option{--change-addresses}, above. If @var{sectionpattern} does not
1523match any sections in the input file, a warning will be issued, unless
1524@option{--no-change-warnings} is used.
252b5132 1525
2e62b721 1526@item --change-section-lma @var{sectionpattern}@{=,+,-@}@var{val}
252b5132 1527@cindex changing section LMA
2e62b721
NC
1528Set or change the LMA address of any sections matching
1529@var{sectionpattern}. The LMA address is the address where the
1530section will be loaded into memory at program load time. Normally
1531this is the same as the VMA address, which is the address of the
1532section at program run time, but on some systems, especially those
1533where a program is held in ROM, the two can be different. If @samp{=}
1534is used, the section address is set to @var{val}. Otherwise,
1535@var{val} is added to or subtracted from the section address. See the
1536comments under @option{--change-addresses}, above. If
1537@var{sectionpattern} does not match any sections in the input file, a
1538warning will be issued, unless @option{--no-change-warnings} is used.
1539
1540@item --change-section-vma @var{sectionpattern}@{=,+,-@}@var{val}
1541@cindex changing section VMA
1542Set or change the VMA address of any section matching
1543@var{sectionpattern}. The VMA address is the address where the
1544section will be located once the program has started executing.
1545Normally this is the same as the LMA address, which is the address
1546where the section will be loaded into memory, but on some systems,
252b5132
RH
1547especially those where a program is held in ROM, the two can be
1548different. If @samp{=} is used, the section address is set to
1549@var{val}. Otherwise, @var{val} is added to or subtracted from the
c7c55b78 1550section address. See the comments under @option{--change-addresses},
2e62b721
NC
1551above. If @var{sectionpattern} does not match any sections in the
1552input file, a warning will be issued, unless
c1c0eb9e 1553@option{--no-change-warnings} is used.
252b5132
RH
1554
1555@item --change-warnings
1556@itemx --adjust-warnings
c7c55b78 1557If @option{--change-section-address} or @option{--change-section-lma} or
2e62b721
NC
1558@option{--change-section-vma} is used, and the section pattern does not
1559match any sections, issue a warning. This is the default.
252b5132
RH
1560
1561@item --no-change-warnings
1562@itemx --no-adjust-warnings
c7c55b78
NC
1563Do not issue a warning if @option{--change-section-address} or
1564@option{--adjust-section-lma} or @option{--adjust-section-vma} is used, even
2e62b721
NC
1565if the section pattern does not match any sections.
1566
1567@item --set-section-flags @var{sectionpattern}=@var{flags}
1568Set the flags for any sections matching @var{sectionpattern}. The
1569@var{flags} argument is a comma separated string of flag names. The
1570recognized names are @samp{alloc}, @samp{contents}, @samp{load},
1571@samp{noload}, @samp{readonly}, @samp{code}, @samp{data}, @samp{rom},
1572@samp{share}, and @samp{debug}. You can set the @samp{contents} flag
1573for a section which does not have contents, but it is not meaningful
1574to clear the @samp{contents} flag of a section which does have
1575contents--just remove the section instead. Not all flags are
1576meaningful for all object file formats.
252b5132
RH
1577
1578@item --add-section @var{sectionname}=@var{filename}
1579Add a new section named @var{sectionname} while copying the file. The
1580contents of the new section are taken from the file @var{filename}. The
1581size of the section will be the size of the file. This option only
1582works on file formats which can support sections with arbitrary names.
bbad633b
NC
1583Note - it may be necessary to use the @option{--set-section-flags}
1584option to set the attributes of the newly created section.
1585
1586@item --dump-section @var{sectionname}=@var{filename}
1587Place the contents of section named @var{sectionname} into the file
1588@var{filename}, overwriting any contents that may have been there
1589previously. This option is the inverse of @option{--add-section}.
1590This option is similar to the @option{--only-section} option except
1591that it does not create a formatted file, it just dumps the contents
1592as raw binary data, without applying any relocations. The option can
1593be specified more than once.
252b5132 1594
acf1419f
AB
1595@item --update-section @var{sectionname}=@var{filename}
1596Replace the existing contents of a section named @var{sectionname}
1597with the contents of file @var{filename}. The size of the section
1598will be adjusted to the size of the file. The section flags for
1599@var{sectionname} will be unchanged. For ELF format files the section
1600to segment mapping will also remain unchanged, something which is not
1601possible using @option{--remove-section} followed by
1602@option{--add-section}. The option can be specified more than once.
1603
1604Note - it is possible to use @option{--rename-section} and
1605@option{--update-section} to both update and rename a section from one
1606command line. In this case, pass the original section name to
1607@option{--update-section}, and the original and new section names to
1608@option{--rename-section}.
1609
2b35fb28
RH
1610@item --add-symbol @var{name}=[@var{section}:]@var{value}[,@var{flags}]
1611Add a new symbol named @var{name} while copying the file. This option may be
1612specified multiple times. If the @var{section} is given, the symbol will be
1613associated with and relative to that section, otherwise it will be an ABS
1614symbol. Specifying an undefined section will result in a fatal error. There
1615is no check for the value, it will be taken as specified. Symbol flags can
1616be specified and not all flags will be meaningful for all object file
1617formats. By default, the symbol will be global. The special flag
1618'before=@var{othersym}' will insert the new symbol in front of the specified
1619@var{othersym}, otherwise the symbol(s) will be added at the end of the
1620symbol table in the order they appear.
1621
594ef5db
NC
1622@item --rename-section @var{oldname}=@var{newname}[,@var{flags}]
1623Rename a section from @var{oldname} to @var{newname}, optionally
1624changing the section's flags to @var{flags} in the process. This has
1625the advantage over usng a linker script to perform the rename in that
1626the output stays as an object file and does not become a linked
1627executable.
1628
1629This option is particularly helpful when the input format is binary,
1630since this will always create a section called .data. If for example,
1631you wanted instead to create a section called .rodata containing binary
1632data you could use the following command line to achieve it:
1633
1634@smallexample
1635 objcopy -I binary -O <output_format> -B <architecture> \
1636 --rename-section .data=.rodata,alloc,load,readonly,data,contents \
1637 <input_binary_file> <output_object_file>
1638@end smallexample
1639
0408dee6
DK
1640@item --long-section-names @{enable,disable,keep@}
1641Controls the handling of long section names when processing @code{COFF}
1642and @code{PE-COFF} object formats. The default behaviour, @samp{keep},
1643is to preserve long section names if any are present in the input file.
1644The @samp{enable} and @samp{disable} options forcibly enable or disable
1645the use of long section names in the output object; when @samp{disable}
1646is in effect, any long section names in the input object will be truncated.
1647The @samp{enable} option will only emit long section names if any are
1648present in the inputs; this is mostly the same as @samp{keep}, but it
b3364cb9 1649is left undefined whether the @samp{enable} option might force the
0408dee6
DK
1650creation of an empty string table in the output file.
1651
252b5132
RH
1652@item --change-leading-char
1653Some object file formats use special characters at the start of
1654symbols. The most common such character is underscore, which compilers
c7c55b78 1655often add before every symbol. This option tells @command{objcopy} to
252b5132
RH
1656change the leading character of every symbol when it converts between
1657object file formats. If the object file formats use the same leading
1658character, this option has no effect. Otherwise, it will add a
1659character, or remove a character, or change a character, as
1660appropriate.
1661
1662@item --remove-leading-char
1663If the first character of a global symbol is a special symbol leading
1664character used by the object file format, remove the character. The
1665most common symbol leading character is underscore. This option will
1666remove a leading underscore from all global symbols. This can be useful
1667if you want to link together objects of different file formats with
1668different conventions for symbol names. This is different from
c7c55b78 1669@option{--change-leading-char} because it always changes the symbol name
252b5132
RH
1670when appropriate, regardless of the object file format of the output
1671file.
1672
9e48b4c6
NC
1673@item --reverse-bytes=@var{num}
1674Reverse the bytes in a section with output contents. A section length must
1675be evenly divisible by the value given in order for the swap to be able to
1676take place. Reversing takes place before the interleaving is performed.
1677
1678This option is used typically in generating ROM images for problematic
1679target systems. For example, on some target boards, the 32-bit words
1680fetched from 8-bit ROMs are re-assembled in little-endian byte order
1681regardless of the CPU byte order. Depending on the programming model, the
1682endianness of the ROM may need to be modified.
1683
1684Consider a simple file with a section containing the following eight
1685bytes: @code{12345678}.
1686
1687Using @samp{--reverse-bytes=2} for the above example, the bytes in the
1688output file would be ordered @code{21436587}.
1689
1690Using @samp{--reverse-bytes=4} for the above example, the bytes in the
1691output file would be ordered @code{43218765}.
1692
1693By using @samp{--reverse-bytes=2} for the above example, followed by
1694@samp{--reverse-bytes=4} on the output file, the bytes in the second
1695output file would be ordered @code{34127856}.
1696
420496c1
NC
1697@item --srec-len=@var{ival}
1698Meaningful only for srec output. Set the maximum length of the Srecords
1699being produced to @var{ival}. This length covers both address, data and
1700crc fields.
1701
1702@item --srec-forceS3
c1c0eb9e 1703Meaningful only for srec output. Avoid generation of S1/S2 records,
420496c1
NC
1704creating S3-only record format.
1705
57938635
AM
1706@item --redefine-sym @var{old}=@var{new}
1707Change the name of a symbol @var{old}, to @var{new}. This can be useful
1708when one is trying link two things together for which you have no
1709source, and there are name collisions.
1710
92991082
JT
1711@item --redefine-syms=@var{filename}
1712Apply @option{--redefine-sym} to each symbol pair "@var{old} @var{new}"
1713listed in the file @var{filename}. @var{filename} is simply a flat file,
1714with one symbol pair per line. Line comments may be introduced by the hash
1715character. This option may be given more than once.
1716
252b5132
RH
1717@item --weaken
1718Change all global symbols in the file to be weak. This can be useful
1719when building an object which will be linked against other objects using
c7c55b78 1720the @option{-R} option to the linker. This option is only effective when
252b5132
RH
1721using an object file format which supports weak symbols.
1722
16b2b71c 1723@item --keep-symbols=@var{filename}
c7c55b78 1724Apply @option{--keep-symbol} option to each symbol listed in the file
16b2b71c
NC
1725@var{filename}. @var{filename} is simply a flat file, with one symbol
1726name per line. Line comments may be introduced by the hash character.
1727This option may be given more than once.
1728
1729@item --strip-symbols=@var{filename}
c7c55b78 1730Apply @option{--strip-symbol} option to each symbol listed in the file
16b2b71c
NC
1731@var{filename}. @var{filename} is simply a flat file, with one symbol
1732name per line. Line comments may be introduced by the hash character.
1733This option may be given more than once.
1734
bcf32829
JB
1735@item --strip-unneeded-symbols=@var{filename}
1736Apply @option{--strip-unneeded-symbol} option to each symbol listed in
1737the file @var{filename}. @var{filename} is simply a flat file, with one
1738symbol name per line. Line comments may be introduced by the hash
1739character. This option may be given more than once.
1740
16b2b71c 1741@item --keep-global-symbols=@var{filename}
c7c55b78 1742Apply @option{--keep-global-symbol} option to each symbol listed in the
16b2b71c
NC
1743file @var{filename}. @var{filename} is simply a flat file, with one
1744symbol name per line. Line comments may be introduced by the hash
1745character. This option may be given more than once.
1746
1747@item --localize-symbols=@var{filename}
c7c55b78 1748Apply @option{--localize-symbol} option to each symbol listed in the file
16b2b71c
NC
1749@var{filename}. @var{filename} is simply a flat file, with one symbol
1750name per line. Line comments may be introduced by the hash character.
1751This option may be given more than once.
1752
7b4a0685
NC
1753@item --globalize-symbols=@var{filename}
1754Apply @option{--globalize-symbol} option to each symbol listed in the file
1755@var{filename}. @var{filename} is simply a flat file, with one symbol
1756name per line. Line comments may be introduced by the hash character.
1757This option may be given more than once.
1758
16b2b71c 1759@item --weaken-symbols=@var{filename}
c7c55b78 1760Apply @option{--weaken-symbol} option to each symbol listed in the file
16b2b71c
NC
1761@var{filename}. @var{filename} is simply a flat file, with one symbol
1762name per line. Line comments may be introduced by the hash character.
1763This option may be given more than once.
1764
1ae8b3d2
AO
1765@item --alt-machine-code=@var{index}
1766If the output architecture has alternate machine codes, use the
1767@var{index}th code instead of the default one. This is useful in case
c1c0eb9e 1768a machine is assigned an official code and the tool-chain adopts the
1ae8b3d2 1769new code, but other applications still depend on the original code
f9d4ad2a
NC
1770being used. For ELF based architectures if the @var{index}
1771alternative does not exist then the value is treated as an absolute
1772number to be stored in the e_machine field of the ELF header.
1ae8b3d2 1773
4087920c
MR
1774@item --writable-text
1775Mark the output text as writable. This option isn't meaningful for all
1776object file formats.
1777
1778@item --readonly-text
1779Make the output text write protected. This option isn't meaningful for all
1780object file formats.
1781
1782@item --pure
1783Mark the output file as demand paged. This option isn't meaningful for all
1784object file formats.
1785
1786@item --impure
1787Mark the output file as impure. This option isn't meaningful for all
1788object file formats.
1789
d7fb0dd2
NC
1790@item --prefix-symbols=@var{string}
1791Prefix all symbols in the output file with @var{string}.
1792
1793@item --prefix-sections=@var{string}
1794Prefix all section names in the output file with @var{string}.
1795
1796@item --prefix-alloc-sections=@var{string}
1797Prefix all the names of all allocated sections in the output file with
1798@var{string}.
1799
ed1653a7 1800@item --add-gnu-debuglink=@var{path-to-file}
4fd77a3d
NC
1801Creates a .gnu_debuglink section which contains a reference to
1802@var{path-to-file} and adds it to the output file. Note: the file at
1803@var{path-to-file} must exist. Part of the process of adding the
1804.gnu_debuglink section involves embedding a checksum of the contents
1805of the debug info file into the section.
1806
1807If the debug info file is built in one location but it is going to be
1808installed at a later time into a different location then do not use
1809the path to the installed location. The @option{--add-gnu-debuglink}
1810option will fail because the installed file does not exist yet.
1811Instead put the debug info file in the current directory and use the
1812@option{--add-gnu-debuglink} option without any directory components,
1813like this:
1814
1815@smallexample
1816 objcopy --add-gnu-debuglink=foo.debug
1817@end smallexample
1818
1819At debug time the debugger will attempt to look for the separate debug
1820info file in a set of known locations. The exact set of these
1821locations varies depending upon the distribution being used, but it
1822typically includes:
1823
1824@table @code
1825
1826@item * The same directory as the executable.
1827
1828@item * A sub-directory of the directory containing the executable
1829called .debug
1830
1831@item * A global debug directory such as /usr/lib/debug.
1832@end table
1833
1834As long as the debug info file has been installed into one of these
1835locations before the debugger is run everything should work
1836correctly.
ed1653a7 1837
1637cd90
JB
1838@item --keep-file-symbols
1839When stripping a file, perhaps with @option{--strip-debug} or
1840@option{--strip-unneeded}, retain any symbols specifying source file names,
1841which would otherwise get stripped.
1842
ed1653a7 1843@item --only-keep-debug
36d3b955
MR
1844Strip a file, removing contents of any sections that would not be
1845stripped by @option{--strip-debug} and leaving the debugging sections
c1c0eb9e 1846intact. In ELF files, this preserves all note sections in the output.
ed1653a7 1847
63b9bbb7
NC
1848Note - the section headers of the stripped sections are preserved,
1849including their sizes, but the contents of the section are discarded.
1850The section headers are preserved so that other tools can match up the
1851debuginfo file with the real executable, even if that executable has
1852been relocated to a different address space.
1853
ed1653a7
NC
1854The intention is that this option will be used in conjunction with
1855@option{--add-gnu-debuglink} to create a two part executable. One a
1856stripped binary which will occupy less space in RAM and in a
1857distribution and the second a debugging information file which is only
1858needed if debugging abilities are required. The suggested procedure
1859to create these files is as follows:
1860
b96fec5e
DK
1861@enumerate
1862@item Link the executable as normal. Assuming that is is called
1863@code{foo} then...
1864@item Run @code{objcopy --only-keep-debug foo foo.dbg} to
1865create a file containing the debugging info.
1866@item Run @code{objcopy --strip-debug foo} to create a
1867stripped executable.
1868@item Run @code{objcopy --add-gnu-debuglink=foo.dbg foo}
1869to add a link to the debugging info into the stripped executable.
1870@end enumerate
1871
1872Note---the choice of @code{.dbg} as an extension for the debug info
1873file is arbitrary. Also the @code{--only-keep-debug} step is
1874optional. You could instead do this:
1875
1876@enumerate
1877@item Link the executable as normal.
1878@item Copy @code{foo} to @code{foo.full}
1879@item Run @code{objcopy --strip-debug foo}
1880@item Run @code{objcopy --add-gnu-debuglink=foo.full foo}
1881@end enumerate
1882
1883i.e., the file pointed to by the @option{--add-gnu-debuglink} can be the
1884full executable. It does not have to be a file created by the
1885@option{--only-keep-debug} switch.
1886
1887Note---this switch is only intended for use on fully linked files. It
1888does not make sense to use it on object files where the debugging
1889information may be incomplete. Besides the gnu_debuglink feature
1890currently only supports the presence of one filename containing
1891debugging information, not multiple filenames on a one-per-object-file
1892basis.
1893
96109726
CC
1894@item --strip-dwo
1895Remove the contents of all DWARF .dwo sections, leaving the
1896remaining debugging sections and all symbols intact.
1897This option is intended for use by the compiler as part of
1898the @option{-gsplit-dwarf} option, which splits debug information
1899between the .o file and a separate .dwo file. The compiler
1900generates all debug information in the same file, then uses
1901the @option{--extract-dwo} option to copy the .dwo sections to
1902the .dwo file, then the @option{--strip-dwo} option to remove
1903those sections from the original .o file.
1904
1905@item --extract-dwo
1906Extract the contents of all DWARF .dwo sections. See the
1907@option{--strip-dwo} option for more information.
1908
92dd4511
L
1909@item --file-alignment @var{num}
1910Specify the file alignment. Sections in the file will always begin at
1911file offsets which are multiples of this number. This defaults to
1912512.
1913[This option is specific to PE targets.]
1914
1915@item --heap @var{reserve}
1916@itemx --heap @var{reserve},@var{commit}
1917Specify the number of bytes of memory to reserve (and optionally commit)
1918to be used as heap for this program.
1919[This option is specific to PE targets.]
1920
1921@item --image-base @var{value}
1922Use @var{value} as the base address of your program or dll. This is
1923the lowest memory location that will be used when your program or dll
1924is loaded. To reduce the need to relocate and improve performance of
1925your dlls, each should have a unique base address and not overlap any
1926other dlls. The default is 0x400000 for executables, and 0x10000000
1927for dlls.
1928[This option is specific to PE targets.]
1929
1930@item --section-alignment @var{num}
1931Sets the section alignment. Sections in memory will always begin at
1932addresses which are a multiple of this number. Defaults to 0x1000.
1933[This option is specific to PE targets.]
1934
1935@item --stack @var{reserve}
1936@itemx --stack @var{reserve},@var{commit}
1937Specify the number of bytes of memory to reserve (and optionally commit)
1938to be used as stack for this program.
1939[This option is specific to PE targets.]
1940
1941@item --subsystem @var{which}
1942@itemx --subsystem @var{which}:@var{major}
1943@itemx --subsystem @var{which}:@var{major}.@var{minor}
1944Specifies the subsystem under which your program will execute. The
1945legal values for @var{which} are @code{native}, @code{windows},
1946@code{console}, @code{posix}, @code{efi-app}, @code{efi-bsd},
d9118602 1947@code{efi-rtd}, @code{sal-rtd}, and @code{xbox}. You may optionally set
92dd4511
L
1948the subsystem version also. Numeric values are also accepted for
1949@var{which}.
1950[This option is specific to PE targets.]
1951
d3e52d40
RS
1952@item --extract-symbol
1953Keep the file's section flags and symbols but remove all section data.
1954Specifically, the option:
1955
1956@itemize
d3e52d40
RS
1957@item removes the contents of all sections;
1958@item sets the size of every section to zero; and
1959@item sets the file's start address to zero.
1960@end itemize
c1c0eb9e 1961
d3e52d40
RS
1962This option is used to build a @file{.sym} file for a VxWorks kernel.
1963It can also be a useful way of reducing the size of a @option{--just-symbols}
1964linker input file.
1965
4a114e3e 1966@item --compress-debug-sections
19a7fe52
L
1967Compress DWARF debug sections using zlib with SHF_COMPRESSED from the
1968ELF ABI. Note - if compression would actually make a section
1969@emph{larger}, then it is not compressed.
4a114e3e 1970
151411f8
L
1971@item --compress-debug-sections=none
1972@itemx --compress-debug-sections=zlib
1973@itemx --compress-debug-sections=zlib-gnu
1974@itemx --compress-debug-sections=zlib-gabi
1975For ELF files, these options control how DWARF debug sections are
1976compressed. @option{--compress-debug-sections=none} is equivalent
96d491cf 1977to @option{--decompress-debug-sections}.
151411f8 1978@option{--compress-debug-sections=zlib} and
19a7fe52 1979@option{--compress-debug-sections=zlib-gabi} are equivalent to
151411f8 1980@option{--compress-debug-sections}.
19a7fe52
L
1981@option{--compress-debug-sections=zlib-gnu} compresses DWARF debug
1982sections using zlib. The debug sections are renamed to begin with
1983@samp{.zdebug} instead of @samp{.debug}. Note - if compression would
1984actually make a section @emph{larger}, then it is not compressed nor
1985renamed.
151411f8 1986
4a114e3e 1987@item --decompress-debug-sections
273a4985
JT
1988Decompress DWARF debug sections using zlib. The original section
1989names of the compressed sections are restored.
4a114e3e 1990
b8871f35
L
1991@item --elf-stt-common=yes
1992@itemx --elf-stt-common=no
1993For ELF files, these options control whether common symbols should be
1994converted to the @code{STT_COMMON} or @code{STT_OBJECT} type.
1995@option{--elf-stt-common=yes} converts common symbol type to
1996@code{STT_COMMON}. @option{--elf-stt-common=no} converts common symbol
1997type to @code{STT_OBJECT}.
1998
9ef920e9
NC
1999@item --merge-notes
2000For ELF files, attempt to reduce the size of any SHT_NOTE type
2001sections by removing duplicate notes.
2002
252b5132
RH
2003@item -V
2004@itemx --version
c7c55b78 2005Show the version number of @command{objcopy}.
252b5132
RH
2006
2007@item -v
2008@itemx --verbose
2009Verbose output: list all object files modified. In the case of
2010archives, @samp{objcopy -V} lists all members of the archive.
2011
2012@item --help
c7c55b78 2013Show a summary of the options to @command{objcopy}.
7c29036b
NC
2014
2015@item --info
2016Display a list showing all architectures and object formats available.
252b5132
RH
2017@end table
2018
0285c67d
NC
2019@c man end
2020
2021@ignore
2022@c man begin SEEALSO objcopy
2023ld(1), objdump(1), and the Info entries for @file{binutils}.
2024@c man end
2025@end ignore
2026
252b5132
RH
2027@node objdump
2028@chapter objdump
2029
2030@cindex object file information
2031@kindex objdump
2032
0285c67d
NC
2033@c man title objdump display information from object files.
2034
252b5132 2035@smallexample
0285c67d 2036@c man begin SYNOPSIS objdump
c7c55b78
NC
2037objdump [@option{-a}|@option{--archive-headers}]
2038 [@option{-b} @var{bfdname}|@option{--target=@var{bfdname}}]
2039 [@option{-C}|@option{--demangle}[=@var{style}] ]
2040 [@option{-d}|@option{--disassemble}]
2041 [@option{-D}|@option{--disassemble-all}]
2042 [@option{-z}|@option{--disassemble-zeroes}]
2043 [@option{-EB}|@option{-EL}|@option{--endian=}@{big | little @}]
2044 [@option{-f}|@option{--file-headers}]
98ec6e72 2045 [@option{-F}|@option{--file-offsets}]
c7c55b78
NC
2046 [@option{--file-start-context}]
2047 [@option{-g}|@option{--debugging}]
51cdc6e0 2048 [@option{-e}|@option{--debugging-tags}]
c7c55b78
NC
2049 [@option{-h}|@option{--section-headers}|@option{--headers}]
2050 [@option{-i}|@option{--info}]
2051 [@option{-j} @var{section}|@option{--section=}@var{section}]
2052 [@option{-l}|@option{--line-numbers}]
2053 [@option{-S}|@option{--source}]
2054 [@option{-m} @var{machine}|@option{--architecture=}@var{machine}]
2055 [@option{-M} @var{options}|@option{--disassembler-options=}@var{options}]
2056 [@option{-p}|@option{--private-headers}]
6abcee90 2057 [@option{-P} @var{options}|@option{--private=}@var{options}]
c7c55b78
NC
2058 [@option{-r}|@option{--reloc}]
2059 [@option{-R}|@option{--dynamic-reloc}]
2060 [@option{-s}|@option{--full-contents}]
f9f0e732 2061 [@option{-W[lLiaprmfFsoRt]}|
c4416f30
NC
2062 @option{--dwarf}[=rawline,=decodedline,=info,=abbrev,=pubnames]
2063 [=aranges,=macro,=frames,=frames-interp,=str,=loc]
2064 [=Ranges,=pubtypes,=trace_info,=trace_abbrev]
2065 [=trace_aranges,=gdb_index]
c7c55b78
NC
2066 [@option{-G}|@option{--stabs}]
2067 [@option{-t}|@option{--syms}]
2068 [@option{-T}|@option{--dynamic-syms}]
2069 [@option{-x}|@option{--all-headers}]
2070 [@option{-w}|@option{--wide}]
2071 [@option{--start-address=}@var{address}]
2072 [@option{--stop-address=}@var{address}]
2073 [@option{--prefix-addresses}]
2074 [@option{--[no-]show-raw-insn}]
2075 [@option{--adjust-vma=}@var{offset}]
b2a40aa5
TG
2076 [@option{--dwarf-depth=@var{n}}]
2077 [@option{--dwarf-start=@var{n}}]
3c9458e9 2078 [@option{--special-syms}]
0dafdf3f
L
2079 [@option{--prefix=}@var{prefix}]
2080 [@option{--prefix-strip=}@var{level}]
3dcb3fcb 2081 [@option{--insn-width=}@var{width}]
c7c55b78
NC
2082 [@option{-V}|@option{--version}]
2083 [@option{-H}|@option{--help}]
252b5132 2084 @var{objfile}@dots{}
0285c67d 2085@c man end
252b5132
RH
2086@end smallexample
2087
0285c67d
NC
2088@c man begin DESCRIPTION objdump
2089
c7c55b78 2090@command{objdump} displays information about one or more object files.
252b5132
RH
2091The options control what particular information to display. This
2092information is mostly useful to programmers who are working on the
2093compilation tools, as opposed to programmers who just want their
2094program to compile and work.
2095
2096@var{objfile}@dots{} are the object files to be examined. When you
c7c55b78 2097specify archives, @command{objdump} shows information on each of the member
252b5132
RH
2098object files.
2099
0285c67d
NC
2100@c man end
2101
2102@c man begin OPTIONS objdump
2103
252b5132 2104The long and short forms of options, shown here as alternatives, are
1dada9c5 2105equivalent. At least one option from the list
6abcee90 2106@option{-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x} must be given.
252b5132 2107
c7c55b78 2108@table @env
252b5132
RH
2109@item -a
2110@itemx --archive-header
2111@cindex archive headers
2112If any of the @var{objfile} files are archives, display the archive
2113header information (in a format similar to @samp{ls -l}). Besides the
2114information you could list with @samp{ar tv}, @samp{objdump -a} shows
2115the object file format of each archive member.
2116
2117@item --adjust-vma=@var{offset}
2118@cindex section addresses in objdump
2119@cindex VMA in objdump
2120When dumping information, first add @var{offset} to all the section
2121addresses. This is useful if the section addresses do not correspond to
2122the symbol table, which can happen when putting sections at particular
2123addresses when using a format which can not represent section addresses,
2124such as a.out.
2125
2126@item -b @var{bfdname}
2127@itemx --target=@var{bfdname}
2128@cindex object code format
2129Specify that the object-code format for the object files is
2130@var{bfdname}. This option may not be necessary; @var{objdump} can
2131automatically recognize many formats.
2132
2133For example,
2134@example
2135objdump -b oasys -m vax -h fu.o
2136@end example
2137@noindent
c7c55b78
NC
2138displays summary information from the section headers (@option{-h}) of
2139@file{fu.o}, which is explicitly identified (@option{-m}) as a VAX object
252b5132 2140file in the format produced by Oasys compilers. You can list the
c7c55b78 2141formats available with the @option{-i} option.
252b5132
RH
2142@xref{Target Selection}, for more information.
2143
2144@item -C
28c309a2 2145@itemx --demangle[=@var{style}]
252b5132
RH
2146@cindex demangling in objdump
2147Decode (@dfn{demangle}) low-level symbol names into user-level names.
2148Besides removing any initial underscore prepended by the system, this
28c309a2 2149makes C++ function names readable. Different compilers have different
c1c0eb9e
RM
2150mangling styles. The optional demangling style argument can be used to
2151choose an appropriate demangling style for your compiler. @xref{c++filt},
28c309a2 2152for more information on demangling.
252b5132 2153
947ed062
NC
2154@item -g
2155@itemx --debugging
b922d590
NC
2156Display debugging information. This attempts to parse STABS and IEEE
2157debugging format information stored in the file and print it out using
2158a C like syntax. If neither of these formats are found this option
2159falls back on the @option{-W} option to print any DWARF information in
2160the file.
252b5132 2161
51cdc6e0
NC
2162@item -e
2163@itemx --debugging-tags
2164Like @option{-g}, but the information is generated in a format compatible
2165with ctags tool.
2166
252b5132
RH
2167@item -d
2168@itemx --disassemble
2169@cindex disassembling object code
2170@cindex machine instructions
2171Display the assembler mnemonics for the machine instructions from
2172@var{objfile}. This option only disassembles those sections which are
2173expected to contain instructions.
2174
2175@item -D
2176@itemx --disassemble-all
c7c55b78 2177Like @option{-d}, but disassemble the contents of all sections, not just
252b5132
RH
2178those expected to contain instructions.
2179
bdc4de1b
NC
2180This option also has a subtle effect on the disassembly of
2181instructions in code sections. When option @option{-d} is in effect
2182objdump will assume that any symbols present in a code section occur
2183on the boundary between instructions and it will refuse to disassemble
2184across such a boundary. When option @option{-D} is in effect however
2185this assumption is supressed. This means that it is possible for the
2186output of @option{-d} and @option{-D} to differ if, for example, data
2187is stored in code sections.
2188
0313a2b8
NC
2189If the target is an ARM architecture this switch also has the effect
2190of forcing the disassembler to decode pieces of data found in code
2191sections as if they were instructions.
2192
252b5132
RH
2193@item --prefix-addresses
2194When disassembling, print the complete address on each line. This is
2195the older disassembly format.
2196
252b5132
RH
2197@item -EB
2198@itemx -EL
2199@itemx --endian=@{big|little@}
2200@cindex endianness
2201@cindex disassembly endianness
2202Specify the endianness of the object files. This only affects
2203disassembly. This can be useful when disassembling a file format which
2204does not describe endianness information, such as S-records.
2205
2206@item -f
947ed062 2207@itemx --file-headers
252b5132
RH
2208@cindex object file header
2209Display summary information from the overall header of
2210each of the @var{objfile} files.
2211
98ec6e72
NC
2212@item -F
2213@itemx --file-offsets
2214@cindex object file offsets
2215When disassembling sections, whenever a symbol is displayed, also
2216display the file offset of the region of data that is about to be
2217dumped. If zeroes are being skipped, then when disassembly resumes,
2218tell the user how many zeroes were skipped and the file offset of the
32760852
NC
2219location from where the disassembly resumes. When dumping sections,
2220display the file offset of the location from where the dump starts.
98ec6e72 2221
f1563258
TW
2222@item --file-start-context
2223@cindex source code context
2224Specify that when displaying interlisted source code/disassembly
c7c55b78 2225(assumes @option{-S}) from a file that has not yet been displayed, extend the
f1563258
TW
2226context to the start of the file.
2227
252b5132 2228@item -h
947ed062
NC
2229@itemx --section-headers
2230@itemx --headers
252b5132
RH
2231@cindex section headers
2232Display summary information from the section headers of the
2233object file.
2234
2235File segments may be relocated to nonstandard addresses, for example by
c7c55b78
NC
2236using the @option{-Ttext}, @option{-Tdata}, or @option{-Tbss} options to
2237@command{ld}. However, some object file formats, such as a.out, do not
252b5132 2238store the starting address of the file segments. In those situations,
c7c55b78 2239although @command{ld} relocates the sections correctly, using @samp{objdump
252b5132
RH
2240-h} to list the file section headers cannot show the correct addresses.
2241Instead, it shows the usual addresses, which are implicit for the
2242target.
2243
91f68a68
MG
2244Note, in some cases it is possible for a section to have both the
2245READONLY and the NOREAD attributes set. In such cases the NOREAD
2246attribute takes precedence, but @command{objdump} will report both
2247since the exact setting of the flag bits might be important.
2248
947ed062
NC
2249@item -H
2250@itemx --help
c7c55b78 2251Print a summary of the options to @command{objdump} and exit.
252b5132
RH
2252
2253@item -i
2254@itemx --info
2255@cindex architectures available
2256@cindex object formats available
2257Display a list showing all architectures and object formats available
c7c55b78 2258for specification with @option{-b} or @option{-m}.
252b5132
RH
2259
2260@item -j @var{name}
2261@itemx --section=@var{name}
2262@cindex section information
2263Display information only for section @var{name}.
2264
2265@item -l
2266@itemx --line-numbers
2267@cindex source filenames for object files
2268Label the display (using debugging information) with the filename and
2269source line numbers corresponding to the object code or relocs shown.
c7c55b78 2270Only useful with @option{-d}, @option{-D}, or @option{-r}.
252b5132
RH
2271
2272@item -m @var{machine}
2273@itemx --architecture=@var{machine}
2274@cindex architecture
2275@cindex disassembly architecture
2276Specify the architecture to use when disassembling object files. This
2277can be useful when disassembling object files which do not describe
2278architecture information, such as S-records. You can list the available
c7c55b78 2279architectures with the @option{-i} option.
252b5132 2280
0313a2b8
NC
2281If the target is an ARM architecture then this switch has an
2282additional effect. It restricts the disassembly to only those
2283instructions supported by the architecture specified by @var{machine}.
2284If it is necessary to use this switch because the input file does not
2285contain any architecture information, but it is also desired to
2286disassemble all the instructions use @option{-marm}.
2287
dd92f639
NC
2288@item -M @var{options}
2289@itemx --disassembler-options=@var{options}
2290Pass target specific information to the disassembler. Only supported on
31e0f3cd
NC
2291some targets. If it is necessary to specify more than one
2292disassembler option then multiple @option{-M} options can be used or
2293can be placed together into a comma separated list.
dd92f639 2294
7982a1dd
NC
2295For ARC, @option{dsp} controls the printing of DSP instructions,
2296@option{spfp} selects the printing of FPX single precision FP
2297instructions, @option{dpfp} selects the printing of FPX double
2298precision FP instructions, @option{quarkse_em} selects the printing of
2299special QuarkSE-EM instructions, @option{fpuda} selects the printing
2300of double precision assist instructions, @option{fpus} selects the
2301printing of FPU single precision FP instructions, while @option{fpud}
2302selects the printing of FPU souble precision FP instructions.
37fd5ef3 2303
dd92f639
NC
2304If the target is an ARM architecture then this switch can be used to
2305select which register name set is used during disassembler. Specifying
9c092ace 2306@option{-M reg-names-std} (the default) will select the register names as
58efb6c0
NC
2307used in ARM's instruction set documentation, but with register 13 called
2308'sp', register 14 called 'lr' and register 15 called 'pc'. Specifying
c7c55b78
NC
2309@option{-M reg-names-apcs} will select the name set used by the ARM
2310Procedure Call Standard, whilst specifying @option{-M reg-names-raw} will
58efb6c0
NC
2311just use @samp{r} followed by the register number.
2312
2313There are also two variants on the APCS register naming scheme enabled
c7c55b78
NC
2314by @option{-M reg-names-atpcs} and @option{-M reg-names-special-atpcs} which
2315use the ARM/Thumb Procedure Call Standard naming conventions. (Either
947ed062 2316with the normal register names or the special register names).
dd92f639 2317
8f915f68 2318This option can also be used for ARM architectures to force the
c36774d6 2319disassembler to interpret all instructions as Thumb instructions by
c7c55b78 2320using the switch @option{--disassembler-options=force-thumb}. This can be
8f915f68
NC
2321useful when attempting to disassemble thumb code produced by other
2322compilers.
2323
e396998b
AM
2324For the x86, some of the options duplicate functions of the @option{-m}
2325switch, but allow finer grained control. Multiple selections from the
2326following may be specified as a comma separated string.
c4416f30
NC
2327@table @code
2328@item x86-64
2329@itemx i386
2330@itemx i8086
2331Select disassembly for the given architecture.
2332
2333@item intel
2334@itemx att
2335Select between intel syntax mode and AT&T syntax mode.
2336
5db04b09
L
2337@item amd64
2338@itemx intel64
2339Select between AMD64 ISA and Intel64 ISA.
2340
c4416f30
NC
2341@item intel-mnemonic
2342@itemx att-mnemonic
2343Select between intel mnemonic mode and AT&T mnemonic mode.
2344Note: @code{intel-mnemonic} implies @code{intel} and
2345@code{att-mnemonic} implies @code{att}.
2346
2347@item addr64
2348@itemx addr32
2349@itemx addr16
2350@itemx data32
2351@itemx data16
2352Specify the default address size and operand size. These four options
2353will be overridden if @code{x86-64}, @code{i386} or @code{i8086}
2354appear later in the option string.
2355
2356@item suffix
2357When in AT&T mode, instructs the disassembler to print a mnemonic
2358suffix even when the suffix could be inferred by the operands.
2359@end table
e396998b 2360
2f3bb96a
BE
2361For PowerPC, @option{booke} controls the disassembly of BookE
2362instructions. @option{32} and @option{64} select PowerPC and
2363PowerPC64 disassembly, respectively. @option{e300} selects
2364disassembly for the e300 family. @option{440} selects disassembly for
2365the PowerPC 440. @option{ppcps} selects disassembly for the paired
2366single instructions of the PPC750CL.
802a735e 2367
b45619c0 2368For MIPS, this option controls the printing of instruction mnemonic
e39893d7
FF
2369names and register names in disassembled instructions. Multiple
2370selections from the following may be specified as a comma separated
2371string, and invalid options are ignored:
640c0ccd
CD
2372
2373@table @code
e39893d7 2374@item no-aliases
b45619c0
NC
2375Print the 'raw' instruction mnemonic instead of some pseudo
2376instruction mnemonic. I.e., print 'daddu' or 'or' instead of 'move',
e39893d7
FF
2377'sll' instead of 'nop', etc.
2378
a9f58168
CF
2379@item msa
2380Disassemble MSA instructions.
2381
b015e599
AP
2382@item virt
2383Disassemble the virtualization ASE instructions.
2384
7d64c587
AB
2385@item xpa
2386Disassemble the eXtended Physical Address (XPA) ASE instructions.
2387
640c0ccd
CD
2388@item gpr-names=@var{ABI}
2389Print GPR (general-purpose register) names as appropriate
2390for the specified ABI. By default, GPR names are selected according to
2391the ABI of the binary being disassembled.
2392
2393@item fpr-names=@var{ABI}
2394Print FPR (floating-point register) names as
2395appropriate for the specified ABI. By default, FPR numbers are printed
2396rather than names.
2397
2398@item cp0-names=@var{ARCH}
2399Print CP0 (system control coprocessor; coprocessor 0) register names
2400as appropriate for the CPU or architecture specified by
2401@var{ARCH}. By default, CP0 register names are selected according to
2402the architecture and CPU of the binary being disassembled.
2403
af7ee8bf
CD
2404@item hwr-names=@var{ARCH}
2405Print HWR (hardware register, used by the @code{rdhwr} instruction) names
2406as appropriate for the CPU or architecture specified by
2407@var{ARCH}. By default, HWR names are selected according to
2408the architecture and CPU of the binary being disassembled.
2409
640c0ccd
CD
2410@item reg-names=@var{ABI}
2411Print GPR and FPR names as appropriate for the selected ABI.
2412
2413@item reg-names=@var{ARCH}
af7ee8bf
CD
2414Print CPU-specific register names (CP0 register and HWR names)
2415as appropriate for the selected CPU or architecture.
640c0ccd
CD
2416@end table
2417
2418For any of the options listed above, @var{ABI} or
2419@var{ARCH} may be specified as @samp{numeric} to have numbers printed
2420rather than names, for the selected types of registers.
2421You can list the available values of @var{ABI} and @var{ARCH} using
2422the @option{--help} option.
2423
ec72cfe5
NC
2424For VAX, you can specify function entry addresses with @option{-M
2425entry:0xf00ba}. You can use this multiple times to properly
2426disassemble VAX binary files that don't contain symbol tables (like
2427ROM dumps). In these cases, the function entry mask would otherwise
b45619c0 2428be decoded as VAX instructions, which would probably lead the rest
ec72cfe5
NC
2429of the function being wrongly disassembled.
2430
252b5132
RH
2431@item -p
2432@itemx --private-headers
2433Print information that is specific to the object file format. The exact
2434information printed depends upon the object file format. For some
2435object file formats, no additional information is printed.
2436
6abcee90
TG
2437@item -P @var{options}
2438@itemx --private=@var{options}
2439Print information that is specific to the object file format. The
2440argument @var{options} is a comma separated list that depends on the
2441format (the lists of options is displayed with the help).
2442
c4416f30
NC
2443For XCOFF, the available options are:
2444@table @code
2445@item header
2446@item aout
2447@item sections
2448@item syms
2449@item relocs
2450@item lineno,
2451@item loader
2452@item except
2453@item typchk
2454@item traceback
2455@item toc
2456@item ldinfo
2457@end table
2458
2459Not all object formats support this option. In particular the ELF
2460format does not use it.
6abcee90 2461
252b5132
RH
2462@item -r
2463@itemx --reloc
2464@cindex relocation entries, in object file
c7c55b78
NC
2465Print the relocation entries of the file. If used with @option{-d} or
2466@option{-D}, the relocations are printed interspersed with the
252b5132
RH
2467disassembly.
2468
2469@item -R
2470@itemx --dynamic-reloc
2471@cindex dynamic relocation entries, in object file
2472Print the dynamic relocation entries of the file. This is only
2473meaningful for dynamic objects, such as certain types of shared
840b96a7
AM
2474libraries. As for @option{-r}, if used with @option{-d} or
2475@option{-D}, the relocations are printed interspersed with the
2476disassembly.
252b5132
RH
2477
2478@item -s
2479@itemx --full-contents
2480@cindex sections, full contents
2481@cindex object file sections
155e0d23
NC
2482Display the full contents of any sections requested. By default all
2483non-empty sections are displayed.
252b5132
RH
2484
2485@item -S
2486@itemx --source
2487@cindex source disassembly
2488@cindex disassembly, with source
2489Display source code intermixed with disassembly, if possible. Implies
c7c55b78 2490@option{-d}.
252b5132 2491
0dafdf3f
L
2492@item --prefix=@var{prefix}
2493@cindex Add prefix to absolute paths
2494Specify @var{prefix} to add to the absolute paths when used with
b3364cb9 2495@option{-S}.
0dafdf3f
L
2496
2497@item --prefix-strip=@var{level}
2498@cindex Strip absolute paths
2499Indicate how many initial directory names to strip off the hardwired
2500absolute paths. It has no effect without @option{--prefix=}@var{prefix}.
2501
252b5132
RH
2502@item --show-raw-insn
2503When disassembling instructions, print the instruction in hex as well as
2504in symbolic form. This is the default except when
c7c55b78 2505@option{--prefix-addresses} is used.
252b5132
RH
2506
2507@item --no-show-raw-insn
2508When disassembling instructions, do not print the instruction bytes.
c7c55b78 2509This is the default when @option{--prefix-addresses} is used.
252b5132 2510
3dcb3fcb 2511@item --insn-width=@var{width}
b3364cb9 2512@cindex Instruction width
3dcb3fcb
L
2513Display @var{width} bytes on a single line when disassembling
2514instructions.
2515
f9f0e732 2516@item -W[lLiaprmfFsoRt]
c4416f30
NC
2517@itemx --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames]
2518@itemx --dwarf[=aranges,=macro,=frames,=frames-interp,=str,=loc]
2519@itemx --dwarf[=Ranges,=pubtypes,=trace_info,=trace_abbrev]
2520@itemx --dwarf[=trace_aranges,=gdb_index]
4de2ad99
L
2521@cindex DWARF
2522@cindex debug symbols
4cb93e3b
TG
2523Displays the contents of the debug sections in the file, if any are
2524present. If one of the optional letters or words follows the switch
2525then only data found in those specific sections will be dumped.
4de2ad99 2526
6f875884 2527Note that there is no single letter option to display the content of
5bbdf3d5 2528trace sections or .gdb_index.
6f875884 2529
fd2f0033 2530Note: the output from the @option{=info} option can also be affected
4723351a
CC
2531by the options @option{--dwarf-depth}, the @option{--dwarf-start} and
2532the @option{--dwarf-check}.
fd2f0033
TT
2533
2534@item --dwarf-depth=@var{n}
2535Limit the dump of the @code{.debug_info} section to @var{n} children.
2536This is only useful with @option{--dwarf=info}. The default is
2537to print all DIEs; the special value 0 for @var{n} will also have this
2538effect.
2539
2540With a non-zero value for @var{n}, DIEs at or deeper than @var{n}
2541levels will not be printed. The range for @var{n} is zero-based.
2542
2543@item --dwarf-start=@var{n}
2544Print only DIEs beginning with the DIE numbered @var{n}. This is only
2545useful with @option{--dwarf=info}.
2546
2547If specified, this option will suppress printing of any header
2548information and all DIEs before the DIE numbered @var{n}. Only
2549siblings and children of the specified DIE will be printed.
2550
2551This can be used in conjunction with @option{--dwarf-depth}.
2552
4723351a
CC
2553@item --dwarf-check
2554Enable additional checks for consistency of Dwarf information.
2555
1dada9c5 2556@item -G
947ed062 2557@itemx --stabs
252b5132
RH
2558@cindex stab
2559@cindex .stab
2560@cindex debug symbols
2561@cindex ELF object file format
2562Display the full contents of any sections requested. Display the
2563contents of the .stab and .stab.index and .stab.excl sections from an
2564ELF file. This is only useful on systems (such as Solaris 2.0) in which
2565@code{.stab} debugging symbol-table entries are carried in an ELF
2566section. In most other file formats, debugging symbol-table entries are
c7c55b78 2567interleaved with linkage symbols, and are visible in the @option{--syms}
0285c67d 2568output.
252b5132
RH
2569
2570@item --start-address=@var{address}
2571@cindex start-address
2572Start displaying data at the specified address. This affects the output
c7c55b78 2573of the @option{-d}, @option{-r} and @option{-s} options.
252b5132
RH
2574
2575@item --stop-address=@var{address}
2576@cindex stop-address
2577Stop displaying data at the specified address. This affects the output
c7c55b78 2578of the @option{-d}, @option{-r} and @option{-s} options.
252b5132
RH
2579
2580@item -t
2581@itemx --syms
2582@cindex symbol table entries, printing
2583Print the symbol table entries of the file.
a1039809
NC
2584This is similar to the information provided by the @samp{nm} program,
2585although the display format is different. The format of the output
2586depends upon the format of the file being dumped, but there are two main
2587types. One looks like this:
2588
2589@smallexample
2590[ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss
2591[ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
2592@end smallexample
2593
2594where the number inside the square brackets is the number of the entry
2595in the symbol table, the @var{sec} number is the section number, the
2596@var{fl} value are the symbol's flag bits, the @var{ty} number is the
2597symbol's type, the @var{scl} number is the symbol's storage class and
2598the @var{nx} value is the number of auxilary entries associated with
2599the symbol. The last two fields are the symbol's value and its name.
2600
2601The other common output format, usually seen with ELF based files,
2602looks like this:
2603
2604@smallexample
260500000000 l d .bss 00000000 .bss
260600000000 g .text 00000000 fred
2607@end smallexample
2608
2609Here the first number is the symbol's value (sometimes refered to as
2610its address). The next field is actually a set of characters and
2611spaces indicating the flag bits that are set on the symbol. These
af3e16d9
NC
2612characters are described below. Next is the section with which the
2613symbol is associated or @emph{*ABS*} if the section is absolute (ie
2614not connected with any section), or @emph{*UND*} if the section is
2615referenced in the file being dumped, but not defined there.
2616
2617After the section name comes another field, a number, which for common
2618symbols is the alignment and for other symbol is the size. Finally
2619the symbol's name is displayed.
a1039809
NC
2620
2621The flag characters are divided into 7 groups as follows:
2622@table @code
2623@item l
2624@itemx g
3e7a7d11 2625@itemx u
a1039809 2626@itemx !
3e7a7d11
NC
2627The symbol is a local (l), global (g), unique global (u), neither
2628global nor local (a space) or both global and local (!). A
928a4139 2629symbol can be neither local or global for a variety of reasons, e.g.,
a1039809 2630because it is used for debugging, but it is probably an indication of
3e7a7d11
NC
2631a bug if it is ever both local and global. Unique global symbols are
2632a GNU extension to the standard set of ELF symbol bindings. For such
2633a symbol the dynamic linker will make sure that in the entire process
2634there is just one symbol with this name and type in use.
a1039809
NC
2635
2636@item w
2637The symbol is weak (w) or strong (a space).
2638
2639@item C
2640The symbol denotes a constructor (C) or an ordinary symbol (a space).
2641
2642@item W
2643The symbol is a warning (W) or a normal symbol (a space). A warning
2644symbol's name is a message to be displayed if the symbol following the
2645warning symbol is ever referenced.
2646
2647@item I
171191ba
NC
2648@item i
2649The symbol is an indirect reference to another symbol (I), a function
2650to be evaluated during reloc processing (i) or a normal symbol (a
2651space).
a1039809
NC
2652
2653@item d
2654@itemx D
2655The symbol is a debugging symbol (d) or a dynamic symbol (D) or a
2656normal symbol (a space).
2657
2658@item F
2659@item f
2660@item O
af3e16d9 2661The symbol is the name of a function (F) or a file (f) or an object
a1039809
NC
2662(O) or just a normal symbol (a space).
2663@end table
252b5132
RH
2664
2665@item -T
2666@itemx --dynamic-syms
2667@cindex dynamic symbol table entries, printing
2668Print the dynamic symbol table entries of the file. This is only
2669meaningful for dynamic objects, such as certain types of shared
2670libraries. This is similar to the information provided by the @samp{nm}
c7c55b78 2671program when given the @option{-D} (@option{--dynamic}) option.
252b5132 2672
df2c87b5
NC
2673The output format is similar to that produced by the @option{--syms}
2674option, except that an extra field is inserted before the symbol's
2675name, giving the version information associated with the symbol.
2f7d9953
NC
2676If the version is the default version to be used when resolving
2677unversioned references to the symbol then it's displayed as is,
2678otherwise it's put into parentheses.
df2c87b5 2679
3c9458e9
NC
2680@item --special-syms
2681When displaying symbols include those which the target considers to be
2682special in some way and which would not normally be of interest to the
2683user.
2684
947ed062
NC
2685@item -V
2686@itemx --version
c7c55b78 2687Print the version number of @command{objdump} and exit.
252b5132
RH
2688
2689@item -x
947ed062 2690@itemx --all-headers
252b5132
RH
2691@cindex all header information, object file
2692@cindex header information, all
2693Display all available header information, including the symbol table and
c7c55b78 2694relocation entries. Using @option{-x} is equivalent to specifying all of
04c34128 2695@option{-a -f -h -p -r -t}.
252b5132
RH
2696
2697@item -w
2698@itemx --wide
2699@cindex wide output, printing
2700Format some lines for output devices that have more than 80 columns.
31104126 2701Also do not truncate symbol names when they are displayed.
aefbdd67
BE
2702
2703@item -z
2c0c15f9 2704@itemx --disassemble-zeroes
aefbdd67
BE
2705Normally the disassembly output will skip blocks of zeroes. This
2706option directs the disassembler to disassemble those blocks, just like
2707any other data.
252b5132
RH
2708@end table
2709
0285c67d
NC
2710@c man end
2711
2712@ignore
2713@c man begin SEEALSO objdump
2714nm(1), readelf(1), and the Info entries for @file{binutils}.
2715@c man end
2716@end ignore
2717
252b5132
RH
2718@node ranlib
2719@chapter ranlib
2720
2721@kindex ranlib
2722@cindex archive contents
2723@cindex symbol index
2724
0285c67d
NC
2725@c man title ranlib generate index to archive.
2726
252b5132 2727@smallexample
0285c67d 2728@c man begin SYNOPSIS ranlib
36e32b27 2729ranlib [@option{--plugin} @var{name}] [@option{-DhHvVt}] @var{archive}
0285c67d 2730@c man end
252b5132
RH
2731@end smallexample
2732
0285c67d
NC
2733@c man begin DESCRIPTION ranlib
2734
c7c55b78 2735@command{ranlib} generates an index to the contents of an archive and
252b5132 2736stores it in the archive. The index lists each symbol defined by a
c1c0eb9e 2737member of an archive that is a relocatable object file.
252b5132
RH
2738
2739You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
2740
2741An archive with such an index speeds up linking to the library and
2742allows routines in the library to call each other without regard to
2743their placement in the archive.
2744
c7c55b78
NC
2745The @sc{gnu} @command{ranlib} program is another form of @sc{gnu} @command{ar}; running
2746@command{ranlib} is completely equivalent to executing @samp{ar -s}.
252b5132
RH
2747@xref{ar}.
2748
0285c67d
NC
2749@c man end
2750
2751@c man begin OPTIONS ranlib
2752
c7c55b78 2753@table @env
b3364cb9
RM
2754@item -h
2755@itemx -H
2756@itemx --help
2757Show usage information for @command{ranlib}.
2758
252b5132
RH
2759@item -v
2760@itemx -V
f20a759a 2761@itemx --version
c7c55b78 2762Show the version number of @command{ranlib}.
b14f9da0 2763
b3364cb9
RM
2764@item -D
2765@cindex deterministic archives
9cb80f72 2766@kindex --enable-deterministic-archives
b3364cb9
RM
2767Operate in @emph{deterministic} mode. The symbol map archive member's
2768header will show zero for the UID, GID, and timestamp. When this
2769option is used, multiple runs will produce identical output files.
2770
e956b7d3
NC
2771If @file{binutils} was configured with
2772@option{--enable-deterministic-archives}, then this mode is on by
2773default. It can be disabled with the @samp{-U} option, described
2774below.
9cb80f72 2775
b14f9da0
NC
2776@item -t
2777Update the timestamp of the symbol map of an archive.
9cb80f72
RM
2778
2779@item -U
2780@cindex deterministic archives
2781@kindex --enable-deterministic-archives
2782Do @emph{not} operate in @emph{deterministic} mode. This is the
2783inverse of the @samp{-D} option, above: the archive index will get
2784actual UID, GID, timestamp, and file mode values.
2785
e956b7d3
NC
2786If @file{binutils} was configured @emph{without}
2787@option{--enable-deterministic-archives}, then this mode is on by
2788default.
2789
252b5132
RH
2790@end table
2791
0285c67d
NC
2792@c man end
2793
2794@ignore
2795@c man begin SEEALSO ranlib
2796ar(1), nm(1), and the Info entries for @file{binutils}.
2797@c man end
2798@end ignore
2799
252b5132
RH
2800@node size
2801@chapter size
2802
2803@kindex size
2804@cindex section sizes
2805
0285c67d
NC
2806@c man title size list section sizes and total size.
2807
252b5132 2808@smallexample
0285c67d 2809@c man begin SYNOPSIS size
c7c55b78 2810size [@option{-A}|@option{-B}|@option{--format=}@var{compatibility}]
15c82623
NC
2811 [@option{--help}]
2812 [@option{-d}|@option{-o}|@option{-x}|@option{--radix=}@var{number}]
29422971 2813 [@option{--common}]
15c82623 2814 [@option{-t}|@option{--totals}]
c1c0eb9e 2815 [@option{--target=}@var{bfdname}] [@option{-V}|@option{--version}]
c7c55b78 2816 [@var{objfile}@dots{}]
0285c67d 2817@c man end
252b5132
RH
2818@end smallexample
2819
0285c67d
NC
2820@c man begin DESCRIPTION size
2821
c7c55b78 2822The @sc{gnu} @command{size} utility lists the section sizes---and the total
252b5132
RH
2823size---for each of the object or archive files @var{objfile} in its
2824argument list. By default, one line of output is generated for each
2825object file or each module in an archive.
2826
2827@var{objfile}@dots{} are the object files to be examined.
2828If none are specified, the file @code{a.out} will be used.
2829
0285c67d
NC
2830@c man end
2831
2832@c man begin OPTIONS size
2833
252b5132
RH
2834The command line options have the following meanings:
2835
c7c55b78 2836@table @env
252b5132
RH
2837@item -A
2838@itemx -B
2839@itemx --format=@var{compatibility}
c7c55b78 2840@cindex @command{size} display format
252b5132 2841Using one of these options, you can choose whether the output from @sc{gnu}
c7c55b78
NC
2842@command{size} resembles output from System V @command{size} (using @option{-A},
2843or @option{--format=sysv}), or Berkeley @command{size} (using @option{-B}, or
2844@option{--format=berkeley}). The default is the one-line format similar to
c1c0eb9e 2845Berkeley's.
252b5132
RH
2846@c Bonus for doc-source readers: you can also say --format=strange (or
2847@c anything else that starts with 's') for sysv, and --format=boring (or
2848@c anything else that starts with 'b') for Berkeley.
2849
2850Here is an example of the Berkeley (default) format of output from
c1c0eb9e 2851@command{size}:
252b5132 2852@smallexample
f20a759a 2853$ size --format=Berkeley ranlib size
252b5132
RH
2854text data bss dec hex filename
2855294880 81920 11592 388392 5ed28 ranlib
2856294880 81920 11888 388688 5ee50 size
2857@end smallexample
2858
2859@noindent
2860This is the same data, but displayed closer to System V conventions:
2861
2862@smallexample
f20a759a 2863$ size --format=SysV ranlib size
252b5132
RH
2864ranlib :
2865section size addr
c1c0eb9e
RM
2866.text 294880 8192
2867.data 81920 303104
2868.bss 11592 385024
2869Total 388392
252b5132
RH
2870
2871
2872size :
2873section size addr
c1c0eb9e
RM
2874.text 294880 8192
2875.data 81920 303104
2876.bss 11888 385024
2877Total 388688
252b5132
RH
2878@end smallexample
2879
2880@item --help
2881Show a summary of acceptable arguments and options.
2882
2883@item -d
2884@itemx -o
2885@itemx -x
2886@itemx --radix=@var{number}
c7c55b78 2887@cindex @command{size} number format
252b5132
RH
2888@cindex radix for section sizes
2889Using one of these options, you can control whether the size of each
c7c55b78
NC
2890section is given in decimal (@option{-d}, or @option{--radix=10}); octal
2891(@option{-o}, or @option{--radix=8}); or hexadecimal (@option{-x}, or
2892@option{--radix=16}). In @option{--radix=@var{number}}, only the three
252b5132 2893values (8, 10, 16) are supported. The total size is always given in two
c7c55b78
NC
2894radices; decimal and hexadecimal for @option{-d} or @option{-x} output, or
2895octal and hexadecimal if you're using @option{-o}.
252b5132 2896
29422971
AM
2897@item --common
2898Print total size of common symbols in each file. When using Berkeley
2899format these are included in the bss size.
2900
15c82623
NC
2901@item -t
2902@itemx --totals
2903Show totals of all objects listed (Berkeley format listing mode only).
2904
252b5132
RH
2905@item --target=@var{bfdname}
2906@cindex object code format
2907Specify that the object-code format for @var{objfile} is
c7c55b78 2908@var{bfdname}. This option may not be necessary; @command{size} can
252b5132
RH
2909automatically recognize many formats.
2910@xref{Target Selection}, for more information.
2911
2912@item -V
2913@itemx --version
c7c55b78 2914Display the version number of @command{size}.
252b5132
RH
2915@end table
2916
0285c67d
NC
2917@c man end
2918
2919@ignore
2920@c man begin SEEALSO size
2921ar(1), objdump(1), readelf(1), and the Info entries for @file{binutils}.
2922@c man end
2923@end ignore
2924
252b5132
RH
2925@node strings
2926@chapter strings
2927@kindex strings
2928@cindex listings strings
2929@cindex printing strings
2930@cindex strings, printing
2931
0285c67d
NC
2932@c man title strings print the strings of printable characters in files.
2933
252b5132 2934@smallexample
0285c67d 2935@c man begin SYNOPSIS strings
ffbe5983 2936strings [@option{-afovV}] [@option{-}@var{min-len}]
d132876a
NC
2937 [@option{-n} @var{min-len}] [@option{--bytes=}@var{min-len}]
2938 [@option{-t} @var{radix}] [@option{--radix=}@var{radix}]
2939 [@option{-e} @var{encoding}] [@option{--encoding=}@var{encoding}]
2940 [@option{-}] [@option{--all}] [@option{--print-file-name}]
3bf31ec9 2941 [@option{-T} @var{bfdname}] [@option{--target=}@var{bfdname}]
334ac421 2942 [@option{-w}] [@option{--include-all-whitespace}]
55edd97b 2943 [@option{-s}] [@option{--output-separator}@var{sep_string}]
c7c55b78 2944 [@option{--help}] [@option{--version}] @var{file}@dots{}
0285c67d 2945@c man end
252b5132
RH
2946@end smallexample
2947
0285c67d
NC
2948@c man begin DESCRIPTION strings
2949
7fac9594
NC
2950For each @var{file} given, @sc{gnu} @command{strings} prints the
2951printable character sequences that are at least 4 characters long (or
2952the number given with the options below) and are followed by an
2953unprintable character.
252b5132 2954
7fac9594
NC
2955Depending upon how the strings program was configured it will default
2956to either displaying all the printable sequences that it can find in
2957each file, or only those sequences that are in loadable, initialized
2958data sections. If the file type in unrecognizable, or if strings is
2959reading from stdin then it will always display all of the printable
2960sequences that it can find.
2961
2962For backwards compatibility any file that occurs after a command line
2963option of just @option{-} will also be scanned in full, regardless of
2964the presence of any @option{-d} option.
2965
2966@command{strings} is mainly useful for determining the contents of
2967non-text files.
252b5132 2968
0285c67d
NC
2969@c man end
2970
2971@c man begin OPTIONS strings
2972
c7c55b78 2973@table @env
252b5132
RH
2974@item -a
2975@itemx --all
2976@itemx -
7fac9594
NC
2977Scan the whole file, regardless of what sections it contains or
2978whether those sections are loaded or initialized. Normally this is
2979the default behaviour, but strings can be configured so that the
2980@option{-d} is the default instead.
2981
2982The @option{-} option is position dependent and forces strings to
2983perform full scans of any file that is mentioned after the @option{-}
2984on the command line, even if the @option{-d} option has been
2985specified.
2986
2987@item -d
2988@itemx --data
2989Only print strings from initialized, loaded data sections in the
2990file. This may reduce the amount of garbage in the output, but it
2991also exposes the strings program to any security flaws that may be
2992present in the BFD library used to scan and load sections. Strings
2993can be configured so that this option is the default behaviour. In
2994such cases the @option{-a} option can be used to avoid using the BFD
2995library and instead just print all of the strings found in the file.
252b5132
RH
2996
2997@item -f
2998@itemx --print-file-name
2999Print the name of the file before each string.
3000
3001@item --help
3002Print a summary of the program usage on the standard output and exit.
3003
3004@item -@var{min-len}
3005@itemx -n @var{min-len}
3006@itemx --bytes=@var{min-len}
3007Print sequences of characters that are at least @var{min-len} characters
3008long, instead of the default 4.
3009
3010@item -o
c7c55b78 3011Like @samp{-t o}. Some other versions of @command{strings} have @option{-o}
252b5132
RH
3012act like @samp{-t d} instead. Since we can not be compatible with both
3013ways, we simply chose one.
3014
3015@item -t @var{radix}
3016@itemx --radix=@var{radix}
3017Print the offset within the file before each string. The single
3018character argument specifies the radix of the offset---@samp{o} for
3019octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
3020
d132876a
NC
3021@item -e @var{encoding}
3022@itemx --encoding=@var{encoding}
3023Select the character encoding of the strings that are to be found.
8745eafa
NC
3024Possible values for @var{encoding} are: @samp{s} = single-7-bit-byte
3025characters (ASCII, ISO 8859, etc., default), @samp{S} =
3026single-8-bit-byte characters, @samp{b} = 16-bit bigendian, @samp{l} =
302716-bit littleendian, @samp{B} = 32-bit bigendian, @samp{L} = 32-bit
830bf75c
NC
3028littleendian. Useful for finding wide character strings. (@samp{l}
3029and @samp{b} apply to, for example, Unicode UTF-16/UCS-2 encodings).
d132876a 3030
3bf31ec9
NC
3031@item -T @var{bfdname}
3032@itemx --target=@var{bfdname}
252b5132
RH
3033@cindex object code format
3034Specify an object code format other than your system's default format.
3035@xref{Target Selection}, for more information.
3036
3037@item -v
ffbe5983 3038@itemx -V
252b5132
RH
3039@itemx --version
3040Print the program version number on the standard output and exit.
334ac421
EA
3041
3042@item -w
3043@itemx --include-all-whitespace
3044By default tab and space characters are included in the strings that
3045are displayed, but other whitespace characters, such a newlines and
3046carriage returns, are not. The @option{-w} option changes this so
3047that all whitespace characters are considered to be part of a string.
55edd97b
EA
3048
3049@item -s
3050@itemx --output-separator
3051By default, output strings are delimited by a new-line. This option
3052allows you to supply any string to be used as the output record
3053separator. Useful with --include-all-whitespace where strings
3054may contain new-lines internally.
252b5132
RH
3055@end table
3056
0285c67d
NC
3057@c man end
3058
3059@ignore
3060@c man begin SEEALSO strings
3061ar(1), nm(1), objdump(1), ranlib(1), readelf(1)
3062and the Info entries for @file{binutils}.
3063@c man end
3064@end ignore
3065
252b5132
RH
3066@node strip
3067@chapter strip
3068
3069@kindex strip
3070@cindex removing symbols
3071@cindex discarding symbols
3072@cindex symbols, discarding
3073
0285c67d
NC
3074@c man title strip Discard symbols from object files.
3075
252b5132 3076@smallexample
0285c67d 3077@c man begin SYNOPSIS strip
2593f09a
NC
3078strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname}]
3079 [@option{-I} @var{bfdname} |@option{--input-target=}@var{bfdname}]
3080 [@option{-O} @var{bfdname} |@option{--output-target=}@var{bfdname}]
3081 [@option{-s}|@option{--strip-all}]
3082 [@option{-S}|@option{-g}|@option{-d}|@option{--strip-debug}]
96109726 3083 [@option{--strip-dwo}]
2593f09a
NC
3084 [@option{-K} @var{symbolname} |@option{--keep-symbol=}@var{symbolname}]
3085 [@option{-N} @var{symbolname} |@option{--strip-symbol=}@var{symbolname}]
5fe11841 3086 [@option{-w}|@option{--wildcard}]
2593f09a
NC
3087 [@option{-x}|@option{--discard-all}] [@option{-X} |@option{--discard-locals}]
3088 [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname}]
d3e5f6c8 3089 [@option{--remove-relocations=}@var{sectionpattern}]
2593f09a 3090 [@option{-o} @var{file}] [@option{-p}|@option{--preserve-dates}]
2e30cb57 3091 [@option{-D}|@option{--enable-deterministic-archives}]
955d0b3b 3092 [@option{-U}|@option{--disable-deterministic-archives}]
1637cd90 3093 [@option{--keep-file-symbols}]
ed1653a7 3094 [@option{--only-keep-debug}]
7c29036b
NC
3095 [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}]
3096 [@option{--help}] [@option{--info}]
252b5132 3097 @var{objfile}@dots{}
0285c67d 3098@c man end
252b5132
RH
3099@end smallexample
3100
0285c67d
NC
3101@c man begin DESCRIPTION strip
3102
c7c55b78 3103@sc{gnu} @command{strip} discards all symbols from object files
252b5132
RH
3104@var{objfile}. The list of object files may include archives.
3105At least one object file must be given.
3106
c7c55b78 3107@command{strip} modifies the files named in its argument,
252b5132
RH
3108rather than writing modified copies under different names.
3109
0285c67d
NC
3110@c man end
3111
3112@c man begin OPTIONS strip
3113
c7c55b78 3114@table @env
252b5132
RH
3115@item -F @var{bfdname}
3116@itemx --target=@var{bfdname}
3117Treat the original @var{objfile} as a file with the object
3118code format @var{bfdname}, and rewrite it in the same format.
3119@xref{Target Selection}, for more information.
3120
3121@item --help
c7c55b78 3122Show a summary of the options to @command{strip} and exit.
252b5132 3123
7c29036b
NC
3124@item --info
3125Display a list showing all architectures and object formats available.
3126
947ed062 3127@item -I @var{bfdname}
252b5132
RH
3128@itemx --input-target=@var{bfdname}
3129Treat the original @var{objfile} as a file with the object
3130code format @var{bfdname}.
3131@xref{Target Selection}, for more information.
3132
3133@item -O @var{bfdname}
3134@itemx --output-target=@var{bfdname}
3135Replace @var{objfile} with a file in the output format @var{bfdname}.
3136@xref{Target Selection}, for more information.
3137
3138@item -R @var{sectionname}
3139@itemx --remove-section=@var{sectionname}
805b1c8b
AS
3140Remove any section named @var{sectionname} from the output file, in
3141addition to whatever sections would otherwise be removed. This
252b5132 3142option may be given more than once. Note that using this option
2e62b721
NC
3143inappropriately may make the output file unusable. The wildcard
3144character @samp{*} may be given at the end of @var{sectionname}. If
3145so, then any section starting with @var{sectionname} will be removed.
252b5132 3146
e511c9b1
AB
3147If the first character of @var{sectionpattern} is the exclamation
3148point (!) then matching sections will not be removed even if an
3149earlier use of @option{--remove-section} on the same command line
3150would otherwise remove it. For example:
3151
3152@smallexample
3153 --remove-section=.text.* --remove-section=!.text.foo
3154@end smallexample
3155
3156will remove all sections matching the pattern '.text.*', but will not
3157remove the section '.text.foo'.
3158
d3e5f6c8
AB
3159@item --remove-relocations=@var{sectionpattern}
3160Remove relocations from the output file for any section matching
3161@var{sectionpattern}. This option may be given more than once. Note
3162that using this option inappropriately may make the output file
3163unusable. Wildcard characters are accepted in @var{sectionpattern}.
3164For example:
3165
3166@smallexample
3167 --remove-relocations=.text.*
3168@end smallexample
3169
3170will remove the relocations for all sections matching the patter
3171'.text.*'.
3172
3173If the first character of @var{sectionpattern} is the exclamation
3174point (!) then matching sections will not have their relocation
3175removed even if an earlier use of @option{--remove-relocations} on the
3176same command line would otherwise cause the relocations to be removed.
3177For example:
3178
3179@smallexample
3180 --remove-relocations=.text.* --remove-relocations=!.text.foo
3181@end smallexample
3182
3183will remove all relocations for sections matching the pattern
3184'.text.*', but will not remove relocations for the section
3185'.text.foo'.
3186
252b5132
RH
3187@item -s
3188@itemx --strip-all
3189Remove all symbols.
3190
3191@item -g
3192@itemx -S
15c82623 3193@itemx -d
252b5132
RH
3194@itemx --strip-debug
3195Remove debugging symbols only.
96109726
CC
3196
3197@item --strip-dwo
3198Remove the contents of all DWARF .dwo sections, leaving the
3199remaining debugging sections and all symbols intact.
3200See the description of this option in the @command{objcopy} section
3201for more information.
252b5132
RH
3202
3203@item --strip-unneeded
3204Remove all symbols that are not needed for relocation processing.
3205
3206@item -K @var{symbolname}
3207@itemx --keep-symbol=@var{symbolname}
e7f918ad
NC
3208When stripping symbols, keep symbol @var{symbolname} even if it would
3209normally be stripped. This option may be given more than once.
252b5132
RH
3210
3211@item -N @var{symbolname}
3212@itemx --strip-symbol=@var{symbolname}
3213Remove symbol @var{symbolname} from the source file. This option may be
3214given more than once, and may be combined with strip options other than
c7c55b78 3215@option{-K}.
252b5132
RH
3216
3217@item -o @var{file}
3218Put the stripped output in @var{file}, rather than replacing the
3219existing file. When this argument is used, only one @var{objfile}
3220argument may be specified.
3221
3222@item -p
3223@itemx --preserve-dates
3224Preserve the access and modification dates of the file.
3225
2e30cb57
CC
3226@item -D
3227@itemx --enable-deterministic-archives
955d0b3b
RM
3228@cindex deterministic archives
3229@kindex --enable-deterministic-archives
2e30cb57
CC
3230Operate in @emph{deterministic} mode. When copying archive members
3231and writing the archive index, use zero for UIDs, GIDs, timestamps,
3232and use consistent file modes for all files.
3233
955d0b3b
RM
3234If @file{binutils} was configured with
3235@option{--enable-deterministic-archives}, then this mode is on by default.
3236It can be disabled with the @samp{-U} option, below.
3237
3238@item -U
3239@itemx --disable-deterministic-archives
3240@cindex deterministic archives
3241@kindex --enable-deterministic-archives
3242Do @emph{not} operate in @emph{deterministic} mode. This is the
3243inverse of the @option{-D} option, above: when copying archive members
3244and writing the archive index, use their actual UID, GID, timestamp,
3245and file mode values.
3246
3247This is the default unless @file{binutils} was configured with
3248@option{--enable-deterministic-archives}.
3249
5fe11841
NC
3250@item -w
3251@itemx --wildcard
3252Permit regular expressions in @var{symbolname}s used in other command
3253line options. The question mark (?), asterisk (*), backslash (\) and
3254square brackets ([]) operators can be used anywhere in the symbol
3255name. If the first character of the symbol name is the exclamation
3256point (!) then the sense of the switch is reversed for that symbol.
3257For example:
3258
3259@smallexample
3260 -w -K !foo -K fo*
3261@end smallexample
3262
3263would cause strip to only keep symbols that start with the letters
3264``fo'', but to discard the symbol ``foo''.
3265
252b5132
RH
3266@item -x
3267@itemx --discard-all
3268Remove non-global symbols.
3269
3270@item -X
3271@itemx --discard-locals
3272Remove compiler-generated local symbols.
3273(These usually start with @samp{L} or @samp{.}.)
3274
1637cd90
JB
3275@item --keep-file-symbols
3276When stripping a file, perhaps with @option{--strip-debug} or
3277@option{--strip-unneeded}, retain any symbols specifying source file names,
3278which would otherwise get stripped.
3279
ed1653a7 3280@item --only-keep-debug
63b9bbb7 3281Strip a file, emptying the contents of any sections that would not be
c1c0eb9e 3282stripped by @option{--strip-debug} and leaving the debugging sections
63b9bbb7
NC
3283intact. In ELF files, this preserves all the note sections in the
3284output as well.
3285
3286Note - the section headers of the stripped sections are preserved,
3287including their sizes, but the contents of the section are discarded.
3288The section headers are preserved so that other tools can match up the
3289debuginfo file with the real executable, even if that executable has
3290been relocated to a different address space.
ed1653a7
NC
3291
3292The intention is that this option will be used in conjunction with
3293@option{--add-gnu-debuglink} to create a two part executable. One a
3294stripped binary which will occupy less space in RAM and in a
3295distribution and the second a debugging information file which is only
3296needed if debugging abilities are required. The suggested procedure
3297to create these files is as follows:
3298
3299@enumerate
3300@item Link the executable as normal. Assuming that is is called
3301@code{foo} then...
3302@item Run @code{objcopy --only-keep-debug foo foo.dbg} to
3303create a file containing the debugging info.
3304@item Run @code{objcopy --strip-debug foo} to create a
3305stripped executable.
3306@item Run @code{objcopy --add-gnu-debuglink=foo.dbg foo}
3307to add a link to the debugging info into the stripped executable.
3308@end enumerate
3309
928a4139 3310Note---the choice of @code{.dbg} as an extension for the debug info
ed1653a7
NC
3311file is arbitrary. Also the @code{--only-keep-debug} step is
3312optional. You could instead do this:
3313
3314@enumerate
3315@item Link the executable as normal.
928a4139 3316@item Copy @code{foo} to @code{foo.full}
ed1653a7
NC
3317@item Run @code{strip --strip-debug foo}
3318@item Run @code{objcopy --add-gnu-debuglink=foo.full foo}
3319@end enumerate
3320
928a4139 3321i.e., the file pointed to by the @option{--add-gnu-debuglink} can be the
ed1653a7
NC
3322full executable. It does not have to be a file created by the
3323@option{--only-keep-debug} switch.
3324
928a4139 3325Note---this switch is only intended for use on fully linked files. It
91bb255c
NC
3326does not make sense to use it on object files where the debugging
3327information may be incomplete. Besides the gnu_debuglink feature
3328currently only supports the presence of one filename containing
3329debugging information, not multiple filenames on a one-per-object-file
3330basis.
3331
252b5132
RH
3332@item -V
3333@itemx --version
c7c55b78 3334Show the version number for @command{strip}.
252b5132
RH
3335
3336@item -v
3337@itemx --verbose
3338Verbose output: list all object files modified. In the case of
3339archives, @samp{strip -v} lists all members of the archive.
3340@end table
3341
0285c67d
NC
3342@c man end
3343
3344@ignore
3345@c man begin SEEALSO strip
3346the Info entries for @file{binutils}.
3347@c man end
3348@end ignore
3349
7ca01ed9 3350@node c++filt, addr2line, strip, Top
252b5132
RH
3351@chapter c++filt
3352
3353@kindex c++filt
3354@cindex demangling C++ symbols
3355
0285c67d
NC
3356@c man title cxxfilt Demangle C++ and Java symbols.
3357
252b5132 3358@smallexample
0285c67d 3359@c man begin SYNOPSIS cxxfilt
ae9ab7c0
NC
3360c++filt [@option{-_}|@option{--strip-underscore}]
3361 [@option{-n}|@option{--no-strip-underscore}]
4e48c9dd 3362 [@option{-p}|@option{--no-params}]
ec948987 3363 [@option{-t}|@option{--types}]
cbf1f5df 3364 [@option{-i}|@option{--no-verbose}]
c7c55b78
NC
3365 [@option{-s} @var{format}|@option{--format=}@var{format}]
3366 [@option{--help}] [@option{--version}] [@var{symbol}@dots{}]
0285c67d 3367@c man end
252b5132
RH
3368@end smallexample
3369
0285c67d
NC
3370@c man begin DESCRIPTION cxxfilt
3371
9d51cc66 3372@kindex cxxfilt
ec948987
NC
3373The C++ and Java languages provide function overloading, which means
3374that you can write many functions with the same name, providing that
3375each function takes parameters of different types. In order to be
3376able to distinguish these similarly named functions C++ and Java
3377encode them into a low-level assembler name which uniquely identifies
3378each different version. This process is known as @dfn{mangling}. The
3379@command{c++filt}
c1c0eb9e 3380@footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
195a97ce 3381MS-DOS this program is named @command{CXXFILT}.}
9d51cc66 3382program does the inverse mapping: it decodes (@dfn{demangles}) low-level
ec948987 3383names into user-level names so that they can be read.
252b5132
RH
3384
3385Every alphanumeric word (consisting of letters, digits, underscores,
cbf1f5df
NC
3386dollars, or periods) seen in the input is a potential mangled name.
3387If the name decodes into a C++ name, the C++ name replaces the
ec948987
NC
3388low-level name in the output, otherwise the original word is output.
3389In this way you can pass an entire assembler source file, containing
3390mangled names, through @command{c++filt} and see the same source file
3391containing demangled names.
252b5132 3392
ec948987
NC
3393You can also use @command{c++filt} to decipher individual symbols by
3394passing them on the command line:
252b5132
RH
3395
3396@example
3397c++filt @var{symbol}
3398@end example
3399
c7c55b78 3400If no @var{symbol} arguments are given, @command{c++filt} reads symbol
ec948987
NC
3401names from the standard input instead. All the results are printed on
3402the standard output. The difference between reading names from the
3403command line versus reading names from the standard input is that
3404command line arguments are expected to be just mangled names and no
b45619c0 3405checking is performed to separate them from surrounding text. Thus
ec948987
NC
3406for example:
3407
3408@smallexample
3409c++filt -n _Z1fv
3410@end smallexample
3411
3412will work and demangle the name to ``f()'' whereas:
3413
3414@smallexample
3415c++filt -n _Z1fv,
3416@end smallexample
3417
3418will not work. (Note the extra comma at the end of the mangled
3419name which makes it invalid). This command however will work:
3420
3421@smallexample
3422echo _Z1fv, | c++filt -n
3423@end smallexample
3424
928a4139 3425and will display ``f(),'', i.e., the demangled name followed by a
ec948987
NC
3426trailing comma. This behaviour is because when the names are read
3427from the standard input it is expected that they might be part of an
3428assembler source file where there might be extra, extraneous
928a4139 3429characters trailing after a mangled name. For example:
ec948987
NC
3430
3431@smallexample
3432 .type _Z1fv, @@function
3433@end smallexample
252b5132 3434
0285c67d
NC
3435@c man end
3436
3437@c man begin OPTIONS cxxfilt
3438
c7c55b78 3439@table @env
252b5132 3440@item -_
ae9ab7c0 3441@itemx --strip-underscore
252b5132
RH
3442On some systems, both the C and C++ compilers put an underscore in front
3443of every name. For example, the C name @code{foo} gets the low-level
3444name @code{_foo}. This option removes the initial underscore. Whether
c7c55b78 3445@command{c++filt} removes the underscore by default is target dependent.
252b5132 3446
252b5132 3447@item -n
ae9ab7c0 3448@itemx --no-strip-underscore
252b5132
RH
3449Do not remove the initial underscore.
3450
4e48c9dd
ILT
3451@item -p
3452@itemx --no-params
3453When demangling the name of a function, do not display the types of
3454the function's parameters.
3455
cbf1f5df 3456@item -t
ec948987
NC
3457@itemx --types
3458Attempt to demangle types as well as function names. This is disabled
3459by default since mangled types are normally only used internally in
928a4139 3460the compiler, and they can be confused with non-mangled names. For example,
ec948987
NC
3461a function called ``a'' treated as a mangled type name would be
3462demangled to ``signed char''.
cbf1f5df
NC
3463
3464@item -i
3465@itemx --no-verbose
3466Do not include implementation details (if any) in the demangled
3467output.
3468
252b5132
RH
3469@item -s @var{format}
3470@itemx --format=@var{format}
947ed062
NC
3471@command{c++filt} can decode various methods of mangling, used by
3472different compilers. The argument to this option selects which
252b5132
RH
3473method it uses:
3474
3475@table @code
947ed062
NC
3476@item auto
3477Automatic selection based on executable (the default method)
252b5132 3478@item gnu
947ed062 3479the one used by the @sc{gnu} C++ compiler (g++)
252b5132 3480@item lucid
947ed062 3481the one used by the Lucid compiler (lcc)
252b5132
RH
3482@item arm
3483the one specified by the C++ Annotated Reference Manual
3484@item hp
947ed062 3485the one used by the HP compiler (aCC)
252b5132
RH
3486@item edg
3487the one used by the EDG compiler
b5e2a4f3 3488@item gnu-v3
947ed062
NC
3489the one used by the @sc{gnu} C++ compiler (g++) with the V3 ABI.
3490@item java
3491the one used by the @sc{gnu} Java compiler (gcj)
3492@item gnat
3493the one used by the @sc{gnu} Ada compiler (GNAT).
252b5132
RH
3494@end table
3495
3496@item --help
c7c55b78 3497Print a summary of the options to @command{c++filt} and exit.
252b5132
RH
3498
3499@item --version
c7c55b78 3500Print the version number of @command{c++filt} and exit.
252b5132
RH
3501@end table
3502
0285c67d
NC
3503@c man end
3504
3505@ignore
3506@c man begin SEEALSO cxxfilt
3507the Info entries for @file{binutils}.
3508@c man end
3509@end ignore
3510
252b5132 3511@quotation
c7c55b78 3512@emph{Warning:} @command{c++filt} is a new utility, and the details of its
252b5132 3513user interface are subject to change in future releases. In particular,
b45619c0 3514a command-line option may be required in the future to decode a name
c1c0eb9e 3515passed as an argument on the command line; in other words,
252b5132
RH
3516
3517@example
3518c++filt @var{symbol}
3519@end example
3520
3521@noindent
3522may in a future release become
3523
3524@example
3525c++filt @var{option} @var{symbol}
3526@end example
3527@end quotation
3528
3529@node addr2line
3530@chapter addr2line
3531
3532@kindex addr2line
3533@cindex address to file name and line number
3534
0285c67d
NC
3535@c man title addr2line convert addresses into file names and line numbers.
3536
252b5132 3537@smallexample
0285c67d 3538@c man begin SYNOPSIS addr2line
be6f6493
TG
3539addr2line [@option{-a}|@option{--addresses}]
3540 [@option{-b} @var{bfdname}|@option{--target=}@var{bfdname}]
bf44dd74 3541 [@option{-C}|@option{--demangle}[=@var{style}]]
c7c55b78
NC
3542 [@option{-e} @var{filename}|@option{--exe=}@var{filename}]
3543 [@option{-f}|@option{--functions}] [@option{-s}|@option{--basename}]
0c552dc1 3544 [@option{-i}|@option{--inlines}]
68cdf72f 3545 [@option{-p}|@option{--pretty-print}]
c5f8c388 3546 [@option{-j}|@option{--section=}@var{name}]
c7c55b78
NC
3547 [@option{-H}|@option{--help}] [@option{-V}|@option{--version}]
3548 [addr addr @dots{}]
0285c67d 3549@c man end
252b5132
RH
3550@end smallexample
3551
0285c67d
NC
3552@c man begin DESCRIPTION addr2line
3553
c5f8c388
EB
3554@command{addr2line} translates addresses into file names and line numbers.
3555Given an address in an executable or an offset in a section of a relocatable
3556object, it uses the debugging information to figure out which file name and
3557line number are associated with it.
252b5132 3558
c5f8c388
EB
3559The executable or relocatable object to use is specified with the @option{-e}
3560option. The default is the file @file{a.out}. The section in the relocatable
3561object to use is specified with the @option{-j} option.
252b5132 3562
c7c55b78 3563@command{addr2line} has two modes of operation.
252b5132
RH
3564
3565In the first, hexadecimal addresses are specified on the command line,
c7c55b78 3566and @command{addr2line} displays the file name and line number for each
252b5132
RH
3567address.
3568
c7c55b78 3569In the second, @command{addr2line} reads hexadecimal addresses from
252b5132 3570standard input, and prints the file name and line number for each
c7c55b78 3571address on standard output. In this mode, @command{addr2line} may be used
252b5132
RH
3572in a pipe to convert dynamically chosen addresses.
3573
8d112f9e
TG
3574The format of the output is @samp{FILENAME:LINENO}. By default
3575each input address generates one line of output.
9cf03b7e 3576
8d112f9e
TG
3577Two options can generate additional lines before each
3578@samp{FILENAME:LINENO} line (in that order).
3579
3580If the @option{-a} option is used then a line with the input address
3581is displayed.
3582
3583If the @option{-f} option is used, then a line with the
3584@samp{FUNCTIONNAME} is displayed. This is the name of the function
3585containing the address.
3586
3587One option can generate additional lines after the
3588@samp{FILENAME:LINENO} line.
9cf03b7e
NC
3589
3590If the @option{-i} option is used and the code at the given address is
8d112f9e
TG
3591present there because of inlining by the compiler then additional
3592lines are displayed afterwards. One or two extra lines (if the
3593@option{-f} option is used) are displayed for each inlined function.
3594
3595Alternatively if the @option{-p} option is used then each input
3596address generates a single, long, output line containing the address,
3597the function name, the file name and the line number. If the
3598@option{-i} option has also been used then any inlined functions will
3599be displayed in the same manner, but on separate lines, and prefixed
3600by the text @samp{(inlined by)}.
252b5132
RH
3601
3602If the file name or function name can not be determined,
c7c55b78
NC
3603@command{addr2line} will print two question marks in their place. If the
3604line number can not be determined, @command{addr2line} will print 0.
252b5132 3605
0285c67d
NC
3606@c man end
3607
3608@c man begin OPTIONS addr2line
3609
252b5132
RH
3610The long and short forms of options, shown here as alternatives, are
3611equivalent.
3612
c7c55b78 3613@table @env
be6f6493
TG
3614@item -a
3615@itemx --addresses
9cf03b7e 3616Display the address before the function name, file and line number
be6f6493
TG
3617information. The address is printed with a @samp{0x} prefix to easily
3618identify it.
3619
252b5132
RH
3620@item -b @var{bfdname}
3621@itemx --target=@var{bfdname}
3622@cindex object code format
3623Specify that the object-code format for the object files is
3624@var{bfdname}.
3625
3626@item -C
28c309a2 3627@itemx --demangle[=@var{style}]
252b5132
RH
3628@cindex demangling in objdump
3629Decode (@dfn{demangle}) low-level symbol names into user-level names.
3630Besides removing any initial underscore prepended by the system, this
28c309a2 3631makes C++ function names readable. Different compilers have different
c1c0eb9e
RM
3632mangling styles. The optional demangling style argument can be used to
3633choose an appropriate demangling style for your compiler. @xref{c++filt},
28c309a2 3634for more information on demangling.
252b5132
RH
3635
3636@item -e @var{filename}
3637@itemx --exe=@var{filename}
3638Specify the name of the executable for which addresses should be
3639translated. The default file is @file{a.out}.
3640
3641@item -f
3642@itemx --functions
3643Display function names as well as file and line number information.
3644
3645@item -s
3646@itemx --basenames
3647Display only the base of each file name.
0c552dc1
FF
3648
3649@item -i
3650@itemx --inlines
3651If the address belongs to a function that was inlined, the source
3652information for all enclosing scopes back to the first non-inlined
3653function will also be printed. For example, if @code{main} inlines
3654@code{callee1} which inlines @code{callee2}, and address is from
3655@code{callee2}, the source information for @code{callee1} and @code{main}
3656will also be printed.
c5f8c388
EB
3657
3658@item -j
3659@itemx --section
3660Read offsets relative to the specified section instead of absolute addresses.
68cdf72f
TG
3661
3662@item -p
3663@itemx --pretty-print
3664Make the output more human friendly: each location are printed on one line.
3665If option @option{-i} is specified, lines for all enclosing scopes are
3666prefixed with @samp{(inlined by)}.
e107c42f 3667@end table
252b5132 3668
0285c67d
NC
3669@c man end
3670
3671@ignore
3672@c man begin SEEALSO addr2line
3673Info entries for @file{binutils}.
3674@c man end
3675@end ignore
3676
252b5132
RH
3677@node nlmconv
3678@chapter nlmconv
3679
c7c55b78 3680@command{nlmconv} converts a relocatable object file into a NetWare
252b5132
RH
3681Loadable Module.
3682
3683@ignore
c7c55b78 3684@command{nlmconv} currently works with @samp{i386} object
252b5132
RH
3685files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
3686object files in @sc{elf}, or @code{a.out} format@footnote{
c7c55b78 3687@command{nlmconv} should work with any @samp{i386} or @sc{sparc} object
252b5132
RH
3688format in the Binary File Descriptor library. It has only been tested
3689with the above formats.}.
3690@end ignore
3691
3692@quotation
c7c55b78 3693@emph{Warning:} @command{nlmconv} is not always built as part of the binary
252b5132
RH
3694utilities, since it is only useful for NLM targets.
3695@end quotation
3696
0285c67d
NC
3697@c man title nlmconv converts object code into an NLM.
3698
252b5132 3699@smallexample
0285c67d 3700@c man begin SYNOPSIS nlmconv
c7c55b78
NC
3701nlmconv [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}]
3702 [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}]
3703 [@option{-T} @var{headerfile}|@option{--header-file=}@var{headerfile}]
3704 [@option{-d}|@option{--debug}] [@option{-l} @var{linker}|@option{--linker=}@var{linker}]
3705 [@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
252b5132 3706 @var{infile} @var{outfile}
0285c67d 3707@c man end
252b5132
RH
3708@end smallexample
3709
0285c67d
NC
3710@c man begin DESCRIPTION nlmconv
3711
c7c55b78 3712@command{nlmconv} converts the relocatable @samp{i386} object file
252b5132
RH
3713@var{infile} into the NetWare Loadable Module @var{outfile}, optionally
3714reading @var{headerfile} for NLM header information. For instructions
3715on writing the NLM command file language used in header files, see the
3716@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
3717Development and Tools Overview}, which is part of the NLM Software
3718Developer's Kit (``NLM SDK''), available from Novell, Inc.
c7c55b78 3719@command{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
0285c67d
NC
3720@var{infile};
3721@ifclear man
3722see @ref{BFD,,BFD,ld.info,Using LD}, for more information.
3723@end ifclear
252b5132 3724
c7c55b78 3725@command{nlmconv} can perform a link step. In other words, you can list
252b5132
RH
3726more than one object file for input if you list them in the definitions
3727file (rather than simply specifying one input file on the command line).
c7c55b78 3728In this case, @command{nlmconv} calls the linker for you.
252b5132 3729
0285c67d
NC
3730@c man end
3731
3732@c man begin OPTIONS nlmconv
3733
c7c55b78 3734@table @env
252b5132
RH
3735@item -I @var{bfdname}
3736@itemx --input-target=@var{bfdname}
c7c55b78 3737Object format of the input file. @command{nlmconv} can usually determine
252b5132
RH
3738the format of a given file (so no default is necessary).
3739@xref{Target Selection}, for more information.
3740
3741@item -O @var{bfdname}
3742@itemx --output-target=@var{bfdname}
c7c55b78 3743Object format of the output file. @command{nlmconv} infers the output
252b5132
RH
3744format based on the input format, e.g. for a @samp{i386} input file the
3745output format is @samp{nlm32-i386}.
3746@xref{Target Selection}, for more information.
3747
3748@item -T @var{headerfile}
3749@itemx --header-file=@var{headerfile}
3750Reads @var{headerfile} for NLM header information. For instructions on
3751writing the NLM command file language used in header files, see@ see the
3752@samp{linkers} section, of the @cite{NLM Development and Tools
3753Overview}, which is part of the NLM Software Developer's Kit, available
3754from Novell, Inc.
3755
3756@item -d
3757@itemx --debug
c7c55b78 3758Displays (on standard error) the linker command line used by @command{nlmconv}.
252b5132
RH
3759
3760@item -l @var{linker}
3761@itemx --linker=@var{linker}
3762Use @var{linker} for any linking. @var{linker} can be an absolute or a
3763relative pathname.
3764
3765@item -h
3766@itemx --help
3767Prints a usage summary.
3768
3769@item -V
3770@itemx --version
c7c55b78 3771Prints the version number for @command{nlmconv}.
252b5132
RH
3772@end table
3773
0285c67d
NC
3774@c man end
3775
3776@ignore
3777@c man begin SEEALSO nlmconv
3778the Info entries for @file{binutils}.
692ed3e7
NC
3779@c man end
3780@end ignore
3781
3782@node windmc
3783@chapter windmc
3784
3785@command{windmc} may be used to generator Windows message resources.
3786
3787@quotation
3788@emph{Warning:} @command{windmc} is not always built as part of the binary
3789utilities, since it is only useful for Windows targets.
3790@end quotation
3791
3792@c man title windmc generates Windows message resources.
3793
3794@smallexample
826fec2f 3795@c man begin SYNOPSIS windmc
692ed3e7
NC
3796windmc [options] input-file
3797@c man end
3798@end smallexample
3799
3800@c man begin DESCRIPTION windmc
3801
3802@command{windmc} reads message definitions from an input file (.mc) and
3803translate them into a set of output files. The output files may be of
3804four kinds:
3805
3806@table @code
3807@item h
3808A C header file containing the message definitions.
3809
3810@item rc
3811A resource file compilable by the @command{windres} tool.
3812
3813@item bin
3814One or more binary files containing the resource data for a specific
3815message language.
3816
3817@item dbg
3818A C include file that maps message id's to their symbolic name.
3819@end table
3820
3821The exact description of these different formats is available in
3822documentation from Microsoft.
3823
3824When @command{windmc} converts from the @code{mc} format to the @code{bin}
3825format, @code{rc}, @code{h}, and optional @code{dbg} it is acting like the
3826Windows Message Compiler.
3827
3828@c man end
3829
3830@c man begin OPTIONS windmc
3831
3832@table @env
3833@item -a
3834@itemx --ascii_in
826fec2f 3835Specifies that the input file specified is ASCII. This is the default
692ed3e7
NC
3836behaviour.
3837
3838@item -A
3839@itemx --ascii_out
826fec2f 3840Specifies that messages in the output @code{bin} files should be in ASCII
692ed3e7
NC
3841format.
3842
3843@item -b
3844@itemx --binprefix
3845Specifies that @code{bin} filenames should have to be prefixed by the
3846basename of the source file.
3847
3848@item -c
3849@itemx --customflag
3850Sets the customer bit in all message id's.
3851
3852@item -C @var{codepage}
3853@itemx --codepage_in @var{codepage}
3854Sets the default codepage to be used to convert input file to UTF16. The
3855default is ocdepage 1252.
3856
3857@item -d
3858@itemx --decimal_values
3859Outputs the constants in the header file in decimal. Default is using
3860hexadecimal output.
3861
3862@item -e @var{ext}
3863@itemx --extension @var{ext}
3864The extension for the header file. The default is .h extension.
3865
3866@item -F @var{target}
3867@itemx --target @var{target}
3868Specify the BFD format to use for a bin file as output. This
3869is a BFD target name; you can use the @option{--help} option to see a list
3870of supported targets. Normally @command{windmc} will use the default
3871format, which is the first one listed by the @option{--help} option.
3872@ifclear man
3873@ref{Target Selection}.
3874@end ifclear
3875
3876@item -h @var{path}
3877@itemx --headerdir @var{path}
3878The target directory of the generated header file. The default is the
3879current directory.
3880
3881@item -H
3882@itemx --help
3883Displays a list of command line options and then exits.
3884
3885@item -m @var{characters}
3886@itemx --maxlength @var{characters}
3887Instructs @command{windmc} to generate a warning if the length
3888of any message exceeds the number specified.
3889
3890@item -n
3891@itemx --nullterminate
3892Terminate message text in @code{bin} files by zero. By default they are
3893terminated by CR/LF.
3894
3895@item -o
3896@itemx --hresult_use
3897Not yet implemented. Instructs @code{windmc} to generate an OLE2 header
3898file, using HRESULT definitions. Status codes are used if the flag is not
3899specified.
3900
3901@item -O @var{codepage}
3902@itemx --codepage_out @var{codepage}
3903Sets the default codepage to be used to output text files. The default
3904is ocdepage 1252.
3905
3906@item -r @var{path}
3907@itemx --rcdir @var{path}
3908The target directory for the generated @code{rc} script and the generated
3909@code{bin} files that the resource compiler script includes. The default
3910is the current directory.
3911
3912@item -u
3913@itemx --unicode_in
3914Specifies that the input file is UTF16.
3915
3916@item -U
3917@itemx --unicode_out
3918Specifies that messages in the output @code{bin} file should be in UTF16
3919format. This is the default behaviour.
3920
3921@item -v
3922@item --verbose
bd37ed49 3923Enable verbose mode.
692ed3e7
NC
3924
3925@item -V
3926@item --version
bd37ed49 3927Prints the version number for @command{windmc}.
692ed3e7
NC
3928
3929@item -x @var{path}
3930@itemx --xdgb @var{path}
3931The path of the @code{dbg} C include file that maps message id's to the
3932symbolic name. No such file is generated without specifying the switch.
3933@end table
3934
3935@c man end
3936
3937@ignore
3938@c man begin SEEALSO windmc
3939the Info entries for @file{binutils}.
0285c67d
NC
3940@c man end
3941@end ignore
3942
252b5132
RH
3943@node windres
3944@chapter windres
3945
c7c55b78 3946@command{windres} may be used to manipulate Windows resources.
252b5132
RH
3947
3948@quotation
c7c55b78 3949@emph{Warning:} @command{windres} is not always built as part of the binary
252b5132
RH
3950utilities, since it is only useful for Windows targets.
3951@end quotation
3952
0285c67d
NC
3953@c man title windres manipulate Windows resources.
3954
252b5132 3955@smallexample
0285c67d 3956@c man begin SYNOPSIS windres
252b5132 3957windres [options] [input-file] [output-file]
0285c67d 3958@c man end
252b5132
RH
3959@end smallexample
3960
0285c67d
NC
3961@c man begin DESCRIPTION windres
3962
c7c55b78 3963@command{windres} reads resources from an input file and copies them into
252b5132
RH
3964an output file. Either file may be in one of three formats:
3965
3966@table @code
3967@item rc
3968A text format read by the Resource Compiler.
3969
3970@item res
3971A binary format generated by the Resource Compiler.
3972
3973@item coff
3974A COFF object or executable.
3975@end table
3976
3977The exact description of these different formats is available in
3978documentation from Microsoft.
3979
c7c55b78 3980When @command{windres} converts from the @code{rc} format to the @code{res}
252b5132 3981format, it is acting like the Windows Resource Compiler. When
c7c55b78 3982@command{windres} converts from the @code{res} format to the @code{coff}
252b5132
RH
3983format, it is acting like the Windows @code{CVTRES} program.
3984
c7c55b78 3985When @command{windres} generates an @code{rc} file, the output is similar
252b5132
RH
3986but not identical to the format expected for the input. When an input
3987@code{rc} file refers to an external filename, an output @code{rc} file
3988will instead include the file contents.
3989
c7c55b78 3990If the input or output format is not specified, @command{windres} will
252b5132
RH
3991guess based on the file name, or, for the input file, the file contents.
3992A file with an extension of @file{.rc} will be treated as an @code{rc}
3993file, a file with an extension of @file{.res} will be treated as a
3994@code{res} file, and a file with an extension of @file{.o} or
3995@file{.exe} will be treated as a @code{coff} file.
3996
c7c55b78 3997If no output file is specified, @command{windres} will print the resources
252b5132
RH
3998in @code{rc} format to standard output.
3999
c7c55b78 4000The normal use is for you to write an @code{rc} file, use @command{windres}
252b5132
RH
4001to convert it to a COFF object file, and then link the COFF file into
4002your application. This will make the resources described in the
4003@code{rc} file available to Windows.
4004
0285c67d
NC
4005@c man end
4006
4007@c man begin OPTIONS windres
4008
c7c55b78 4009@table @env
252b5132
RH
4010@item -i @var{filename}
4011@itemx --input @var{filename}
4012The name of the input file. If this option is not used, then
c7c55b78
NC
4013@command{windres} will use the first non-option argument as the input file
4014name. If there are no non-option arguments, then @command{windres} will
4015read from standard input. @command{windres} can not read a COFF file from
edbedb71 4016standard input.
252b5132
RH
4017
4018@item -o @var{filename}
4019@itemx --output @var{filename}
4020The name of the output file. If this option is not used, then
c7c55b78 4021@command{windres} will use the first non-option argument, after any used
252b5132 4022for the input file name, as the output file name. If there is no
c7c55b78 4023non-option argument, then @command{windres} will write to standard output.
edbedb71 4024@command{windres} can not write a COFF file to standard output. Note,
b45619c0 4025for compatibility with @command{rc} the option @option{-fo} is also
edbedb71 4026accepted, but its use is not recommended.
252b5132 4027
85eb5110 4028@item -J @var{format}
252b5132
RH
4029@itemx --input-format @var{format}
4030The input format to read. @var{format} may be @samp{res}, @samp{rc}, or
c7c55b78 4031@samp{coff}. If no input format is specified, @command{windres} will
252b5132
RH
4032guess, as described above.
4033
4034@item -O @var{format}
4035@itemx --output-format @var{format}
4036The output format to generate. @var{format} may be @samp{res},
4037@samp{rc}, or @samp{coff}. If no output format is specified,
c7c55b78 4038@command{windres} will guess, as described above.
252b5132
RH
4039
4040@item -F @var{target}
4041@itemx --target @var{target}
4042Specify the BFD format to use for a COFF file as input or output. This
c7c55b78
NC
4043is a BFD target name; you can use the @option{--help} option to see a list
4044of supported targets. Normally @command{windres} will use the default
4045format, which is the first one listed by the @option{--help} option.
4046@ifclear man
252b5132 4047@ref{Target Selection}.
c7c55b78 4048@end ifclear
252b5132
RH
4049
4050@item --preprocessor @var{program}
c7c55b78 4051When @command{windres} reads an @code{rc} file, it runs it through the C
252b5132
RH
4052preprocessor first. This option may be used to specify the preprocessor
4053to use, including any leading arguments. The default preprocessor
4054argument is @code{gcc -E -xc-header -DRC_INVOKED}.
4055
ec25acb3
NC
4056@item --preprocessor-arg @var{option}
4057When @command{windres} reads an @code{rc} file, it runs it through
4058the C preprocessor first. This option may be used to specify additional
4059text to be passed to preprocessor on its command line.
4060This option can be used multiple times to add multiple options to the
4061preprocessor command line.
4062
85eb5110
NC
4063@item -I @var{directory}
4064@itemx --include-dir @var{directory}
252b5132 4065Specify an include directory to use when reading an @code{rc} file.
c7c55b78
NC
4066@command{windres} will pass this to the preprocessor as an @option{-I}
4067option. @command{windres} will also search this directory when looking for
85eb5110 4068files named in the @code{rc} file. If the argument passed to this command
c1c0eb9e 4069matches any of the supported @var{formats} (as described in the @option{-J}
85eb5110
NC
4070option), it will issue a deprecation warning, and behave just like the
4071@option{-J} option. New programs should not use this behaviour. If a
4072directory happens to match a @var{format}, simple prefix it with @samp{./}
4073to disable the backward compatibility.
252b5132 4074
751d21b5 4075@item -D @var{target}
ad0481cd 4076@itemx --define @var{sym}[=@var{val}]
c7c55b78 4077Specify a @option{-D} option to pass to the preprocessor when reading an
252b5132
RH
4078@code{rc} file.
4079
29b058f1
NC
4080@item -U @var{target}
4081@itemx --undefine @var{sym}
4082Specify a @option{-U} option to pass to the preprocessor when reading an
4083@code{rc} file.
4084
3126d709
CF
4085@item -r
4086Ignored for compatibility with rc.
4087
751d21b5
DD
4088@item -v
4089Enable verbose mode. This tells you what the preprocessor is if you
4090didn't specify one.
4091
30ff741f
NC
4092@item -c @var{val}
4093@item --codepage @var{val}
4094Specify the default codepage to use when reading an @code{rc} file.
4095@var{val} should be a hexadecimal prefixed by @samp{0x} or decimal
4096codepage code. The valid range is from zero up to 0xffff, but the
4097validity of the codepage is host and configuration dependent.
4098
3077f5d8 4099@item -l @var{val}
252b5132
RH
4100@item --language @var{val}
4101Specify the default language to use when reading an @code{rc} file.
4102@var{val} should be a hexadecimal language code. The low eight bits are
4103the language, and the high eight bits are the sublanguage.
4104
5a298d2d
NC
4105@item --use-temp-file
4106Use a temporary file to instead of using popen to read the output of
c1c0eb9e
RM
4107the preprocessor. Use this option if the popen implementation is buggy
4108on the host (eg., certain non-English language versions of Windows 95 and
5a298d2d
NC
4109Windows 98 are known to have buggy popen where the output will instead
4110go the console).
4111
4112@item --no-use-temp-file
4113Use popen, not a temporary file, to read the output of the preprocessor.
4114This is the default behaviour.
4115
3077f5d8 4116@item -h
252b5132
RH
4117@item --help
4118Prints a usage summary.
4119
3077f5d8 4120@item -V
252b5132 4121@item --version
c7c55b78 4122Prints the version number for @command{windres}.
252b5132
RH
4123
4124@item --yydebug
c7c55b78 4125If @command{windres} is compiled with @code{YYDEBUG} defined as @code{1},
252b5132
RH
4126this will turn on parser debugging.
4127@end table
4128
0285c67d
NC
4129@c man end
4130
4131@ignore
4132@c man begin SEEALSO windres
4133the Info entries for @file{binutils}.
4134@c man end
4135@end ignore
252b5132
RH
4136
4137@node dlltool
2aa9814e 4138@chapter dlltool
252b5132
RH
4139@cindex DLL
4140@kindex dlltool
4141
2aa9814e
BE
4142@command{dlltool} is used to create the files needed to create dynamic
4143link libraries (DLLs) on systems which understand PE format image
4144files such as Windows. A DLL contains an export table which contains
4145information that the runtime loader needs to resolve references from a
4146referencing program.
4147
4148The export table is generated by this program by reading in a
4149@file{.def} file or scanning the @file{.a} and @file{.o} files which
4150will be in the DLL. A @file{.o} file can contain information in
4151special @samp{.drectve} sections with export information.
252b5132
RH
4152
4153@quotation
2aa9814e
BE
4154@emph{Note:} @command{dlltool} is not always built as part of the
4155binary utilities, since it is only useful for those targets which
4156support DLLs.
252b5132
RH
4157@end quotation
4158
0285c67d
NC
4159@c man title dlltool Create files needed to build and use DLLs.
4160
252b5132 4161@smallexample
0285c67d 4162@c man begin SYNOPSIS dlltool
c7c55b78
NC
4163dlltool [@option{-d}|@option{--input-def} @var{def-file-name}]
4164 [@option{-b}|@option{--base-file} @var{base-file-name}]
4165 [@option{-e}|@option{--output-exp} @var{exports-file-name}]
4166 [@option{-z}|@option{--output-def} @var{def-file-name}]
c1c0eb9e 4167 [@option{-l}|@option{--output-lib} @var{library-file-name}]
10e636d2 4168 [@option{-y}|@option{--output-delaylib} @var{library-file-name}]
c7c55b78
NC
4169 [@option{--export-all-symbols}] [@option{--no-export-all-symbols}]
4170 [@option{--exclude-symbols} @var{list}]
4171 [@option{--no-default-excludes}]
4172 [@option{-S}|@option{--as} @var{path-to-assembler}] [@option{-f}|@option{--as-flags} @var{options}]
4173 [@option{-D}|@option{--dllname} @var{name}] [@option{-m}|@option{--machine} @var{machine}]
14288fdc
DS
4174 [@option{-a}|@option{--add-indirect}]
4175 [@option{-U}|@option{--add-underscore}] [@option{--add-stdcall-underscore}]
4176 [@option{-k}|@option{--kill-at}] [@option{-A}|@option{--add-stdcall-alias}]
607dea97 4177 [@option{-p}|@option{--ext-prefix-alias} @var{prefix}]
d4732f7c 4178 [@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}]
e77b97d4 4179 [@option{--use-nul-prefixed-import-tables}]
71c57c16
NC
4180 [@option{-I}|@option{--identify} @var{library-file-name}] [@option{--identify-strict}]
4181 [@option{-i}|@option{--interwork}]
f9346411 4182 [@option{-n}|@option{--nodelete}] [@option{-t}|@option{--temp-prefix} @var{prefix}]
c1c0eb9e 4183 [@option{-v}|@option{--verbose}]
c7c55b78 4184 [@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
36d21de5 4185 [@option{--no-leading-underscore}] [@option{--leading-underscore}]
252b5132 4186 [object-file @dots{}]
0285c67d 4187@c man end
252b5132
RH
4188@end smallexample
4189
0285c67d
NC
4190@c man begin DESCRIPTION dlltool
4191
c7c55b78
NC
4192@command{dlltool} reads its inputs, which can come from the @option{-d} and
4193@option{-b} options as well as object files specified on the command
4194line. It then processes these inputs and if the @option{-e} option has
4195been specified it creates a exports file. If the @option{-l} option
4196has been specified it creates a library file and if the @option{-z} option
c1c0eb9e
RM
4197has been specified it creates a def file. Any or all of the @option{-e},
4198@option{-l} and @option{-z} options can be present in one invocation of
c7c55b78 4199dlltool.
252b5132
RH
4200
4201When creating a DLL, along with the source for the DLL, it is necessary
c7c55b78 4202to have three other files. @command{dlltool} can help with the creation of
252b5132
RH
4203these files.
4204
2aa9814e 4205The first file is a @file{.def} file which specifies which functions are
252b5132 4206exported from the DLL, which functions the DLL imports, and so on. This
c7c55b78
NC
4207is a text file and can be created by hand, or @command{dlltool} can be used
4208to create it using the @option{-z} option. In this case @command{dlltool}
252b5132
RH
4209will scan the object files specified on its command line looking for
4210those functions which have been specially marked as being exported and
2aa9814e 4211put entries for them in the @file{.def} file it creates.
252b5132
RH
4212
4213In order to mark a function as being exported from a DLL, it needs to
c7c55b78 4214have an @option{-export:<name_of_function>} entry in the @samp{.drectve}
252b5132
RH
4215section of the object file. This can be done in C by using the
4216asm() operator:
4217
4218@smallexample
c1c0eb9e 4219 asm (".section .drectve");
252b5132
RH
4220 asm (".ascii \"-export:my_func\"");
4221
4222 int my_func (void) @{ @dots{} @}
4223@end smallexample
4224
4225The second file needed for DLL creation is an exports file. This file
4226is linked with the object files that make up the body of the DLL and it
4227handles the interface between the DLL and the outside world. This is a
c7c55b78 4228binary file and it can be created by giving the @option{-e} option to
c1c0eb9e 4229@command{dlltool} when it is creating or reading in a @file{.def} file.
252b5132
RH
4230
4231The third file needed for DLL creation is the library file that programs
d4732f7c
CW
4232will link with in order to access the functions in the DLL (an `import
4233library'). This file can be created by giving the @option{-l} option to
4234dlltool when it is creating or reading in a @file{.def} file.
252b5132 4235
10e636d2
DK
4236If the @option{-y} option is specified, dlltool generates a delay-import
4237library that can be used instead of the normal import library to allow
4238a program to link to the dll only as soon as an imported function is
4239called for the first time. The resulting executable will need to be
4240linked to the static delayimp library containing __delayLoadHelper2(),
4241which in turn will import LoadLibraryA and GetProcAddress from kernel32.
4242
c7c55b78 4243@command{dlltool} builds the library file by hand, but it builds the
252b5132 4244exports file by creating temporary files containing assembler statements
c7c55b78 4245and then assembling these. The @option{-S} command line option can be
252b5132 4246used to specify the path to the assembler that dlltool will use,
c7c55b78
NC
4247and the @option{-f} option can be used to pass specific flags to that
4248assembler. The @option{-n} can be used to prevent dlltool from deleting
4249these temporary assembler files when it is done, and if @option{-n} is
252b5132
RH
4250specified twice then this will prevent dlltool from deleting the
4251temporary object files it used to build the library.
4252
4253Here is an example of creating a DLL from a source file @samp{dll.c} and
4254also creating a program (from an object file called @samp{program.o})
4255that uses that DLL:
4256
4257@smallexample
4258 gcc -c dll.c
4259 dlltool -e exports.o -l dll.lib dll.o
4260 gcc dll.o exports.o -o dll.dll
4261 gcc program.o dll.lib -o program
4262@end smallexample
4263
d4732f7c
CW
4264
4265@command{dlltool} may also be used to query an existing import library
b3364cb9 4266to determine the name of the DLL to which it is associated. See the
d4732f7c 4267description of the @option{-I} or @option{--identify} option.
b3364cb9 4268
0285c67d
NC
4269@c man end
4270
4271@c man begin OPTIONS dlltool
4272
252b5132
RH
4273The command line options have the following meanings:
4274
c7c55b78 4275@table @env
252b5132
RH
4276
4277@item -d @var{filename}
4278@itemx --input-def @var{filename}
4279@cindex input .def file
2aa9814e 4280Specifies the name of a @file{.def} file to be read in and processed.
252b5132
RH
4281
4282@item -b @var{filename}
4283@itemx --base-file @var{filename}
4284@cindex base files
4285Specifies the name of a base file to be read in and processed. The
4286contents of this file will be added to the relocation section in the
4287exports file generated by dlltool.
4288
4289@item -e @var{filename}
4290@itemx --output-exp @var{filename}
4291Specifies the name of the export file to be created by dlltool.
4292
4293@item -z @var{filename}
4294@itemx --output-def @var{filename}
2aa9814e 4295Specifies the name of the @file{.def} file to be created by dlltool.
252b5132
RH
4296
4297@item -l @var{filename}
4298@itemx --output-lib @var{filename}
4299Specifies the name of the library file to be created by dlltool.
4300
10e636d2
DK
4301@item -y @var{filename}
4302@itemx --output-delaylib @var{filename}
4303Specifies the name of the delay-import library file to be created by dlltool.
4304
252b5132
RH
4305@item --export-all-symbols
4306Treat all global and weak defined symbols found in the input object
4307files as symbols to be exported. There is a small list of symbols which
c7c55b78 4308are not exported by default; see the @option{--no-default-excludes}
252b5132 4309option. You may add to the list of symbols to not export by using the
c7c55b78 4310@option{--exclude-symbols} option.
252b5132
RH
4311
4312@item --no-export-all-symbols
2aa9814e 4313Only export symbols explicitly listed in an input @file{.def} file or in
252b5132
RH
4314@samp{.drectve} sections in the input object files. This is the default
4315behaviour. The @samp{.drectve} sections are created by @samp{dllexport}
4316attributes in the source code.
4317
4318@item --exclude-symbols @var{list}
4319Do not export the symbols in @var{list}. This is a list of symbol names
4320separated by comma or colon characters. The symbol names should not
4321contain a leading underscore. This is only meaningful when
c7c55b78 4322@option{--export-all-symbols} is used.
252b5132
RH
4323
4324@item --no-default-excludes
c7c55b78 4325When @option{--export-all-symbols} is used, it will by default avoid
252b5132
RH
4326exporting certain special symbols. The current list of symbols to avoid
4327exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
c7c55b78 4328@samp{impure_ptr}. You may use the @option{--no-default-excludes} option
252b5132 4329to go ahead and export these special symbols. This is only meaningful
c7c55b78 4330when @option{--export-all-symbols} is used.
252b5132
RH
4331
4332@item -S @var{path}
4333@itemx --as @var{path}
4334Specifies the path, including the filename, of the assembler to be used
4335to create the exports file.
4336
6364e0b4
NC
4337@item -f @var{options}
4338@itemx --as-flags @var{options}
4339Specifies any specific command line options to be passed to the
252b5132 4340assembler when building the exports file. This option will work even if
c7c55b78 4341the @option{-S} option is not used. This option only takes one argument,
252b5132
RH
4342and if it occurs more than once on the command line, then later
4343occurrences will override earlier occurrences. So if it is necessary to
6364e0b4 4344pass multiple options to the assembler they should be enclosed in
252b5132
RH
4345double quotes.
4346
4347@item -D @var{name}
4348@itemx --dll-name @var{name}
2aa9814e
BE
4349Specifies the name to be stored in the @file{.def} file as the name of
4350the DLL when the @option{-e} option is used. If this option is not
4351present, then the filename given to the @option{-e} option will be
4352used as the name of the DLL.
252b5132
RH
4353
4354@item -m @var{machine}
4355@itemx -machine @var{machine}
4356Specifies the type of machine for which the library file should be
c7c55b78 4357built. @command{dlltool} has a built in default type, depending upon how
252b5132
RH
4358it was created, but this option can be used to override that. This is
4359normally only useful when creating DLLs for an ARM processor, when the
c36774d6 4360contents of the DLL are actually encode using Thumb instructions.
252b5132
RH
4361
4362@item -a
4363@itemx --add-indirect
c7c55b78 4364Specifies that when @command{dlltool} is creating the exports file it
252b5132
RH
4365should add a section which allows the exported functions to be
4366referenced without using the import library. Whatever the hell that
c1c0eb9e 4367means!
252b5132
RH
4368
4369@item -U
4370@itemx --add-underscore
c7c55b78 4371Specifies that when @command{dlltool} is creating the exports file it
c1c0eb9e 4372should prepend an underscore to the names of @emph{all} exported symbols.
14288fdc 4373
36d21de5
KT
4374@item --no-leading-underscore
4375@item --leading-underscore
4376Specifies whether standard symbol should be forced to be prefixed, or
4377not.
4378
14288fdc
DS
4379@item --add-stdcall-underscore
4380Specifies that when @command{dlltool} is creating the exports file it
4381should prepend an underscore to the names of exported @emph{stdcall}
4382functions. Variable names and non-stdcall function names are not modified.
4383This option is useful when creating GNU-compatible import libs for third
4384party DLLs that were built with MS-Windows tools.
252b5132
RH
4385
4386@item -k
4387@itemx --kill-at
c1724c7f
DK
4388Specifies that @samp{@@<number>} suffixes should be omitted from the names
4389of stdcall functions that will be imported from the DLL. This is
4390useful when creating an import library for a DLL which exports stdcall
4391functions but without the usual @samp{@@<number>} symbol name suffix.
4392
4393This does not change the naming of symbols provided by the import library
4394to programs linked against it, but only the entries in the import table
4395(ie the .idata section).
252b5132
RH
4396
4397@item -A
4398@itemx --add-stdcall-alias
c7c55b78 4399Specifies that when @command{dlltool} is creating the exports file it
252b5132
RH
4400should add aliases for stdcall symbols without @samp{@@ <number>}
4401in addition to the symbols with @samp{@@ <number>}.
4402
607dea97
NC
4403@item -p
4404@itemx --ext-prefix-alias @var{prefix}
4405Causes @command{dlltool} to create external aliases for all DLL
4406imports with the specified prefix. The aliases are created for both
4407external and import symbols with no leading underscore.
4408
252b5132
RH
4409@item -x
4410@itemx --no-idata4
c7c55b78
NC
4411Specifies that when @command{dlltool} is creating the exports and library
4412files it should omit the @code{.idata4} section. This is for compatibility
252b5132
RH
4413with certain operating systems.
4414
e77b97d4
KT
4415@item --use-nul-prefixed-import-tables
4416Specifies that when @command{dlltool} is creating the exports and library
4417files it should prefix the @code{.idata4} and @code{.idata5} by zero an
4418element. This emulates old gnu import library generation of
4419@code{dlltool}. By default this option is turned off.
4420
252b5132
RH
4421@item -c
4422@itemx --no-idata5
c7c55b78
NC
4423Specifies that when @command{dlltool} is creating the exports and library
4424files it should omit the @code{.idata5} section. This is for compatibility
252b5132
RH
4425with certain operating systems.
4426
d4732f7c
CW
4427@item -I @var{filename}
4428@itemx --identify @var{filename}
4429Specifies that @command{dlltool} should inspect the import library
71c57c16
NC
4430indicated by @var{filename} and report, on @code{stdout}, the name(s)
4431of the associated DLL(s). This can be performed in addition to any
4432other operations indicated by the other options and arguments.
4433@command{dlltool} fails if the import library does not exist or is not
4434actually an import library. See also @option{--identify-strict}.
4435
4436@item --identify-strict
4437Modifies the behavior of the @option{--identify} option, such
4438that an error is reported if @var{filename} is associated with
4439more than one DLL.
d4732f7c 4440
252b5132
RH
4441@item -i
4442@itemx --interwork
c7c55b78 4443Specifies that @command{dlltool} should mark the objects in the library
252b5132 4444file and exports file that it produces as supporting interworking
c36774d6 4445between ARM and Thumb code.
252b5132
RH
4446
4447@item -n
4448@itemx --nodelete
c7c55b78 4449Makes @command{dlltool} preserve the temporary assembler files it used to
252b5132
RH
4450create the exports file. If this option is repeated then dlltool will
4451also preserve the temporary object files it uses to create the library
f9346411
DS
4452file.
4453
4454@item -t @var{prefix}
4455@itemx --temp-prefix @var{prefix}
4456Makes @command{dlltool} use @var{prefix} when constructing the names of
4457temporary assembler and object files. By default, the temp file prefix
c1c0eb9e 4458is generated from the pid.
252b5132
RH
4459
4460@item -v
4461@itemx --verbose
4462Make dlltool describe what it is doing.
4463
4464@item -h
4465@itemx --help
4466Displays a list of command line options and then exits.
4467
4468@item -V
4469@itemx --version
4470Displays dlltool's version number and then exits.
4471
4472@end table
4473
0285c67d
NC
4474@c man end
4475
2aa9814e
BE
4476@menu
4477* def file format:: The format of the dlltool @file{.def} file
4478@end menu
4479
4480@node def file format
4481@section The format of the @command{dlltool} @file{.def} file
4482
4483A @file{.def} file contains any number of the following commands:
4484
4485@table @asis
4486
4487@item @code{NAME} @var{name} @code{[ ,} @var{base} @code{]}
4488The result is going to be named @var{name}@code{.exe}.
4489
4490@item @code{LIBRARY} @var{name} @code{[ ,} @var{base} @code{]}
4491The result is going to be named @var{name}@code{.dll}.
5b3d386e
KT
4492Note: If you want to use LIBRARY as name then you need to quote. Otherwise
4493this will fail due a necessary hack for libtool (see PR binutils/13710 for more
4494details).
2aa9814e 4495
bf201fdd 4496@item @code{EXPORTS ( ( (} @var{name1} @code{[ = } @var{name2} @code{] ) | ( } @var{name1} @code{=} @var{module-name} @code{.} @var{external-name} @code{) ) [ == } @var{its_name} @code{]}
2aa9814e
BE
4497@item @code{[} @var{integer} @code{] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *}
4498Declares @var{name1} as an exported symbol from the DLL, with optional
4499ordinal number @var{integer}, or declares @var{name1} as an alias
bf201fdd
KT
4500(forward) of the function @var{external-name} in the DLL.
4501If @var{its_name} is specified, this name is used as string in export table.
2aa9814e 4502@var{module-name}.
5b3d386e
KT
4503Note: The @code{EXPORTS} has to be the last command in .def file, as keywords
4504are treated - beside @code{LIBRARY} - as simple name-identifiers.
4505If you want to use LIBRARY as name then you need to quote it.
2aa9814e 4506
bf201fdd 4507@item @code{IMPORTS ( (} @var{internal-name} @code{=} @var{module-name} @code{.} @var{integer} @code{) | [} @var{internal-name} @code{= ]} @var{module-name} @code{.} @var{external-name} @code{) [ == ) @var{its_name} @code{]} *}
2aa9814e
BE
4508Declares that @var{external-name} or the exported function whose
4509ordinal number is @var{integer} is to be imported from the file
4510@var{module-name}. If @var{internal-name} is specified then this is
4511the name that the imported function will be referred to in the body of
4512the DLL.
bf201fdd 4513If @var{its_name} is specified, this name is used as string in import table.
5b3d386e
KT
4514Note: The @code{IMPORTS} has to be the last command in .def file, as keywords
4515are treated - beside @code{LIBRARY} - as simple name-identifiers.
4516If you want to use LIBRARY as name then you need to quote it.
2aa9814e
BE
4517
4518@item @code{DESCRIPTION} @var{string}
4519Puts @var{string} into the output @file{.exp} file in the
4520@code{.rdata} section.
4521
4522@item @code{STACKSIZE} @var{number-reserve} @code{[, } @var{number-commit} @code{]}
4523@item @code{HEAPSIZE} @var{number-reserve} @code{[, } @var{number-commit} @code{]}
4524Generates @code{--stack} or @code{--heap}
4525@var{number-reserve},@var{number-commit} in the output @code{.drectve}
4526section. The linker will see this and act upon it.
4527
4528@item @code{CODE} @var{attr} @code{+}
4529@item @code{DATA} @var{attr} @code{+}
4530@item @code{SECTIONS (} @var{section-name} @var{attr}@code{ + ) *}
4531Generates @code{--attr} @var{section-name} @var{attr} in the output
4532@code{.drectve} section, where @var{attr} is one of @code{READ},
4533@code{WRITE}, @code{EXECUTE} or @code{SHARED}. The linker will see
4534this and act upon it.
4535
4536@end table
4537
0285c67d
NC
4538@ignore
4539@c man begin SEEALSO dlltool
2aa9814e 4540The Info pages for @file{binutils}.
0285c67d
NC
4541@c man end
4542@end ignore
4543
252b5132
RH
4544@node readelf
4545@chapter readelf
4546
4547@cindex ELF file information
4548@kindex readelf
4549
0285c67d
NC
4550@c man title readelf Displays information about ELF files.
4551
252b5132 4552@smallexample
0285c67d 4553@c man begin SYNOPSIS readelf
c1c0eb9e 4554readelf [@option{-a}|@option{--all}]
c7c55b78
NC
4555 [@option{-h}|@option{--file-header}]
4556 [@option{-l}|@option{--program-headers}|@option{--segments}]
4557 [@option{-S}|@option{--section-headers}|@option{--sections}]
81fc812e 4558 [@option{-g}|@option{--section-groups}]
5477e8a0 4559 [@option{-t}|@option{--section-details}]
c7c55b78
NC
4560 [@option{-e}|@option{--headers}]
4561 [@option{-s}|@option{--syms}|@option{--symbols}]
2c610e4b 4562 [@option{--dyn-syms}]
c7c55b78
NC
4563 [@option{-n}|@option{--notes}]
4564 [@option{-r}|@option{--relocs}]
4565 [@option{-u}|@option{--unwind}]
4566 [@option{-d}|@option{--dynamic}]
4567 [@option{-V}|@option{--version-info}]
947ed062 4568 [@option{-A}|@option{--arch-specific}]
c7c55b78 4569 [@option{-D}|@option{--use-dynamic}]
aef1f6d0 4570 [@option{-x} <number or name>|@option{--hex-dump=}<number or name>]
09c11c86 4571 [@option{-p} <number or name>|@option{--string-dump=}<number or name>]
cf13d699 4572 [@option{-R} <number or name>|@option{--relocated-dump=}<number or name>]
0e602686 4573 [@option{-z}|@option{--decompress}]
4145f1d5 4574 [@option{-c}|@option{--archive-index}]
f9f0e732 4575 [@option{-w[lLiaprmfFsoRt]}|
5bbdf3d5 4576 @option{--debug-dump}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
fd2f0033
TT
4577 [@option{--dwarf-depth=@var{n}}]
4578 [@option{--dwarf-start=@var{n}}]
ed22650e 4579 [@option{-I}|@option{--histogram}]
c7c55b78 4580 [@option{-v}|@option{--version}]
d974e256 4581 [@option{-W}|@option{--wide}]
c7c55b78 4582 [@option{-H}|@option{--help}]
252b5132 4583 @var{elffile}@dots{}
0285c67d 4584@c man end
252b5132
RH
4585@end smallexample
4586
0285c67d
NC
4587@c man begin DESCRIPTION readelf
4588
c7c55b78 4589@command{readelf} displays information about one or more ELF format object
252b5132
RH
4590files. The options control what particular information to display.
4591
fb52b2f4
NC
4592@var{elffile}@dots{} are the object files to be examined. 32-bit and
459364-bit ELF files are supported, as are archives containing ELF files.
252b5132 4594
9eb20dd8
NC
4595This program performs a similar function to @command{objdump} but it
4596goes into more detail and it exists independently of the @sc{bfd}
4597library, so if there is a bug in @sc{bfd} then readelf will not be
4598affected.
4599
0285c67d
NC
4600@c man end
4601
4602@c man begin OPTIONS readelf
4603
252b5132
RH
4604The long and short forms of options, shown here as alternatives, are
4605equivalent. At least one option besides @samp{-v} or @samp{-H} must be
c1c0eb9e 4606given.
252b5132 4607
c7c55b78 4608@table @env
252b5132
RH
4609@item -a
4610@itemx --all
d95ef3ab 4611Equivalent to specifying @option{--file-header},
c7c55b78
NC
4612@option{--program-headers}, @option{--sections}, @option{--symbols},
4613@option{--relocs}, @option{--dynamic}, @option{--notes} and
c1c0eb9e 4614@option{--version-info}.
252b5132
RH
4615
4616@item -h
4617@itemx --file-header
4618@cindex ELF file header information
4619Displays the information contained in the ELF header at the start of the
4620file.
4621
4622@item -l
4623@itemx --program-headers
4624@itemx --segments
4625@cindex ELF program header information
4626@cindex ELF segment information
4627Displays the information contained in the file's segment headers, if it
4628has any.
4629
4630@item -S
4631@itemx --sections
4632@itemx --section-headers
4633@cindex ELF section information
4634Displays the information contained in the file's section headers, if it
4635has any.
4636
81fc812e
L
4637@item -g
4638@itemx --section-groups
4639@cindex ELF section group information
4640Displays the information contained in the file's section groups, if it
4641has any.
4642
5477e8a0
L
4643@item -t
4644@itemx --section-details
4645@cindex ELF section information
4646Displays the detailed section information. Implies @option{-S}.
81fc812e 4647
252b5132
RH
4648@item -s
4649@itemx --symbols
4650@itemx --syms
4651@cindex ELF symbol table information
4652Displays the entries in symbol table section of the file, if it has one.
df2c87b5
NC
4653If a symbol has version information associated with it then this is
4654displayed as well. The version string is displayed as a suffix to the
4655symbol name, preceeded by an @@ character. For example
4656@samp{foo@@VER_1}. If the version is the default version to be used
4657when resolving unversioned references to the symbol then it is
4658displayed as a suffix preceeded by two @@ characters. For example
4659@samp{foo@@@@VER_2}.
252b5132 4660
2c610e4b
L
4661@item --dyn-syms
4662@cindex ELF dynamic symbol table information
4663Displays the entries in dynamic symbol table section of the file, if it
df2c87b5
NC
4664has one. The output format is the same as the format used by the
4665@option{--syms} option.
2c610e4b 4666
252b5132
RH
4667@item -e
4668@itemx --headers
c7c55b78 4669Display all the headers in the file. Equivalent to @option{-h -l -S}.
252b5132 4670
779fe533
NC
4671@item -n
4672@itemx --notes
1ec5cd37
NC
4673@cindex ELF notes
4674Displays the contents of the NOTE segments and/or sections, if any.
779fe533 4675
252b5132
RH
4676@item -r
4677@itemx --relocs
4678@cindex ELF reloc information
f5e21966
NC
4679Displays the contents of the file's relocation section, if it has one.
4680
4681@item -u
4682@itemx --unwind
4683@cindex unwind information
4684Displays the contents of the file's unwind section, if it has one. Only
ba7f2642
TS
4685the unwind sections for IA64 ELF files, as well as ARM unwind tables
4686(@code{.ARM.exidx} / @code{.ARM.extab}) are currently supported.
252b5132
RH
4687
4688@item -d
4689@itemx --dynamic
4690@cindex ELF dynamic section information
4691Displays the contents of the file's dynamic section, if it has one.
4692
4693@item -V
4694@itemx --version-info
a8685210 4695@cindex ELF version sections information
252b5132
RH
4696Displays the contents of the version sections in the file, it they
4697exist.
4698
947ed062
NC
4699@item -A
4700@itemx --arch-specific
4701Displays architecture-specific information in the file, if there
4702is any.
4703
252b5132
RH
4704@item -D
4705@itemx --use-dynamic
c7c55b78 4706When displaying symbols, this option makes @command{readelf} use the
2c610e4b
L
4707symbol hash tables in the file's dynamic section, rather than the
4708symbol table sections.
252b5132 4709
aef1f6d0
DJ
4710@item -x <number or name>
4711@itemx --hex-dump=<number or name>
cf13d699 4712Displays the contents of the indicated section as a hexadecimal bytes.
aef1f6d0
DJ
4713A number identifies a particular section by index in the section table;
4714any other string identifies all sections with that name in the object file.
252b5132 4715
cf13d699
NC
4716@item -R <number or name>
4717@itemx --relocated-dump=<number or name>
4718Displays the contents of the indicated section as a hexadecimal
4719bytes. A number identifies a particular section by index in the
4720section table; any other string identifies all sections with that name
4721in the object file. The contents of the section will be relocated
4722before they are displayed.
4723
09c11c86
NC
4724@item -p <number or name>
4725@itemx --string-dump=<number or name>
4726Displays the contents of the indicated section as printable strings.
4727A number identifies a particular section by index in the section table;
4728any other string identifies all sections with that name in the object file.
4729
0e602686
NC
4730@item -z
4731@itemx --decompress
4732Requests that the section(s) being dumped by @option{x}, @option{R} or
4733@option{p} options are decompressed before being displayed. If the
4734section(s) are not compressed then they are displayed as is.
4735
4145f1d5
NC
4736@item -c
4737@itemx --archive-index
4738@cindex Archive file symbol index information
a8685210 4739Displays the file symbol index information contained in the header part
4145f1d5
NC
4740of binary archives. Performs the same function as the @option{t}
4741command to @command{ar}, but without using the BFD library. @xref{ar}.
4742
f9f0e732 4743@item -w[lLiaprmfFsoRt]
5bbdf3d5 4744@itemx --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]
252b5132
RH
4745Displays the contents of the debug sections in the file, if any are
4746present. If one of the optional letters or words follows the switch
4747then only data found in those specific sections will be dumped.
4748
6f875884 4749Note that there is no single letter option to display the content of
5bbdf3d5 4750trace sections or .gdb_index.
6f875884 4751
a262ae96
NC
4752Note: the @option{=decodedline} option will display the interpreted
4753contents of a .debug_line section whereas the @option{=rawline} option
4754dumps the contents in a raw format.
4755
1ed06042
NC
4756Note: the @option{=frames-interp} option will display the interpreted
4757contents of a .debug_frame section whereas the @option{=frames} option
4758dumps the contents in a raw format.
4759
fd2f0033
TT
4760Note: the output from the @option{=info} option can also be affected
4761by the options @option{--dwarf-depth} and @option{--dwarf-start}.
4762
4763@item --dwarf-depth=@var{n}
4764Limit the dump of the @code{.debug_info} section to @var{n} children.
4765This is only useful with @option{--debug-dump=info}. The default is
4766to print all DIEs; the special value 0 for @var{n} will also have this
4767effect.
4768
4769With a non-zero value for @var{n}, DIEs at or deeper than @var{n}
4770levels will not be printed. The range for @var{n} is zero-based.
4771
4772@item --dwarf-start=@var{n}
4773Print only DIEs beginning with the DIE numbered @var{n}. This is only
4774useful with @option{--debug-dump=info}.
4775
4776If specified, this option will suppress printing of any header
4777information and all DIEs before the DIE numbered @var{n}. Only
4778siblings and children of the specified DIE will be printed.
4779
4780This can be used in conjunction with @option{--dwarf-depth}.
4781
947ed062
NC
4782@item -I
4783@itemx --histogram
252b5132
RH
4784Display a histogram of bucket list lengths when displaying the contents
4785of the symbol tables.
4786
4787@item -v
4788@itemx --version
4789Display the version number of readelf.
4790
d974e256
JJ
4791@item -W
4792@itemx --wide
4793Don't break output lines to fit into 80 columns. By default
4794@command{readelf} breaks section header and segment listing lines for
479564-bit ELF files, so that they fit into 80 columns. This option causes
4796@command{readelf} to print each section header resp. each segment one a
4797single line, which is far more readable on terminals wider than 80 columns.
4798
252b5132
RH
4799@item -H
4800@itemx --help
c7c55b78 4801Display the command line options understood by @command{readelf}.
252b5132
RH
4802
4803@end table
4804
0285c67d
NC
4805@c man end
4806
4807@ignore
4808@c man begin SEEALSO readelf
4809objdump(1), and the Info entries for @file{binutils}.
4810@c man end
4811@end ignore
252b5132 4812
30fd33bb
L
4813@node elfedit
4814@chapter elfedit
4815
4816@cindex Update ELF header
4817@kindex elfedit
4818
4819@c man title elfedit Update the ELF header of ELF files.
4820
4821@smallexample
4822@c man begin SYNOPSIS elfedit
4823elfedit [@option{--input-mach=}@var{machine}]
dd35de74 4824 [@option{--input-type=}@var{type}]
08ebfb8c 4825 [@option{--input-osabi=}@var{osabi}]
c7a795f8 4826 @option{--output-mach=}@var{machine}
dd35de74 4827 @option{--output-type=}@var{type}
08ebfb8c 4828 @option{--output-osabi=}@var{osabi}
30fd33bb
L
4829 [@option{-v}|@option{--version}]
4830 [@option{-h}|@option{--help}]
4831 @var{elffile}@dots{}
4832@c man end
4833@end smallexample
4834
4835@c man begin DESCRIPTION elfedit
4836
dd35de74
L
4837@command{elfedit} updates the ELF header of ELF files which have
4838the matching ELF machine and file types. The options control how and
4839which fields in the ELF header should be updated.
30fd33bb
L
4840
4841@var{elffile}@dots{} are the ELF files to be updated. 32-bit and
484264-bit ELF files are supported, as are archives containing ELF files.
4843@c man end
4844
4845@c man begin OPTIONS elfedit
4846
4847The long and short forms of options, shown here as alternatives, are
d0514c49
L
4848equivalent. At least one of the @option{--output-mach},
4849@option{--output-type} and @option{--output-osabi} options must be given.
30fd33bb
L
4850
4851@table @env
4852
574b25e8 4853@item --input-mach=@var{machine}
dd35de74
L
4854Set the matching input ELF machine type to @var{machine}. If
4855@option{--input-mach} isn't specified, it will match any ELF
4856machine types.
30fd33bb 4857
6c14750f
L
4858The supported ELF machine types are, @var{i386}, @var{IAMCU}, @var{L1OM},
4859@var{K1OM} and @var{x86-64}.
30fd33bb 4860
574b25e8 4861@item --output-mach=@var{machine}
30fd33bb
L
4862Change the ELF machine type in the ELF header to @var{machine}. The
4863supported ELF machine types are the same as @option{--input-mach}.
4864
574b25e8 4865@item --input-type=@var{type}
dd35de74
L
4866Set the matching input ELF file type to @var{type}. If
4867@option{--input-type} isn't specified, it will match any ELF file types.
4868
4869The supported ELF file types are, @var{rel}, @var{exec} and @var{dyn}.
4870
574b25e8 4871@item --output-type=@var{type}
dd35de74
L
4872Change the ELF file type in the ELF header to @var{type}. The
4873supported ELF types are the same as @option{--input-type}.
4874
574b25e8 4875@item --input-osabi=@var{osabi}
08ebfb8c 4876Set the matching input ELF file OSABI to @var{osabi}. If
d0514c49
L
4877@option{--input-osabi} isn't specified, it will match any ELF OSABIs.
4878
4879The supported ELF OSABIs are, @var{none}, @var{HPUX}, @var{NetBSD},
9c55345c
TS
4880@var{GNU}, @var{Linux} (alias for @var{GNU}),
4881@var{Solaris}, @var{AIX}, @var{Irix},
d0514c49
L
4882@var{FreeBSD}, @var{TRU64}, @var{Modesto}, @var{OpenBSD}, @var{OpenVMS},
4883@var{NSK}, @var{AROS} and @var{FenixOS}.
4884
574b25e8 4885@item --output-osabi=@var{osabi}
08ebfb8c 4886Change the ELF OSABI in the ELF header to @var{osabi}. The
d0514c49
L
4887supported ELF OSABI are the same as @option{--input-osabi}.
4888
30fd33bb
L
4889@item -v
4890@itemx --version
4891Display the version number of @command{elfedit}.
4892
4893@item -h
4894@itemx --help
4895Display the command line options understood by @command{elfedit}.
4896
4897@end table
4898
4899@c man end
4900
4901@ignore
4902@c man begin SEEALSO elfedit
4903readelf(1), and the Info entries for @file{binutils}.
4904@c man end
4905@end ignore
4906
07012eee
MM
4907@node Common Options
4908@chapter Common Options
4909
4910The following command-line options are supported by all of the
4911programs described in this manual.
4912
dff70155 4913@c man begin OPTIONS
07012eee 4914@table @env
38fc1cb1 4915@include at-file.texi
dff70155 4916@c man end
07012eee
MM
4917
4918@item --help
4919Display the command-line options supported by the program.
4920
4921@item --version
4922Display the version number of the program.
4923
dff70155 4924@c man begin OPTIONS
07012eee 4925@end table
dff70155 4926@c man end
07012eee 4927
fff279a7 4928@node Selecting the Target System
947ed062 4929@chapter Selecting the Target System
252b5132 4930
947ed062 4931You can specify two aspects of the target system to the @sc{gnu}
252b5132
RH
4932binary file utilities, each in several ways:
4933
4934@itemize @bullet
4935@item
4936the target
4937
4938@item
4939the architecture
252b5132
RH
4940@end itemize
4941
4942In the following summaries, the lists of ways to specify values are in
4943order of decreasing precedence. The ways listed first override those
4944listed later.
4945
4946The commands to list valid values only list the values for which the
4947programs you are running were configured. If they were configured with
c7c55b78 4948@option{--enable-targets=all}, the commands list most of the available
252b5132
RH
4949values, but a few are left out; not all targets can be configured in at
4950once because some of them can only be configured @dfn{native} (on hosts
4951with the same type as the target system).
4952
4953@menu
c1c0eb9e
RM
4954* Target Selection::
4955* Architecture Selection::
252b5132
RH
4956@end menu
4957
4958@node Target Selection
4959@section Target Selection
4960
4961A @dfn{target} is an object file format. A given target may be
4962supported for multiple architectures (@pxref{Architecture Selection}).
4963A target selection may also have variations for different operating
4964systems or architectures.
4965
4966The command to list valid target values is @samp{objdump -i}
4967(the first column of output contains the relevant information).
4968
4969Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
4970@samp{a.out-sunos-big}.
4971
4972You can also specify a target using a configuration triplet. This is
f20a759a
ILT
4973the same sort of name that is passed to @file{configure} to specify a
4974target. When you use a configuration triplet as an argument, it must be
4975fully canonicalized. You can see the canonical version of a triplet by
252b5132
RH
4976running the shell script @file{config.sub} which is included with the
4977sources.
4978
4979Some sample configuration triplets are: @samp{m68k-hp-bsd},
4980@samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
4981
c7c55b78 4982@subheading @command{objdump} Target
252b5132
RH
4983
4984Ways to specify:
4985
4986@enumerate
4987@item
c7c55b78 4988command line option: @option{-b} or @option{--target}
252b5132
RH
4989
4990@item
4991environment variable @code{GNUTARGET}
4992
4993@item
4994deduced from the input file
4995@end enumerate
4996
c7c55b78 4997@subheading @command{objcopy} and @command{strip} Input Target
252b5132
RH
4998
4999Ways to specify:
5000
5001@enumerate
5002@item
c7c55b78 5003command line options: @option{-I} or @option{--input-target}, or @option{-F} or @option{--target}
252b5132
RH
5004
5005@item
5006environment variable @code{GNUTARGET}
5007
5008@item
5009deduced from the input file
5010@end enumerate
5011
c7c55b78 5012@subheading @command{objcopy} and @command{strip} Output Target
252b5132
RH
5013
5014Ways to specify:
5015
5016@enumerate
5017@item
c7c55b78 5018command line options: @option{-O} or @option{--output-target}, or @option{-F} or @option{--target}
252b5132
RH
5019
5020@item
c7c55b78 5021the input target (see ``@command{objcopy} and @command{strip} Input Target'' above)
252b5132
RH
5022
5023@item
5024environment variable @code{GNUTARGET}
5025
5026@item
5027deduced from the input file
5028@end enumerate
5029
c7c55b78 5030@subheading @command{nm}, @command{size}, and @command{strings} Target
252b5132
RH
5031
5032Ways to specify:
5033
5034@enumerate
5035@item
c7c55b78 5036command line option: @option{--target}
252b5132
RH
5037
5038@item
5039environment variable @code{GNUTARGET}
5040
5041@item
5042deduced from the input file
5043@end enumerate
5044
252b5132 5045@node Architecture Selection
947ed062 5046@section Architecture Selection
252b5132
RH
5047
5048An @dfn{architecture} is a type of @sc{cpu} on which an object file is
5049to run. Its name may contain a colon, separating the name of the
5050processor family from the name of the particular @sc{cpu}.
5051
5052The command to list valid architecture values is @samp{objdump -i} (the
5053second column contains the relevant information).
5054
5055Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
5056
c7c55b78 5057@subheading @command{objdump} Architecture
252b5132
RH
5058
5059Ways to specify:
5060
5061@enumerate
5062@item
c7c55b78 5063command line option: @option{-m} or @option{--architecture}
252b5132
RH
5064
5065@item
5066deduced from the input file
5067@end enumerate
5068
c7c55b78 5069@subheading @command{objcopy}, @command{nm}, @command{size}, @command{strings} Architecture
252b5132
RH
5070
5071Ways to specify:
5072
5073@enumerate
5074@item
5075deduced from the input file
5076@end enumerate
5077
252b5132
RH
5078@node Reporting Bugs
5079@chapter Reporting Bugs
5080@cindex bugs
5081@cindex reporting bugs
5082
5083Your bug reports play an essential role in making the binary utilities
5084reliable.
5085
5086Reporting a bug may help you by bringing a solution to your problem, or
5087it may not. But in any case the principal function of a bug report is
5088to help the entire community by making the next version of the binary
5089utilities work better. Bug reports are your contribution to their
5090maintenance.
5091
5092In order for a bug report to serve its purpose, you must include the
5093information that enables us to fix the bug.
5094
5095@menu
5096* Bug Criteria:: Have you found a bug?
5097* Bug Reporting:: How to report bugs
5098@end menu
5099
5100@node Bug Criteria
947ed062 5101@section Have You Found a Bug?
252b5132
RH
5102@cindex bug criteria
5103
5104If you are not sure whether you have found a bug, here are some guidelines:
5105
5106@itemize @bullet
5107@cindex fatal signal
5108@cindex crash
5109@item
5110If a binary utility gets a fatal signal, for any input whatever, that is
5111a bug. Reliable utilities never crash.
5112
5113@cindex error on valid input
5114@item
5115If a binary utility produces an error message for valid input, that is a
5116bug.
5117
5118@item
5119If you are an experienced user of binary utilities, your suggestions for
5120improvement are welcome in any case.
5121@end itemize
5122
5123@node Bug Reporting
947ed062 5124@section How to Report Bugs
252b5132
RH
5125@cindex bug reports
5126@cindex bugs, reporting
5127
5128A number of companies and individuals offer support for @sc{gnu}
5129products. If you obtained the binary utilities from a support
5130organization, we recommend you contact that organization first.
5131
5132You can find contact information for many support companies and
5133individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
5134distribution.
5135
ad22bfe8 5136@ifset BUGURL
252b5132 5137In any event, we also recommend that you send bug reports for the binary
ad22bfe8
JM
5138utilities to @value{BUGURL}.
5139@end ifset
252b5132
RH
5140
5141The fundamental principle of reporting bugs usefully is this:
5142@strong{report all the facts}. If you are not sure whether to state a
5143fact or leave it out, state it!
5144
5145Often people omit facts because they think they know what causes the
5146problem and assume that some details do not matter. Thus, you might
5147assume that the name of a file you use in an example does not matter.
5148Well, probably it does not, but one cannot be sure. Perhaps the bug is
5149a stray memory reference which happens to fetch from the location where
5150that pathname is stored in memory; perhaps, if the pathname were
5151different, the contents of that location would fool the utility into
5152doing the right thing despite the bug. Play it safe and give a
5153specific, complete example. That is the easiest thing for you to do,
5154and the most helpful.
5155
5156Keep in mind that the purpose of a bug report is to enable us to fix the bug if
5157it is new to us. Therefore, always write your bug reports on the assumption
5158that the bug has not been reported previously.
5159
5160Sometimes people give a few sketchy facts and ask, ``Does this ring a
947ed062
NC
5161bell?'' This cannot help us fix a bug, so it is basically useless. We
5162respond by asking for enough details to enable us to investigate.
5163You might as well expedite matters by sending them to begin with.
252b5132
RH
5164
5165To enable us to fix the bug, you should include all these things:
5166
5167@itemize @bullet
5168@item
5169The version of the utility. Each utility announces it if you start it
c7c55b78 5170with the @option{--version} argument.
252b5132
RH
5171
5172Without this, we will not know whether there is any point in looking for
5173the bug in the current version of the binary utilities.
5174
5175@item
5176Any patches you may have applied to the source, including any patches
5177made to the @code{BFD} library.
5178
5179@item
5180The type of machine you are using, and the operating system name and
5181version number.
5182
5183@item
5184What compiler (and its version) was used to compile the utilities---e.g.
5185``@code{gcc-2.7}''.
5186
5187@item
5188The command arguments you gave the utility to observe the bug. To
5189guarantee you will not omit something important, list them all. A copy
5190of the Makefile (or the output from make) is sufficient.
5191
5192If we were to try to guess the arguments, we would probably guess wrong
5193and then we might not encounter the bug.
5194
5195@item
5196A complete input file, or set of input files, that will reproduce the
5197bug. If the utility is reading an object file or files, then it is
ad22bfe8 5198generally most helpful to send the actual object files.
252b5132
RH
5199
5200If the source files were produced exclusively using @sc{gnu} programs
c7c55b78 5201(e.g., @command{gcc}, @command{gas}, and/or the @sc{gnu} @command{ld}), then it
252b5132 5202may be OK to send the source files rather than the object files. In
c7c55b78 5203this case, be sure to say exactly what version of @command{gcc}, or
252b5132 5204whatever, was used to produce the object files. Also say how
c7c55b78 5205@command{gcc}, or whatever, was configured.
252b5132
RH
5206
5207@item
5208A description of what behavior you observe that you believe is
5209incorrect. For example, ``It gets a fatal signal.''
5210
5211Of course, if the bug is that the utility gets a fatal signal, then we
5212will certainly notice it. But if the bug is incorrect output, we might
5213not notice unless it is glaringly wrong. You might as well not give us
5214a chance to make a mistake.
5215
5216Even if the problem you experience is a fatal signal, you should still
f20a759a 5217say so explicitly. Suppose something strange is going on, such as your
b45619c0 5218copy of the utility is out of sync, or you have encountered a bug in
252b5132
RH
5219the C library on your system. (This has happened!) Your copy might
5220crash and ours would not. If you told us to expect a crash, then when
5221ours fails to crash, we would know that the bug was not happening for
5222us. If you had not told us to expect a crash, then we would not be able
5223to draw any conclusion from our observations.
5224
5225@item
5226If you wish to suggest changes to the source, send us context diffs, as
c7c55b78 5227generated by @command{diff} with the @option{-u}, @option{-c}, or @option{-p}
252b5132 5228option. Always send diffs from the old file to the new file. If you
c7c55b78 5229wish to discuss something in the @command{ld} source, refer to it by
f20a759a 5230context, not by line number.
252b5132
RH
5231
5232The line numbers in our development sources will not match those in your
5233sources. Your line numbers would convey no useful information to us.
5234@end itemize
5235
5236Here are some things that are not necessary:
5237
5238@itemize @bullet
5239@item
5240A description of the envelope of the bug.
5241
5242Often people who encounter a bug spend a lot of time investigating
5243which changes to the input file will make the bug go away and which
5244changes will not affect it.
5245
5246This is often time consuming and not very useful, because the way we
5247will find the bug is by running a single example under the debugger
5248with breakpoints, not by pure deduction from a series of examples.
5249We recommend that you save your time for something else.
5250
5251Of course, if you can find a simpler example to report @emph{instead}
5252of the original one, that is a convenience for us. Errors in the
5253output will be easier to spot, running under the debugger will take
5254less time, and so on.
5255
5256However, simplification is not vital; if you do not want to do this,
5257report the bug anyway and send us the entire test case you used.
5258
5259@item
5260A patch for the bug.
5261
5262A patch for the bug does help us if it is a good one. But do not omit
5263the necessary information, such as the test case, on the assumption that
5264a patch is all we need. We might see problems with your patch and decide
5265to fix the problem another way, or we might not understand it at all.
5266
5267Sometimes with programs as complicated as the binary utilities it is
5268very hard to construct an example that will make the program follow a
5269certain path through the code. If you do not send us the example, we
5270will not be able to construct one, so we will not be able to verify that
5271the bug is fixed.
5272
5273And if we cannot understand what bug you are trying to fix, or why your
5274patch should be an improvement, we will not install it. A test case will
5275help us to understand.
5276
5277@item
5278A guess about what the bug is or what it depends on.
5279
5280Such guesses are usually wrong. Even we cannot guess right about such
5281things without first using the debugger to find the facts.
5282@end itemize
5283
fff279a7
NC
5284@node GNU Free Documentation License
5285@appendix GNU Free Documentation License
b3364cb9 5286
947ed062 5287@include fdl.texi
cf055d54 5288
fa0d8a3e
NC
5289@node Binutils Index
5290@unnumbered Binutils Index
252b5132
RH
5291
5292@printindex cp
5293
252b5132 5294@bye
This page took 1.172216 seconds and 4 git commands to generate.