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