* aoutx.h (NAME(aout,find_nearest_line)): Notice if we find a
[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
f5818d79 16Copyright @copyright{} 1991, 92, 93, 94, 95, 1996 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
f5818d79 44@c Copyright (C) 1991, 92, 93, 94, 95, 1996 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 50@setchapternewpage odd
b94ff924 51@settitle @sc{gnu} Binary Utilities
4928b97b
RP
52@titlepage
53@finalout
b94ff924 54@title The @sc{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
f5818d79 69Copyright @copyright{} 1991, 92, 93, 94, 95, 1996 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
b94ff924 88This brief manual contains preliminary documentation for the @sc{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
b94ff924 151The @sc{gnu} @code{ar} program creates, modifies, and extracts from
c72af735
RP
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
b94ff924 161@sc{gnu} @code{ar} can maintain archives whose members have names of any
c72af735 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
b94ff924 188@sc{gnu} @code{ar} is designed to be compatible with two different
765a273f
RP
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
b94ff924 217@sc{gnu} @code{ar} allows you to mix the operation code @var{p} and modifier
c72af735
RP
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 348@item f
b94ff924 349Truncate names in the archive. @sc{gnu} @code{ar} will normally permit file
52af6a44
ILT
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
b94ff924 364@c what???---doc@@cygnus.com, 25jan91
c72af735
RP
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
b94ff924 419transition to @sc{gnu} @code{ar} for developers who already have scripts
765a273f
RP
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
b94ff924 529tv @var{archive}}). (This single command is a @sc{gnu} @code{ld}
765a273f
RP
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
b94ff924
VM
566The @sc{gnu} linker @code{ld} is now described in a separate manual.
567@xref{Top,, Overview,, Using LD: the @sc{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} ]
dcd6706b 583 [ --defined-only ]
9eb39bca 584 [ --no-demangle ] [ -V | --version ] [ --help ] [ @var{objfile}@dots{} ]
c72af735
RP
585@end smallexample
586
b94ff924 587@sc{gnu} @code{nm} lists the symbols from object files @var{objfile}@dots{}.
6cfbdb50
DM
588If no object files are listed as arguments, @code{nm} assumes
589@file{a.out}.
590
591For each symbol, @code{nm} shows:
592
593@itemize @bullet
594@item
595The symbol value, in the radix selected by options (see below), or
596hexadecimal by default.
597
598@item
599The symbol type. At least the following types are used; others are, as
600well, depending on the object file format. If lowercase, the symbol is
601local; if uppercase, the symbol is global (external).
602
603@c Some more detail on exactly what these symbol types are used for
604@c would be nice.
605@table @code
606@item A
85d4b870
ILT
607The symbol's value is absolute, and will not be changed by further
608linking.
6cfbdb50
DM
609
610@item B
85d4b870 611The symbol is in the uninitialized data section (known as BSS).
6cfbdb50
DM
612
613@item C
85d4b870
ILT
614The symbol is common. Common symbols are uninitialized data. When
615linking, multiple common symbols may appear with the same name. If the
616symbol is defined anywhere, the common symbols are treated as undefined
617references. For more details on common symbols, see the discussion of
618--warn-common in @ref{Options,,Linker options,ld.info,The GNU linker}.
6cfbdb50
DM
619
620@item D
85d4b870
ILT
621The symbol is in the initialized data section.
622
623@item G
392e2505 624The symbol is in an initialized data section for small objects. Some
85d4b870
ILT
625object file formats permit more efficient access to small data objects,
626such as a global int variable as opposed to a large global array.
6cfbdb50
DM
627
628@item I
85d4b870
ILT
629The symbol is an indirect reference to another symbol. This is a GNU
630extension to the a.out object file format which is rarely used.
631
632@item N
633The symbol is a debugging symbol.
634
635@item R
636The symbol is in a read only data section.
637
638@item S
392e2505 639The symbol is in an uninitialized data section for small objects.
6cfbdb50
DM
640
641@item T
85d4b870 642The symbol is in the text (code) section.
6cfbdb50
DM
643
644@item U
85d4b870
ILT
645The symbol is undefined.
646
647@item W
648The symbol is weak. When a weak defined symbol is linked with a normal
649defined symbol, the normal defined symbol is used with no error. When a
650weak undefined symbol is linked and the symbol is not defined, the value
651of the weak symbol becomes zero with no error.
652
653@item -
654The symbol is a stabs symbol in an a.out object file. In this case, the
655next values printed are the stabs other field, the stabs desc field, and
656the stab type. Stabs symbols are used to hold debugging information;
657for more information, see @ref{Top,Stabs,Stabs Overview,stabs.info, The
658``stabs'' debug format}.
659
660@item ?
661The symbol type is unknown, or object file format specific.
6cfbdb50
DM
662@end table
663
664@item
665The symbol name.
666@end itemize
c72af735
RP
667
668The long and short forms of options, shown here as alternatives, are
669equivalent.
670
671@table @code
6cfbdb50
DM
672@item -A
673@itemx -o
674@itemx --print-file-name
675@cindex input file name
676@cindex file name
677@cindex source file name
678Precede each symbol by the name of the input file (or archive element)
679in which it was found, rather than identifying the input file once only,
680before all of its symbols.
c72af735
RP
681
682@item -a
918c2f61 683@itemx --debug-syms
c72af735 684@cindex debugging symbols
6cfbdb50
DM
685Display all symbols, even debugger-only symbols; normally these are not
686listed.
687
68dd5295
DM
688@item -B
689@cindex @code{nm} format
690@cindex @code{nm} compatibility
d6a4c375
DM
691The same as @samp{--format=bsd} (for compatibility with the MIPS @code{nm}).
692
693@item -C
694@itemx --demangle
695@cindex demangling C++ symbols
696Decode (@dfn{demangle}) low-level symbol names into user-level names.
697Besides removing any initial underscore prepended by the system, this
698makes C++ function names readable. @xref{c++filt}, for more information
699on demangling.
68dd5295 700
9eb39bca
ILT
701@item --no-demangle
702Do not demangle low-level symbol names. This is the default.
703
de3b08ac
ILT
704@item -D
705@itemx --dynamic
706@cindex dynamic symbols
707Display the dynamic symbols rather than the normal symbols. This is
708only meaningful for dynamic objects, such as certain types of shared
709libraries.
710
6cfbdb50
DM
711@item -f @var{format}
712@itemx --format=@var{format}
68dd5295
DM
713@cindex @code{nm} format
714@cindex @code{nm} compatibility
6cfbdb50
DM
715Use the output format @var{format}, which can be @code{bsd},
716@code{sysv}, or @code{posix}. The default is @code{bsd}.
b26ac613 717Only the first character of @var{format} is significant; it can be
6cfbdb50 718either upper or lower case.
c72af735
RP
719
720@item -g
918c2f61 721@itemx --extern-only
c72af735
RP
722@cindex external symbols
723Display only external symbols.
724
b26ac613
DM
725@item -n
726@itemx -v
727@itemx --numeric-sort
728Sort symbols numerically by their addresses, rather than alphabetically
729by their names.
730
c72af735 731@item -p
918c2f61 732@itemx --no-sort
c72af735 733@cindex sorting symbols
650a49f0 734Do not bother to sort the symbols in any order; print them in the order
6cfbdb50
DM
735encountered.
736
737@item -P
738@itemx --portability
739Use the POSIX.2 standard output format instead of the default format.
740Equivalent to @samp{-f posix}.
c72af735 741
c72af735 742@item -s
918c2f61 743@itemx --print-armap
c72af735
RP
744@cindex symbol index, listing
745When listing symbols from archive members, include the index: a mapping
ec40bbb8
DM
746(stored in the archive by @code{ar} or @code{ranlib}) of which modules
747contain definitions for which names.
c72af735 748
c72af735 749@item -r
918c2f61 750@itemx --reverse-sort
ec40bbb8 751Reverse the order of the sort (whether numeric or alphabetic); let the
c72af735
RP
752last come first.
753
1896790e
ILT
754@item --size-sort
755Sort symbols by size. The size is computed as the difference between
756the value of the symbol and the value of the symbol with the next higher
757value. The size of the symbol is printed, rather than the value.
758
6cfbdb50
DM
759@item -t @var{radix}
760@itemx --radix=@var{radix}
761Use @var{radix} as the radix for printing the symbol values. It must be
762@samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal.
763
ec40bbb8 764@item --target=@var{bfdname}
c72af735
RP
765@cindex object code format
766Specify an object code format other than your system's default format.
eae04238 767@xref{Target Selection}, for more information.
c72af735
RP
768
769@item -u
918c2f61 770@itemx --undefined-only
c72af735
RP
771@cindex external symbols
772@cindex undefined symbols
773Display only undefined symbols (those external to each object file).
774
dcd6706b
JL
775@item --defined-only
776@cindex external symbols
777@cindex undefined symbols
778Display only defined symbols for each object file.
779
6cfbdb50
DM
780@item -V
781@itemx --version
b26ac613
DM
782Show the version number of @code{nm} and exit.
783
784@item --help
785Show a summary of the options to @code{nm} and exit.
c72af735
RP
786@end table
787
eae04238 788@node objcopy
eed5eeab
DM
789@chapter objcopy
790
791@smallexample
eae04238
DM
792objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
793 [ -I @var{bfdname} | --input-target=@var{bfdname} ]
794 [ -O @var{bfdname} | --output-target=@var{bfdname} ]
eed5eeab 795 [ -S | --strip-all ] [ -g | --strip-debug ]
dff604a7 796 [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
29c0d15c 797 [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
eed5eeab 798 [ -x | --discard-all ] [ -X | --discard-locals ]
f7b839f7
DM
799 [ -b @var{byte} | --byte=@var{byte} ]
800 [ -i @var{interleave} | --interleave=@var{interleave} ]
0aca460e 801 [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
f5818d79 802 [ --debugging ]
33e0a06d
ILT
803 [ --gap-fill=@var{val} ] [ --pad-to=@var{address} ]
804 [ --set-start=@var{val} ] [ --adjust-start=@var{incr} ]
805 [ --adjust-vma=@var{incr} ]
6c7ed084
ILT
806 [ --adjust-section-vma=@var{section}@{=,+,-@}@var{val} ]
807 [ --adjust-warnings ] [ --no-adjust-warnings ]
5ab41086 808 [ --set-section-flags=@var{section}=@var{flags} ]
d0130cc8 809 [ --add-section=@var{sectionname}=@var{filename} ]
5da470b2 810 [ --remove-leading-char ]
f7b839f7 811 [ -v | --verbose ] [ -V | --version ] [ --help ]
eed5eeab
DM
812 @var{infile} [@var{outfile}]
813@end smallexample
814
8981cac5
JO
815The @sc{gnu} @code{objcopy} utility copies the contents of an object
816file to another. @code{objcopy} uses the @sc{gnu} @sc{bfd} Library to
817read and write the object files. It can write the destination object
818file in a format different from that of the source object file. The
819exact behavior of @code{objcopy} is controlled by command-line options.
eed5eeab
DM
820
821@code{objcopy} creates temporary files to do its translations and
8981cac5
JO
822deletes them afterward. @code{objcopy} uses @sc{bfd} to do all its
823translation work; it has access to all the formats described in @sc{bfd}
824and thus is able to recognize most formats without being told
825explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
eed5eeab 826
67f67ed9
ILT
827@code{objcopy} can be used to generate S-records by using an output
828target of @samp{srec} (e.g., use @samp{-O srec}).
829
830@code{objcopy} can be used to generate a raw binary file by using an
831output target of @samp{binary} (e.g., use @samp{-O binary}). When
832@code{objcopy} generates a raw binary file, it will essentially produce
833a memory dump of the contents of the input object file. All symbols and
a6afc090
ILT
834relocation information will be discarded. The memory dump will start at
835the virtual address of the lowest section copied into the output file.
67f67ed9
ILT
836
837When generating an S-record or a raw binary file, it may be helpful to
838use @samp{-S} to remove sections containing debugging information. In
839some cases @samp{-R} will be useful to remove sections which contain
840information which is not needed by the binary file.
841
eed5eeab
DM
842@table @code
843@item @var{infile}
844@itemx @var{outfile}
8981cac5 845The source and output files, respectively.
eed5eeab
DM
846If you do not specify @var{outfile}, @code{objcopy} creates a
847temporary file and destructively renames the result with
8981cac5 848the name of @var{infile}.
eed5eeab 849
eae04238
DM
850@item -I @var{bfdname}
851@itemx --input-target=@var{bfdname}
852Consider the source file's object format to be @var{bfdname}, rather than
853attempting to deduce it. @xref{Target Selection}, for more information.
eed5eeab 854
eae04238
DM
855@item -O @var{bfdname}
856@itemx --output-target=@var{bfdname}
857Write the output file using the object format @var{bfdname}.
858@xref{Target Selection}, for more information.
eed5eeab 859
eae04238
DM
860@item -F @var{bfdname}
861@itemx --target=@var{bfdname}
862Use @var{bfdname} as the object format for both the input and the output
863file; i.e., simply transfer data from source to destination with no
864translation. @xref{Target Selection}, for more information.
eed5eeab 865
0aca460e
ILT
866@item -R @var{sectionname}
867@itemx --remove-section=@var{sectionname}
868Remove any section named @var{sectionname} from the output file. This
869option may be given more than once. Note that using this option
870inappropriately may make the output file unusable.
871
eed5eeab
DM
872@item -S
873@itemx --strip-all
874Do not copy relocation and symbol information from the source file.
875
876@item -g
877@itemx --strip-debug
878Do not copy debugging symbols from the source file.
879
9135e5f8
ILT
880@item --strip-unneeded
881Strip all symbols that are not needed for relocation processing.
882
dff604a7
ILT
883@item -K @var{symbolname}
884@itemx --keep-symbol=@var{symbolname}
885Copy only symbol @var{symbolname} from the source file. This option may
886be given more than once.
887
29c0d15c
ILT
888@item -N @var{symbolname}
889@itemx --strip-symbol=@var{symbolname}
dff604a7
ILT
890Do not copy symbol @var{symbolname} from the source file. This option
891may be given more than once, and may be combined with strip options
892other than @code{-K}.
29c0d15c 893
eed5eeab
DM
894@item -x
895@itemx --discard-all
896Do not copy non-global symbols from the source file.
897@c FIXME any reason to prefer "non-global" to "local" here?
898
899@item -X
900@itemx --discard-locals
901Do not copy compiler-generated local symbols.
902(These usually start with @samp{L} or @samp{.}.)
903
db2e6adb
DM
904@item -b @var{byte}
905@itemx --byte=@var{byte}
906Keep only every @var{byte}th byte of the input file (header data is not
f7b839f7
DM
907affected). @var{byte} can be in the range from 0 to @var{interleave}-1,
908where @var{interleave} is given by the @samp{-i} or @samp{--interleave}
909option, or the default of 4. This option is useful for creating files
8981cac5 910to program @sc{rom}. It is typically used with an @code{srec} output
f7b839f7
DM
911target.
912
913@item -i @var{interleave}
914@itemx --interleave=@var{interleave}
8981cac5
JO
915Only copy one out of every @var{interleave} bytes. Select which byte to
916copy with the @var{-b} or @samp{--byte} option. The default is 4.
917@code{objcopy} ignores this option if you do not specify either @samp{-b} or
918@samp{--byte}.
db2e6adb 919
f5818d79
ILT
920@item --debugging
921Convert debugging information, if possible. This is not the default
922because only certain debugging formats are supported, and the
923conversion process can be time consuming.
924
596d99ba
ILT
925@item --gap-fill @var{val}
926Fill gaps between sections with @var{val}. This is done by increasing
927the size of the section with the lower address, and filling in the extra
928space created with @var{val}.
929
33e0a06d
ILT
930@item --pad-to @var{address}
931Pad the output file up to the virtual address @var{address}. This is
932done by increasing the size of the last section. The extra space is
933filled in with the value specified by @samp{--gap-fill} (default zero).
934
6c7ed084
ILT
935@item --set-start @var{val}
936Set the address of the new file to @var{val}. Not all object file
a6afc090 937formats support setting the start address.
6c7ed084
ILT
938
939@item --adjust-start @var{incr}
940Adjust the start address by adding @var{incr}. Not all object file
941formats support setting the start address.
942
943@item --adjust-vma @var{incr}
944Adjust the address of all sections, as well as the start address, by
945adding @var{incr}. Some object file formats do not permit section
946addresses to be changed arbitrarily. Note that this does not relocate
947the sections; if the program expects sections to be loaded at a certain
948address, and this option is used to change the sections such that they
949are loaded at a different address, the program may fail.
950
951@item --adjust-section-vma @var{section}@{=,+,-@}@var{val}
952Set or adjust the address of the named @var{section}. If @samp{=} is
953used, the section address is set to @var{val}. Otherwise, @var{val} is
954added to or subtracted from the section address. See the comments under
955@samp{--adjust-vma}, above. If @var{section} does not exist in the
956input file, a warning will be issued, unless @samp{--no-adjust-warnings}
957is used.
958
959@item --adjust-warnings
960If @samp{--adjust-section-vma} is used, and the named section does not
961exist, issue a warning. This is the default.
962
963@item --no-adjust-warnings
964Do not issue a warning if @samp{--adjust-section-vma} is used, even if
965the named section does not exist.
966
5ab41086
ILT
967@item --set-section-flags @var{section}=@var{flags}
968Set the flags for the named section. The @var{flags} argument is a
969comma separated string of flag names. The recognized names are
970@samp{alloc}, @samp{load}, @samp{readonly}, @samp{code}, @samp{data},
971and @samp{rom}. Not all flags are meaningful for all object file
972formats.
973
d0130cc8
ILT
974@item --add-section @var{sectionname}=@var{filename}
975Add a new section named @var{sectionname} while copying the file. The
976contents of the new section are taken from the file @var{filename}. The
977size of the section will be the size of the file. This option only
978works on file formats which can support sections with arbitrary names.
979
5da470b2
ILT
980@item --remove-leading-char
981If the first character of a global symbol is a special symbol leading
982character used by the object file format, remove the character. The
983most common symbol leading character is underscore. This option will
984remove a leading underscore from all global symbols. This can be useful
985if you want to link together objects of different file formats with
986different conventions for symbol names.
987
eed5eeab
DM
988@item -V
989@itemx --version
990Show the version number of @code{objcopy}.
991
992@item -v
993@itemx --verbose
994Verbose output: list all object files modified. In the case of
995archives, @samp{objcopy -V} lists all members of the archive.
996
997@item --help
998Show a summary of the options to @code{objcopy}.
999@end table
1000
eae04238 1001@node objdump
c72af735
RP
1002@chapter objdump
1003
1004@cindex object file information
1005@kindex objdump
1006
1007@smallexample
10f2a7f6 1008objdump [ -a | --archive-headers ]
e1c14599 1009 [ -b @var{bfdname} | --target=@var{bfdname} ] [ --debugging ]
d5464baa
ILT
1010 [ -d | --disassemble ] [ -D | --disassemble-all ]
1011 [ -f | --file-headers ]
eae04238 1012 [ -h | --section-headers | --headers ] [ -i | --info ]
10f2a7f6 1013 [ -j @var{section} | --section=@var{section} ]
a8e27cc6 1014 [ -l | --line-numbers ] [ -S | --source ]
7e5e9619
JO
1015 [ -m @var{machine} | --architecture=@var{machine} ]
1016 [ -r | --reloc ] [ -R | --dynamic-reloc ]
1017 [ -s | --full-contents ] [ --stabs ]
de3b08ac 1018 [ -t | --syms ] [ -T | --dynamic-syms ] [ -x | --all-headers ]
aa21a2a9 1019 [ -w | --wide ] [ --start-address=@var{address} ]
458bbd1f
DE
1020 [ --stop-address=@var{address} ] [ --show-raw-insn ]
1021 [ --version ] [ --help ]
aa21a2a9 1022 @var{objfile}@dots{}
c72af735
RP
1023@end smallexample
1024
1025@code{objdump} displays information about one or more object files.
1026The options control what particular information to display. This
1027information is mostly useful to programmers who are working on the
1028compilation tools, as opposed to programmers who just want their
1029program to compile and work.
1030
b26ac613
DM
1031@var{objfile}@dots{} are the object files to be examined. When you
1032specify archives, @code{objdump} shows information on each of the member
1033object files.
1034
c72af735 1035The long and short forms of options, shown here as alternatives, are
ed78872a 1036equivalent. At least one option besides @samp{-l} must be given.
c72af735
RP
1037
1038@table @code
c72af735 1039@item -a
eae04238 1040@itemx --archive-header
c72af735 1041@cindex archive headers
ec40bbb8 1042If any of the @var{objfile} files are archives, display the archive
c72af735
RP
1043header information (in a format similar to @samp{ls -l}). Besides the
1044information you could list with @samp{ar tv}, @samp{objdump -a} shows
1045the object file format of each archive member.
1046
c72af735 1047@item -b @var{bfdname}
eae04238 1048@itemx --target=@var{bfdname}
c72af735 1049@cindex object code format
ec40bbb8
DM
1050Specify that the object-code format for the object files is
1051@var{bfdname}. This option may not be necessary; @var{objdump} can
1052automatically recognize many formats.
1053
1054For example,
c72af735
RP
1055@example
1056objdump -b oasys -m vax -h fu.o
1057@end example
1058@noindent
ec40bbb8
DM
1059displays summary information from the section headers (@samp{-h}) of
1060@file{fu.o}, which is explicitly identified (@samp{-m}) as a VAX object
c72af735
RP
1061file in the format produced by Oasys compilers. You can list the
1062formats available with the @samp{-i} option.
eae04238 1063@xref{Target Selection}, for more information.
c72af735 1064
e1c14599
ILT
1065@item --debugging
1066Display debugging information. This attempts to parse debugging
1067information stored in the file and print it out using a C like syntax.
1068Only certain types of debugging information have been implemented.
1069
c72af735 1070@item -d
eae04238 1071@itemx --disassemble
c72af735
RP
1072@cindex disassembling object code
1073@cindex machine instructions
d5464baa
ILT
1074Display the assembler mnemonics for the machine instructions from
1075@var{objfile}. This option only disassembles those sections which are
1076expected to contain instructions.
1077
1078@item -D
1079@itemx --disassemble-all
1080Like @samp{-d}, but disassemble the contents of all sections, not just
1081those expected to contain instructions.
c72af735
RP
1082
1083@item -f
eae04238 1084@itemx --file-header
c72af735 1085@cindex object file header
eae04238 1086Display summary information from the overall header of
ec40bbb8 1087each of the @var{objfile} files.
c72af735
RP
1088
1089@item -h
eae04238 1090@itemx --section-header
c5f0c938 1091@itemx --header
c72af735 1092@cindex section headers
eae04238 1093Display summary information from the section headers of the
c72af735
RP
1094object file.
1095
db2e6adb
DM
1096File segments may be relocated to nonstandard addresses, for example by
1097using the @samp{-Ttext}, @samp{-Tdata}, or @samp{-Tbss} options to
1098@code{ld}. However, some object file formats, such as a.out, do not
1099store the starting address of the file segments. In those situations,
1100although @code{ld} relocates the sections correctly, using @samp{objdump
1101-h} to list the file section headers cannot show the correct addresses.
1102Instead, it shows the usual addresses, which are implicit for the
1103target.
1104
b26ac613
DM
1105@item --help
1106Print a summary of the options to @code{objdump} and exit.
1107
c72af735 1108@item -i
eae04238 1109@itemx --info
c72af735
RP
1110@cindex architectures available
1111@cindex object formats available
1112Display a list showing all architectures and object formats available
ec40bbb8 1113for specification with @samp{-b} or @samp{-m}.
c72af735 1114
c72af735 1115@item -j @var{name}
eae04238 1116@itemx --section=@var{name}
c72af735 1117@cindex section information
ec40bbb8 1118Display information only for section @var{name}.
c72af735 1119
c72af735 1120@item -l
eae04238 1121@itemx --line-numbers
c72af735 1122@cindex source filenames for object files
11548211
ILT
1123Label the display (using debugging information) with the filename and
1124source line numbers corresponding to the object code or relocs shown.
1125Only useful with @samp{-d}, @samp{-D}, or @samp{-r}.
c72af735 1126
c72af735 1127@item -m @var{machine}
eae04238 1128@itemx --architecture=@var{machine}
c72af735 1129@cindex architecture
ec40bbb8 1130Specify that the object files @var{objfile} are for architecture
c72af735
RP
1131@var{machine}. You can list available architectures using the @samp{-i}
1132option.
1133
1134@item -r
c5f0c938 1135@itemx --reloc
c72af735 1136@cindex relocation entries, in object file
d5464baa
ILT
1137Print the relocation entries of the file. If used with @samp{-d} or
1138@samp{-D}, the relocations are printed interspersed with the
1139disassembly.
c72af735 1140
de3b08ac
ILT
1141@item -R
1142@itemx --dynamic-reloc
1143@cindex dynamic relocation entries, in object file
1144Print the dynamic relocation entries of the file. This is only
1145meaningful for dynamic objects, such as certain types of shared
1146libraries.
1147
c72af735 1148@item -s
eae04238 1149@itemx --full-contents
c72af735
RP
1150@cindex sections, full contents
1151@cindex object file sections
1152Display the full contents of any sections requested.
1153
a8e27cc6
ILT
1154@item -S
1155@itemx --source
1156@cindex source disassembly
1157@cindex disassembly, with source
1158Display source code intermixed with disassembly, if possible. Implies
1159@samp{-d}.
1160
458bbd1f
DE
1161@item --show-raw-insn
1162When disassembling instructions, print the instruction in hex as well as
1163in symbolic form. Not all targets handle this correctly yet.
1164
c5f0c938
JG
1165@item --stabs
1166@cindex stab
1167@cindex .stab
1168@cindex debug symbols
1169@cindex ELF object file format
c3c93fda
JG
1170Display the full contents of any sections requested. Display the
1171contents of the .stab and .stab.index and .stab.excl sections from an
1172ELF file. This is only useful on systems (such as Solaris 2.0) in which
1173@code{.stab} debugging symbol-table entries are carried in an ELF
1174section. In most other file formats, debugging symbol-table entries are
c5f0c938 1175interleaved with linkage symbols, and are visible in the @samp{--syms}
85d4b870
ILT
1176output. For more information on stabs symbols, see @ref{Top,Stabs,Stabs
1177Overview,stabs.info, The ``stabs'' debug format}.
c5f0c938 1178
aa21a2a9
ILT
1179@item --start-address=@var{address}
1180@cindex start-address
1181Start displaying data at the specified address. This affects the output
1182of the @code{-d}, @code{-r} and @code{-s} options.
1183
1184@item --stop-address=@var{address}
1185@cindex stop-address
1186Stop displaying data at the specified address. This affects the output
1187of the @code{-d}, @code{-r} and @code{-s} options.
1188
c72af735 1189@item -t
c5f0c938 1190@itemx --syms
c72af735 1191@cindex symbol table entries, printing
eae04238 1192Print the symbol table entries of the file.
c72af735
RP
1193This is similar to the information provided by the @samp{nm} program.
1194
de3b08ac
ILT
1195@item -T
1196@itemx --dynamic-syms
1197@cindex dynamic symbol table entries, printing
1198Print the dynamic symbol table entries of the file. This is only
1199meaningful for dynamic objects, such as certain types of shared
1200libraries. This is similar to the information provided by the @samp{nm}
1201program when given the @samp{-D} (@samp{--dynamic}) option.
1202
b26ac613
DM
1203@item --version
1204Print the version number of @code{objdump} and exit.
1205
c72af735 1206@item -x
eae04238 1207@itemx --all-header
c72af735
RP
1208@cindex all header information, object file
1209@cindex header information, all
1210Display all available header information, including the symbol table and
1211relocation entries. Using @samp{-x} is equivalent to specifying all of
1212@samp{-a -f -h -r -t}.
4b6d0f78
MM
1213
1214@item -w
1215@item --wide
1216@cindex wide output, printing
1217Format some lines for output devices that have more than 80 columns.
c72af735
RP
1218@end table
1219
eae04238 1220@node ranlib
c72af735
RP
1221@chapter ranlib
1222
1223@kindex ranlib
1224@cindex archive contents
1225@cindex symbol index
1226
1227@smallexample
4d9b5d5a 1228ranlib [-vV] @var{archive}
c72af735
RP
1229@end smallexample
1230
ec40bbb8 1231@code{ranlib} generates an index to the contents of an archive and
c72af735
RP
1232stores it in the archive. The index lists each symbol defined by a
1233member of an archive that is a relocatable object file.
1234
918c2f61 1235You may use @samp{nm -s} or @samp{nm --print-armap} to list this index.
c72af735 1236
ec40bbb8 1237An archive with such an index speeds up linking to the library and
c72af735
RP
1238allows routines in the library to call each other without regard to
1239their placement in the archive.
1240
b94ff924 1241The @sc{gnu} @code{ranlib} program is another form of @sc{gnu} @code{ar}; running
c72af735
RP
1242@code{ranlib} is completely equivalent to executing @samp{ar -s}.
1243@xref{ar}.
1244
4d9b5d5a
DM
1245@table @code
1246@item -v
1247@itemx -V
1248Show the version number of @code{ranlib}.
c3f471a4 1249@end table
4d9b5d5a 1250
eae04238 1251@node size
c72af735
RP
1252@chapter size
1253
1254@kindex size
1255@cindex section sizes
1256
1257@smallexample
4d9b5d5a
DM
1258size [ -A | -B | --format=@var{compatibility} ]
1259 [ --help ] [ -d | -o | -x | --radix=@var{number} ]
1260 [ --target=@var{bfdname} ] [ -V | --version ]
1261 @var{objfile}@dots{}
c72af735
RP
1262@end smallexample
1263
b94ff924 1264The @sc{gnu} @code{size} utility lists the section sizes---and the total
ec40bbb8
DM
1265size---for each of the object or archive files @var{objfile} in its
1266argument list. By default, one line of output is generated for each
1267object file or each module in an archive.
c72af735 1268
b26ac613
DM
1269@var{objfile}@dots{} are the object files to be examined.
1270
c72af735 1271The command line options have the following meanings:
c72af735 1272
b26ac613 1273@table @code
c72af735
RP
1274@item -A
1275@itemx -B
ec40bbb8 1276@itemx --format=@var{compatibility}
68dd5295 1277@cindex @code{size} display format
b94ff924 1278Using one of these options, you can choose whether the output from @sc{gnu}
c72af735 1279@code{size} resembles output from System V @code{size} (using @samp{-A},
ec40bbb8
DM
1280or @samp{--format=sysv}), or Berkeley @code{size} (using @samp{-B}, or
1281@samp{--format=berkeley}). The default is the one-line format similar to
c72af735 1282Berkeley's.
918c2f61
PB
1283@c Bonus for doc-source readers: you can also say --format=strange (or
1284@c anything else that starts with 's') for sysv, and --format=boring (or
c72af735
RP
1285@c anything else that starts with 'b') for Berkeley.
1286
1287Here is an example of the Berkeley (default) format of output from
1288@code{size}:
1289@smallexample
eae04238 1290size --format=Berkeley ranlib size
c72af735
RP
1291text data bss dec hex filename
1292294880 81920 11592 388392 5ed28 ranlib
1293294880 81920 11888 388688 5ee50 size
1294@end smallexample
1295
1296@noindent
1297This is the same data, but displayed closer to System V conventions:
1298
1299@smallexample
eae04238 1300size --format=SysV ranlib size
c72af735
RP
1301ranlib :
1302section size addr
1303.text 294880 8192
1304.data 81920 303104
1305.bss 11592 385024
1306Total 388392
1307
1308
1309size :
1310section size addr
1311.text 294880 8192
1312.data 81920 303104
1313.bss 11888 385024
1314Total 388688
1315@end smallexample
1316
918c2f61 1317@item --help
c72af735
RP
1318Show a summary of acceptable arguments and options.
1319
1320@item -d
1321@itemx -o
1322@itemx -x
ec40bbb8 1323@itemx --radix=@var{number}
68dd5295 1324@cindex @code{size} number format
c72af735
RP
1325@cindex radix for section sizes
1326Using one of these options, you can control whether the size of each
ec40bbb8
DM
1327section is given in decimal (@samp{-d}, or @samp{--radix=10}); octal
1328(@samp{-o}, or @samp{--radix=8}); or hexadecimal (@samp{-x}, or
1329@samp{--radix=16}). In @samp{--radix=@var{number}}, only the three
c72af735
RP
1330values (8, 10, 16) are supported. The total size is always given in two
1331radices; decimal and hexadecimal for @samp{-d} or @samp{-x} output, or
1332octal and hexadecimal if you're using @samp{-o}.
1333
ec40bbb8 1334@item --target=@var{bfdname}
c72af735 1335@cindex object code format
ec40bbb8
DM
1336Specify that the object-code format for @var{objfile} is
1337@var{bfdname}. This option may not be necessary; @code{size} can
eae04238
DM
1338automatically recognize many formats.
1339@xref{Target Selection}, for more information.
c72af735
RP
1340
1341@item -V
918c2f61 1342@itemx --version
4d9b5d5a 1343Display the version number of @code{size}.
c72af735
RP
1344@end table
1345
eae04238 1346@node strings
ba7c8e29
DM
1347@chapter strings
1348@kindex strings
1349@cindex listings strings
1350@cindex printing strings
1351@cindex strings, printing
1352
1353@smallexample
b26ac613 1354strings [-afov] [-@var{min-len}] [-n @var{min-len}] [-t @var{radix}] [-]
650a49f0 1355 [--all] [--print-file-name] [--bytes=@var{min-len}]
eae04238
DM
1356 [--radix=@var{radix}] [--target=@var{bfdname}]
1357 [--help] [--version] @var{file}@dots{}
ba7c8e29
DM
1358@end smallexample
1359
b94ff924 1360For each @var{file} given, @sc{gnu} @code{strings} prints the printable
ba7c8e29 1361character sequences that are at least 4 characters long (or the number
67ace729 1362given with the options below) and are followed by an unprintable
ba7c8e29 1363character. By default, it only prints the strings from the initialized
5f057047
ILT
1364and loaded sections of object files; for other types of files, it prints
1365the strings from the whole file.
ba7c8e29
DM
1366
1367@code{strings} is mainly useful for determining the contents of non-text
1368files.
1369
1370@table @code
1371@item -a
1372@itemx --all
1373@itemx -
5f057047
ILT
1374Do not scan only the initialized and loaded sections of object files;
1375scan the whole files.
ba7c8e29
DM
1376
1377@item -f
1378@itemx --print-file-name
1379Print the name of the file before each string.
1380
b26ac613 1381@item --help
ba7c8e29
DM
1382Print a summary of the program usage on the standard output and exit.
1383
ba7c8e29 1384@itemx -@var{min-len}
b26ac613 1385@item -n @var{min-len}
ba7c8e29
DM
1386@itemx --bytes=@var{min-len}
1387Print sequences of characters that are at least @var{min-len} characters
1388long, instead of the default 4.
1389
1390@item -o
b26ac613
DM
1391Like @samp{-t o}. Some other versions of @code{strings} have @samp{-o}
1392act like @samp{-t d} instead. Since we can not be compatible with both
1393ways, we simply chose one.
ba7c8e29
DM
1394
1395@item -t @var{radix}
1396@itemx --radix=@var{radix}
1397Print the offset within the file before each string. The single
1398character argument specifies the radix of the offset---@samp{o} for
1399octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
1400
eae04238
DM
1401@item --target=@var{bfdname}
1402@cindex object code format
1403Specify an object code format other than your system's default format.
1404@xref{Target Selection}, for more information.
1405
ba7c8e29
DM
1406@item -v
1407@itemx --version
1408Print the program version number on the standard output and exit.
1409@end table
1410
eae04238 1411@node strip
c72af735
RP
1412@chapter strip
1413
1414@kindex strip
1415@cindex removing symbols
1416@cindex discarding symbols
1815e42c 1417@cindex symbols, discarding
c72af735
RP
1418
1419@smallexample
eae04238
DM
1420strip [ -F @var{bfdname} | --target=@var{bfdname} | --target=@var{bfdname} ]
1421 [ -I @var{bfdname} | --input-target=@var{bfdname} ]
1422 [ -O @var{bfdname} | --output-target=@var{bfdname} ]
b703c078 1423 [ -s | --strip-all ] [ -S | -g | --strip-debug ]
dff604a7 1424 [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
29c0d15c 1425 [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
b703c078 1426 [ -x | --discard-all ] [ -X | --discard-locals ]
0aca460e 1427 [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
b26ac613 1428 [ -v | --verbose ] [ -V | --version ] [ --help ]
b703c078 1429 @var{objfile}@dots{}
c72af735
RP
1430@end smallexample
1431
b94ff924 1432@sc{gnu} @code{strip} discards all symbols from object files
ec40bbb8 1433@var{objfile}. The list of object files may include archives.
b26ac613 1434At least one object file must be given.
c72af735 1435
ec40bbb8 1436@code{strip} modifies the files named in its argument,
c72af735 1437rather than writing modified copies under different names.
c72af735 1438
c72af735 1439@table @code
eae04238
DM
1440@item -F @var{bfdname}
1441@itemx --target=@var{bfdname}
b26ac613 1442Treat the original @var{objfile} as a file with the object
eae04238
DM
1443code format @var{bfdname}, and rewrite it in the same format.
1444@xref{Target Selection}, for more information.
b26ac613
DM
1445
1446@item --help
1447Show a summary of the options to @code{strip} and exit.
1448
eae04238
DM
1449@item -I @var{bfdname}
1450@itemx --input-target=@var{bfdname}
ec40bbb8 1451Treat the original @var{objfile} as a file with the object
eae04238
DM
1452code format @var{bfdname}.
1453@xref{Target Selection}, for more information.
918c2f61 1454
eae04238
DM
1455@item -O @var{bfdname}
1456@itemx --output-target=@var{bfdname}
1457Replace @var{objfile} with a file in the output format @var{bfdname}.
1458@xref{Target Selection}, for more information.
918c2f61 1459
0aca460e
ILT
1460@item -R @var{sectionname}
1461@itemx --remove-section=@var{sectionname}
1462Remove any section named @var{sectionname} from the output file. This
1463option may be given more than once. Note that using this option
1464inappropriately may make the output file unusable.
1465
b703c078
DM
1466@item -s
1467@itemx --strip-all
1468Remove all symbols.
1469
918c2f61
PB
1470@item -g
1471@itemx -S
1472@itemx --strip-debug
1473Remove debugging symbols only.
1474
9135e5f8
ILT
1475@item --strip-unneeded
1476Remove all symbols that are not needed for relocation processing.
1477
dff604a7
ILT
1478@item -K @var{symbolname}
1479@itemx --keep-symbol=@var{symbolname}
1480Keep only symbol @var{symbolname} from the source file. This option may
1481be given more than once.
1482
29c0d15c
ILT
1483@item -N @var{symbolname}
1484@itemx --strip-symbol=@var{symbolname}
dff604a7
ILT
1485Remove symbol @var{symbolname} from the source file. This option may be
1486given more than once, and may be combined with strip options other than
1487@code{-K}.
29c0d15c 1488
918c2f61
PB
1489@item -x
1490@itemx --discard-all
1491Remove non-global symbols.
1492
1493@item -X
1494@itemx --discard-locals
1495Remove compiler-generated local symbols.
ec40bbb8 1496(These usually start with @samp{L} or @samp{.}.)
918c2f61
PB
1497
1498@item -V
1499@itemx --version
ec40bbb8 1500Show the version number for @code{strip}.
918c2f61 1501
1815e42c 1502@item -v
918c2f61
PB
1503@itemx --verbose
1504Verbose output: list all object files modified. In the case of
1269d441 1505archives, @samp{strip -v} lists all members of the archive.
c72af735
RP
1506@end table
1507
eae04238 1508@node c++filt
b6216af2
PB
1509@chapter c++filt
1510
1511@kindex c++filt
1512@cindex demangling C++ symbols
1513
b26ac613
DM
1514@smallexample
1515c++filt [ -_ | --strip-underscores ]
6f88f031 1516 [ -n | --no-strip-underscores ]
b26ac613 1517 [ -s @var{format} | --format=@var{format} ]
d6a4c375 1518 [ --help ] [ --version ] [ @var{symbol}@dots{} ]
b26ac613
DM
1519@end smallexample
1520
6c69b6bd
JO
1521The C++ language provides function overloading, which means that you can
1522write many functions with the same name (providing each takes parameters
1523of different types). All C++ function names are encoded into a
b26ac613 1524low-level assembly label (this process is known as
6c69b6bd
JO
1525@dfn{mangling}). The @code{c++filt} program does the inverse mapping: it
1526decodes (@dfn{demangles}) low-level names into user-level names so that
1527the linker can keep these overloaded functions from clashing.
1528
1529Every alphanumeric word (consisting of letters, digits, underscores,
1530dollars, or periods) seen in the input is a potential label. If the
1531label decodes into a C++ name, the C++ name replaces the low-level
1532name in the output.
b6216af2 1533
d6a4c375 1534You can use @code{c++filt} to decipher individual symbols:
6c69b6bd
JO
1535
1536@example
1537c++filt @var{symbol}
1538@end example
1539
d6a4c375
DM
1540If no @var{symbol} arguments are given, @code{c++filt} reads symbol
1541names from the standard input and writes the demangled names to the
1542standard output. All results are printed on the standard output.
b6216af2 1543
b26ac613
DM
1544@table @code
1545@item -_
94e9ad77 1546@itemx --strip-underscores
b26ac613
DM
1547On some systems, both the C and C++ compilers put an underscore in front
1548of every name. For example, the C name @code{foo} gets the low-level
6f88f031
ILT
1549name @code{_foo}. This option removes the initial underscore. Whether
1550@code{c++filt} removes the underscore by default is target dependent.
1551
1552@item -n
1553@itemx --no-strip-underscores
1554Do not remove the initial underscore.
b26ac613
DM
1555
1556@item -s @var{format}
1557@itemx --format=@var{format}
b94ff924 1558@sc{gnu} @code{nm} can decode three different methods of mangling, used by
b26ac613
DM
1559different C++ compilers. The argument to this option selects which
1560method it uses:
1561
1562@table @code
1563@item gnu
b94ff924 1564the one used by the @sc{gnu} compiler (the default method)
b26ac613
DM
1565@item lucid
1566the one used by the Lucid compiler
1567@item arm
1568the one specified by the C++ Annotated Reference Manual
1569@end table
1570
1571@item --help
1572Print a summary of the options to @code{c++filt} and exit.
1573
1574@item --version
1575Print the version number of @code{c++filt} and exit.
1576@end table
b6216af2 1577
5eac46ae
JO
1578@quotation
1579@emph{Warning:} @code{c++filt} is a new utility, and the details of its
1580user interface are subject to change in future releases. In particular,
1581a command-line option may be required in the the future to decode a name
1582passed as an argument on the command line; in other words,
1583
1584@example
b26ac613 1585c++filt @var{symbol}
5eac46ae
JO
1586@end example
1587
1588@noindent
1589may in a future release become
1590
1591@example
b26ac613 1592c++filt @var{option} @var{symbol}
5eac46ae
JO
1593@end example
1594@end quotation
1595
eae04238 1596@node nlmconv
94e9ad77
JO
1597@chapter nlmconv
1598
1599@code{nlmconv} converts a relocatable object file into a NetWare
8981cac5
JO
1600Loadable Module.
1601
1602@ignore
1603@code{nlmconv} currently works with @samp{i386} object
4961ce5b
JO
1604files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
1605object files in @sc{elf}, or @code{a.out} format@footnote{
1606@code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
1607format in the Binary File Descriptor library. It has only been tested
1608with the above formats.}.
8981cac5 1609@end ignore
4961ce5b
JO
1610
1611@quotation
1612@emph{Warning:} @code{nlmconv} is not always built as part of the binary
1613utilities, since it is only useful for NLM targets.
1614@end quotation
94e9ad77
JO
1615
1616@smallexample
eae04238
DM
1617nlmconv [ -I @var{bfdname} | --input-target=@var{bfdname} ]
1618 [ -O @var{bfdname} | --output-target=@var{bfdname} ]
94e9ad77 1619 [ -T @var{headerfile} | --header-file=@var{headerfile} ]
20465f8b 1620 [ -d | --debug] [ -l @var{linker} | --linker=@var{linker} ]
94e9ad77
JO
1621 [ -h | --help ] [ -V | --version ]
1622 @var{infile} @var{outfile}
1623@end smallexample
1624
1625@code{nlmconv} converts the relocatable @samp{i386} object file
1626@var{infile} into the NetWare Loadable Module @var{outfile}, optionally
1627reading @var{headerfile} for NLM header information. For instructions
5b0ba16d
JO
1628on writing the NLM command file language used in header files, see the
1629@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
1630Development and Tools Overview}, which is part of the NLM Software
1631Developer's Kit (``NLM SDK''), available from Novell, Inc.
1632@code{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
eae04238 1633@var{infile}; see @ref{BFD,,BFD,ld.info,Using LD}, for
5b0ba16d 1634more information.
94e9ad77 1635
20465f8b
JO
1636@code{nlmconv} can perform a link step. In other words, you can list
1637more than one object file for input if you list them in the definitions
1638file (rather than simply specifying one input file on the command line).
1639In this case, @code{nlmconv} calls the linker for you.
1640
94e9ad77 1641@table @code
eae04238
DM
1642@item -I @var{bfdname}
1643@itemx --input-target=@var{bfdname}
94e9ad77 1644Object format of the input file. @code{nlmconv} can usually determine
eae04238
DM
1645the format of a given file (so no default is necessary).
1646@xref{Target Selection}, for more information.
94e9ad77 1647
eae04238
DM
1648@item -O @var{bfdname}
1649@itemx --output-target=@var{bfdname}
94e9ad77
JO
1650Object format of the output file. @code{nlmconv} infers the output
1651format based on the input format, e.g. for a @samp{i386} input file the
eae04238
DM
1652output format is @samp{nlm32-i386}.
1653@xref{Target Selection}, for more information.
94e9ad77
JO
1654
1655@item -T @var{headerfile}
1656@itemx --header-file=@var{headerfile}
1657Reads @var{headerfile} for NLM header information. For instructions on
5b0ba16d
JO
1658writing the NLM command file language used in header files, see@ see the
1659@samp{linkers} section, of the @cite{NLM Development and Tools
1660Overview}, which is part of the NLM Software Developer's Kit, available
1661from Novell, Inc.
94e9ad77 1662
20465f8b
JO
1663@item -d
1664@itemx --debug
1665Displays (on standard error) the linker command line used by @code{nlmconv}.
1666
1667@item -l @var{linker}
1668@itemx --linker=@var{linker}
1669Use @var{linker} for any linking. @var{linker} can be an abosolute or a
1670relative pathname.
1671
94e9ad77
JO
1672@item -h
1673@itemx --help
1674Prints a usage summary.
1675
1676@item -V
1677@itemx --version
1678Prints the version number for @code{nlmconv}.
1679@end table
1680
eae04238
DM
1681@node Selecting The Target System
1682@chapter Selecting the target system
1683
8981cac5
JO
1684You can specify three aspects of the target system to the @sc{gnu}
1685binary file utilities, each in several ways:
eae04238
DM
1686
1687@itemize @bullet
1688@item
8981cac5 1689the target
eae04238
DM
1690
1691@item
8981cac5 1692the architecture
eae04238
DM
1693
1694@item
8981cac5 1695the linker emulation (which applies to the linker only)
eae04238
DM
1696@end itemize
1697
1698In the following summaries, the lists of ways to specify values are in
8981cac5
JO
1699order of decreasing precedence. The ways listed first override those
1700listed later.
eae04238 1701
8981cac5
JO
1702The commands to list valid values only list the values for which the
1703programs you are running were configured. If they were configured with
8490169d 1704@samp{--enable-targets=all}, the commands list most of the available
eae04238 1705values, but a few are left out; not all targets can be configured in at
8981cac5
JO
1706once because some of them can only be configured @dfn{native} (on hosts
1707with the same type as the target system).
eae04238
DM
1708
1709@menu
1710* Target Selection::
1711* Architecture Selection::
1712* Linker Emulation Selection::
1713@end menu
1714
1715@node Target Selection
8981cac5 1716@section Target Selection
eae04238
DM
1717
1718A @dfn{target} is an object file format. A given target may be
1719supported for multiple architectures (@pxref{Architecture Selection}).
8981cac5
JO
1720A target selection may also have variations for different operating
1721systems or architectures.
eae04238 1722
8981cac5
JO
1723The command to list valid target values is @samp{objdump -i}
1724(the first column of output contains the relevant information).
eae04238 1725
10f2a7f6
JO
1726Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
1727@samp{a.out-sunos-big}.
eae04238 1728
8981cac5 1729@subheading @code{objdump} Target
eae04238
DM
1730
1731Ways to specify:
1732
1733@enumerate
1734@item
8981cac5 1735command line option: @samp{-b} or @samp{--target}
eae04238
DM
1736
1737@item
1738environment variable @code{GNUTARGET}
1739
1740@item
1741deduced from the input file
1742@end enumerate
1743
8981cac5 1744@subheading @code{objcopy} and @code{strip} Input Target
eae04238
DM
1745
1746Ways to specify:
1747
1748@enumerate
1749@item
8981cac5 1750command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
eae04238
DM
1751
1752@item
1753environment variable @code{GNUTARGET}
1754
1755@item
1756deduced from the input file
1757@end enumerate
1758
8981cac5 1759@subheading @code{objcopy} and @code{strip} Output Target
eae04238
DM
1760
1761Ways to specify:
1762
1763@enumerate
1764@item
8981cac5 1765command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
eae04238
DM
1766
1767@item
8981cac5 1768the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
eae04238
DM
1769
1770@item
1771environment variable @code{GNUTARGET}
1772
1773@item
1774deduced from the input file
1775@end enumerate
1776
8981cac5 1777@subheading @code{nm}, @code{size}, and @code{strings} Target
eae04238
DM
1778
1779Ways to specify:
1780
1781@enumerate
1782@item
8981cac5 1783command line option: @samp{--target}
eae04238
DM
1784
1785@item
1786environment variable @code{GNUTARGET}
1787
1788@item
1789deduced from the input file
1790@end enumerate
1791
8981cac5 1792@subheading Linker Input Target
eae04238
DM
1793
1794Ways to specify:
1795
1796@enumerate
1797@item
8981cac5 1798command line option: @samp{-b} or @samp{--format}
eae04238
DM
1799(@pxref{Options,,Options,ld.info,Using LD})
1800
1801@item
1802script command @code{TARGET}
1803(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
1804
1805@item
1806environment variable @code{GNUTARGET}
1807(@pxref{Environment,,Environment,ld.info,Using LD})
1808
1809@item
1810the default target of the selected linker emulation
1811(@pxref{Linker Emulation Selection})
1812@end enumerate
1813
8981cac5 1814@subheading Linker Output Target
eae04238
DM
1815
1816Ways to specify:
1817
1818@enumerate
1819@item
8981cac5 1820command line option: @samp{-oformat}
eae04238
DM
1821(@pxref{Options,,Options,ld.info,Using LD})
1822
1823@item
1824script command @code{OUTPUT_FORMAT}
1825(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
1826
1827@item
8981cac5 1828the linker input target (see ``Linker Input Target'' above)
eae04238
DM
1829@end enumerate
1830
1831@node Architecture Selection
1832@section Architecture selection
1833
8981cac5
JO
1834An @dfn{architecture} is a type of @sc{cpu} on which an object file is
1835to run. Its name may contain a colon, separating the name of the
1836processor family from the name of the particular @sc{cpu}.
eae04238 1837
8981cac5
JO
1838The command to list valid architecture values is @samp{objdump -i} (the
1839second column contains the relevant information).
eae04238
DM
1840
1841Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
1842
8981cac5 1843@subheading @code{objdump} Architecture
eae04238
DM
1844
1845Ways to specify:
1846
1847@enumerate
1848@item
8981cac5 1849command line option: @samp{-m} or @samp{--architecture}
eae04238
DM
1850
1851@item
1852deduced from the input file
1853@end enumerate
1854
8981cac5 1855@subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
eae04238
DM
1856
1857Ways to specify:
1858
1859@enumerate
1860@item
1861deduced from the input file
1862@end enumerate
1863
8981cac5 1864@subheading Linker Input Architecture
eae04238
DM
1865
1866Ways to specify:
1867
1868@enumerate
1869@item
1870deduced from the input file
1871@end enumerate
1872
8981cac5 1873@subheading Linker Output Architecture
eae04238
DM
1874
1875Ways to specify:
1876
1877@enumerate
1878@item
1879script command @code{OUTPUT_ARCH}
1880(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
1881
1882@item
1883the default architecture from the linker output target
8981cac5 1884(@pxref{Target Selection})
eae04238
DM
1885@end enumerate
1886
1887@node Linker Emulation Selection
1888@section Linker emulation selection
1889
1890A linker @dfn{emulation} is a ``personality'' of the linker, which gives
1891the linker default values for the other aspects of the target system.
1892In particular, it consists of
1893
1894@itemize @bullet
1895@item
8981cac5 1896the linker script
eae04238
DM
1897
1898@item
8981cac5 1899the target
eae04238
DM
1900
1901@item
1902several ``hook'' functions that are run at certain stages of the linking
8981cac5 1903process to do special things that some targets require
eae04238
DM
1904@end itemize
1905
8981cac5 1906The command to list valid linker emulation values is @samp{ld -V}.
eae04238
DM
1907
1908Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
1909
1910Ways to specify:
1911
1912@enumerate
1913@item
8981cac5 1914command line option: @samp{-m}
eae04238
DM
1915(@pxref{Options,,Options,ld.info,Using LD})
1916
1917@item
1918environment variable @code{LDEMULATION}
1919
1920@item
1921compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
1922which comes from @code{EMUL} in @file{config/@var{target}.mt}
1923@end enumerate
1924
1925@node Index
c72af735
RP
1926@unnumbered Index
1927
1928@printindex cp
1929
1930@contents
1931@bye
This page took 0.25249 seconds and 4 git commands to generate.