If --enable-sim-inline is not specified, default to DEFAULT_INLINE=1, not 2.
[deliverable/binutils-gdb.git] / binutils / binutils.texi
CommitLineData
765a273f 1\input texinfo @c -*- Texinfo -*-
c72af735 2@setfilename binutils.info
9bae56c5 3@include config.texi
c72af735 4
9abcc3b8
RP
5@ifinfo
6@format
7START-INFO-DIR-ENTRY
20f774c1
RP
8* Binutils: (binutils). The GNU binary utilities "ar", "objcopy",
9 "objdump", "nm", "nlmconv", "size",
10 "strings", "strip", and "ranlib".
9abcc3b8
RP
11END-INFO-DIR-ENTRY
12@end format
13@end ifinfo
c72af735 14
8b2c2275 15@ifinfo
8981cac5 16Copyright @copyright{} 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
8b2c2275
RP
17
18Permission is granted to make and distribute verbatim copies of
19this manual provided the copyright notice and this permission notice
20are preserved on all copies.
21
22@ignore
23Permission is granted to process this file through TeX and print the
24results, provided the printed document carries a copying permission
25notice identical to this one except for the removal of this paragraph
26(this paragraph not being relevant to the printed manual).
27
28@end ignore
29
30Permission is granted to copy and distribute modified versions of this
31manual under the conditions for verbatim copying, provided also that
32the entire resulting derived work is distributed under the terms of a
33permission notice identical to this one.
34
35Permission is granted to copy and distribute translations of this manual
36into another language, under the above conditions for modified versions.
37@end ifinfo
38
c72af735
RP
39@synindex ky cp
40@c
df14d957 41@c This file documents the GNU binary utilities "ar", "ld", "objcopy",
ba7c8e29 42@c "objdump", "nm", "size", "strings", "strip", and "ranlib".
c72af735 43@c
e32341a7 44@c Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
c72af735
RP
45@c
46@c This text may be freely distributed under the terms of the GNU
47@c General Public License.
48@c
27e94bd5 49
c72af735
RP
50@setchapternewpage odd
51@settitle GNU Binary Utilities
4928b97b
RP
52@titlepage
53@finalout
c72af735 54@title The GNU Binary Utilities
9bae56c5 55@subtitle Version @value{VERSION}
c72af735 56@sp 1
e32341a7 57@subtitle May 1993
c72af735 58@author Roland H. Pesch
4961ce5b 59@author Jeffrey M. Osier
c72af735
RP
60@author Cygnus Support
61@page
62
63@tex
650a49f0 64{\parskip=0pt \hfill Cygnus Support\par \hfill
c72af735
RP
65\TeX{}info \texinfoversion\par }
66@end tex
67
68@vskip 0pt plus 1filll
8981cac5 69Copyright @copyright{} 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
c72af735
RP
70
71Permission is granted to make and distribute verbatim copies of
72this manual provided the copyright notice and this permission notice
73are preserved on all copies.
74
75Permission is granted to copy and distribute modified versions of this
76manual under the conditions for verbatim copying, provided also that
77the entire resulting derived work is distributed under the terms of a
78permission notice identical to this one.
79
80Permission is granted to copy and distribute translations of this manual
81into another language, under the above conditions for modified versions.
82@end titlepage
83
eae04238 84@node Top
8981cac5 85@top Introduction
c72af735
RP
86
87@cindex version
88This brief manual contains preliminary documentation for the GNU binary
9bae56c5 89utilities (collectively version @value{VERSION}):
8b2c2275
RP
90
91@iftex
c72af735
RP
92@table @code
93@item ar
94Create, modify, and extract from archives
95
96@item nm
97List symbols from object files
98
eed5eeab
DM
99@item objcopy
100Copy and translate object files
101
c72af735
RP
102@item objdump
103Display information from object files
104
105@item ranlib
106Generate index to archive contents
107
108@item size
eae04238 109List file section sizes and total size
c72af735 110
ba7c8e29
DM
111@item strings
112List printable strings from files
113
c72af735
RP
114@item strip
115Discard symbols
eae04238
DM
116
117@item c++filt
118Demangle encoded C++ symbols
119
120@item nlmconv
121Convert object code into a Netware Loadable Module
c72af735 122@end table
8b2c2275 123@end iftex
c72af735
RP
124
125@menu
8b2c2275 126* ar:: Create, modify, and extract from archives
8b2c2275 127* nm:: List symbols from object files
eed5eeab 128* objcopy:: Copy and translate object files
8b2c2275
RP
129* objdump:: Display information from object files
130* ranlib:: Generate index to archive contents
131* size:: List section sizes and total size
ba7c8e29 132* strings:: List printable strings from files
8b2c2275 133* strip:: Discard symbols
b6216af2 134* c++filt:: Filter to demangle encoded C++ symbols
94e9ad77 135* nlmconv:: Converts object code into an NLM
eae04238 136* Selecting The Target System:: How these utilities determine the target.
8b2c2275 137* Index::
c72af735
RP
138@end menu
139
eae04238 140@node ar
c72af735
RP
141@chapter ar
142
143@kindex ar
144@cindex archives
145@cindex collections of files
146@smallexample
650a49f0 147ar [-]@var{p}[@var{mod} [@var{relpos}]] @var{archive} [@var{member}@dots{}]
4d9b5d5a 148ar -M [ <mri-script ]
c72af735
RP
149@end smallexample
150
151The GNU @code{ar} program creates, modifies, and extracts from
152archives. An @dfn{archive} is a single file holding a collection of
153other files in a structure that makes it possible to retrieve
154the original individual files (called @dfn{members} of the archive).
155
156The original files' contents, mode (permissions), timestamp, owner, and
ec40bbb8 157group are preserved in the archive, and can be restored on
c72af735
RP
158extraction.
159
160@cindex name length
161GNU @code{ar} can maintain archives whose members have names of any
162length; however, depending on how @code{ar} is configured on your
ec40bbb8
DM
163system, a limit on member-name length may be imposed for compatibility
164with archive formats maintained with other tools. If it exists, the
c72af735
RP
165limit is often 15 characters (typical of formats related to a.out) or 16
166characters (typical of formats related to coff).
167
168@cindex libraries
169@code{ar} is considered a binary utility because archives of this sort
170are most often used as @dfn{libraries} holding commonly needed
171subroutines.
172
173@cindex symbol index
e31e9a8d 174@code{ar} creates an index to the symbols defined in relocatable
c72af735
RP
175object modules in the archive when you specify the modifier @samp{s}.
176Once created, this index is updated in the archive whenever @code{ar}
177makes a change to its contents (save for the @samp{q} update operation).
178An archive with such an index speeds up linking to the library, and
179allows routines in the library to call each other without regard to
180their placement in the archive.
181
918c2f61 182You may use @samp{nm -s} or @samp{nm --print-armap} to list this index
c72af735
RP
183table. If an archive lacks the table, another form of @code{ar} called
184@code{ranlib} can be used to add just the table.
185
765a273f
RP
186@cindex compatibility, @code{ar}
187@cindex @code{ar} compatibility
188GNU @code{ar} is designed to be compatible with two different
189facilities. You can control its activity using command-line options,
190like the different varieties of @code{ar} on Unix systems; or, if you
191specify the single command-line option @samp{-M}, you can control it
192with a script supplied via standard input, like the MRI ``librarian''
193program.
194
195@menu
eae04238
DM
196* ar cmdline:: Controlling @code{ar} on the command line
197* ar scripts:: Controlling @code{ar} with a script
765a273f
RP
198@end menu
199
200@page
eae04238 201@node ar cmdline
765a273f
RP
202@section Controlling @code{ar} on the command line
203
204@smallexample
650a49f0 205ar [-]@var{p}[@var{mod} [@var{relpos}]] @var{archive} [@var{member}@dots{}]
765a273f
RP
206@end smallexample
207
208@cindex Unix compatibility, @code{ar}
209When you use @code{ar} in the Unix style, @code{ar} insists on at least two
210arguments to execute: one keyletter specifying the @emph{operation}
211(optionally accompanied by other keyletters specifying
212@emph{modifiers}), and the archive name to act on.
c72af735 213
650a49f0 214Most operations can also accept further @var{member} arguments,
c72af735
RP
215specifying particular files to operate on.
216
217GNU @code{ar} allows you to mix the operation code @var{p} and modifier
218flags @var{mod} in any order, within the first command-line argument.
219
220If you wish, you may begin the first command-line argument with a
221dash.
222
223@cindex operations on archive
224The @var{p} keyletter specifies what operation to execute; it may be
225any of the following, but you must specify only one of them:
226
227@table @code
228@item d
229@cindex deleting from archive
230@emph{Delete} modules from the archive. Specify the names of modules to
650a49f0 231be deleted as @var{member}@dots{}; the archive is untouched if you
c72af735
RP
232specify no files to delete.
233
e31e9a8d 234If you specify the @samp{v} modifier, @code{ar} lists each module
c72af735
RP
235as it is deleted.
236
237@item m
238@cindex moving in archive
239Use this operation to @emph{move} members in an archive.
240
241The ordering of members in an archive can make a difference in how
242programs are linked using the library, if a symbol is defined in more
243than one member.
244
245If no modifiers are used with @code{m}, any members you name in the
650a49f0 246@var{member} arguments are moved to the @emph{end} of the archive;
c72af735
RP
247you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
248specified place instead.
249
250@item p
251@cindex printing from archive
252@emph{Print} the specified members of the archive, to the standard
253output file. If the @samp{v} modifier is specified, show the member
254name before copying its contents to standard output.
255
650a49f0 256If you specify no @var{member} arguments, all the files in the archive are
ec40bbb8 257printed.
c72af735
RP
258
259@item q
260@cindex quick append to archive
650a49f0 261@emph{Quick append}; add the files @var{member}@dots{} to the end of
ec40bbb8 262@var{archive}, without checking for replacement.
c72af735
RP
263
264The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
265operation; new members are always placed at the end of the archive.
266
267The modifier @samp{v} makes @code{ar} list each file as it is appended.
268
269Since the point of this operation is speed, the archive's symbol table
270index is not updated, even if it already existed; you can use @samp{ar s} or
271@code{ranlib} explicitly to update the symbol table index.
272
273@item r
274@cindex replacement in archive
650a49f0 275Insert the files @var{member}@dots{} into @var{archive} (with
ec40bbb8
DM
276@emph{replacement}). This operation differs from @samp{q} in that any
277previously existing members are deleted if their names match those being
278added.
c72af735 279
650a49f0 280If one of the files named in @var{member}@dots{} does not exist, @code{ar}
c72af735
RP
281displays an error message, and leaves undisturbed any existing members
282of the archive matching that name.
283
284By default, new members are added at the end of the file; but you may
285use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request
286placement relative to some existing member.
287
288The modifier @samp{v} used with this operation elicits a line of
289output for each file inserted, along with one of the letters @samp{a} or
290@samp{r} to indicate whether the file was appended (no old member
291deleted) or replaced.
292
293@item t
294@cindex contents of archive
295Display a @emph{table} listing the contents of @var{archive}, or those
650a49f0 296of the files listed in @var{member}@dots{} that are present in the
c72af735
RP
297archive. Normally only the member name is shown; if you also want to
298see the modes (permissions), timestamp, owner, group, and size, you can
299request that by also specifying the @samp{v} modifier.
300
650a49f0 301If you do not specify a @var{member}, all files in the archive
c72af735
RP
302are listed.
303
304@cindex repeated names in archive
305@cindex name duplication in archive
306If there is more than one file with the same name (say, @samp{fie}) in
e31e9a8d 307an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the
c72af735
RP
308first instance; to see them all, you must ask for a complete
309listing---in our example, @samp{ar t b.a}.
310@c WRS only; per Gumby, this is implementation-dependent, and in a more
311@c recent case in fact works the other way.
312
313@item x
314@cindex extract from archive
650a49f0 315@emph{Extract} members (named @var{member}) from the archive. You can
c72af735
RP
316use the @samp{v} modifier with this operation, to request that
317@code{ar} list each name as it extracts it.
318
650a49f0 319If you do not specify a @var{member}, all files in the archive
c72af735
RP
320are extracted.
321
322@end table
323
324A number of modifiers (@var{mod}) may immediately follow the @var{p}
325keyletter, to specify variations on an operation's behavior:
326
327@table @code
328@item a
329@cindex relative placement in archive
330Add new files @emph{after} an existing member of the
ec40bbb8 331archive. If you use the modifier @samp{a}, the name of an existing archive
650a49f0 332member must be present as the @var{relpos} argument, before the
c72af735
RP
333@var{archive} specification.
334
335@item b
336Add new files @emph{before} an existing member of the
ec40bbb8 337archive. If you use the modifier @samp{b}, the name of an existing archive
650a49f0 338member must be present as the @var{relpos} argument, before the
c72af735
RP
339@var{archive} specification. (same as @samp{i}).
340
341@item c
342@cindex creating archives
343@emph{Create} the archive. The specified @var{archive} is always
650a49f0 344created if it did not exist, when you request an update. But a warning is
c72af735
RP
345issued unless you specify in advance that you expect to create it, by
346using this modifier.
347
52af6a44
ILT
348@item f
349Truncate names in the archive. GNU @code{ar} will normally permit file
350names of any length. This will cause it to create archives which are
351not compatible with the native @code{ar} program on some systems. If
352this is a concern, the @samp{f} modifier may be used to truncate file
353names when putting them in the archive.
354
c72af735
RP
355@item i
356Insert new files @emph{before} an existing member of the
ec40bbb8 357archive. If you use the modifier @samp{i}, the name of an existing archive
650a49f0 358member must be present as the @var{relpos} argument, before the
c72af735
RP
359@var{archive} specification. (same as @samp{b}).
360
361@item l
362This modifier is accepted but not used.
363@c whaffor ar l modifier??? presumably compat; with
364@c what???---pesch@@cygnus.com, 25jan91
365
366@item o
367@cindex dates in archive
368Preserve the @emph{original} dates of members when extracting them. If
369you do not specify this modifier, files extracted from the archive
e31e9a8d 370are stamped with the time of extraction.
c72af735
RP
371
372@item s
373@cindex writing archive index
374Write an object-file index into the archive, or update an existing one,
375even if no other change is made to the archive. You may use this modifier
376flag either with any operation, or alone. Running @samp{ar s} on an
377archive is equivalent to running @samp{ranlib} on it.
378
379@item u
380@cindex updating an archive
b703c078 381Normally, @samp{ar r}@dots{} inserts all files
c72af735
RP
382listed into the archive. If you would like to insert @emph{only} those
383of the files you list that are newer than existing members of the same
384names, use this modifier. The @samp{u} modifier is allowed only for the
385operation @samp{r} (replace). In particular, the combination @samp{qu} is
386not allowed, since checking the timestamps would lose any speed
387advantage from the operation @samp{q}.
388
389@item v
390This modifier requests the @emph{verbose} version of an operation. Many
391operations display additional information, such as filenames processed,
392when the modifier @samp{v} is appended.
4d9b5d5a
DM
393
394@item V
395This modifier shows the version number of @code{ar}.
765a273f
RP
396@end table
397
eae04238 398@node ar scripts
765a273f
RP
399@section Controlling @code{ar} with a script
400
401@smallexample
402ar -M [ <@var{script} ]
403@end smallexample
404
405@cindex MRI compatibility, @code{ar}
406@cindex scripts, @code{ar}
407If you use the single command-line option @samp{-M} with @code{ar}, you
408can control its operation with a rudimentary command language. This
e31e9a8d 409form of @code{ar} operates interactively if standard input is coming
765a273f
RP
410directly from a terminal. During interactive use, @code{ar} prompts for
411input (the prompt is @samp{AR >}), and continues executing even after
412errors. If you redirect standard input to a script file, no prompts are
e31e9a8d 413issued, and @code{ar} abandons execution (with a nonzero exit code)
765a273f
RP
414on any error.
415
416The @code{ar} command language is @emph{not} designed to be equivalent
417to the command-line options; in fact, it provides somewhat less control
418over archives. The only purpose of the command language is to ease the
419transition to GNU @code{ar} for developers who already have scripts
420written for the MRI ``librarian'' program.
421
422The syntax for the @code{ar} command language is straightforward:
423@itemize @bullet
424@item
425commands are recognized in upper or lower case; for example, @code{LIST}
426is the same as @code{list}. In the following descriptions, commands are
427shown in upper case for clarity.
428
429@item
430a single command may appear on each line; it is the first word on the
431line.
432
433@item
434empty lines are allowed, and have no effect.
435
436@item
437comments are allowed; text after either of the characters @samp{*}
438or @samp{;} is ignored.
439
440@item
441Whenever you use a list of names as part of the argument to an @code{ar}
442command, you can separate the individual names with either commas or
443blanks. Commas are shown in the explanations below, for clarity.
444
445@item
446@samp{+} is used as a line continuation character; if @samp{+} appears
447at the end of a line, the text on the following line is considered part
448of the current command.
449@end itemize
450
451Here are the commands you can use in @code{ar} scripts, or when using
452@code{ar} interactively. Three of them have special significance:
453
454@code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is
455a temporary file required for most of the other commands.
456
457@code{SAVE} commits the changes so far specified by the script. Prior
458to @code{SAVE}, commands affect only the temporary copy of the current
459archive.
460
461@table @code
462@item ADDLIB @var{archive}
463@itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
464Add all the contents of @var{archive} (or, if specified, each named
465@var{module} from @var{archive}) to the current archive.
466
467Requires prior use of @code{OPEN} or @code{CREATE}.
468
650a49f0 469@item ADDMOD @var{member}, @var{member}, @dots{} @var{member}
765a273f
RP
470@c FIXME! w/Replacement?? If so, like "ar r @var{archive} @var{names}"
471@c else like "ar q..."
650a49f0 472Add each named @var{member} as a module in the current archive.
765a273f
RP
473
474Requires prior use of @code{OPEN} or @code{CREATE}.
475
476@item CLEAR
477Discard the contents of the current archive, cancelling the effect of
478any operations since the last @code{SAVE}. May be executed (with no
479effect) even if no current archive is specified.
480
481@item CREATE @var{archive}
482Creates an archive, and makes it the current archive (required for many
483other commands). The new archive is created with a temporary name; it
484is not actually saved as @var{archive} until you use @code{SAVE}.
485You can overwrite existing archives; similarly, the contents of any
486existing file named @var{archive} will not be destroyed until @code{SAVE}.
487
488@item DELETE @var{module}, @var{module}, @dots{} @var{module}
489Delete each listed @var{module} from the current archive; equivalent to
490@samp{ar -d @var{archive} @var{module} @dots{} @var{module}}.
491
492Requires prior use of @code{OPEN} or @code{CREATE}.
493
494@item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module})
495@itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile}
496List each named @var{module} present in @var{archive}. The separate
497command @code{VERBOSE} specifies the form of the output: when verbose
498output is off, output is like that of @samp{ar -t @var{archive}
b703c078
DM
499@var{module}@dots{}}. When verbose output is on, the listing is like
500@samp{ar -tv @var{archive} @var{module}@dots{}}.
765a273f
RP
501
502Output normally goes to the standard output stream; however, if you
503specify @var{outputfile} as a final argument, @code{ar} directs the
504output to that file.
505
506@item END
507Exit from @code{ar}, with a @code{0} exit code to indicate successful
508completion. This command does not save the output file; if you have
509changed the current archive since the last @code{SAVE} command, those
510changes are lost.
511
512@item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
513Extract each named @var{module} from the current archive, writing them
514into the current directory as separate files. Equivalent to @samp{ar -x
b703c078 515@var{archive} @var{module}@dots{}}.
765a273f
RP
516
517Requires prior use of @code{OPEN} or @code{CREATE}.
518
519@ignore
520@c FIXME Tokens but no commands???
521@item FULLDIR
522
523@item HELP
524@end ignore
525
526@item LIST
527Display full contents of the current archive, in ``verbose'' style
528regardless of the state of @code{VERBOSE}. The effect is like @samp{ar
529tv @var{archive}}). (This single command is a GNU @code{ld}
530enhancement, rather than present for MRI compatibility.)
531
532Requires prior use of @code{OPEN} or @code{CREATE}.
533
534@item OPEN @var{archive}
535Opens an existing archive for use as the current archive (required for
536many other commands). Any changes as the result of subsequent commands
537will not actually affect @var{archive} until you next use @code{SAVE}.
538
539@item REPLACE @var{module}, @var{module}, @dots{} @var{module}
540In the current archive, replace each existing @var{module} (named in
541the @code{REPLACE} arguments) from files in the current working directory.
542To execute this command without errors, both the file, and the module in
543the current archive, must exist.
544
545Requires prior use of @code{OPEN} or @code{CREATE}.
546
547@item VERBOSE
548Toggle an internal flag governing the output from @code{DIRECTORY}.
549When the flag is on, @code{DIRECTORY} output matches output from
b703c078 550@samp{ar -tv }@dots{}.
765a273f
RP
551
552@item SAVE
553Commit your changes to the current archive, and actually save it as a
554file with the name specified in the last @code{CREATE} or @code{OPEN}
555command.
556
557Requires prior use of @code{OPEN} or @code{CREATE}.
c72af735
RP
558
559@end table
560
8b2c2275
RP
561@iftex
562@node ld
c72af735
RP
563@chapter ld
564@cindex linker
565@kindex ld
566The GNU linker @code{ld} is now described in a separate manual.
27e94bd5 567@xref{Top,, Overview,, Using LD: the GNU linker}.
8b2c2275 568@end iftex
c72af735 569
eae04238 570@node nm
c72af735
RP
571@chapter nm
572@cindex symbols
573@kindex nm
574
575@smallexample
d6a4c375 576nm [ -a | --debug-syms ] [ -g | --extern-only ]
de3b08ac 577 [ -B ] [ -C | --demangle ] [ -D | --dynamic ]
1896790e 578 [ -s | --print-armap ] [ -A | -o | --print-file-name ]
6cfbdb50 579 [ -n | -v | --numeric-sort ] [ -p | --no-sort ]
1896790e 580 [ -r | --reverse-sort ] [ --size-sort ] [ -u | --undefined-only ]
6cfbdb50
DM
581 [ -t @var{radix} | --radix=@var{radix} ] [ -P | --portability ]
582 [ --target=@var{bfdname} ] [ -f @var{format} | --format=@var{format} ]
9eb39bca 583 [ --no-demangle ] [ -V | --version ] [ --help ] [ @var{objfile}@dots{} ]
c72af735
RP
584@end smallexample
585
b703c078 586GNU @code{nm} lists the symbols from object files @var{objfile}@dots{}.
6cfbdb50
DM
587If no object files are listed as arguments, @code{nm} assumes
588@file{a.out}.
589
590For each symbol, @code{nm} shows:
591
592@itemize @bullet
593@item
594The symbol value, in the radix selected by options (see below), or
595hexadecimal by default.
596
597@item
598The symbol type. At least the following types are used; others are, as
599well, depending on the object file format. If lowercase, the symbol is
600local; if uppercase, the symbol is global (external).
601
602@c Some more detail on exactly what these symbol types are used for
603@c would be nice.
604@table @code
605@item A
606Absolute.
607
608@item B
609BSS (uninitialized data).
610
611@item C
612Common.
613
614@item D
615Initialized data.
616
617@item I
618Indirect reference.
619
620@item T
621Text (program code).
622
623@item U
624Undefined.
625@end table
626
627@item
628The symbol name.
629@end itemize
c72af735
RP
630
631The long and short forms of options, shown here as alternatives, are
632equivalent.
633
634@table @code
6cfbdb50
DM
635@item -A
636@itemx -o
637@itemx --print-file-name
638@cindex input file name
639@cindex file name
640@cindex source file name
641Precede each symbol by the name of the input file (or archive element)
642in which it was found, rather than identifying the input file once only,
643before all of its symbols.
c72af735
RP
644
645@item -a
918c2f61 646@itemx --debug-syms
c72af735 647@cindex debugging symbols
6cfbdb50
DM
648Display all symbols, even debugger-only symbols; normally these are not
649listed.
650
68dd5295
DM
651@item -B
652@cindex @code{nm} format
653@cindex @code{nm} compatibility
d6a4c375
DM
654The same as @samp{--format=bsd} (for compatibility with the MIPS @code{nm}).
655
656@item -C
657@itemx --demangle
658@cindex demangling C++ symbols
659Decode (@dfn{demangle}) low-level symbol names into user-level names.
660Besides removing any initial underscore prepended by the system, this
661makes C++ function names readable. @xref{c++filt}, for more information
662on demangling.
68dd5295 663
9eb39bca
ILT
664@item --no-demangle
665Do not demangle low-level symbol names. This is the default.
666
de3b08ac
ILT
667@item -D
668@itemx --dynamic
669@cindex dynamic symbols
670Display the dynamic symbols rather than the normal symbols. This is
671only meaningful for dynamic objects, such as certain types of shared
672libraries.
673
6cfbdb50
DM
674@item -f @var{format}
675@itemx --format=@var{format}
68dd5295
DM
676@cindex @code{nm} format
677@cindex @code{nm} compatibility
6cfbdb50
DM
678Use the output format @var{format}, which can be @code{bsd},
679@code{sysv}, or @code{posix}. The default is @code{bsd}.
b26ac613 680Only the first character of @var{format} is significant; it can be
6cfbdb50 681either upper or lower case.
c72af735
RP
682
683@item -g
918c2f61 684@itemx --extern-only
c72af735
RP
685@cindex external symbols
686Display only external symbols.
687
b26ac613
DM
688@item -n
689@itemx -v
690@itemx --numeric-sort
691Sort symbols numerically by their addresses, rather than alphabetically
692by their names.
693
c72af735 694@item -p
918c2f61 695@itemx --no-sort
c72af735 696@cindex sorting symbols
650a49f0 697Do not bother to sort the symbols in any order; print them in the order
6cfbdb50
DM
698encountered.
699
700@item -P
701@itemx --portability
702Use the POSIX.2 standard output format instead of the default format.
703Equivalent to @samp{-f posix}.
c72af735 704
c72af735 705@item -s
918c2f61 706@itemx --print-armap
c72af735
RP
707@cindex symbol index, listing
708When listing symbols from archive members, include the index: a mapping
ec40bbb8
DM
709(stored in the archive by @code{ar} or @code{ranlib}) of which modules
710contain definitions for which names.
c72af735 711
c72af735 712@item -r
918c2f61 713@itemx --reverse-sort
ec40bbb8 714Reverse the order of the sort (whether numeric or alphabetic); let the
c72af735
RP
715last come first.
716
1896790e
ILT
717@item --size-sort
718Sort symbols by size. The size is computed as the difference between
719the value of the symbol and the value of the symbol with the next higher
720value. The size of the symbol is printed, rather than the value.
721
6cfbdb50
DM
722@item -t @var{radix}
723@itemx --radix=@var{radix}
724Use @var{radix} as the radix for printing the symbol values. It must be
725@samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal.
726
ec40bbb8 727@item --target=@var{bfdname}
c72af735
RP
728@cindex object code format
729Specify an object code format other than your system's default format.
eae04238 730@xref{Target Selection}, for more information.
c72af735
RP
731
732@item -u
918c2f61 733@itemx --undefined-only
c72af735
RP
734@cindex external symbols
735@cindex undefined symbols
736Display only undefined symbols (those external to each object file).
737
6cfbdb50
DM
738@item -V
739@itemx --version
b26ac613
DM
740Show the version number of @code{nm} and exit.
741
742@item --help
743Show a summary of the options to @code{nm} and exit.
c72af735
RP
744@end table
745
eae04238 746@node objcopy
eed5eeab
DM
747@chapter objcopy
748
749@smallexample
eae04238
DM
750objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
751 [ -I @var{bfdname} | --input-target=@var{bfdname} ]
752 [ -O @var{bfdname} | --output-target=@var{bfdname} ]
eed5eeab 753 [ -S | --strip-all ] [ -g | --strip-debug ]
dff604a7 754 [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
29c0d15c 755 [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
eed5eeab 756 [ -x | --discard-all ] [ -X | --discard-locals ]
f7b839f7
DM
757 [ -b @var{byte} | --byte=@var{byte} ]
758 [ -i @var{interleave} | --interleave=@var{interleave} ]
0aca460e 759 [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
33e0a06d
ILT
760 [ --gap-fill=@var{val} ] [ --pad-to=@var{address} ]
761 [ --set-start=@var{val} ] [ --adjust-start=@var{incr} ]
762 [ --adjust-vma=@var{incr} ]
6c7ed084
ILT
763 [ --adjust-section-vma=@var{section}@{=,+,-@}@var{val} ]
764 [ --adjust-warnings ] [ --no-adjust-warnings ]
5ab41086 765 [ --set-section-flags=@var{section}=@var{flags} ]
d0130cc8 766 [ --add-section=@var{sectionname}=@var{filename} ]
f7b839f7 767 [ -v | --verbose ] [ -V | --version ] [ --help ]
eed5eeab
DM
768 @var{infile} [@var{outfile}]
769@end smallexample
770
8981cac5
JO
771The @sc{gnu} @code{objcopy} utility copies the contents of an object
772file to another. @code{objcopy} uses the @sc{gnu} @sc{bfd} Library to
773read and write the object files. It can write the destination object
774file in a format different from that of the source object file. The
775exact behavior of @code{objcopy} is controlled by command-line options.
eed5eeab
DM
776
777@code{objcopy} creates temporary files to do its translations and
8981cac5
JO
778deletes them afterward. @code{objcopy} uses @sc{bfd} to do all its
779translation work; it has access to all the formats described in @sc{bfd}
780and thus is able to recognize most formats without being told
781explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
eed5eeab 782
67f67ed9
ILT
783@code{objcopy} can be used to generate S-records by using an output
784target of @samp{srec} (e.g., use @samp{-O srec}).
785
786@code{objcopy} can be used to generate a raw binary file by using an
787output target of @samp{binary} (e.g., use @samp{-O binary}). When
788@code{objcopy} generates a raw binary file, it will essentially produce
789a memory dump of the contents of the input object file. All symbols and
a6afc090
ILT
790relocation information will be discarded. The memory dump will start at
791the virtual address of the lowest section copied into the output file.
67f67ed9
ILT
792
793When generating an S-record or a raw binary file, it may be helpful to
794use @samp{-S} to remove sections containing debugging information. In
795some cases @samp{-R} will be useful to remove sections which contain
796information which is not needed by the binary file.
797
eed5eeab
DM
798@table @code
799@item @var{infile}
800@itemx @var{outfile}
8981cac5 801The source and output files, respectively.
eed5eeab
DM
802If you do not specify @var{outfile}, @code{objcopy} creates a
803temporary file and destructively renames the result with
8981cac5 804the name of @var{infile}.
eed5eeab 805
eae04238
DM
806@item -I @var{bfdname}
807@itemx --input-target=@var{bfdname}
808Consider the source file's object format to be @var{bfdname}, rather than
809attempting to deduce it. @xref{Target Selection}, for more information.
eed5eeab 810
eae04238
DM
811@item -O @var{bfdname}
812@itemx --output-target=@var{bfdname}
813Write the output file using the object format @var{bfdname}.
814@xref{Target Selection}, for more information.
eed5eeab 815
eae04238
DM
816@item -F @var{bfdname}
817@itemx --target=@var{bfdname}
818Use @var{bfdname} as the object format for both the input and the output
819file; i.e., simply transfer data from source to destination with no
820translation. @xref{Target Selection}, for more information.
eed5eeab 821
0aca460e
ILT
822@item -R @var{sectionname}
823@itemx --remove-section=@var{sectionname}
824Remove any section named @var{sectionname} from the output file. This
825option may be given more than once. Note that using this option
826inappropriately may make the output file unusable.
827
eed5eeab
DM
828@item -S
829@itemx --strip-all
830Do not copy relocation and symbol information from the source file.
831
832@item -g
833@itemx --strip-debug
834Do not copy debugging symbols from the source file.
835
9135e5f8
ILT
836@item --strip-unneeded
837Strip all symbols that are not needed for relocation processing.
838
dff604a7
ILT
839@item -K @var{symbolname}
840@itemx --keep-symbol=@var{symbolname}
841Copy only symbol @var{symbolname} from the source file. This option may
842be given more than once.
843
29c0d15c
ILT
844@item -N @var{symbolname}
845@itemx --strip-symbol=@var{symbolname}
dff604a7
ILT
846Do not copy symbol @var{symbolname} from the source file. This option
847may be given more than once, and may be combined with strip options
848other than @code{-K}.
29c0d15c 849
eed5eeab
DM
850@item -x
851@itemx --discard-all
852Do not copy non-global symbols from the source file.
853@c FIXME any reason to prefer "non-global" to "local" here?
854
855@item -X
856@itemx --discard-locals
857Do not copy compiler-generated local symbols.
858(These usually start with @samp{L} or @samp{.}.)
859
db2e6adb
DM
860@item -b @var{byte}
861@itemx --byte=@var{byte}
862Keep only every @var{byte}th byte of the input file (header data is not
f7b839f7
DM
863affected). @var{byte} can be in the range from 0 to @var{interleave}-1,
864where @var{interleave} is given by the @samp{-i} or @samp{--interleave}
865option, or the default of 4. This option is useful for creating files
8981cac5 866to program @sc{rom}. It is typically used with an @code{srec} output
f7b839f7
DM
867target.
868
869@item -i @var{interleave}
870@itemx --interleave=@var{interleave}
8981cac5
JO
871Only copy one out of every @var{interleave} bytes. Select which byte to
872copy with the @var{-b} or @samp{--byte} option. The default is 4.
873@code{objcopy} ignores this option if you do not specify either @samp{-b} or
874@samp{--byte}.
db2e6adb 875
596d99ba
ILT
876@item --gap-fill @var{val}
877Fill gaps between sections with @var{val}. This is done by increasing
878the size of the section with the lower address, and filling in the extra
879space created with @var{val}.
880
33e0a06d
ILT
881@item --pad-to @var{address}
882Pad the output file up to the virtual address @var{address}. This is
883done by increasing the size of the last section. The extra space is
884filled in with the value specified by @samp{--gap-fill} (default zero).
885
6c7ed084
ILT
886@item --set-start @var{val}
887Set the address of the new file to @var{val}. Not all object file
a6afc090 888formats support setting the start address.
6c7ed084
ILT
889
890@item --adjust-start @var{incr}
891Adjust the start address by adding @var{incr}. Not all object file
892formats support setting the start address.
893
894@item --adjust-vma @var{incr}
895Adjust the address of all sections, as well as the start address, by
896adding @var{incr}. Some object file formats do not permit section
897addresses to be changed arbitrarily. Note that this does not relocate
898the sections; if the program expects sections to be loaded at a certain
899address, and this option is used to change the sections such that they
900are loaded at a different address, the program may fail.
901
902@item --adjust-section-vma @var{section}@{=,+,-@}@var{val}
903Set or adjust the address of the named @var{section}. If @samp{=} is
904used, the section address is set to @var{val}. Otherwise, @var{val} is
905added to or subtracted from the section address. See the comments under
906@samp{--adjust-vma}, above. If @var{section} does not exist in the
907input file, a warning will be issued, unless @samp{--no-adjust-warnings}
908is used.
909
910@item --adjust-warnings
911If @samp{--adjust-section-vma} is used, and the named section does not
912exist, issue a warning. This is the default.
913
914@item --no-adjust-warnings
915Do not issue a warning if @samp{--adjust-section-vma} is used, even if
916the named section does not exist.
917
5ab41086
ILT
918@item --set-section-flags @var{section}=@var{flags}
919Set the flags for the named section. The @var{flags} argument is a
920comma separated string of flag names. The recognized names are
921@samp{alloc}, @samp{load}, @samp{readonly}, @samp{code}, @samp{data},
922and @samp{rom}. Not all flags are meaningful for all object file
923formats.
924
d0130cc8
ILT
925@item --add-section @var{sectionname}=@var{filename}
926Add a new section named @var{sectionname} while copying the file. The
927contents of the new section are taken from the file @var{filename}. The
928size of the section will be the size of the file. This option only
929works on file formats which can support sections with arbitrary names.
930
eed5eeab
DM
931@item -V
932@itemx --version
933Show the version number of @code{objcopy}.
934
935@item -v
936@itemx --verbose
937Verbose output: list all object files modified. In the case of
938archives, @samp{objcopy -V} lists all members of the archive.
939
940@item --help
941Show a summary of the options to @code{objcopy}.
942@end table
943
eae04238 944@node objdump
c72af735
RP
945@chapter objdump
946
947@cindex object file information
948@kindex objdump
949
950@smallexample
10f2a7f6
JO
951objdump [ -a | --archive-headers ]
952 [ -b @var{bfdname} | --target=@var{bfdname} ]
d5464baa
ILT
953 [ -d | --disassemble ] [ -D | --disassemble-all ]
954 [ -f | --file-headers ]
eae04238 955 [ -h | --section-headers | --headers ] [ -i | --info ]
10f2a7f6 956 [ -j @var{section} | --section=@var{section} ]
a8e27cc6 957 [ -l | --line-numbers ] [ -S | --source ]
7e5e9619
JO
958 [ -m @var{machine} | --architecture=@var{machine} ]
959 [ -r | --reloc ] [ -R | --dynamic-reloc ]
960 [ -s | --full-contents ] [ --stabs ]
de3b08ac 961 [ -t | --syms ] [ -T | --dynamic-syms ] [ -x | --all-headers ]
aa21a2a9
ILT
962 [ -w | --wide ] [ --start-address=@var{address} ]
963 [ --stop-address=@var{address} ] [ --version ] [ --help ]
964 @var{objfile}@dots{}
c72af735
RP
965@end smallexample
966
967@code{objdump} displays information about one or more object files.
968The options control what particular information to display. This
969information is mostly useful to programmers who are working on the
970compilation tools, as opposed to programmers who just want their
971program to compile and work.
972
b26ac613
DM
973@var{objfile}@dots{} are the object files to be examined. When you
974specify archives, @code{objdump} shows information on each of the member
975object files.
976
c72af735 977The long and short forms of options, shown here as alternatives, are
ed78872a 978equivalent. At least one option besides @samp{-l} must be given.
c72af735
RP
979
980@table @code
c72af735 981@item -a
eae04238 982@itemx --archive-header
c72af735 983@cindex archive headers
ec40bbb8 984If any of the @var{objfile} files are archives, display the archive
c72af735
RP
985header information (in a format similar to @samp{ls -l}). Besides the
986information you could list with @samp{ar tv}, @samp{objdump -a} shows
987the object file format of each archive member.
988
c72af735 989@item -b @var{bfdname}
eae04238 990@itemx --target=@var{bfdname}
c72af735 991@cindex object code format
ec40bbb8
DM
992Specify that the object-code format for the object files is
993@var{bfdname}. This option may not be necessary; @var{objdump} can
994automatically recognize many formats.
995
996For example,
c72af735
RP
997@example
998objdump -b oasys -m vax -h fu.o
999@end example
1000@noindent
ec40bbb8
DM
1001displays summary information from the section headers (@samp{-h}) of
1002@file{fu.o}, which is explicitly identified (@samp{-m}) as a VAX object
c72af735
RP
1003file in the format produced by Oasys compilers. You can list the
1004formats available with the @samp{-i} option.
eae04238 1005@xref{Target Selection}, for more information.
c72af735
RP
1006
1007@item -d
eae04238 1008@itemx --disassemble
c72af735
RP
1009@cindex disassembling object code
1010@cindex machine instructions
d5464baa
ILT
1011Display the assembler mnemonics for the machine instructions from
1012@var{objfile}. This option only disassembles those sections which are
1013expected to contain instructions.
1014
1015@item -D
1016@itemx --disassemble-all
1017Like @samp{-d}, but disassemble the contents of all sections, not just
1018those expected to contain instructions.
c72af735
RP
1019
1020@item -f
eae04238 1021@itemx --file-header
c72af735 1022@cindex object file header
eae04238 1023Display summary information from the overall header of
ec40bbb8 1024each of the @var{objfile} files.
c72af735
RP
1025
1026@item -h
eae04238 1027@itemx --section-header
c5f0c938 1028@itemx --header
c72af735 1029@cindex section headers
eae04238 1030Display summary information from the section headers of the
c72af735
RP
1031object file.
1032
db2e6adb
DM
1033File segments may be relocated to nonstandard addresses, for example by
1034using the @samp{-Ttext}, @samp{-Tdata}, or @samp{-Tbss} options to
1035@code{ld}. However, some object file formats, such as a.out, do not
1036store the starting address of the file segments. In those situations,
1037although @code{ld} relocates the sections correctly, using @samp{objdump
1038-h} to list the file section headers cannot show the correct addresses.
1039Instead, it shows the usual addresses, which are implicit for the
1040target.
1041
b26ac613
DM
1042@item --help
1043Print a summary of the options to @code{objdump} and exit.
1044
c72af735 1045@item -i
eae04238 1046@itemx --info
c72af735
RP
1047@cindex architectures available
1048@cindex object formats available
1049Display a list showing all architectures and object formats available
ec40bbb8 1050for specification with @samp{-b} or @samp{-m}.
c72af735 1051
c72af735 1052@item -j @var{name}
eae04238 1053@itemx --section=@var{name}
c72af735 1054@cindex section information
ec40bbb8 1055Display information only for section @var{name}.
c72af735 1056
c72af735 1057@item -l
eae04238 1058@itemx --line-numbers
c72af735 1059@cindex source filenames for object files
eae04238
DM
1060Label the display (using debugging information) with the filename
1061and source line numbers corresponding to the object code shown.
d5464baa 1062Only useful with @samp{-d} or @samp{-D}.
c72af735 1063
c72af735 1064@item -m @var{machine}
eae04238 1065@itemx --architecture=@var{machine}
c72af735 1066@cindex architecture
ec40bbb8 1067Specify that the object files @var{objfile} are for architecture
c72af735
RP
1068@var{machine}. You can list available architectures using the @samp{-i}
1069option.
1070
1071@item -r
c5f0c938 1072@itemx --reloc
c72af735 1073@cindex relocation entries, in object file
d5464baa
ILT
1074Print the relocation entries of the file. If used with @samp{-d} or
1075@samp{-D}, the relocations are printed interspersed with the
1076disassembly.
c72af735 1077
de3b08ac
ILT
1078@item -R
1079@itemx --dynamic-reloc
1080@cindex dynamic relocation entries, in object file
1081Print the dynamic relocation entries of the file. This is only
1082meaningful for dynamic objects, such as certain types of shared
1083libraries.
1084
c72af735 1085@item -s
eae04238 1086@itemx --full-contents
c72af735
RP
1087@cindex sections, full contents
1088@cindex object file sections
1089Display the full contents of any sections requested.
1090
a8e27cc6
ILT
1091@item -S
1092@itemx --source
1093@cindex source disassembly
1094@cindex disassembly, with source
1095Display source code intermixed with disassembly, if possible. Implies
1096@samp{-d}.
1097
c5f0c938
JG
1098@item --stabs
1099@cindex stab
1100@cindex .stab
1101@cindex debug symbols
1102@cindex ELF object file format
c3c93fda
JG
1103Display the full contents of any sections requested. Display the
1104contents of the .stab and .stab.index and .stab.excl sections from an
1105ELF file. This is only useful on systems (such as Solaris 2.0) in which
1106@code{.stab} debugging symbol-table entries are carried in an ELF
1107section. In most other file formats, debugging symbol-table entries are
c5f0c938
JG
1108interleaved with linkage symbols, and are visible in the @samp{--syms}
1109output.
1110
aa21a2a9
ILT
1111@item --start-address=@var{address}
1112@cindex start-address
1113Start displaying data at the specified address. This affects the output
1114of the @code{-d}, @code{-r} and @code{-s} options.
1115
1116@item --stop-address=@var{address}
1117@cindex stop-address
1118Stop displaying data at the specified address. This affects the output
1119of the @code{-d}, @code{-r} and @code{-s} options.
1120
c72af735 1121@item -t
c5f0c938 1122@itemx --syms
c72af735 1123@cindex symbol table entries, printing
eae04238 1124Print the symbol table entries of the file.
c72af735
RP
1125This is similar to the information provided by the @samp{nm} program.
1126
de3b08ac
ILT
1127@item -T
1128@itemx --dynamic-syms
1129@cindex dynamic symbol table entries, printing
1130Print the dynamic symbol table entries of the file. This is only
1131meaningful for dynamic objects, such as certain types of shared
1132libraries. This is similar to the information provided by the @samp{nm}
1133program when given the @samp{-D} (@samp{--dynamic}) option.
1134
b26ac613
DM
1135@item --version
1136Print the version number of @code{objdump} and exit.
1137
c72af735 1138@item -x
eae04238 1139@itemx --all-header
c72af735
RP
1140@cindex all header information, object file
1141@cindex header information, all
1142Display all available header information, including the symbol table and
1143relocation entries. Using @samp{-x} is equivalent to specifying all of
1144@samp{-a -f -h -r -t}.
4b6d0f78
MM
1145
1146@item -w
1147@item --wide
1148@cindex wide output, printing
1149Format some lines for output devices that have more than 80 columns.
c72af735
RP
1150@end table
1151
eae04238 1152@node ranlib
c72af735
RP
1153@chapter ranlib
1154
1155@kindex ranlib
1156@cindex archive contents
1157@cindex symbol index
1158
1159@smallexample
4d9b5d5a 1160ranlib [-vV] @var{archive}
c72af735
RP
1161@end smallexample
1162
ec40bbb8 1163@code{ranlib} generates an index to the contents of an archive and
c72af735
RP
1164stores it in the archive. The index lists each symbol defined by a
1165member of an archive that is a relocatable object file.
1166
918c2f61 1167You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
c72af735 1168
ec40bbb8 1169An archive with such an index speeds up linking to the library and
c72af735
RP
1170allows routines in the library to call each other without regard to
1171their placement in the archive.
1172
1173The GNU @code{ranlib} program is another form of GNU @code{ar}; running
1174@code{ranlib} is completely equivalent to executing @samp{ar -s}.
1175@xref{ar}.
1176
4d9b5d5a
DM
1177@table @code
1178@item -v
1179@itemx -V
1180Show the version number of @code{ranlib}.
c3f471a4 1181@end table
4d9b5d5a 1182
eae04238 1183@node size
c72af735
RP
1184@chapter size
1185
1186@kindex size
1187@cindex section sizes
1188
1189@smallexample
4d9b5d5a
DM
1190size [ -A | -B | --format=@var{compatibility} ]
1191 [ --help ] [ -d | -o | -x | --radix=@var{number} ]
1192 [ --target=@var{bfdname} ] [ -V | --version ]
1193 @var{objfile}@dots{}
c72af735
RP
1194@end smallexample
1195
1196The GNU @code{size} utility lists the section sizes---and the total
ec40bbb8
DM
1197size---for each of the object or archive files @var{objfile} in its
1198argument list. By default, one line of output is generated for each
1199object file or each module in an archive.
c72af735 1200
b26ac613
DM
1201@var{objfile}@dots{} are the object files to be examined.
1202
c72af735 1203The command line options have the following meanings:
c72af735 1204
b26ac613 1205@table @code
c72af735
RP
1206@item -A
1207@itemx -B
ec40bbb8 1208@itemx --format=@var{compatibility}
68dd5295 1209@cindex @code{size} display format
c72af735
RP
1210Using one of these options, you can choose whether the output from GNU
1211@code{size} resembles output from System V @code{size} (using @samp{-A},
ec40bbb8
DM
1212or @samp{--format=sysv}), or Berkeley @code{size} (using @samp{-B}, or
1213@samp{--format=berkeley}). The default is the one-line format similar to
c72af735 1214Berkeley's.
918c2f61
PB
1215@c Bonus for doc-source readers: you can also say --format=strange (or
1216@c anything else that starts with 's') for sysv, and --format=boring (or
c72af735
RP
1217@c anything else that starts with 'b') for Berkeley.
1218
1219Here is an example of the Berkeley (default) format of output from
1220@code{size}:
1221@smallexample
eae04238 1222size --format=Berkeley ranlib size
c72af735
RP
1223text data bss dec hex filename
1224294880 81920 11592 388392 5ed28 ranlib
1225294880 81920 11888 388688 5ee50 size
1226@end smallexample
1227
1228@noindent
1229This is the same data, but displayed closer to System V conventions:
1230
1231@smallexample
eae04238 1232size --format=SysV ranlib size
c72af735
RP
1233ranlib :
1234section size addr
1235.text 294880 8192
1236.data 81920 303104
1237.bss 11592 385024
1238Total 388392
1239
1240
1241size :
1242section size addr
1243.text 294880 8192
1244.data 81920 303104
1245.bss 11888 385024
1246Total 388688
1247@end smallexample
1248
918c2f61 1249@item --help
c72af735
RP
1250Show a summary of acceptable arguments and options.
1251
1252@item -d
1253@itemx -o
1254@itemx -x
ec40bbb8 1255@itemx --radix=@var{number}
68dd5295 1256@cindex @code{size} number format
c72af735
RP
1257@cindex radix for section sizes
1258Using one of these options, you can control whether the size of each
ec40bbb8
DM
1259section is given in decimal (@samp{-d}, or @samp{--radix=10}); octal
1260(@samp{-o}, or @samp{--radix=8}); or hexadecimal (@samp{-x}, or
1261@samp{--radix=16}). In @samp{--radix=@var{number}}, only the three
c72af735
RP
1262values (8, 10, 16) are supported. The total size is always given in two
1263radices; decimal and hexadecimal for @samp{-d} or @samp{-x} output, or
1264octal and hexadecimal if you're using @samp{-o}.
1265
ec40bbb8 1266@item --target=@var{bfdname}
c72af735 1267@cindex object code format
ec40bbb8
DM
1268Specify that the object-code format for @var{objfile} is
1269@var{bfdname}. This option may not be necessary; @code{size} can
eae04238
DM
1270automatically recognize many formats.
1271@xref{Target Selection}, for more information.
c72af735
RP
1272
1273@item -V
918c2f61 1274@itemx --version
4d9b5d5a 1275Display the version number of @code{size}.
c72af735
RP
1276@end table
1277
eae04238 1278@node strings
ba7c8e29
DM
1279@chapter strings
1280@kindex strings
1281@cindex listings strings
1282@cindex printing strings
1283@cindex strings, printing
1284
1285@smallexample
b26ac613 1286strings [-afov] [-@var{min-len}] [-n @var{min-len}] [-t @var{radix}] [-]
650a49f0 1287 [--all] [--print-file-name] [--bytes=@var{min-len}]
eae04238
DM
1288 [--radix=@var{radix}] [--target=@var{bfdname}]
1289 [--help] [--version] @var{file}@dots{}
ba7c8e29
DM
1290@end smallexample
1291
1292For each @var{file} given, GNU @code{strings} prints the printable
1293character sequences that are at least 4 characters long (or the number
67ace729 1294given with the options below) and are followed by an unprintable
ba7c8e29 1295character. By default, it only prints the strings from the initialized
5f057047
ILT
1296and loaded sections of object files; for other types of files, it prints
1297the strings from the whole file.
ba7c8e29
DM
1298
1299@code{strings} is mainly useful for determining the contents of non-text
1300files.
1301
1302@table @code
1303@item -a
1304@itemx --all
1305@itemx -
5f057047
ILT
1306Do not scan only the initialized and loaded sections of object files;
1307scan the whole files.
ba7c8e29
DM
1308
1309@item -f
1310@itemx --print-file-name
1311Print the name of the file before each string.
1312
b26ac613 1313@item --help
ba7c8e29
DM
1314Print a summary of the program usage on the standard output and exit.
1315
ba7c8e29 1316@itemx -@var{min-len}
b26ac613 1317@item -n @var{min-len}
ba7c8e29
DM
1318@itemx --bytes=@var{min-len}
1319Print sequences of characters that are at least @var{min-len} characters
1320long, instead of the default 4.
1321
1322@item -o
b26ac613
DM
1323Like @samp{-t o}. Some other versions of @code{strings} have @samp{-o}
1324act like @samp{-t d} instead. Since we can not be compatible with both
1325ways, we simply chose one.
ba7c8e29
DM
1326
1327@item -t @var{radix}
1328@itemx --radix=@var{radix}
1329Print the offset within the file before each string. The single
1330character argument specifies the radix of the offset---@samp{o} for
1331octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
1332
eae04238
DM
1333@item --target=@var{bfdname}
1334@cindex object code format
1335Specify an object code format other than your system's default format.
1336@xref{Target Selection}, for more information.
1337
ba7c8e29
DM
1338@item -v
1339@itemx --version
1340Print the program version number on the standard output and exit.
1341@end table
1342
eae04238 1343@node strip
c72af735
RP
1344@chapter strip
1345
1346@kindex strip
1347@cindex removing symbols
1348@cindex discarding symbols
1815e42c 1349@cindex symbols, discarding
c72af735
RP
1350
1351@smallexample
eae04238
DM
1352strip [ -F @var{bfdname} | --target=@var{bfdname} | --target=@var{bfdname} ]
1353 [ -I @var{bfdname} | --input-target=@var{bfdname} ]
1354 [ -O @var{bfdname} | --output-target=@var{bfdname} ]
b703c078 1355 [ -s | --strip-all ] [ -S | -g | --strip-debug ]
dff604a7 1356 [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
29c0d15c 1357 [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
b703c078 1358 [ -x | --discard-all ] [ -X | --discard-locals ]
0aca460e 1359 [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
b26ac613 1360 [ -v | --verbose ] [ -V | --version ] [ --help ]
b703c078 1361 @var{objfile}@dots{}
c72af735
RP
1362@end smallexample
1363
e31e9a8d 1364GNU @code{strip} discards all symbols from object files
ec40bbb8 1365@var{objfile}. The list of object files may include archives.
b26ac613 1366At least one object file must be given.
c72af735 1367
ec40bbb8 1368@code{strip} modifies the files named in its argument,
c72af735 1369rather than writing modified copies under different names.
c72af735 1370
c72af735 1371@table @code
eae04238
DM
1372@item -F @var{bfdname}
1373@itemx --target=@var{bfdname}
b26ac613 1374Treat the original @var{objfile} as a file with the object
eae04238
DM
1375code format @var{bfdname}, and rewrite it in the same format.
1376@xref{Target Selection}, for more information.
b26ac613
DM
1377
1378@item --help
1379Show a summary of the options to @code{strip} and exit.
1380
eae04238
DM
1381@item -I @var{bfdname}
1382@itemx --input-target=@var{bfdname}
ec40bbb8 1383Treat the original @var{objfile} as a file with the object
eae04238
DM
1384code format @var{bfdname}.
1385@xref{Target Selection}, for more information.
918c2f61 1386
eae04238
DM
1387@item -O @var{bfdname}
1388@itemx --output-target=@var{bfdname}
1389Replace @var{objfile} with a file in the output format @var{bfdname}.
1390@xref{Target Selection}, for more information.
918c2f61 1391
0aca460e
ILT
1392@item -R @var{sectionname}
1393@itemx --remove-section=@var{sectionname}
1394Remove any section named @var{sectionname} from the output file. This
1395option may be given more than once. Note that using this option
1396inappropriately may make the output file unusable.
1397
b703c078
DM
1398@item -s
1399@itemx --strip-all
1400Remove all symbols.
1401
918c2f61
PB
1402@item -g
1403@itemx -S
1404@itemx --strip-debug
1405Remove debugging symbols only.
1406
9135e5f8
ILT
1407@item --strip-unneeded
1408Remove all symbols that are not needed for relocation processing.
1409
dff604a7
ILT
1410@item -K @var{symbolname}
1411@itemx --keep-symbol=@var{symbolname}
1412Keep only symbol @var{symbolname} from the source file. This option may
1413be given more than once.
1414
29c0d15c
ILT
1415@item -N @var{symbolname}
1416@itemx --strip-symbol=@var{symbolname}
dff604a7
ILT
1417Remove symbol @var{symbolname} from the source file. This option may be
1418given more than once, and may be combined with strip options other than
1419@code{-K}.
29c0d15c 1420
918c2f61
PB
1421@item -x
1422@itemx --discard-all
1423Remove non-global symbols.
1424
1425@item -X
1426@itemx --discard-locals
1427Remove compiler-generated local symbols.
ec40bbb8 1428(These usually start with @samp{L} or @samp{.}.)
918c2f61
PB
1429
1430@item -V
1431@itemx --version
ec40bbb8 1432Show the version number for @code{strip}.
918c2f61 1433
1815e42c 1434@item -v
918c2f61
PB
1435@itemx --verbose
1436Verbose output: list all object files modified. In the case of
1269d441 1437archives, @samp{strip -v} lists all members of the archive.
c72af735
RP
1438@end table
1439
eae04238 1440@node c++filt
b6216af2
PB
1441@chapter c++filt
1442
1443@kindex c++filt
1444@cindex demangling C++ symbols
1445
b26ac613
DM
1446@smallexample
1447c++filt [ -_ | --strip-underscores ]
6f88f031 1448 [ -n | --no-strip-underscores ]
b26ac613 1449 [ -s @var{format} | --format=@var{format} ]
d6a4c375 1450 [ --help ] [ --version ] [ @var{symbol}@dots{} ]
b26ac613
DM
1451@end smallexample
1452
6c69b6bd
JO
1453The C++ language provides function overloading, which means that you can
1454write many functions with the same name (providing each takes parameters
1455of different types). All C++ function names are encoded into a
b26ac613 1456low-level assembly label (this process is known as
6c69b6bd
JO
1457@dfn{mangling}). The @code{c++filt} program does the inverse mapping: it
1458decodes (@dfn{demangles}) low-level names into user-level names so that
1459the linker can keep these overloaded functions from clashing.
1460
1461Every alphanumeric word (consisting of letters, digits, underscores,
1462dollars, or periods) seen in the input is a potential label. If the
1463label decodes into a C++ name, the C++ name replaces the low-level
1464name in the output.
b6216af2 1465
d6a4c375 1466You can use @code{c++filt} to decipher individual symbols:
6c69b6bd
JO
1467
1468@example
1469c++filt @var{symbol}
1470@end example
1471
d6a4c375
DM
1472If no @var{symbol} arguments are given, @code{c++filt} reads symbol
1473names from the standard input and writes the demangled names to the
1474standard output. All results are printed on the standard output.
b6216af2 1475
b26ac613
DM
1476@table @code
1477@item -_
94e9ad77 1478@itemx --strip-underscores
b26ac613
DM
1479On some systems, both the C and C++ compilers put an underscore in front
1480of every name. For example, the C name @code{foo} gets the low-level
6f88f031
ILT
1481name @code{_foo}. This option removes the initial underscore. Whether
1482@code{c++filt} removes the underscore by default is target dependent.
1483
1484@item -n
1485@itemx --no-strip-underscores
1486Do not remove the initial underscore.
b26ac613
DM
1487
1488@item -s @var{format}
1489@itemx --format=@var{format}
1490GNU @code{nm} can decode three different methods of mangling, used by
1491different C++ compilers. The argument to this option selects which
1492method it uses:
1493
1494@table @code
1495@item gnu
1496the one used by the GNU compiler (the default method)
1497@item lucid
1498the one used by the Lucid compiler
1499@item arm
1500the one specified by the C++ Annotated Reference Manual
1501@end table
1502
1503@item --help
1504Print a summary of the options to @code{c++filt} and exit.
1505
1506@item --version
1507Print the version number of @code{c++filt} and exit.
1508@end table
b6216af2 1509
5eac46ae
JO
1510@quotation
1511@emph{Warning:} @code{c++filt} is a new utility, and the details of its
1512user interface are subject to change in future releases. In particular,
1513a command-line option may be required in the the future to decode a name
1514passed as an argument on the command line; in other words,
1515
1516@example
b26ac613 1517c++filt @var{symbol}
5eac46ae
JO
1518@end example
1519
1520@noindent
1521may in a future release become
1522
1523@example
b26ac613 1524c++filt @var{option} @var{symbol}
5eac46ae
JO
1525@end example
1526@end quotation
1527
eae04238 1528@node nlmconv
94e9ad77
JO
1529@chapter nlmconv
1530
1531@code{nlmconv} converts a relocatable object file into a NetWare
8981cac5
JO
1532Loadable Module.
1533
1534@ignore
1535@code{nlmconv} currently works with @samp{i386} object
4961ce5b
JO
1536files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
1537object files in @sc{elf}, or @code{a.out} format@footnote{
1538@code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
1539format in the Binary File Descriptor library. It has only been tested
1540with the above formats.}.
8981cac5 1541@end ignore
4961ce5b
JO
1542
1543@quotation
1544@emph{Warning:} @code{nlmconv} is not always built as part of the binary
1545utilities, since it is only useful for NLM targets.
1546@end quotation
94e9ad77
JO
1547
1548@smallexample
eae04238
DM
1549nlmconv [ -I @var{bfdname} | --input-target=@var{bfdname} ]
1550 [ -O @var{bfdname} | --output-target=@var{bfdname} ]
94e9ad77 1551 [ -T @var{headerfile} | --header-file=@var{headerfile} ]
20465f8b 1552 [ -d | --debug] [ -l @var{linker} | --linker=@var{linker} ]
94e9ad77
JO
1553 [ -h | --help ] [ -V | --version ]
1554 @var{infile} @var{outfile}
1555@end smallexample
1556
1557@code{nlmconv} converts the relocatable @samp{i386} object file
1558@var{infile} into the NetWare Loadable Module @var{outfile}, optionally
1559reading @var{headerfile} for NLM header information. For instructions
5b0ba16d
JO
1560on writing the NLM command file language used in header files, see the
1561@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
1562Development and Tools Overview}, which is part of the NLM Software
1563Developer's Kit (``NLM SDK''), available from Novell, Inc.
1564@code{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
eae04238 1565@var{infile}; see @ref{BFD,,BFD,ld.info,Using LD}, for
5b0ba16d 1566more information.
94e9ad77 1567
20465f8b
JO
1568@code{nlmconv} can perform a link step. In other words, you can list
1569more than one object file for input if you list them in the definitions
1570file (rather than simply specifying one input file on the command line).
1571In this case, @code{nlmconv} calls the linker for you.
1572
94e9ad77 1573@table @code
eae04238
DM
1574@item -I @var{bfdname}
1575@itemx --input-target=@var{bfdname}
94e9ad77 1576Object format of the input file. @code{nlmconv} can usually determine
eae04238
DM
1577the format of a given file (so no default is necessary).
1578@xref{Target Selection}, for more information.
94e9ad77 1579
eae04238
DM
1580@item -O @var{bfdname}
1581@itemx --output-target=@var{bfdname}
94e9ad77
JO
1582Object format of the output file. @code{nlmconv} infers the output
1583format based on the input format, e.g. for a @samp{i386} input file the
eae04238
DM
1584output format is @samp{nlm32-i386}.
1585@xref{Target Selection}, for more information.
94e9ad77
JO
1586
1587@item -T @var{headerfile}
1588@itemx --header-file=@var{headerfile}
1589Reads @var{headerfile} for NLM header information. For instructions on
5b0ba16d
JO
1590writing the NLM command file language used in header files, see@ see the
1591@samp{linkers} section, of the @cite{NLM Development and Tools
1592Overview}, which is part of the NLM Software Developer's Kit, available
1593from Novell, Inc.
94e9ad77 1594
20465f8b
JO
1595@item -d
1596@itemx --debug
1597Displays (on standard error) the linker command line used by @code{nlmconv}.
1598
1599@item -l @var{linker}
1600@itemx --linker=@var{linker}
1601Use @var{linker} for any linking. @var{linker} can be an abosolute or a
1602relative pathname.
1603
94e9ad77
JO
1604@item -h
1605@itemx --help
1606Prints a usage summary.
1607
1608@item -V
1609@itemx --version
1610Prints the version number for @code{nlmconv}.
1611@end table
1612
eae04238
DM
1613@node Selecting The Target System
1614@chapter Selecting the target system
1615
8981cac5
JO
1616You can specify three aspects of the target system to the @sc{gnu}
1617binary file utilities, each in several ways:
eae04238
DM
1618
1619@itemize @bullet
1620@item
8981cac5 1621the target
eae04238
DM
1622
1623@item
8981cac5 1624the architecture
eae04238
DM
1625
1626@item
8981cac5 1627the linker emulation (which applies to the linker only)
eae04238
DM
1628@end itemize
1629
1630In the following summaries, the lists of ways to specify values are in
8981cac5
JO
1631order of decreasing precedence. The ways listed first override those
1632listed later.
eae04238 1633
8981cac5
JO
1634The commands to list valid values only list the values for which the
1635programs you are running were configured. If they were configured with
8490169d 1636@samp{--enable-targets=all}, the commands list most of the available
eae04238 1637values, but a few are left out; not all targets can be configured in at
8981cac5
JO
1638once because some of them can only be configured @dfn{native} (on hosts
1639with the same type as the target system).
eae04238
DM
1640
1641@menu
1642* Target Selection::
1643* Architecture Selection::
1644* Linker Emulation Selection::
1645@end menu
1646
1647@node Target Selection
8981cac5 1648@section Target Selection
eae04238
DM
1649
1650A @dfn{target} is an object file format. A given target may be
1651supported for multiple architectures (@pxref{Architecture Selection}).
8981cac5
JO
1652A target selection may also have variations for different operating
1653systems or architectures.
eae04238 1654
8981cac5
JO
1655The command to list valid target values is @samp{objdump -i}
1656(the first column of output contains the relevant information).
eae04238 1657
10f2a7f6
JO
1658Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
1659@samp{a.out-sunos-big}.
eae04238 1660
8981cac5 1661@subheading @code{objdump} Target
eae04238
DM
1662
1663Ways to specify:
1664
1665@enumerate
1666@item
8981cac5 1667command line option: @samp{-b} or @samp{--target}
eae04238
DM
1668
1669@item
1670environment variable @code{GNUTARGET}
1671
1672@item
1673deduced from the input file
1674@end enumerate
1675
8981cac5 1676@subheading @code{objcopy} and @code{strip} Input Target
eae04238
DM
1677
1678Ways to specify:
1679
1680@enumerate
1681@item
8981cac5 1682command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
eae04238
DM
1683
1684@item
1685environment variable @code{GNUTARGET}
1686
1687@item
1688deduced from the input file
1689@end enumerate
1690
8981cac5 1691@subheading @code{objcopy} and @code{strip} Output Target
eae04238
DM
1692
1693Ways to specify:
1694
1695@enumerate
1696@item
8981cac5 1697command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
eae04238
DM
1698
1699@item
8981cac5 1700the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
eae04238
DM
1701
1702@item
1703environment variable @code{GNUTARGET}
1704
1705@item
1706deduced from the input file
1707@end enumerate
1708
8981cac5 1709@subheading @code{nm}, @code{size}, and @code{strings} Target
eae04238
DM
1710
1711Ways to specify:
1712
1713@enumerate
1714@item
8981cac5 1715command line option: @samp{--target}
eae04238
DM
1716
1717@item
1718environment variable @code{GNUTARGET}
1719
1720@item
1721deduced from the input file
1722@end enumerate
1723
8981cac5 1724@subheading Linker Input Target
eae04238
DM
1725
1726Ways to specify:
1727
1728@enumerate
1729@item
8981cac5 1730command line option: @samp{-b} or @samp{--format}
eae04238
DM
1731(@pxref{Options,,Options,ld.info,Using LD})
1732
1733@item
1734script command @code{TARGET}
1735(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
1736
1737@item
1738environment variable @code{GNUTARGET}
1739(@pxref{Environment,,Environment,ld.info,Using LD})
1740
1741@item
1742the default target of the selected linker emulation
1743(@pxref{Linker Emulation Selection})
1744@end enumerate
1745
8981cac5 1746@subheading Linker Output Target
eae04238
DM
1747
1748Ways to specify:
1749
1750@enumerate
1751@item
8981cac5 1752command line option: @samp{-oformat}
eae04238
DM
1753(@pxref{Options,,Options,ld.info,Using LD})
1754
1755@item
1756script command @code{OUTPUT_FORMAT}
1757(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
1758
1759@item
8981cac5 1760the linker input target (see ``Linker Input Target'' above)
eae04238
DM
1761@end enumerate
1762
1763@node Architecture Selection
1764@section Architecture selection
1765
8981cac5
JO
1766An @dfn{architecture} is a type of @sc{cpu} on which an object file is
1767to run. Its name may contain a colon, separating the name of the
1768processor family from the name of the particular @sc{cpu}.
eae04238 1769
8981cac5
JO
1770The command to list valid architecture values is @samp{objdump -i} (the
1771second column contains the relevant information).
eae04238
DM
1772
1773Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
1774
8981cac5 1775@subheading @code{objdump} Architecture
eae04238
DM
1776
1777Ways to specify:
1778
1779@enumerate
1780@item
8981cac5 1781command line option: @samp{-m} or @samp{--architecture}
eae04238
DM
1782
1783@item
1784deduced from the input file
1785@end enumerate
1786
8981cac5 1787@subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
eae04238
DM
1788
1789Ways to specify:
1790
1791@enumerate
1792@item
1793deduced from the input file
1794@end enumerate
1795
8981cac5 1796@subheading Linker Input Architecture
eae04238
DM
1797
1798Ways to specify:
1799
1800@enumerate
1801@item
1802deduced from the input file
1803@end enumerate
1804
8981cac5 1805@subheading Linker Output Architecture
eae04238
DM
1806
1807Ways to specify:
1808
1809@enumerate
1810@item
1811script command @code{OUTPUT_ARCH}
1812(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
1813
1814@item
1815the default architecture from the linker output target
8981cac5 1816(@pxref{Target Selection})
eae04238
DM
1817@end enumerate
1818
1819@node Linker Emulation Selection
1820@section Linker emulation selection
1821
1822A linker @dfn{emulation} is a ``personality'' of the linker, which gives
1823the linker default values for the other aspects of the target system.
1824In particular, it consists of
1825
1826@itemize @bullet
1827@item
8981cac5 1828the linker script
eae04238
DM
1829
1830@item
8981cac5 1831the target
eae04238
DM
1832
1833@item
1834several ``hook'' functions that are run at certain stages of the linking
8981cac5 1835process to do special things that some targets require
eae04238
DM
1836@end itemize
1837
8981cac5 1838The command to list valid linker emulation values is @samp{ld -V}.
eae04238
DM
1839
1840Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
1841
1842Ways to specify:
1843
1844@enumerate
1845@item
8981cac5 1846command line option: @samp{-m}
eae04238
DM
1847(@pxref{Options,,Options,ld.info,Using LD})
1848
1849@item
1850environment variable @code{LDEMULATION}
1851
1852@item
1853compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
1854which comes from @code{EMUL} in @file{config/@var{target}.mt}
1855@end enumerate
1856
1857@node Index
c72af735
RP
1858@unnumbered Index
1859
1860@printindex cp
1861
1862@contents
1863@bye
This page took 0.251163 seconds and 4 git commands to generate.