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