Rename the all occurances of C54X to TIC54X.
[deliverable/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}]
973 [@option{--help}]
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}.
252b5132
RH
1351@end table
1352
0285c67d
NC
1353@c man end
1354
1355@ignore
1356@c man begin SEEALSO objcopy
1357ld(1), objdump(1), and the Info entries for @file{binutils}.
1358@c man end
1359@end ignore
1360
252b5132
RH
1361@node objdump
1362@chapter objdump
1363
1364@cindex object file information
1365@kindex objdump
1366
0285c67d
NC
1367@c man title objdump display information from object files.
1368
252b5132 1369@smallexample
0285c67d 1370@c man begin SYNOPSIS objdump
c7c55b78
NC
1371objdump [@option{-a}|@option{--archive-headers}]
1372 [@option{-b} @var{bfdname}|@option{--target=@var{bfdname}}]
1373 [@option{-C}|@option{--demangle}[=@var{style}] ]
1374 [@option{-d}|@option{--disassemble}]
1375 [@option{-D}|@option{--disassemble-all}]
1376 [@option{-z}|@option{--disassemble-zeroes}]
1377 [@option{-EB}|@option{-EL}|@option{--endian=}@{big | little @}]
1378 [@option{-f}|@option{--file-headers}]
1379 [@option{--file-start-context}]
1380 [@option{-g}|@option{--debugging}]
1381 [@option{-h}|@option{--section-headers}|@option{--headers}]
1382 [@option{-i}|@option{--info}]
1383 [@option{-j} @var{section}|@option{--section=}@var{section}]
1384 [@option{-l}|@option{--line-numbers}]
1385 [@option{-S}|@option{--source}]
1386 [@option{-m} @var{machine}|@option{--architecture=}@var{machine}]
1387 [@option{-M} @var{options}|@option{--disassembler-options=}@var{options}]
1388 [@option{-p}|@option{--private-headers}]
1389 [@option{-r}|@option{--reloc}]
1390 [@option{-R}|@option{--dynamic-reloc}]
1391 [@option{-s}|@option{--full-contents}]
1392 [@option{-G}|@option{--stabs}]
1393 [@option{-t}|@option{--syms}]
1394 [@option{-T}|@option{--dynamic-syms}]
1395 [@option{-x}|@option{--all-headers}]
1396 [@option{-w}|@option{--wide}]
1397 [@option{--start-address=}@var{address}]
1398 [@option{--stop-address=}@var{address}]
1399 [@option{--prefix-addresses}]
1400 [@option{--[no-]show-raw-insn}]
1401 [@option{--adjust-vma=}@var{offset}]
1402 [@option{-V}|@option{--version}]
1403 [@option{-H}|@option{--help}]
252b5132 1404 @var{objfile}@dots{}
0285c67d 1405@c man end
252b5132
RH
1406@end smallexample
1407
0285c67d
NC
1408@c man begin DESCRIPTION objdump
1409
c7c55b78 1410@command{objdump} displays information about one or more object files.
252b5132
RH
1411The options control what particular information to display. This
1412information is mostly useful to programmers who are working on the
1413compilation tools, as opposed to programmers who just want their
1414program to compile and work.
1415
1416@var{objfile}@dots{} are the object files to be examined. When you
c7c55b78 1417specify archives, @command{objdump} shows information on each of the member
252b5132
RH
1418object files.
1419
0285c67d
NC
1420@c man end
1421
1422@c man begin OPTIONS objdump
1423
252b5132 1424The long and short forms of options, shown here as alternatives, are
1dada9c5 1425equivalent. At least one option from the list
c7c55b78 1426@option{-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-S,-t,-T,-V,-x} must be given.
252b5132 1427
c7c55b78 1428@table @env
252b5132
RH
1429@item -a
1430@itemx --archive-header
1431@cindex archive headers
1432If any of the @var{objfile} files are archives, display the archive
1433header information (in a format similar to @samp{ls -l}). Besides the
1434information you could list with @samp{ar tv}, @samp{objdump -a} shows
1435the object file format of each archive member.
1436
1437@item --adjust-vma=@var{offset}
1438@cindex section addresses in objdump
1439@cindex VMA in objdump
1440When dumping information, first add @var{offset} to all the section
1441addresses. This is useful if the section addresses do not correspond to
1442the symbol table, which can happen when putting sections at particular
1443addresses when using a format which can not represent section addresses,
1444such as a.out.
1445
1446@item -b @var{bfdname}
1447@itemx --target=@var{bfdname}
1448@cindex object code format
1449Specify that the object-code format for the object files is
1450@var{bfdname}. This option may not be necessary; @var{objdump} can
1451automatically recognize many formats.
1452
1453For example,
1454@example
1455objdump -b oasys -m vax -h fu.o
1456@end example
1457@noindent
c7c55b78
NC
1458displays summary information from the section headers (@option{-h}) of
1459@file{fu.o}, which is explicitly identified (@option{-m}) as a VAX object
252b5132 1460file in the format produced by Oasys compilers. You can list the
c7c55b78 1461formats available with the @option{-i} option.
252b5132
RH
1462@xref{Target Selection}, for more information.
1463
1464@item -C
28c309a2 1465@itemx --demangle[=@var{style}]
252b5132
RH
1466@cindex demangling in objdump
1467Decode (@dfn{demangle}) low-level symbol names into user-level names.
1468Besides removing any initial underscore prepended by the system, this
28c309a2
NC
1469makes C++ function names readable. Different compilers have different
1470mangling styles. The optional demangling style argument can be used to
1471choose an appropriate demangling style for your compiler. @xref{c++filt},
1472for more information on demangling.
252b5132 1473
947ed062
NC
1474@item -g
1475@itemx --debugging
252b5132
RH
1476Display debugging information. This attempts to parse debugging
1477information stored in the file and print it out using a C like syntax.
1478Only certain types of debugging information have been implemented.
1479
1480@item -d
1481@itemx --disassemble
1482@cindex disassembling object code
1483@cindex machine instructions
1484Display the assembler mnemonics for the machine instructions from
1485@var{objfile}. This option only disassembles those sections which are
1486expected to contain instructions.
1487
1488@item -D
1489@itemx --disassemble-all
c7c55b78 1490Like @option{-d}, but disassemble the contents of all sections, not just
252b5132
RH
1491those expected to contain instructions.
1492
1493@item --prefix-addresses
1494When disassembling, print the complete address on each line. This is
1495the older disassembly format.
1496
252b5132
RH
1497@item -EB
1498@itemx -EL
1499@itemx --endian=@{big|little@}
1500@cindex endianness
1501@cindex disassembly endianness
1502Specify the endianness of the object files. This only affects
1503disassembly. This can be useful when disassembling a file format which
1504does not describe endianness information, such as S-records.
1505
1506@item -f
947ed062 1507@itemx --file-headers
252b5132
RH
1508@cindex object file header
1509Display summary information from the overall header of
1510each of the @var{objfile} files.
1511
f1563258
TW
1512@item --file-start-context
1513@cindex source code context
1514Specify that when displaying interlisted source code/disassembly
c7c55b78 1515(assumes @option{-S}) from a file that has not yet been displayed, extend the
f1563258
TW
1516context to the start of the file.
1517
252b5132 1518@item -h
947ed062
NC
1519@itemx --section-headers
1520@itemx --headers
252b5132
RH
1521@cindex section headers
1522Display summary information from the section headers of the
1523object file.
1524
1525File segments may be relocated to nonstandard addresses, for example by
c7c55b78
NC
1526using the @option{-Ttext}, @option{-Tdata}, or @option{-Tbss} options to
1527@command{ld}. However, some object file formats, such as a.out, do not
252b5132 1528store the starting address of the file segments. In those situations,
c7c55b78 1529although @command{ld} relocates the sections correctly, using @samp{objdump
252b5132
RH
1530-h} to list the file section headers cannot show the correct addresses.
1531Instead, it shows the usual addresses, which are implicit for the
1532target.
1533
947ed062
NC
1534@item -H
1535@itemx --help
c7c55b78 1536Print a summary of the options to @command{objdump} and exit.
252b5132
RH
1537
1538@item -i
1539@itemx --info
1540@cindex architectures available
1541@cindex object formats available
1542Display a list showing all architectures and object formats available
c7c55b78 1543for specification with @option{-b} or @option{-m}.
252b5132
RH
1544
1545@item -j @var{name}
1546@itemx --section=@var{name}
1547@cindex section information
1548Display information only for section @var{name}.
1549
1550@item -l
1551@itemx --line-numbers
1552@cindex source filenames for object files
1553Label the display (using debugging information) with the filename and
1554source line numbers corresponding to the object code or relocs shown.
c7c55b78 1555Only useful with @option{-d}, @option{-D}, or @option{-r}.
252b5132
RH
1556
1557@item -m @var{machine}
1558@itemx --architecture=@var{machine}
1559@cindex architecture
1560@cindex disassembly architecture
1561Specify the architecture to use when disassembling object files. This
1562can be useful when disassembling object files which do not describe
1563architecture information, such as S-records. You can list the available
c7c55b78 1564architectures with the @option{-i} option.
252b5132 1565
dd92f639
NC
1566@item -M @var{options}
1567@itemx --disassembler-options=@var{options}
1568Pass target specific information to the disassembler. Only supported on
1569some targets.
1570
1571If the target is an ARM architecture then this switch can be used to
1572select which register name set is used during disassembler. Specifying
c7c55b78 1573@option{-M reg-name-std} (the default) will select the register names as
58efb6c0
NC
1574used in ARM's instruction set documentation, but with register 13 called
1575'sp', register 14 called 'lr' and register 15 called 'pc'. Specifying
c7c55b78
NC
1576@option{-M reg-names-apcs} will select the name set used by the ARM
1577Procedure Call Standard, whilst specifying @option{-M reg-names-raw} will
58efb6c0
NC
1578just use @samp{r} followed by the register number.
1579
1580There are also two variants on the APCS register naming scheme enabled
c7c55b78
NC
1581by @option{-M reg-names-atpcs} and @option{-M reg-names-special-atpcs} which
1582use the ARM/Thumb Procedure Call Standard naming conventions. (Either
947ed062 1583with the normal register names or the special register names).
dd92f639 1584
8f915f68 1585This option can also be used for ARM architectures to force the
c36774d6 1586disassembler to interpret all instructions as Thumb instructions by
c7c55b78 1587using the switch @option{--disassembler-options=force-thumb}. This can be
8f915f68
NC
1588useful when attempting to disassemble thumb code produced by other
1589compilers.
1590
e396998b
AM
1591For the x86, some of the options duplicate functions of the @option{-m}
1592switch, but allow finer grained control. Multiple selections from the
1593following may be specified as a comma separated string.
b89e9eae 1594@option{x86-64}, @option{i386} and @option{i8086} select disassembly for
e396998b
AM
1595the given architecture. @option{intel} and @option{att} select between
1596intel syntax mode and AT&T syntax mode. @option{addr32},
1597@option{addr16}, @option{data32} and @option{data16} specify the default
1598address size and operand size. These four options will be overridden if
b89e9eae 1599@option{x86-64}, @option{i386} or @option{i8086} appear later in the
e396998b 1600option string. Lastly, @option{suffix}, when in AT&T mode,
b9e5d8e5 1601instructs the disassembler to print a mnemonic suffix even when the
e396998b
AM
1602suffix could be inferred by the operands.
1603
802a735e
AM
1604For PPC, @option{booke}, @option{booke32} and @option{booke64} select
1605disassembly of BookE instructions. @option{32} and @option{64} select
1606PowerPC and PowerPC64 disassembly, respectively.
1607
640c0ccd
CD
1608For MIPS, this option controls the printing of register names in
1609disassembled instructions. Multiple selections from the
1610following may be specified as a comma separated string, and invalid
1611options are ignored:
1612
1613@table @code
1614@item gpr-names=@var{ABI}
1615Print GPR (general-purpose register) names as appropriate
1616for the specified ABI. By default, GPR names are selected according to
1617the ABI of the binary being disassembled.
1618
1619@item fpr-names=@var{ABI}
1620Print FPR (floating-point register) names as
1621appropriate for the specified ABI. By default, FPR numbers are printed
1622rather than names.
1623
1624@item cp0-names=@var{ARCH}
1625Print CP0 (system control coprocessor; coprocessor 0) register names
1626as appropriate for the CPU or architecture specified by
1627@var{ARCH}. By default, CP0 register names are selected according to
1628the architecture and CPU of the binary being disassembled.
1629
af7ee8bf
CD
1630@item hwr-names=@var{ARCH}
1631Print HWR (hardware register, used by the @code{rdhwr} instruction) names
1632as appropriate for the CPU or architecture specified by
1633@var{ARCH}. By default, HWR names are selected according to
1634the architecture and CPU of the binary being disassembled.
1635
640c0ccd
CD
1636@item reg-names=@var{ABI}
1637Print GPR and FPR names as appropriate for the selected ABI.
1638
1639@item reg-names=@var{ARCH}
af7ee8bf
CD
1640Print CPU-specific register names (CP0 register and HWR names)
1641as appropriate for the selected CPU or architecture.
640c0ccd
CD
1642@end table
1643
1644For any of the options listed above, @var{ABI} or
1645@var{ARCH} may be specified as @samp{numeric} to have numbers printed
1646rather than names, for the selected types of registers.
1647You can list the available values of @var{ABI} and @var{ARCH} using
1648the @option{--help} option.
1649
252b5132
RH
1650@item -p
1651@itemx --private-headers
1652Print information that is specific to the object file format. The exact
1653information printed depends upon the object file format. For some
1654object file formats, no additional information is printed.
1655
1656@item -r
1657@itemx --reloc
1658@cindex relocation entries, in object file
c7c55b78
NC
1659Print the relocation entries of the file. If used with @option{-d} or
1660@option{-D}, the relocations are printed interspersed with the
252b5132
RH
1661disassembly.
1662
1663@item -R
1664@itemx --dynamic-reloc
1665@cindex dynamic relocation entries, in object file
1666Print the dynamic relocation entries of the file. This is only
1667meaningful for dynamic objects, such as certain types of shared
1668libraries.
1669
1670@item -s
1671@itemx --full-contents
1672@cindex sections, full contents
1673@cindex object file sections
1674Display the full contents of any sections requested.
1675
1676@item -S
1677@itemx --source
1678@cindex source disassembly
1679@cindex disassembly, with source
1680Display source code intermixed with disassembly, if possible. Implies
c7c55b78 1681@option{-d}.
252b5132
RH
1682
1683@item --show-raw-insn
1684When disassembling instructions, print the instruction in hex as well as
1685in symbolic form. This is the default except when
c7c55b78 1686@option{--prefix-addresses} is used.
252b5132
RH
1687
1688@item --no-show-raw-insn
1689When disassembling instructions, do not print the instruction bytes.
c7c55b78 1690This is the default when @option{--prefix-addresses} is used.
252b5132 1691
1dada9c5 1692@item -G
947ed062 1693@itemx --stabs
252b5132
RH
1694@cindex stab
1695@cindex .stab
1696@cindex debug symbols
1697@cindex ELF object file format
1698Display the full contents of any sections requested. Display the
1699contents of the .stab and .stab.index and .stab.excl sections from an
1700ELF file. This is only useful on systems (such as Solaris 2.0) in which
1701@code{.stab} debugging symbol-table entries are carried in an ELF
1702section. In most other file formats, debugging symbol-table entries are
c7c55b78 1703interleaved with linkage symbols, and are visible in the @option{--syms}
0285c67d
NC
1704output.
1705@ifclear man
1706For more information on stabs symbols, see @ref{Top,Stabs,Stabs
252b5132 1707Overview,stabs.info, The ``stabs'' debug format}.
0285c67d 1708@end ifclear
252b5132
RH
1709
1710@item --start-address=@var{address}
1711@cindex start-address
1712Start displaying data at the specified address. This affects the output
c7c55b78 1713of the @option{-d}, @option{-r} and @option{-s} options.
252b5132
RH
1714
1715@item --stop-address=@var{address}
1716@cindex stop-address
1717Stop displaying data at the specified address. This affects the output
c7c55b78 1718of the @option{-d}, @option{-r} and @option{-s} options.
252b5132
RH
1719
1720@item -t
1721@itemx --syms
1722@cindex symbol table entries, printing
1723Print the symbol table entries of the file.
1724This is similar to the information provided by the @samp{nm} program.
1725
1726@item -T
1727@itemx --dynamic-syms
1728@cindex dynamic symbol table entries, printing
1729Print the dynamic symbol table entries of the file. This is only
1730meaningful for dynamic objects, such as certain types of shared
1731libraries. This is similar to the information provided by the @samp{nm}
c7c55b78 1732program when given the @option{-D} (@option{--dynamic}) option.
252b5132 1733
947ed062
NC
1734@item -V
1735@itemx --version
c7c55b78 1736Print the version number of @command{objdump} and exit.
252b5132
RH
1737
1738@item -x
947ed062 1739@itemx --all-headers
252b5132
RH
1740@cindex all header information, object file
1741@cindex header information, all
1742Display all available header information, including the symbol table and
c7c55b78
NC
1743relocation entries. Using @option{-x} is equivalent to specifying all of
1744@option{-a -f -h -r -t}.
252b5132
RH
1745
1746@item -w
1747@itemx --wide
1748@cindex wide output, printing
1749Format some lines for output devices that have more than 80 columns.
31104126 1750Also do not truncate symbol names when they are displayed.
aefbdd67
BE
1751
1752@item -z
2c0c15f9 1753@itemx --disassemble-zeroes
aefbdd67
BE
1754Normally the disassembly output will skip blocks of zeroes. This
1755option directs the disassembler to disassemble those blocks, just like
1756any other data.
252b5132
RH
1757@end table
1758
0285c67d
NC
1759@c man end
1760
1761@ignore
1762@c man begin SEEALSO objdump
1763nm(1), readelf(1), and the Info entries for @file{binutils}.
1764@c man end
1765@end ignore
1766
252b5132
RH
1767@node ranlib
1768@chapter ranlib
1769
1770@kindex ranlib
1771@cindex archive contents
1772@cindex symbol index
1773
0285c67d
NC
1774@c man title ranlib generate index to archive.
1775
252b5132 1776@smallexample
0285c67d 1777@c man begin SYNOPSIS ranlib
c7c55b78 1778ranlib [@option{-vV}] @var{archive}
0285c67d 1779@c man end
252b5132
RH
1780@end smallexample
1781
0285c67d
NC
1782@c man begin DESCRIPTION ranlib
1783
c7c55b78 1784@command{ranlib} generates an index to the contents of an archive and
252b5132
RH
1785stores it in the archive. The index lists each symbol defined by a
1786member of an archive that is a relocatable object file.
1787
1788You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
1789
1790An archive with such an index speeds up linking to the library and
1791allows routines in the library to call each other without regard to
1792their placement in the archive.
1793
c7c55b78
NC
1794The @sc{gnu} @command{ranlib} program is another form of @sc{gnu} @command{ar}; running
1795@command{ranlib} is completely equivalent to executing @samp{ar -s}.
252b5132
RH
1796@xref{ar}.
1797
0285c67d
NC
1798@c man end
1799
1800@c man begin OPTIONS ranlib
1801
c7c55b78 1802@table @env
252b5132
RH
1803@item -v
1804@itemx -V
f20a759a 1805@itemx --version
c7c55b78 1806Show the version number of @command{ranlib}.
252b5132
RH
1807@end table
1808
0285c67d
NC
1809@c man end
1810
1811@ignore
1812@c man begin SEEALSO ranlib
1813ar(1), nm(1), and the Info entries for @file{binutils}.
1814@c man end
1815@end ignore
1816
252b5132
RH
1817@node size
1818@chapter size
1819
1820@kindex size
1821@cindex section sizes
1822
0285c67d
NC
1823@c man title size list section sizes and total size.
1824
252b5132 1825@smallexample
0285c67d 1826@c man begin SYNOPSIS size
c7c55b78 1827size [@option{-A}|@option{-B}|@option{--format=}@var{compatibility}]
15c82623
NC
1828 [@option{--help}]
1829 [@option{-d}|@option{-o}|@option{-x}|@option{--radix=}@var{number}]
1830 [@option{-t}|@option{--totals}]
c7c55b78
NC
1831 [@option{--target=}@var{bfdname}] [@option{-V}|@option{--version}]
1832 [@var{objfile}@dots{}]
0285c67d 1833@c man end
252b5132
RH
1834@end smallexample
1835
0285c67d
NC
1836@c man begin DESCRIPTION size
1837
c7c55b78 1838The @sc{gnu} @command{size} utility lists the section sizes---and the total
252b5132
RH
1839size---for each of the object or archive files @var{objfile} in its
1840argument list. By default, one line of output is generated for each
1841object file or each module in an archive.
1842
1843@var{objfile}@dots{} are the object files to be examined.
1844If none are specified, the file @code{a.out} will be used.
1845
0285c67d
NC
1846@c man end
1847
1848@c man begin OPTIONS size
1849
252b5132
RH
1850The command line options have the following meanings:
1851
c7c55b78 1852@table @env
252b5132
RH
1853@item -A
1854@itemx -B
1855@itemx --format=@var{compatibility}
c7c55b78 1856@cindex @command{size} display format
252b5132 1857Using one of these options, you can choose whether the output from @sc{gnu}
c7c55b78
NC
1858@command{size} resembles output from System V @command{size} (using @option{-A},
1859or @option{--format=sysv}), or Berkeley @command{size} (using @option{-B}, or
1860@option{--format=berkeley}). The default is the one-line format similar to
252b5132
RH
1861Berkeley's.
1862@c Bonus for doc-source readers: you can also say --format=strange (or
1863@c anything else that starts with 's') for sysv, and --format=boring (or
1864@c anything else that starts with 'b') for Berkeley.
1865
1866Here is an example of the Berkeley (default) format of output from
c7c55b78 1867@command{size}:
252b5132 1868@smallexample
f20a759a 1869$ size --format=Berkeley ranlib size
252b5132
RH
1870text data bss dec hex filename
1871294880 81920 11592 388392 5ed28 ranlib
1872294880 81920 11888 388688 5ee50 size
1873@end smallexample
1874
1875@noindent
1876This is the same data, but displayed closer to System V conventions:
1877
1878@smallexample
f20a759a 1879$ size --format=SysV ranlib size
252b5132
RH
1880ranlib :
1881section size addr
1882.text 294880 8192
1883.data 81920 303104
1884.bss 11592 385024
1885Total 388392
1886
1887
1888size :
1889section size addr
1890.text 294880 8192
1891.data 81920 303104
1892.bss 11888 385024
1893Total 388688
1894@end smallexample
1895
1896@item --help
1897Show a summary of acceptable arguments and options.
1898
1899@item -d
1900@itemx -o
1901@itemx -x
1902@itemx --radix=@var{number}
c7c55b78 1903@cindex @command{size} number format
252b5132
RH
1904@cindex radix for section sizes
1905Using one of these options, you can control whether the size of each
c7c55b78
NC
1906section is given in decimal (@option{-d}, or @option{--radix=10}); octal
1907(@option{-o}, or @option{--radix=8}); or hexadecimal (@option{-x}, or
1908@option{--radix=16}). In @option{--radix=@var{number}}, only the three
252b5132 1909values (8, 10, 16) are supported. The total size is always given in two
c7c55b78
NC
1910radices; decimal and hexadecimal for @option{-d} or @option{-x} output, or
1911octal and hexadecimal if you're using @option{-o}.
252b5132 1912
15c82623
NC
1913@item -t
1914@itemx --totals
1915Show totals of all objects listed (Berkeley format listing mode only).
1916
252b5132
RH
1917@item --target=@var{bfdname}
1918@cindex object code format
1919Specify that the object-code format for @var{objfile} is
c7c55b78 1920@var{bfdname}. This option may not be necessary; @command{size} can
252b5132
RH
1921automatically recognize many formats.
1922@xref{Target Selection}, for more information.
1923
1924@item -V
1925@itemx --version
c7c55b78 1926Display the version number of @command{size}.
252b5132
RH
1927@end table
1928
0285c67d
NC
1929@c man end
1930
1931@ignore
1932@c man begin SEEALSO size
1933ar(1), objdump(1), readelf(1), and the Info entries for @file{binutils}.
1934@c man end
1935@end ignore
1936
252b5132
RH
1937@node strings
1938@chapter strings
1939@kindex strings
1940@cindex listings strings
1941@cindex printing strings
1942@cindex strings, printing
1943
0285c67d
NC
1944@c man title strings print the strings of printable characters in files.
1945
252b5132 1946@smallexample
0285c67d 1947@c man begin SYNOPSIS strings
d132876a
NC
1948strings [@option{-afov}] [@option{-}@var{min-len}]
1949 [@option{-n} @var{min-len}] [@option{--bytes=}@var{min-len}]
1950 [@option{-t} @var{radix}] [@option{--radix=}@var{radix}]
1951 [@option{-e} @var{encoding}] [@option{--encoding=}@var{encoding}]
1952 [@option{-}] [@option{--all}] [@option{--print-file-name}]
1953 [@option{--target=}@var{bfdname}]
c7c55b78 1954 [@option{--help}] [@option{--version}] @var{file}@dots{}
0285c67d 1955@c man end
252b5132
RH
1956@end smallexample
1957
0285c67d
NC
1958@c man begin DESCRIPTION strings
1959
c7c55b78 1960For each @var{file} given, @sc{gnu} @command{strings} prints the printable
252b5132
RH
1961character sequences that are at least 4 characters long (or the number
1962given with the options below) and are followed by an unprintable
1963character. By default, it only prints the strings from the initialized
1964and loaded sections of object files; for other types of files, it prints
1965the strings from the whole file.
1966
c7c55b78 1967@command{strings} is mainly useful for determining the contents of non-text
252b5132
RH
1968files.
1969
0285c67d
NC
1970@c man end
1971
1972@c man begin OPTIONS strings
1973
c7c55b78 1974@table @env
252b5132
RH
1975@item -a
1976@itemx --all
1977@itemx -
1978Do not scan only the initialized and loaded sections of object files;
1979scan the whole files.
1980
1981@item -f
1982@itemx --print-file-name
1983Print the name of the file before each string.
1984
1985@item --help
1986Print a summary of the program usage on the standard output and exit.
1987
1988@item -@var{min-len}
1989@itemx -n @var{min-len}
1990@itemx --bytes=@var{min-len}
1991Print sequences of characters that are at least @var{min-len} characters
1992long, instead of the default 4.
1993
1994@item -o
c7c55b78 1995Like @samp{-t o}. Some other versions of @command{strings} have @option{-o}
252b5132
RH
1996act like @samp{-t d} instead. Since we can not be compatible with both
1997ways, we simply chose one.
1998
1999@item -t @var{radix}
2000@itemx --radix=@var{radix}
2001Print the offset within the file before each string. The single
2002character argument specifies the radix of the offset---@samp{o} for
2003octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
2004
d132876a
NC
2005@item -e @var{encoding}
2006@itemx --encoding=@var{encoding}
2007Select the character encoding of the strings that are to be found.
8745eafa
NC
2008Possible values for @var{encoding} are: @samp{s} = single-7-bit-byte
2009characters (ASCII, ISO 8859, etc., default), @samp{S} =
2010single-8-bit-byte characters, @samp{b} = 16-bit bigendian, @samp{l} =
201116-bit littleendian, @samp{B} = 32-bit bigendian, @samp{L} = 32-bit
2012littleendian. Useful for finding wide character strings.
d132876a 2013
252b5132
RH
2014@item --target=@var{bfdname}
2015@cindex object code format
2016Specify an object code format other than your system's default format.
2017@xref{Target Selection}, for more information.
2018
2019@item -v
2020@itemx --version
2021Print the program version number on the standard output and exit.
2022@end table
2023
0285c67d
NC
2024@c man end
2025
2026@ignore
2027@c man begin SEEALSO strings
2028ar(1), nm(1), objdump(1), ranlib(1), readelf(1)
2029and the Info entries for @file{binutils}.
2030@c man end
2031@end ignore
2032
252b5132
RH
2033@node strip
2034@chapter strip
2035
2036@kindex strip
2037@cindex removing symbols
2038@cindex discarding symbols
2039@cindex symbols, discarding
2040
0285c67d
NC
2041@c man title strip Discard symbols from object files.
2042
252b5132 2043@smallexample
0285c67d 2044@c man begin SYNOPSIS strip
c7c55b78
NC
2045strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname} ]
2046 [@option{-I} @var{bfdname} |@option{--input-target=}@var{bfdname} ]
2047 [@option{-O} @var{bfdname} |@option{--output-target=}@var{bfdname} ]
15c82623 2048 [@option{-s}|@option{--strip-all}] [@option{-S}|@option{-g}|@option{-d}|@option{--strip-debug}]
c7c55b78
NC
2049 [@option{-K} @var{symbolname} |@option{--keep-symbol=}@var{symbolname} ]
2050 [@option{-N} @var{symbolname} |@option{--strip-symbol=}@var{symbolname} ]
2051 [@option{-x}|@option{--discard-all} ] [@option{-X} |@option{--discard-locals}]
2052 [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname} ]
2053 [@option{-o} @var{file} ] [@option{-p}|@option{--preserve-dates}]
2054 [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}] [@option{--help}]
252b5132 2055 @var{objfile}@dots{}
0285c67d 2056@c man end
252b5132
RH
2057@end smallexample
2058
0285c67d
NC
2059@c man begin DESCRIPTION strip
2060
c7c55b78 2061@sc{gnu} @command{strip} discards all symbols from object files
252b5132
RH
2062@var{objfile}. The list of object files may include archives.
2063At least one object file must be given.
2064
c7c55b78 2065@command{strip} modifies the files named in its argument,
252b5132
RH
2066rather than writing modified copies under different names.
2067
0285c67d
NC
2068@c man end
2069
2070@c man begin OPTIONS strip
2071
c7c55b78 2072@table @env
252b5132
RH
2073@item -F @var{bfdname}
2074@itemx --target=@var{bfdname}
2075Treat the original @var{objfile} as a file with the object
2076code format @var{bfdname}, and rewrite it in the same format.
2077@xref{Target Selection}, for more information.
2078
2079@item --help
c7c55b78 2080Show a summary of the options to @command{strip} and exit.
252b5132 2081
947ed062 2082@item -I @var{bfdname}
252b5132
RH
2083@itemx --input-target=@var{bfdname}
2084Treat the original @var{objfile} as a file with the object
2085code format @var{bfdname}.
2086@xref{Target Selection}, for more information.
2087
2088@item -O @var{bfdname}
2089@itemx --output-target=@var{bfdname}
2090Replace @var{objfile} with a file in the output format @var{bfdname}.
2091@xref{Target Selection}, for more information.
2092
2093@item -R @var{sectionname}
2094@itemx --remove-section=@var{sectionname}
2095Remove any section named @var{sectionname} from the output file. This
2096option may be given more than once. Note that using this option
2097inappropriately may make the output file unusable.
2098
2099@item -s
2100@itemx --strip-all
2101Remove all symbols.
2102
2103@item -g
2104@itemx -S
15c82623 2105@itemx -d
252b5132
RH
2106@itemx --strip-debug
2107Remove debugging symbols only.
2108
2109@item --strip-unneeded
2110Remove all symbols that are not needed for relocation processing.
2111
2112@item -K @var{symbolname}
2113@itemx --keep-symbol=@var{symbolname}
2114Keep only symbol @var{symbolname} from the source file. This option may
2115be given more than once.
2116
2117@item -N @var{symbolname}
2118@itemx --strip-symbol=@var{symbolname}
2119Remove symbol @var{symbolname} from the source file. This option may be
2120given more than once, and may be combined with strip options other than
c7c55b78 2121@option{-K}.
252b5132
RH
2122
2123@item -o @var{file}
2124Put the stripped output in @var{file}, rather than replacing the
2125existing file. When this argument is used, only one @var{objfile}
2126argument may be specified.
2127
2128@item -p
2129@itemx --preserve-dates
2130Preserve the access and modification dates of the file.
2131
2132@item -x
2133@itemx --discard-all
2134Remove non-global symbols.
2135
2136@item -X
2137@itemx --discard-locals
2138Remove compiler-generated local symbols.
2139(These usually start with @samp{L} or @samp{.}.)
2140
2141@item -V
2142@itemx --version
c7c55b78 2143Show the version number for @command{strip}.
252b5132
RH
2144
2145@item -v
2146@itemx --verbose
2147Verbose output: list all object files modified. In the case of
2148archives, @samp{strip -v} lists all members of the archive.
2149@end table
2150
0285c67d
NC
2151@c man end
2152
2153@ignore
2154@c man begin SEEALSO strip
2155the Info entries for @file{binutils}.
2156@c man end
2157@end ignore
2158
9d51cc66 2159@node c++filt, addr2line, strip, Top
252b5132
RH
2160@chapter c++filt
2161
2162@kindex c++filt
2163@cindex demangling C++ symbols
2164
0285c67d
NC
2165@c man title cxxfilt Demangle C++ and Java symbols.
2166
252b5132 2167@smallexample
0285c67d 2168@c man begin SYNOPSIS cxxfilt
c7c55b78
NC
2169c++filt [@option{-_}|@option{--strip-underscores}]
2170 [@option{-j}|@option{--java}]
2171 [@option{-n}|@option{--no-strip-underscores}]
2172 [@option{-s} @var{format}|@option{--format=}@var{format}]
2173 [@option{--help}] [@option{--version}] [@var{symbol}@dots{}]
0285c67d 2174@c man end
252b5132
RH
2175@end smallexample
2176
0285c67d
NC
2177@c man begin DESCRIPTION cxxfilt
2178
9d51cc66 2179@kindex cxxfilt
252b5132
RH
2180The C++ and Java languages provides function overloading, which means
2181that you can write many functions with the same name (providing each
2182takes parameters of different types). All C++ and Java function names
2183are encoded into a low-level assembly label (this process is known as
c7c55b78 2184@dfn{mangling}). The @command{c++filt}
9d51cc66 2185@footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
c7c55b78 2186MS-DOS this program is named @command{cxxfilt}.}
9d51cc66
ILT
2187program does the inverse mapping: it decodes (@dfn{demangles}) low-level
2188names into user-level names so that the linker can keep these overloaded
2189functions from clashing.
252b5132
RH
2190
2191Every alphanumeric word (consisting of letters, digits, underscores,
2192dollars, or periods) seen in the input is a potential label. If the
2193label decodes into a C++ name, the C++ name replaces the low-level
2194name in the output.
2195
c7c55b78 2196You can use @command{c++filt} to decipher individual symbols:
252b5132
RH
2197
2198@example
2199c++filt @var{symbol}
2200@end example
2201
c7c55b78 2202If no @var{symbol} arguments are given, @command{c++filt} reads symbol
252b5132
RH
2203names from the standard input and writes the demangled names to the
2204standard output. All results are printed on the standard output.
2205
0285c67d
NC
2206@c man end
2207
2208@c man begin OPTIONS cxxfilt
2209
c7c55b78 2210@table @env
252b5132
RH
2211@item -_
2212@itemx --strip-underscores
2213On some systems, both the C and C++ compilers put an underscore in front
2214of every name. For example, the C name @code{foo} gets the low-level
2215name @code{_foo}. This option removes the initial underscore. Whether
c7c55b78 2216@command{c++filt} removes the underscore by default is target dependent.
252b5132
RH
2217
2218@item -j
2219@itemx --java
2220Prints demangled names using Java syntax. The default is to use C++
2221syntax.
2222
2223@item -n
2224@itemx --no-strip-underscores
2225Do not remove the initial underscore.
2226
2227@item -s @var{format}
2228@itemx --format=@var{format}
947ed062
NC
2229@command{c++filt} can decode various methods of mangling, used by
2230different compilers. The argument to this option selects which
252b5132
RH
2231method it uses:
2232
2233@table @code
947ed062
NC
2234@item auto
2235Automatic selection based on executable (the default method)
252b5132 2236@item gnu
947ed062 2237the one used by the @sc{gnu} C++ compiler (g++)
252b5132 2238@item lucid
947ed062 2239the one used by the Lucid compiler (lcc)
252b5132
RH
2240@item arm
2241the one specified by the C++ Annotated Reference Manual
2242@item hp
947ed062 2243the one used by the HP compiler (aCC)
252b5132
RH
2244@item edg
2245the one used by the EDG compiler
b5e2a4f3 2246@item gnu-v3
947ed062
NC
2247the one used by the @sc{gnu} C++ compiler (g++) with the V3 ABI.
2248@item java
2249the one used by the @sc{gnu} Java compiler (gcj)
2250@item gnat
2251the one used by the @sc{gnu} Ada compiler (GNAT).
252b5132
RH
2252@end table
2253
2254@item --help
c7c55b78 2255Print a summary of the options to @command{c++filt} and exit.
252b5132
RH
2256
2257@item --version
c7c55b78 2258Print the version number of @command{c++filt} and exit.
252b5132
RH
2259@end table
2260
0285c67d
NC
2261@c man end
2262
2263@ignore
2264@c man begin SEEALSO cxxfilt
2265the Info entries for @file{binutils}.
2266@c man end
2267@end ignore
2268
252b5132 2269@quotation
c7c55b78 2270@emph{Warning:} @command{c++filt} is a new utility, and the details of its
252b5132
RH
2271user interface are subject to change in future releases. In particular,
2272a command-line option may be required in the the future to decode a name
2273passed as an argument on the command line; in other words,
2274
2275@example
2276c++filt @var{symbol}
2277@end example
2278
2279@noindent
2280may in a future release become
2281
2282@example
2283c++filt @var{option} @var{symbol}
2284@end example
2285@end quotation
2286
2287@node addr2line
2288@chapter addr2line
2289
2290@kindex addr2line
2291@cindex address to file name and line number
2292
0285c67d
NC
2293@c man title addr2line convert addresses into file names and line numbers.
2294
252b5132 2295@smallexample
0285c67d 2296@c man begin SYNOPSIS addr2line
c7c55b78 2297addr2line [@option{-b} @var{bfdname}|@option{--target=}@var{bfdname}]
bf44dd74 2298 [@option{-C}|@option{--demangle}[=@var{style}]]
c7c55b78
NC
2299 [@option{-e} @var{filename}|@option{--exe=}@var{filename}]
2300 [@option{-f}|@option{--functions}] [@option{-s}|@option{--basename}]
2301 [@option{-H}|@option{--help}] [@option{-V}|@option{--version}]
2302 [addr addr @dots{}]
0285c67d 2303@c man end
252b5132
RH
2304@end smallexample
2305
0285c67d
NC
2306@c man begin DESCRIPTION addr2line
2307
c7c55b78 2308@command{addr2line} translates program addresses into file names and line
252b5132
RH
2309numbers. Given an address and an executable, it uses the debugging
2310information in the executable to figure out which file name and line
2311number are associated with a given address.
2312
c7c55b78 2313The executable to use is specified with the @option{-e} option. The
f20a759a 2314default is the file @file{a.out}.
252b5132 2315
c7c55b78 2316@command{addr2line} has two modes of operation.
252b5132
RH
2317
2318In the first, hexadecimal addresses are specified on the command line,
c7c55b78 2319and @command{addr2line} displays the file name and line number for each
252b5132
RH
2320address.
2321
c7c55b78 2322In the second, @command{addr2line} reads hexadecimal addresses from
252b5132 2323standard input, and prints the file name and line number for each
c7c55b78 2324address on standard output. In this mode, @command{addr2line} may be used
252b5132
RH
2325in a pipe to convert dynamically chosen addresses.
2326
2327The format of the output is @samp{FILENAME:LINENO}. The file name and
2328line number for each address is printed on a separate line. If the
c7c55b78 2329@command{-f} option is used, then each @samp{FILENAME:LINENO} line is
252b5132
RH
2330preceded by a @samp{FUNCTIONNAME} line which is the name of the function
2331containing the address.
2332
2333If the file name or function name can not be determined,
c7c55b78
NC
2334@command{addr2line} will print two question marks in their place. If the
2335line number can not be determined, @command{addr2line} will print 0.
252b5132 2336
0285c67d
NC
2337@c man end
2338
2339@c man begin OPTIONS addr2line
2340
252b5132
RH
2341The long and short forms of options, shown here as alternatives, are
2342equivalent.
2343
c7c55b78 2344@table @env
252b5132
RH
2345@item -b @var{bfdname}
2346@itemx --target=@var{bfdname}
2347@cindex object code format
2348Specify that the object-code format for the object files is
2349@var{bfdname}.
2350
2351@item -C
28c309a2 2352@itemx --demangle[=@var{style}]
252b5132
RH
2353@cindex demangling in objdump
2354Decode (@dfn{demangle}) low-level symbol names into user-level names.
2355Besides removing any initial underscore prepended by the system, this
28c309a2
NC
2356makes C++ function names readable. Different compilers have different
2357mangling styles. The optional demangling style argument can be used to
2358choose an appropriate demangling style for your compiler. @xref{c++filt},
2359for more information on demangling.
252b5132
RH
2360
2361@item -e @var{filename}
2362@itemx --exe=@var{filename}
2363Specify the name of the executable for which addresses should be
2364translated. The default file is @file{a.out}.
2365
2366@item -f
2367@itemx --functions
2368Display function names as well as file and line number information.
2369
2370@item -s
2371@itemx --basenames
2372Display only the base of each file name.
e107c42f 2373@end table
252b5132 2374
0285c67d
NC
2375@c man end
2376
2377@ignore
2378@c man begin SEEALSO addr2line
2379Info entries for @file{binutils}.
2380@c man end
2381@end ignore
2382
252b5132
RH
2383@node nlmconv
2384@chapter nlmconv
2385
c7c55b78 2386@command{nlmconv} converts a relocatable object file into a NetWare
252b5132
RH
2387Loadable Module.
2388
2389@ignore
c7c55b78 2390@command{nlmconv} currently works with @samp{i386} object
252b5132
RH
2391files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
2392object files in @sc{elf}, or @code{a.out} format@footnote{
c7c55b78 2393@command{nlmconv} should work with any @samp{i386} or @sc{sparc} object
252b5132
RH
2394format in the Binary File Descriptor library. It has only been tested
2395with the above formats.}.
2396@end ignore
2397
2398@quotation
c7c55b78 2399@emph{Warning:} @command{nlmconv} is not always built as part of the binary
252b5132
RH
2400utilities, since it is only useful for NLM targets.
2401@end quotation
2402
0285c67d
NC
2403@c man title nlmconv converts object code into an NLM.
2404
252b5132 2405@smallexample
0285c67d 2406@c man begin SYNOPSIS nlmconv
c7c55b78
NC
2407nlmconv [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}]
2408 [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}]
2409 [@option{-T} @var{headerfile}|@option{--header-file=}@var{headerfile}]
2410 [@option{-d}|@option{--debug}] [@option{-l} @var{linker}|@option{--linker=}@var{linker}]
2411 [@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
252b5132 2412 @var{infile} @var{outfile}
0285c67d 2413@c man end
252b5132
RH
2414@end smallexample
2415
0285c67d
NC
2416@c man begin DESCRIPTION nlmconv
2417
c7c55b78 2418@command{nlmconv} converts the relocatable @samp{i386} object file
252b5132
RH
2419@var{infile} into the NetWare Loadable Module @var{outfile}, optionally
2420reading @var{headerfile} for NLM header information. For instructions
2421on writing the NLM command file language used in header files, see the
2422@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
2423Development and Tools Overview}, which is part of the NLM Software
2424Developer's Kit (``NLM SDK''), available from Novell, Inc.
c7c55b78 2425@command{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
0285c67d
NC
2426@var{infile};
2427@ifclear man
2428see @ref{BFD,,BFD,ld.info,Using LD}, for more information.
2429@end ifclear
252b5132 2430
c7c55b78 2431@command{nlmconv} can perform a link step. In other words, you can list
252b5132
RH
2432more than one object file for input if you list them in the definitions
2433file (rather than simply specifying one input file on the command line).
c7c55b78 2434In this case, @command{nlmconv} calls the linker for you.
252b5132 2435
0285c67d
NC
2436@c man end
2437
2438@c man begin OPTIONS nlmconv
2439
c7c55b78 2440@table @env
252b5132
RH
2441@item -I @var{bfdname}
2442@itemx --input-target=@var{bfdname}
c7c55b78 2443Object format of the input file. @command{nlmconv} can usually determine
252b5132
RH
2444the format of a given file (so no default is necessary).
2445@xref{Target Selection}, for more information.
2446
2447@item -O @var{bfdname}
2448@itemx --output-target=@var{bfdname}
c7c55b78 2449Object format of the output file. @command{nlmconv} infers the output
252b5132
RH
2450format based on the input format, e.g. for a @samp{i386} input file the
2451output format is @samp{nlm32-i386}.
2452@xref{Target Selection}, for more information.
2453
2454@item -T @var{headerfile}
2455@itemx --header-file=@var{headerfile}
2456Reads @var{headerfile} for NLM header information. For instructions on
2457writing the NLM command file language used in header files, see@ see the
2458@samp{linkers} section, of the @cite{NLM Development and Tools
2459Overview}, which is part of the NLM Software Developer's Kit, available
2460from Novell, Inc.
2461
2462@item -d
2463@itemx --debug
c7c55b78 2464Displays (on standard error) the linker command line used by @command{nlmconv}.
252b5132
RH
2465
2466@item -l @var{linker}
2467@itemx --linker=@var{linker}
2468Use @var{linker} for any linking. @var{linker} can be an absolute or a
2469relative pathname.
2470
2471@item -h
2472@itemx --help
2473Prints a usage summary.
2474
2475@item -V
2476@itemx --version
c7c55b78 2477Prints the version number for @command{nlmconv}.
252b5132
RH
2478@end table
2479
0285c67d
NC
2480@c man end
2481
2482@ignore
2483@c man begin SEEALSO nlmconv
2484the Info entries for @file{binutils}.
2485@c man end
2486@end ignore
2487
252b5132
RH
2488@node windres
2489@chapter windres
2490
c7c55b78 2491@command{windres} may be used to manipulate Windows resources.
252b5132
RH
2492
2493@quotation
c7c55b78 2494@emph{Warning:} @command{windres} is not always built as part of the binary
252b5132
RH
2495utilities, since it is only useful for Windows targets.
2496@end quotation
2497
0285c67d
NC
2498@c man title windres manipulate Windows resources.
2499
252b5132 2500@smallexample
0285c67d 2501@c man begin SYNOPSIS windres
252b5132 2502windres [options] [input-file] [output-file]
0285c67d 2503@c man end
252b5132
RH
2504@end smallexample
2505
0285c67d
NC
2506@c man begin DESCRIPTION windres
2507
c7c55b78 2508@command{windres} reads resources from an input file and copies them into
252b5132
RH
2509an output file. Either file may be in one of three formats:
2510
2511@table @code
2512@item rc
2513A text format read by the Resource Compiler.
2514
2515@item res
2516A binary format generated by the Resource Compiler.
2517
2518@item coff
2519A COFF object or executable.
2520@end table
2521
2522The exact description of these different formats is available in
2523documentation from Microsoft.
2524
c7c55b78 2525When @command{windres} converts from the @code{rc} format to the @code{res}
252b5132 2526format, it is acting like the Windows Resource Compiler. When
c7c55b78 2527@command{windres} converts from the @code{res} format to the @code{coff}
252b5132
RH
2528format, it is acting like the Windows @code{CVTRES} program.
2529
c7c55b78 2530When @command{windres} generates an @code{rc} file, the output is similar
252b5132
RH
2531but not identical to the format expected for the input. When an input
2532@code{rc} file refers to an external filename, an output @code{rc} file
2533will instead include the file contents.
2534
c7c55b78 2535If the input or output format is not specified, @command{windres} will
252b5132
RH
2536guess based on the file name, or, for the input file, the file contents.
2537A file with an extension of @file{.rc} will be treated as an @code{rc}
2538file, a file with an extension of @file{.res} will be treated as a
2539@code{res} file, and a file with an extension of @file{.o} or
2540@file{.exe} will be treated as a @code{coff} file.
2541
c7c55b78 2542If no output file is specified, @command{windres} will print the resources
252b5132
RH
2543in @code{rc} format to standard output.
2544
c7c55b78 2545The normal use is for you to write an @code{rc} file, use @command{windres}
252b5132
RH
2546to convert it to a COFF object file, and then link the COFF file into
2547your application. This will make the resources described in the
2548@code{rc} file available to Windows.
2549
0285c67d
NC
2550@c man end
2551
2552@c man begin OPTIONS windres
2553
c7c55b78 2554@table @env
252b5132
RH
2555@item -i @var{filename}
2556@itemx --input @var{filename}
2557The name of the input file. If this option is not used, then
c7c55b78
NC
2558@command{windres} will use the first non-option argument as the input file
2559name. If there are no non-option arguments, then @command{windres} will
2560read from standard input. @command{windres} can not read a COFF file from
252b5132
RH
2561standard input.
2562
2563@item -o @var{filename}
2564@itemx --output @var{filename}
2565The name of the output file. If this option is not used, then
c7c55b78 2566@command{windres} will use the first non-option argument, after any used
252b5132 2567for the input file name, as the output file name. If there is no
c7c55b78
NC
2568non-option argument, then @command{windres} will write to standard output.
2569@command{windres} can not write a COFF file to standard output.
252b5132
RH
2570
2571@item -I @var{format}
2572@itemx --input-format @var{format}
2573The input format to read. @var{format} may be @samp{res}, @samp{rc}, or
c7c55b78 2574@samp{coff}. If no input format is specified, @command{windres} will
252b5132
RH
2575guess, as described above.
2576
2577@item -O @var{format}
2578@itemx --output-format @var{format}
2579The output format to generate. @var{format} may be @samp{res},
2580@samp{rc}, or @samp{coff}. If no output format is specified,
c7c55b78 2581@command{windres} will guess, as described above.
252b5132
RH
2582
2583@item -F @var{target}
2584@itemx --target @var{target}
2585Specify the BFD format to use for a COFF file as input or output. This
c7c55b78
NC
2586is a BFD target name; you can use the @option{--help} option to see a list
2587of supported targets. Normally @command{windres} will use the default
2588format, which is the first one listed by the @option{--help} option.
2589@ifclear man
252b5132 2590@ref{Target Selection}.
c7c55b78 2591@end ifclear
252b5132
RH
2592
2593@item --preprocessor @var{program}
c7c55b78 2594When @command{windres} reads an @code{rc} file, it runs it through the C
252b5132
RH
2595preprocessor first. This option may be used to specify the preprocessor
2596to use, including any leading arguments. The default preprocessor
2597argument is @code{gcc -E -xc-header -DRC_INVOKED}.
2598
2599@item --include-dir @var{directory}
2600Specify an include directory to use when reading an @code{rc} file.
c7c55b78
NC
2601@command{windres} will pass this to the preprocessor as an @option{-I}
2602option. @command{windres} will also search this directory when looking for
252b5132
RH
2603files named in the @code{rc} file.
2604
751d21b5 2605@item -D @var{target}
ad0481cd 2606@itemx --define @var{sym}[=@var{val}]
c7c55b78 2607Specify a @option{-D} option to pass to the preprocessor when reading an
252b5132
RH
2608@code{rc} file.
2609
751d21b5
DD
2610@item -v
2611Enable verbose mode. This tells you what the preprocessor is if you
2612didn't specify one.
2613
252b5132
RH
2614@item --language @var{val}
2615Specify the default language to use when reading an @code{rc} file.
2616@var{val} should be a hexadecimal language code. The low eight bits are
2617the language, and the high eight bits are the sublanguage.
2618
5a298d2d
NC
2619@item --use-temp-file
2620Use a temporary file to instead of using popen to read the output of
2621the preprocessor. Use this option if the popen implementation is buggy
2622on the host (eg., certain non-English language versions of Windows 95 and
2623Windows 98 are known to have buggy popen where the output will instead
2624go the console).
2625
2626@item --no-use-temp-file
2627Use popen, not a temporary file, to read the output of the preprocessor.
2628This is the default behaviour.
2629
252b5132
RH
2630@item --help
2631Prints a usage summary.
2632
2633@item --version
c7c55b78 2634Prints the version number for @command{windres}.
252b5132
RH
2635
2636@item --yydebug
c7c55b78 2637If @command{windres} is compiled with @code{YYDEBUG} defined as @code{1},
252b5132
RH
2638this will turn on parser debugging.
2639@end table
2640
0285c67d
NC
2641@c man end
2642
2643@ignore
2644@c man begin SEEALSO windres
2645the Info entries for @file{binutils}.
2646@c man end
2647@end ignore
252b5132
RH
2648
2649@node dlltool
2650@chapter Create files needed to build and use DLLs
2651@cindex DLL
2652@kindex dlltool
2653
c7c55b78 2654@command{dlltool} may be used to create the files needed to build and use
252b5132
RH
2655dynamic link libraries (DLLs).
2656
2657@quotation
c7c55b78 2658@emph{Warning:} @command{dlltool} is not always built as part of the binary
252b5132
RH
2659utilities, since it is only useful for those targets which support DLLs.
2660@end quotation
2661
0285c67d
NC
2662@c man title dlltool Create files needed to build and use DLLs.
2663
252b5132 2664@smallexample
0285c67d 2665@c man begin SYNOPSIS dlltool
c7c55b78
NC
2666dlltool [@option{-d}|@option{--input-def} @var{def-file-name}]
2667 [@option{-b}|@option{--base-file} @var{base-file-name}]
2668 [@option{-e}|@option{--output-exp} @var{exports-file-name}]
2669 [@option{-z}|@option{--output-def} @var{def-file-name}]
2670 [@option{-l}|@option{--output-lib} @var{library-file-name}]
2671 [@option{--export-all-symbols}] [@option{--no-export-all-symbols}]
2672 [@option{--exclude-symbols} @var{list}]
2673 [@option{--no-default-excludes}]
2674 [@option{-S}|@option{--as} @var{path-to-assembler}] [@option{-f}|@option{--as-flags} @var{options}]
2675 [@option{-D}|@option{--dllname} @var{name}] [@option{-m}|@option{--machine} @var{machine}]
2676 [@option{-a}|@option{--add-indirect}] [@option{-U}|@option{--add-underscore}] [@option{-k}|@option{--kill-at}]
2677 [@option{-A}|@option{--add-stdcall-alias}]
2678 [@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}] [@option{-i}|@option{--interwork}]
2679 [@option{-n}|@option{--nodelete}] [@option{-v}|@option{--verbose}]
2680 [@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
252b5132 2681 [object-file @dots{}]
0285c67d 2682@c man end
252b5132
RH
2683@end smallexample
2684
0285c67d
NC
2685@c man begin DESCRIPTION dlltool
2686
c7c55b78
NC
2687@command{dlltool} reads its inputs, which can come from the @option{-d} and
2688@option{-b} options as well as object files specified on the command
2689line. It then processes these inputs and if the @option{-e} option has
2690been specified it creates a exports file. If the @option{-l} option
2691has been specified it creates a library file and if the @option{-z} option
2692has been specified it creates a def file. Any or all of the @option{-e},
2693@option{-l} and @option{-z} options can be present in one invocation of
2694dlltool.
252b5132
RH
2695
2696When creating a DLL, along with the source for the DLL, it is necessary
c7c55b78 2697to have three other files. @command{dlltool} can help with the creation of
252b5132
RH
2698these files.
2699
2700The first file is a @samp{.def} file which specifies which functions are
2701exported from the DLL, which functions the DLL imports, and so on. This
c7c55b78
NC
2702is a text file and can be created by hand, or @command{dlltool} can be used
2703to create it using the @option{-z} option. In this case @command{dlltool}
252b5132
RH
2704will scan the object files specified on its command line looking for
2705those functions which have been specially marked as being exported and
2706put entries for them in the .def file it creates.
2707
2708In order to mark a function as being exported from a DLL, it needs to
c7c55b78 2709have an @option{-export:<name_of_function>} entry in the @samp{.drectve}
252b5132
RH
2710section of the object file. This can be done in C by using the
2711asm() operator:
2712
2713@smallexample
2714 asm (".section .drectve");
2715 asm (".ascii \"-export:my_func\"");
2716
2717 int my_func (void) @{ @dots{} @}
2718@end smallexample
2719
2720The second file needed for DLL creation is an exports file. This file
2721is linked with the object files that make up the body of the DLL and it
2722handles the interface between the DLL and the outside world. This is a
c7c55b78
NC
2723binary file and it can be created by giving the @option{-e} option to
2724@command{dlltool} when it is creating or reading in a .def file.
252b5132
RH
2725
2726The third file needed for DLL creation is the library file that programs
2727will link with in order to access the functions in the DLL. This file
c7c55b78 2728can be created by giving the @option{-l} option to dlltool when it
252b5132
RH
2729is creating or reading in a .def file.
2730
c7c55b78 2731@command{dlltool} builds the library file by hand, but it builds the
252b5132 2732exports file by creating temporary files containing assembler statements
c7c55b78 2733and then assembling these. The @option{-S} command line option can be
252b5132 2734used to specify the path to the assembler that dlltool will use,
c7c55b78
NC
2735and the @option{-f} option can be used to pass specific flags to that
2736assembler. The @option{-n} can be used to prevent dlltool from deleting
2737these temporary assembler files when it is done, and if @option{-n} is
252b5132
RH
2738specified twice then this will prevent dlltool from deleting the
2739temporary object files it used to build the library.
2740
2741Here is an example of creating a DLL from a source file @samp{dll.c} and
2742also creating a program (from an object file called @samp{program.o})
2743that uses that DLL:
2744
2745@smallexample
2746 gcc -c dll.c
2747 dlltool -e exports.o -l dll.lib dll.o
2748 gcc dll.o exports.o -o dll.dll
2749 gcc program.o dll.lib -o program
2750@end smallexample
2751
0285c67d
NC
2752@c man end
2753
2754@c man begin OPTIONS dlltool
2755
252b5132
RH
2756The command line options have the following meanings:
2757
c7c55b78 2758@table @env
252b5132
RH
2759
2760@item -d @var{filename}
2761@itemx --input-def @var{filename}
2762@cindex input .def file
2763Specifies the name of a .def file to be read in and processed.
2764
2765@item -b @var{filename}
2766@itemx --base-file @var{filename}
2767@cindex base files
2768Specifies the name of a base file to be read in and processed. The
2769contents of this file will be added to the relocation section in the
2770exports file generated by dlltool.
2771
2772@item -e @var{filename}
2773@itemx --output-exp @var{filename}
2774Specifies the name of the export file to be created by dlltool.
2775
2776@item -z @var{filename}
2777@itemx --output-def @var{filename}
2778Specifies the name of the .def file to be created by dlltool.
2779
2780@item -l @var{filename}
2781@itemx --output-lib @var{filename}
2782Specifies the name of the library file to be created by dlltool.
2783
2784@item --export-all-symbols
2785Treat all global and weak defined symbols found in the input object
2786files as symbols to be exported. There is a small list of symbols which
c7c55b78 2787are not exported by default; see the @option{--no-default-excludes}
252b5132 2788option. You may add to the list of symbols to not export by using the
c7c55b78 2789@option{--exclude-symbols} option.
252b5132
RH
2790
2791@item --no-export-all-symbols
2792Only export symbols explicitly listed in an input .def file or in
2793@samp{.drectve} sections in the input object files. This is the default
2794behaviour. The @samp{.drectve} sections are created by @samp{dllexport}
2795attributes in the source code.
2796
2797@item --exclude-symbols @var{list}
2798Do not export the symbols in @var{list}. This is a list of symbol names
2799separated by comma or colon characters. The symbol names should not
2800contain a leading underscore. This is only meaningful when
c7c55b78 2801@option{--export-all-symbols} is used.
252b5132
RH
2802
2803@item --no-default-excludes
c7c55b78 2804When @option{--export-all-symbols} is used, it will by default avoid
252b5132
RH
2805exporting certain special symbols. The current list of symbols to avoid
2806exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
c7c55b78 2807@samp{impure_ptr}. You may use the @option{--no-default-excludes} option
252b5132 2808to go ahead and export these special symbols. This is only meaningful
c7c55b78 2809when @option{--export-all-symbols} is used.
252b5132
RH
2810
2811@item -S @var{path}
2812@itemx --as @var{path}
2813Specifies the path, including the filename, of the assembler to be used
2814to create the exports file.
2815
6364e0b4
NC
2816@item -f @var{options}
2817@itemx --as-flags @var{options}
2818Specifies any specific command line options to be passed to the
252b5132 2819assembler when building the exports file. This option will work even if
c7c55b78 2820the @option{-S} option is not used. This option only takes one argument,
252b5132
RH
2821and if it occurs more than once on the command line, then later
2822occurrences will override earlier occurrences. So if it is necessary to
6364e0b4 2823pass multiple options to the assembler they should be enclosed in
252b5132
RH
2824double quotes.
2825
2826@item -D @var{name}
2827@itemx --dll-name @var{name}
2828Specifies the name to be stored in the .def file as the name of the DLL
c7c55b78
NC
2829when the @option{-e} option is used. If this option is not present, then
2830the filename given to the @option{-e} option will be used as the name of
252b5132
RH
2831the DLL.
2832
2833@item -m @var{machine}
2834@itemx -machine @var{machine}
2835Specifies the type of machine for which the library file should be
c7c55b78 2836built. @command{dlltool} has a built in default type, depending upon how
252b5132
RH
2837it was created, but this option can be used to override that. This is
2838normally only useful when creating DLLs for an ARM processor, when the
c36774d6 2839contents of the DLL are actually encode using Thumb instructions.
252b5132
RH
2840
2841@item -a
2842@itemx --add-indirect
c7c55b78 2843Specifies that when @command{dlltool} is creating the exports file it
252b5132
RH
2844should add a section which allows the exported functions to be
2845referenced without using the import library. Whatever the hell that
2846means!
2847
2848@item -U
2849@itemx --add-underscore
c7c55b78 2850Specifies that when @command{dlltool} is creating the exports file it
252b5132
RH
2851should prepend an underscore to the names of the exported functions.
2852
2853@item -k
2854@itemx --kill-at
c7c55b78 2855Specifies that when @command{dlltool} is creating the exports file it
252b5132
RH
2856should not append the string @samp{@@ <number>}. These numbers are
2857called ordinal numbers and they represent another way of accessing the
2858function in a DLL, other than by name.
2859
2860@item -A
2861@itemx --add-stdcall-alias
c7c55b78 2862Specifies that when @command{dlltool} is creating the exports file it
252b5132
RH
2863should add aliases for stdcall symbols without @samp{@@ <number>}
2864in addition to the symbols with @samp{@@ <number>}.
2865
2866@item -x
2867@itemx --no-idata4
c7c55b78
NC
2868Specifies that when @command{dlltool} is creating the exports and library
2869files it should omit the @code{.idata4} section. This is for compatibility
252b5132
RH
2870with certain operating systems.
2871
2872@item -c
2873@itemx --no-idata5
c7c55b78
NC
2874Specifies that when @command{dlltool} is creating the exports and library
2875files it should omit the @code{.idata5} section. This is for compatibility
252b5132
RH
2876with certain operating systems.
2877
2878@item -i
2879@itemx --interwork
c7c55b78 2880Specifies that @command{dlltool} should mark the objects in the library
252b5132 2881file and exports file that it produces as supporting interworking
c36774d6 2882between ARM and Thumb code.
252b5132
RH
2883
2884@item -n
2885@itemx --nodelete
c7c55b78 2886Makes @command{dlltool} preserve the temporary assembler files it used to
252b5132
RH
2887create the exports file. If this option is repeated then dlltool will
2888also preserve the temporary object files it uses to create the library
2889file.
2890
2891@item -v
2892@itemx --verbose
2893Make dlltool describe what it is doing.
2894
2895@item -h
2896@itemx --help
2897Displays a list of command line options and then exits.
2898
2899@item -V
2900@itemx --version
2901Displays dlltool's version number and then exits.
2902
2903@end table
2904
0285c67d
NC
2905@c man end
2906
2907@ignore
2908@c man begin SEEALSO dlltool
2909the Info entries for @file{binutils}.
2910@c man end
2911@end ignore
2912
252b5132
RH
2913@node readelf
2914@chapter readelf
2915
2916@cindex ELF file information
2917@kindex readelf
2918
0285c67d
NC
2919@c man title readelf Displays information about ELF files.
2920
252b5132 2921@smallexample
0285c67d 2922@c man begin SYNOPSIS readelf
c7c55b78
NC
2923readelf [@option{-a}|@option{--all}]
2924 [@option{-h}|@option{--file-header}]
2925 [@option{-l}|@option{--program-headers}|@option{--segments}]
2926 [@option{-S}|@option{--section-headers}|@option{--sections}]
2927 [@option{-e}|@option{--headers}]
2928 [@option{-s}|@option{--syms}|@option{--symbols}]
2929 [@option{-n}|@option{--notes}]
2930 [@option{-r}|@option{--relocs}]
2931 [@option{-u}|@option{--unwind}]
2932 [@option{-d}|@option{--dynamic}]
2933 [@option{-V}|@option{--version-info}]
947ed062 2934 [@option{-A}|@option{--arch-specific}]
c7c55b78
NC
2935 [@option{-D}|@option{--use-dynamic}]
2936 [@option{-x} <number>|@option{--hex-dump=}<number>]
947ed062
NC
2937 [@option{-w[liaprmfFso]}|
2938 @option{--debug-dump}[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=frames-interp,=str,=loc]]
2939 [@option{-I}|@option{-histogram}]
c7c55b78 2940 [@option{-v}|@option{--version}]
d974e256 2941 [@option{-W}|@option{--wide}]
c7c55b78 2942 [@option{-H}|@option{--help}]
252b5132 2943 @var{elffile}@dots{}
0285c67d 2944@c man end
252b5132
RH
2945@end smallexample
2946
0285c67d
NC
2947@c man begin DESCRIPTION readelf
2948
c7c55b78 2949@command{readelf} displays information about one or more ELF format object
252b5132
RH
2950files. The options control what particular information to display.
2951
2952@var{elffile}@dots{} are the object files to be examined. At the
c7c55b78 2953moment, @command{readelf} does not support examining archives, nor does it
b9e5d8e5 2954support examining 64 bit ELF files.
252b5132 2955
0285c67d
NC
2956@c man end
2957
2958@c man begin OPTIONS readelf
2959
252b5132
RH
2960The long and short forms of options, shown here as alternatives, are
2961equivalent. At least one option besides @samp{-v} or @samp{-H} must be
2962given.
2963
c7c55b78 2964@table @env
252b5132
RH
2965@item -a
2966@itemx --all
c7c55b78
NC
2967Equivalent to specifiying @option{--file-header},
2968@option{--program-headers}, @option{--sections}, @option{--symbols},
2969@option{--relocs}, @option{--dynamic}, @option{--notes} and
2970@option{--version-info}.
252b5132
RH
2971
2972@item -h
2973@itemx --file-header
2974@cindex ELF file header information
2975Displays the information contained in the ELF header at the start of the
2976file.
2977
2978@item -l
2979@itemx --program-headers
2980@itemx --segments
2981@cindex ELF program header information
2982@cindex ELF segment information
2983Displays the information contained in the file's segment headers, if it
2984has any.
2985
2986@item -S
2987@itemx --sections
2988@itemx --section-headers
2989@cindex ELF section information
2990Displays the information contained in the file's section headers, if it
2991has any.
2992
2993@item -s
2994@itemx --symbols
2995@itemx --syms
2996@cindex ELF symbol table information
2997Displays the entries in symbol table section of the file, if it has one.
2998
2999@item -e
3000@itemx --headers
c7c55b78 3001Display all the headers in the file. Equivalent to @option{-h -l -S}.
252b5132 3002
779fe533
NC
3003@item -n
3004@itemx --notes
3005@cindex ELF core notes
3006Displays the contents of the NOTE segment, if it exists.
3007
252b5132
RH
3008@item -r
3009@itemx --relocs
3010@cindex ELF reloc information
f5e21966
NC
3011Displays the contents of the file's relocation section, if it has one.
3012
3013@item -u
3014@itemx --unwind
3015@cindex unwind information
3016Displays the contents of the file's unwind section, if it has one. Only
3017the unwind sections for IA64 ELF files are currently supported.
252b5132 3018
947ed062
NC
3019@item -u
3020@itemx --unwind
3021@cindex unwind information
3022Displays the contents of the file's unwind section, if it has one. Only
3023the unwind sections for IA64 ELF files are currently supported.
3024
252b5132
RH
3025@item -d
3026@itemx --dynamic
3027@cindex ELF dynamic section information
3028Displays the contents of the file's dynamic section, if it has one.
3029
3030@item -V
3031@itemx --version-info
3032@cindex ELF version sections informations
3033Displays the contents of the version sections in the file, it they
3034exist.
3035
947ed062
NC
3036@item -A
3037@itemx --arch-specific
3038Displays architecture-specific information in the file, if there
3039is any.
3040
252b5132
RH
3041@item -D
3042@itemx --use-dynamic
c7c55b78 3043When displaying symbols, this option makes @command{readelf} use the
6dbb55b6 3044symbol table in the file's dynamic section, rather than the one in the
252b5132
RH
3045symbols section.
3046
3047@item -x <number>
3048@itemx --hex-dump=<number>
3049Displays the contents of the indicated section as a hexadecimal dump.
3050
2979dc34 3051@item -w[liaprmfFso]
947ed062 3052@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=frames-interp,=str,=loc]
252b5132
RH
3053Displays the contents of the debug sections in the file, if any are
3054present. If one of the optional letters or words follows the switch
3055then only data found in those specific sections will be dumped.
3056
947ed062
NC
3057@item -I
3058@itemx --histogram
252b5132
RH
3059Display a histogram of bucket list lengths when displaying the contents
3060of the symbol tables.
3061
3062@item -v
3063@itemx --version
3064Display the version number of readelf.
3065
d974e256
JJ
3066@item -W
3067@itemx --wide
3068Don't break output lines to fit into 80 columns. By default
3069@command{readelf} breaks section header and segment listing lines for
307064-bit ELF files, so that they fit into 80 columns. This option causes
3071@command{readelf} to print each section header resp. each segment one a
3072single line, which is far more readable on terminals wider than 80 columns.
3073
252b5132
RH
3074@item -H
3075@itemx --help
c7c55b78 3076Display the command line options understood by @command{readelf}.
252b5132
RH
3077
3078@end table
3079
0285c67d
NC
3080@c man end
3081
3082@ignore
3083@c man begin SEEALSO readelf
3084objdump(1), and the Info entries for @file{binutils}.
3085@c man end
3086@end ignore
252b5132
RH
3087
3088@node Selecting The Target System
947ed062 3089@chapter Selecting the Target System
252b5132 3090
947ed062 3091You can specify two aspects of the target system to the @sc{gnu}
252b5132
RH
3092binary file utilities, each in several ways:
3093
3094@itemize @bullet
3095@item
3096the target
3097
3098@item
3099the architecture
252b5132
RH
3100@end itemize
3101
3102In the following summaries, the lists of ways to specify values are in
3103order of decreasing precedence. The ways listed first override those
3104listed later.
3105
3106The commands to list valid values only list the values for which the
3107programs you are running were configured. If they were configured with
c7c55b78 3108@option{--enable-targets=all}, the commands list most of the available
252b5132
RH
3109values, but a few are left out; not all targets can be configured in at
3110once because some of them can only be configured @dfn{native} (on hosts
3111with the same type as the target system).
3112
3113@menu
3114* Target Selection::
3115* Architecture Selection::
252b5132
RH
3116@end menu
3117
3118@node Target Selection
3119@section Target Selection
3120
3121A @dfn{target} is an object file format. A given target may be
3122supported for multiple architectures (@pxref{Architecture Selection}).
3123A target selection may also have variations for different operating
3124systems or architectures.
3125
3126The command to list valid target values is @samp{objdump -i}
3127(the first column of output contains the relevant information).
3128
3129Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
3130@samp{a.out-sunos-big}.
3131
3132You can also specify a target using a configuration triplet. This is
f20a759a
ILT
3133the same sort of name that is passed to @file{configure} to specify a
3134target. When you use a configuration triplet as an argument, it must be
3135fully canonicalized. You can see the canonical version of a triplet by
252b5132
RH
3136running the shell script @file{config.sub} which is included with the
3137sources.
3138
3139Some sample configuration triplets are: @samp{m68k-hp-bsd},
3140@samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
3141
c7c55b78 3142@subheading @command{objdump} Target
252b5132
RH
3143
3144Ways to specify:
3145
3146@enumerate
3147@item
c7c55b78 3148command line option: @option{-b} or @option{--target}
252b5132
RH
3149
3150@item
3151environment variable @code{GNUTARGET}
3152
3153@item
3154deduced from the input file
3155@end enumerate
3156
c7c55b78 3157@subheading @command{objcopy} and @command{strip} Input Target
252b5132
RH
3158
3159Ways to specify:
3160
3161@enumerate
3162@item
c7c55b78 3163command line options: @option{-I} or @option{--input-target}, or @option{-F} or @option{--target}
252b5132
RH
3164
3165@item
3166environment variable @code{GNUTARGET}
3167
3168@item
3169deduced from the input file
3170@end enumerate
3171
c7c55b78 3172@subheading @command{objcopy} and @command{strip} Output Target
252b5132
RH
3173
3174Ways to specify:
3175
3176@enumerate
3177@item
c7c55b78 3178command line options: @option{-O} or @option{--output-target}, or @option{-F} or @option{--target}
252b5132
RH
3179
3180@item
c7c55b78 3181the input target (see ``@command{objcopy} and @command{strip} Input Target'' above)
252b5132
RH
3182
3183@item
3184environment variable @code{GNUTARGET}
3185
3186@item
3187deduced from the input file
3188@end enumerate
3189
c7c55b78 3190@subheading @command{nm}, @command{size}, and @command{strings} Target
252b5132
RH
3191
3192Ways to specify:
3193
3194@enumerate
3195@item
c7c55b78 3196command line option: @option{--target}
252b5132
RH
3197
3198@item
3199environment variable @code{GNUTARGET}
3200
3201@item
3202deduced from the input file
3203@end enumerate
3204
252b5132 3205@node Architecture Selection
947ed062 3206@section Architecture Selection
252b5132
RH
3207
3208An @dfn{architecture} is a type of @sc{cpu} on which an object file is
3209to run. Its name may contain a colon, separating the name of the
3210processor family from the name of the particular @sc{cpu}.
3211
3212The command to list valid architecture values is @samp{objdump -i} (the
3213second column contains the relevant information).
3214
3215Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
3216
c7c55b78 3217@subheading @command{objdump} Architecture
252b5132
RH
3218
3219Ways to specify:
3220
3221@enumerate
3222@item
c7c55b78 3223command line option: @option{-m} or @option{--architecture}
252b5132
RH
3224
3225@item
3226deduced from the input file
3227@end enumerate
3228
c7c55b78 3229@subheading @command{objcopy}, @command{nm}, @command{size}, @command{strings} Architecture
252b5132
RH
3230
3231Ways to specify:
3232
3233@enumerate
3234@item
3235deduced from the input file
3236@end enumerate
3237
252b5132
RH
3238@node Reporting Bugs
3239@chapter Reporting Bugs
3240@cindex bugs
3241@cindex reporting bugs
3242
3243Your bug reports play an essential role in making the binary utilities
3244reliable.
3245
3246Reporting a bug may help you by bringing a solution to your problem, or
3247it may not. But in any case the principal function of a bug report is
3248to help the entire community by making the next version of the binary
3249utilities work better. Bug reports are your contribution to their
3250maintenance.
3251
3252In order for a bug report to serve its purpose, you must include the
3253information that enables us to fix the bug.
3254
3255@menu
3256* Bug Criteria:: Have you found a bug?
3257* Bug Reporting:: How to report bugs
3258@end menu
3259
3260@node Bug Criteria
947ed062 3261@section Have You Found a Bug?
252b5132
RH
3262@cindex bug criteria
3263
3264If you are not sure whether you have found a bug, here are some guidelines:
3265
3266@itemize @bullet
3267@cindex fatal signal
3268@cindex crash
3269@item
3270If a binary utility gets a fatal signal, for any input whatever, that is
3271a bug. Reliable utilities never crash.
3272
3273@cindex error on valid input
3274@item
3275If a binary utility produces an error message for valid input, that is a
3276bug.
3277
3278@item
3279If you are an experienced user of binary utilities, your suggestions for
3280improvement are welcome in any case.
3281@end itemize
3282
3283@node Bug Reporting
947ed062 3284@section How to Report Bugs
252b5132
RH
3285@cindex bug reports
3286@cindex bugs, reporting
3287
3288A number of companies and individuals offer support for @sc{gnu}
3289products. If you obtained the binary utilities from a support
3290organization, we recommend you contact that organization first.
3291
3292You can find contact information for many support companies and
3293individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
3294distribution.
3295
3296In any event, we also recommend that you send bug reports for the binary
2f952d20 3297utilities to @samp{bug-binutils@@gnu.org}.
252b5132
RH
3298
3299The fundamental principle of reporting bugs usefully is this:
3300@strong{report all the facts}. If you are not sure whether to state a
3301fact or leave it out, state it!
3302
3303Often people omit facts because they think they know what causes the
3304problem and assume that some details do not matter. Thus, you might
3305assume that the name of a file you use in an example does not matter.
3306Well, probably it does not, but one cannot be sure. Perhaps the bug is
3307a stray memory reference which happens to fetch from the location where
3308that pathname is stored in memory; perhaps, if the pathname were
3309different, the contents of that location would fool the utility into
3310doing the right thing despite the bug. Play it safe and give a
3311specific, complete example. That is the easiest thing for you to do,
3312and the most helpful.
3313
3314Keep in mind that the purpose of a bug report is to enable us to fix the bug if
3315it is new to us. Therefore, always write your bug reports on the assumption
3316that the bug has not been reported previously.
3317
3318Sometimes people give a few sketchy facts and ask, ``Does this ring a
947ed062
NC
3319bell?'' This cannot help us fix a bug, so it is basically useless. We
3320respond by asking for enough details to enable us to investigate.
3321You might as well expedite matters by sending them to begin with.
252b5132
RH
3322
3323To enable us to fix the bug, you should include all these things:
3324
3325@itemize @bullet
3326@item
3327The version of the utility. Each utility announces it if you start it
c7c55b78 3328with the @option{--version} argument.
252b5132
RH
3329
3330Without this, we will not know whether there is any point in looking for
3331the bug in the current version of the binary utilities.
3332
3333@item
3334Any patches you may have applied to the source, including any patches
3335made to the @code{BFD} library.
3336
3337@item
3338The type of machine you are using, and the operating system name and
3339version number.
3340
3341@item
3342What compiler (and its version) was used to compile the utilities---e.g.
3343``@code{gcc-2.7}''.
3344
3345@item
3346The command arguments you gave the utility to observe the bug. To
3347guarantee you will not omit something important, list them all. A copy
3348of the Makefile (or the output from make) is sufficient.
3349
3350If we were to try to guess the arguments, we would probably guess wrong
3351and then we might not encounter the bug.
3352
3353@item
3354A complete input file, or set of input files, that will reproduce the
3355bug. If the utility is reading an object file or files, then it is
3356generally most helpful to send the actual object files, uuencoded if
757acbc5 3357necessary to get them through the mail system. Note that
2f952d20 3358@samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid
757acbc5
ILT
3359sending very large files to it. Making the files available for
3360anonymous FTP is OK.
252b5132
RH
3361
3362If the source files were produced exclusively using @sc{gnu} programs
c7c55b78 3363(e.g., @command{gcc}, @command{gas}, and/or the @sc{gnu} @command{ld}), then it
252b5132 3364may be OK to send the source files rather than the object files. In
c7c55b78 3365this case, be sure to say exactly what version of @command{gcc}, or
252b5132 3366whatever, was used to produce the object files. Also say how
c7c55b78 3367@command{gcc}, or whatever, was configured.
252b5132
RH
3368
3369@item
3370A description of what behavior you observe that you believe is
3371incorrect. For example, ``It gets a fatal signal.''
3372
3373Of course, if the bug is that the utility gets a fatal signal, then we
3374will certainly notice it. But if the bug is incorrect output, we might
3375not notice unless it is glaringly wrong. You might as well not give us
3376a chance to make a mistake.
3377
3378Even if the problem you experience is a fatal signal, you should still
f20a759a 3379say so explicitly. Suppose something strange is going on, such as your
252b5132
RH
3380copy of the utility is out of synch, or you have encountered a bug in
3381the C library on your system. (This has happened!) Your copy might
3382crash and ours would not. If you told us to expect a crash, then when
3383ours fails to crash, we would know that the bug was not happening for
3384us. If you had not told us to expect a crash, then we would not be able
3385to draw any conclusion from our observations.
3386
3387@item
3388If you wish to suggest changes to the source, send us context diffs, as
c7c55b78 3389generated by @command{diff} with the @option{-u}, @option{-c}, or @option{-p}
252b5132 3390option. Always send diffs from the old file to the new file. If you
c7c55b78 3391wish to discuss something in the @command{ld} source, refer to it by
f20a759a 3392context, not by line number.
252b5132
RH
3393
3394The line numbers in our development sources will not match those in your
3395sources. Your line numbers would convey no useful information to us.
3396@end itemize
3397
3398Here are some things that are not necessary:
3399
3400@itemize @bullet
3401@item
3402A description of the envelope of the bug.
3403
3404Often people who encounter a bug spend a lot of time investigating
3405which changes to the input file will make the bug go away and which
3406changes will not affect it.
3407
3408This is often time consuming and not very useful, because the way we
3409will find the bug is by running a single example under the debugger
3410with breakpoints, not by pure deduction from a series of examples.
3411We recommend that you save your time for something else.
3412
3413Of course, if you can find a simpler example to report @emph{instead}
3414of the original one, that is a convenience for us. Errors in the
3415output will be easier to spot, running under the debugger will take
3416less time, and so on.
3417
3418However, simplification is not vital; if you do not want to do this,
3419report the bug anyway and send us the entire test case you used.
3420
3421@item
3422A patch for the bug.
3423
3424A patch for the bug does help us if it is a good one. But do not omit
3425the necessary information, such as the test case, on the assumption that
3426a patch is all we need. We might see problems with your patch and decide
3427to fix the problem another way, or we might not understand it at all.
3428
3429Sometimes with programs as complicated as the binary utilities it is
3430very hard to construct an example that will make the program follow a
3431certain path through the code. If you do not send us the example, we
3432will not be able to construct one, so we will not be able to verify that
3433the bug is fixed.
3434
3435And if we cannot understand what bug you are trying to fix, or why your
3436patch should be an improvement, we will not install it. A test case will
3437help us to understand.
3438
3439@item
3440A guess about what the bug is or what it depends on.
3441
3442Such guesses are usually wrong. Even we cannot guess right about such
3443things without first using the debugger to find the facts.
3444@end itemize
3445
947ed062 3446@include fdl.texi
cf055d54 3447
252b5132
RH
3448@node Index
3449@unnumbered Index
3450
3451@printindex cp
3452
3453@contents
3454@bye
This page took 0.33251 seconds and 4 git commands to generate.