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