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