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