| \input texinfo @c -*- Texinfo -*- | |
| @setfilename binutils.info | |
| @c Copyright 2001, 2002 Free Software Foundation, Inc. | |
| @include config.texi | |
| @ifinfo | |
| @format | |
| START-INFO-DIR-ENTRY | |
| * Binutils: (binutils). The GNU binary utilities. | |
| * ar: (binutils)ar. Create, modify, and extract from archives | |
| * nm: (binutils)nm. List symbols from object files | |
| * objcopy: (binutils)objcopy. Copy and translate object files | |
| * objdump: (binutils)objdump. Display information from object files | |
| * ranlib: (binutils)ranlib. Generate index to archive contents | |
| * readelf: (binutils)readelf. Display the contents of ELF format files. | |
| * size: (binutils)size. List section sizes and total size | |
| * strings: (binutils)strings. List printable strings from files | |
| * strip: (binutils)strip. Discard symbols | |
| * c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols | |
| * cxxfilt: (binutils)c++filt. MS-DOS name for c++filt | |
| * addr2line: (binutils)addr2line. Convert addresses to file and line | |
| * nlmconv: (binutils)nlmconv. Converts object code into an NLM | |
| * windres: (binutils)windres. Manipulate Windows resources | |
| * dlltool: (binutils)dlltool. Create files needed to build and use DLLs | |
| END-INFO-DIR-ENTRY | |
| @end format | |
| @end ifinfo | |
| @ifinfo | |
| @c man begin COPYRIGHT | |
| Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc. | |
| Permission is granted to copy, distribute and/or modify this document | |
| under the terms of the GNU Free Documentation License, Version 1.1 | |
| or any later version published by the Free Software Foundation; | |
| with no Invariant Sections, with no Front-Cover Texts, and with no | |
| Back-Cover Texts. A copy of the license is included in the | |
| section entitled "GNU Free Documentation License". | |
| @c man end | |
| @ignore | |
| Permission is granted to process this file through TeX and print the | |
| results, provided the printed document carries a copying permission | |
| notice identical to this one except for the removal of this paragraph | |
| (this paragraph not being relevant to the printed manual). | |
| @end ignore | |
| @end ifinfo | |
| @synindex ky cp | |
| @c | |
| @c This file documents the GNU binary utilities "ar", "ld", "objcopy", | |
| @c "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib". | |
| @c | |
| @c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc. | |
| @c | |
| @c This text may be freely distributed under the terms of the GNU | |
| @c Free Documentation License. | |
| @c | |
| @setchapternewpage odd | |
| @settitle @sc{gnu} Binary Utilities | |
| @titlepage | |
| @finalout | |
| @title The @sc{gnu} Binary Utilities | |
| @subtitle Version @value{VERSION} | |
| @sp 1 | |
| @subtitle May 1993 | |
| @author Roland H. Pesch | |
| @author Jeffrey M. Osier | |
| @author Cygnus Support | |
| @page | |
| @tex | |
| {\parskip=0pt \hfill Cygnus Support\par \hfill | |
| \TeX{}info \texinfoversion\par } | |
| @end tex | |
| @vskip 0pt plus 1filll | |
| Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. | |
| Permission is granted to copy, distribute and/or modify this document | |
| under the terms of the GNU Free Documentation License, Version 1.1 | |
| or any later version published by the Free Software Foundation; | |
| with no Invariant Sections, with no Front-Cover Texts, and with no | |
| Back-Cover Texts. A copy of the license is included in the | |
| section entitled "GNU Free Documentation License". | |
| @end titlepage | |
| @node Top | |
| @top Introduction | |
| @cindex version | |
| This brief manual contains preliminary documentation for the @sc{gnu} binary | |
| utilities (collectively version @value{VERSION}): | |
| @iftex | |
| @table @code | |
| @item ar | |
| Create, modify, and extract from archives | |
| @item nm | |
| List symbols from object files | |
| @item objcopy | |
| Copy and translate object files | |
| @item objdump | |
| Display information from object files | |
| @item ranlib | |
| Generate index to archive contents | |
| @item readelf | |
| Display the contents of ELF format files. | |
| @item size | |
| List file section sizes and total size | |
| @item strings | |
| List printable strings from files | |
| @item strip | |
| Discard symbols | |
| @item c++filt | |
| Demangle encoded C++ symbols (on MS-DOS, this program is named | |
| @code{cxxfilt}) | |
| @item addr2line | |
| Convert addresses into file names and line numbers | |
| @item nlmconv | |
| Convert object code into a Netware Loadable Module | |
| @item windres | |
| Manipulate Windows resources | |
| @item dlltool | |
| Create the files needed to build and use Dynamic Link Libraries | |
| @end table | |
| @end iftex | |
| This document is distributed under the terms of the GNU Free | |
| Documentation License. A copy of the license is included in the | |
| section entitled "GNU Free Documentation License". | |
| @menu | |
| * ar:: Create, modify, and extract from archives | |
| * nm:: List symbols from object files | |
| * objcopy:: Copy and translate object files | |
| * objdump:: Display information from object files | |
| * ranlib:: Generate index to archive contents | |
| * readelf:: Display the contents of ELF format files. | |
| * size:: List section sizes and total size | |
| * strings:: List printable strings from files | |
| * strip:: Discard symbols | |
| * c++filt:: Filter to demangle encoded C++ symbols | |
| * cxxfilt: c++filt. MS-DOS name for c++filt | |
| * addr2line:: Convert addresses to file and line | |
| * nlmconv:: Converts object code into an NLM | |
| * windres:: Manipulate Windows resources | |
| * dlltool:: Create files needed to build and use DLLs | |
| * Selecting The Target System:: How these utilities determine the target. | |
| * Reporting Bugs:: Reporting Bugs | |
| * GNU Free Documentation License:: GNU Free Documentation License | |
| * Index:: Index | |
| @end menu | |
| @node ar | |
| @chapter ar | |
| @kindex ar | |
| @cindex archives | |
| @cindex collections of files | |
| @c man title ar create, modify, and extract from archives | |
| @smallexample | |
| ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}] | |
| ar -M [ <mri-script ] | |
| @end smallexample | |
| @c man begin DESCRIPTION ar | |
| The @sc{gnu} @command{ar} program creates, modifies, and extracts from | |
| archives. An @dfn{archive} is a single file holding a collection of | |
| other files in a structure that makes it possible to retrieve | |
| the original individual files (called @dfn{members} of the archive). | |
| The original files' contents, mode (permissions), timestamp, owner, and | |
| group are preserved in the archive, and can be restored on | |
| extraction. | |
| @cindex name length | |
| @sc{gnu} @command{ar} can maintain archives whose members have names of any | |
| length; however, depending on how @command{ar} is configured on your | |
| system, a limit on member-name length may be imposed for compatibility | |
| with archive formats maintained with other tools. If it exists, the | |
| limit is often 15 characters (typical of formats related to a.out) or 16 | |
| characters (typical of formats related to coff). | |
| @cindex libraries | |
| @command{ar} is considered a binary utility because archives of this sort | |
| are most often used as @dfn{libraries} holding commonly needed | |
| subroutines. | |
| @cindex symbol index | |
| @command{ar} creates an index to the symbols defined in relocatable | |
| object modules in the archive when you specify the modifier @samp{s}. | |
| Once created, this index is updated in the archive whenever @command{ar} | |
| makes a change to its contents (save for the @samp{q} update operation). | |
| An archive with such an index speeds up linking to the library, and | |
| allows routines in the library to call each other without regard to | |
| their placement in the archive. | |
| You may use @samp{nm -s} or @samp{nm --print-armap} to list this index | |
| table. If an archive lacks the table, another form of @command{ar} called | |
| @command{ranlib} can be used to add just the table. | |
| @cindex compatibility, @command{ar} | |
| @cindex @command{ar} compatibility | |
| @sc{gnu} @command{ar} is designed to be compatible with two different | |
| facilities. You can control its activity using command-line options, | |
| like the different varieties of @command{ar} on Unix systems; or, if you | |
| specify the single command-line option @option{-M}, you can control it | |
| with a script supplied via standard input, like the MRI ``librarian'' | |
| program. | |
| @c man end | |
| @menu | |
| * ar cmdline:: Controlling @command{ar} on the command line | |
| * ar scripts:: Controlling @command{ar} with a script | |
| @end menu | |
| @page | |
| @node ar cmdline | |
| @section Controlling @command{ar} on the command line | |
| @smallexample | |
| @c man begin SYNOPSIS ar | |
| ar [@option{-X32_64}] [@option{-}]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}] | |
| @c man end | |
| @end smallexample | |
| @cindex Unix compatibility, @command{ar} | |
| When you use @command{ar} in the Unix style, @command{ar} insists on at least two | |
| arguments to execute: one keyletter specifying the @emph{operation} | |
| (optionally accompanied by other keyletters specifying | |
| @emph{modifiers}), and the archive name to act on. | |
| Most operations can also accept further @var{member} arguments, | |
| specifying particular files to operate on. | |
| @c man begin OPTIONS ar | |
| @sc{gnu} @command{ar} allows you to mix the operation code @var{p} and modifier | |
| flags @var{mod} in any order, within the first command-line argument. | |
| If you wish, you may begin the first command-line argument with a | |
| dash. | |
| @cindex operations on archive | |
| The @var{p} keyletter specifies what operation to execute; it may be | |
| any of the following, but you must specify only one of them: | |
| @table @samp | |
| @item d | |
| @cindex deleting from archive | |
| @emph{Delete} modules from the archive. Specify the names of modules to | |
| be deleted as @var{member}@dots{}; the archive is untouched if you | |
| specify no files to delete. | |
| If you specify the @samp{v} modifier, @command{ar} lists each module | |
| as it is deleted. | |
| @item m | |
| @cindex moving in archive | |
| Use this operation to @emph{move} members in an archive. | |
| The ordering of members in an archive can make a difference in how | |
| programs are linked using the library, if a symbol is defined in more | |
| than one member. | |
| If no modifiers are used with @code{m}, any members you name in the | |
| @var{member} arguments are moved to the @emph{end} of the archive; | |
| you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a | |
| specified place instead. | |
| @item p | |
| @cindex printing from archive | |
| @emph{Print} the specified members of the archive, to the standard | |
| output file. If the @samp{v} modifier is specified, show the member | |
| name before copying its contents to standard output. | |
| If you specify no @var{member} arguments, all the files in the archive are | |
| printed. | |
| @item q | |
| @cindex quick append to archive | |
| @emph{Quick append}; Historically, add the files @var{member}@dots{} to the end of | |
| @var{archive}, without checking for replacement. | |
| The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this | |
| operation; new members are always placed at the end of the archive. | |
| The modifier @samp{v} makes @command{ar} list each file as it is appended. | |
| Since the point of this operation is speed, the archive's symbol table | |
| index is not updated, even if it already existed; you can use @samp{ar s} or | |
| @command{ranlib} explicitly to update the symbol table index. | |
| However, too many different systems assume quick append rebuilds the | |
| index, so GNU ar implements @code{q} as a synonym for @code{r}. | |
| @item r | |
| @cindex replacement in archive | |
| Insert the files @var{member}@dots{} into @var{archive} (with | |
| @emph{replacement}). This operation differs from @samp{q} in that any | |
| previously existing members are deleted if their names match those being | |
| added. | |
| If one of the files named in @var{member}@dots{} does not exist, @command{ar} | |
| displays an error message, and leaves undisturbed any existing members | |
| of the archive matching that name. | |
| By default, new members are added at the end of the file; but you may | |
| use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request | |
| placement relative to some existing member. | |
| The modifier @samp{v} used with this operation elicits a line of | |
| output for each file inserted, along with one of the letters @samp{a} or | |
| @samp{r} to indicate whether the file was appended (no old member | |
| deleted) or replaced. | |
| @item t | |
| @cindex contents of archive | |
| Display a @emph{table} listing the contents of @var{archive}, or those | |
| of the files listed in @var{member}@dots{} that are present in the | |
| archive. Normally only the member name is shown; if you also want to | |
| see the modes (permissions), timestamp, owner, group, and size, you can | |
| request that by also specifying the @samp{v} modifier. | |
| If you do not specify a @var{member}, all files in the archive | |
| are listed. | |
| @cindex repeated names in archive | |
| @cindex name duplication in archive | |
| If there is more than one file with the same name (say, @samp{fie}) in | |
| an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the | |
| first instance; to see them all, you must ask for a complete | |
| listing---in our example, @samp{ar t b.a}. | |
| @c WRS only; per Gumby, this is implementation-dependent, and in a more | |
| @c recent case in fact works the other way. | |
| @item x | |
| @cindex extract from archive | |
| @emph{Extract} members (named @var{member}) from the archive. You can | |
| use the @samp{v} modifier with this operation, to request that | |
| @command{ar} list each name as it extracts it. | |
| If you do not specify a @var{member}, all files in the archive | |
| are extracted. | |
| @end table | |
| A number of modifiers (@var{mod}) may immediately follow the @var{p} | |
| keyletter, to specify variations on an operation's behavior: | |
| @table @samp | |
| @item a | |
| @cindex relative placement in archive | |
| Add new files @emph{after} an existing member of the | |
| archive. If you use the modifier @samp{a}, the name of an existing archive | |
| member must be present as the @var{relpos} argument, before the | |
| @var{archive} specification. | |
| @item b | |
| Add new files @emph{before} an existing member of the | |
| archive. If you use the modifier @samp{b}, the name of an existing archive | |
| member must be present as the @var{relpos} argument, before the | |
| @var{archive} specification. (same as @samp{i}). | |
| @item c | |
| @cindex creating archives | |
| @emph{Create} the archive. The specified @var{archive} is always | |
| created if it did not exist, when you request an update. But a warning is | |
| issued unless you specify in advance that you expect to create it, by | |
| using this modifier. | |
| @item f | |
| Truncate names in the archive. @sc{gnu} @command{ar} will normally permit file | |
| names of any length. This will cause it to create archives which are | |
| not compatible with the native @command{ar} program on some systems. If | |
| this is a concern, the @samp{f} modifier may be used to truncate file | |
| names when putting them in the archive. | |
| @item i | |
| Insert new files @emph{before} an existing member of the | |
| archive. If you use the modifier @samp{i}, the name of an existing archive | |
| member must be present as the @var{relpos} argument, before the | |
| @var{archive} specification. (same as @samp{b}). | |
| @item l | |
| This modifier is accepted but not used. | |
| @c whaffor ar l modifier??? presumably compat; with | |
| @c what???---doc@@cygnus.com, 25jan91 | |
| @item N | |
| Uses the @var{count} parameter. This is used if there are multiple | |
| entries in the archive with the same name. Extract or delete instance | |
| @var{count} of the given name from the archive. | |
| @item o | |
| @cindex dates in archive | |
| Preserve the @emph{original} dates of members when extracting them. If | |
| you do not specify this modifier, files extracted from the archive | |
| are stamped with the time of extraction. | |
| @item P | |
| Use the full path name when matching names in the archive. @sc{gnu} | |
| @command{ar} can not create an archive with a full path name (such archives | |
| are not POSIX complaint), but other archive creators can. This option | |
| will cause @sc{gnu} @command{ar} to match file names using a complete path | |
| name, which can be convenient when extracting a single file from an | |
| archive created by another tool. | |
| @item s | |
| @cindex writing archive index | |
| Write an object-file index into the archive, or update an existing one, | |
| even if no other change is made to the archive. You may use this modifier | |
| flag either with any operation, or alone. Running @samp{ar s} on an | |
| archive is equivalent to running @samp{ranlib} on it. | |
| @item S | |
| @cindex not writing archive index | |
| Do not generate an archive symbol table. This can speed up building a | |
| large library in several steps. The resulting archive can not be used | |
| with the linker. In order to build a symbol table, you must omit the | |
| @samp{S} modifier on the last execution of @samp{ar}, or you must run | |
| @samp{ranlib} on the archive. | |
| @item u | |
| @cindex updating an archive | |
| Normally, @samp{ar r}@dots{} inserts all files | |
| listed into the archive. If you would like to insert @emph{only} those | |
| of the files you list that are newer than existing members of the same | |
| names, use this modifier. The @samp{u} modifier is allowed only for the | |
| operation @samp{r} (replace). In particular, the combination @samp{qu} is | |
| not allowed, since checking the timestamps would lose any speed | |
| advantage from the operation @samp{q}. | |
| @item v | |
| This modifier requests the @emph{verbose} version of an operation. Many | |
| operations display additional information, such as filenames processed, | |
| when the modifier @samp{v} is appended. | |
| @item V | |
| This modifier shows the version number of @command{ar}. | |
| @end table | |
| @command{ar} ignores an initial option spelt @samp{-X32_64}, for | |
| compatibility with AIX. The behaviour produced by this option is the | |
| default for GNU @command{ar}. @command{ar} does not support any of the other | |
| @samp{-X} options; in particular, it does not support @option{-X32} | |
| which is the default for AIX @command{ar}. | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO ar | |
| nm(1), ranlib(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node ar scripts | |
| @section Controlling @command{ar} with a script | |
| @smallexample | |
| ar -M [ <@var{script} ] | |
| @end smallexample | |
| @cindex MRI compatibility, @command{ar} | |
| @cindex scripts, @command{ar} | |
| If you use the single command-line option @samp{-M} with @command{ar}, you | |
| can control its operation with a rudimentary command language. This | |
| form of @command{ar} operates interactively if standard input is coming | |
| directly from a terminal. During interactive use, @command{ar} prompts for | |
| input (the prompt is @samp{AR >}), and continues executing even after | |
| errors. If you redirect standard input to a script file, no prompts are | |
| issued, and @command{ar} abandons execution (with a nonzero exit code) | |
| on any error. | |
| The @command{ar} command language is @emph{not} designed to be equivalent | |
| to the command-line options; in fact, it provides somewhat less control | |
| over archives. The only purpose of the command language is to ease the | |
| transition to @sc{gnu} @command{ar} for developers who already have scripts | |
| written for the MRI ``librarian'' program. | |
| The syntax for the @command{ar} command language is straightforward: | |
| @itemize @bullet | |
| @item | |
| commands are recognized in upper or lower case; for example, @code{LIST} | |
| is the same as @code{list}. In the following descriptions, commands are | |
| shown in upper case for clarity. | |
| @item | |
| a single command may appear on each line; it is the first word on the | |
| line. | |
| @item | |
| empty lines are allowed, and have no effect. | |
| @item | |
| comments are allowed; text after either of the characters @samp{*} | |
| or @samp{;} is ignored. | |
| @item | |
| Whenever you use a list of names as part of the argument to an @command{ar} | |
| command, you can separate the individual names with either commas or | |
| blanks. Commas are shown in the explanations below, for clarity. | |
| @item | |
| @samp{+} is used as a line continuation character; if @samp{+} appears | |
| at the end of a line, the text on the following line is considered part | |
| of the current command. | |
| @end itemize | |
| Here are the commands you can use in @command{ar} scripts, or when using | |
| @command{ar} interactively. Three of them have special significance: | |
| @code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is | |
| a temporary file required for most of the other commands. | |
| @code{SAVE} commits the changes so far specified by the script. Prior | |
| to @code{SAVE}, commands affect only the temporary copy of the current | |
| archive. | |
| @table @code | |
| @item ADDLIB @var{archive} | |
| @itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module}) | |
| Add all the contents of @var{archive} (or, if specified, each named | |
| @var{module} from @var{archive}) to the current archive. | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @item ADDMOD @var{member}, @var{member}, @dots{} @var{member} | |
| @c FIXME! w/Replacement?? If so, like "ar r @var{archive} @var{names}" | |
| @c else like "ar q..." | |
| Add each named @var{member} as a module in the current archive. | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @item CLEAR | |
| Discard the contents of the current archive, canceling the effect of | |
| any operations since the last @code{SAVE}. May be executed (with no | |
| effect) even if no current archive is specified. | |
| @item CREATE @var{archive} | |
| Creates an archive, and makes it the current archive (required for many | |
| other commands). The new archive is created with a temporary name; it | |
| is not actually saved as @var{archive} until you use @code{SAVE}. | |
| You can overwrite existing archives; similarly, the contents of any | |
| existing file named @var{archive} will not be destroyed until @code{SAVE}. | |
| @item DELETE @var{module}, @var{module}, @dots{} @var{module} | |
| Delete each listed @var{module} from the current archive; equivalent to | |
| @samp{ar -d @var{archive} @var{module} @dots{} @var{module}}. | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) | |
| @itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile} | |
| List each named @var{module} present in @var{archive}. The separate | |
| command @code{VERBOSE} specifies the form of the output: when verbose | |
| output is off, output is like that of @samp{ar -t @var{archive} | |
| @var{module}@dots{}}. When verbose output is on, the listing is like | |
| @samp{ar -tv @var{archive} @var{module}@dots{}}. | |
| Output normally goes to the standard output stream; however, if you | |
| specify @var{outputfile} as a final argument, @command{ar} directs the | |
| output to that file. | |
| @item END | |
| Exit from @command{ar}, with a @code{0} exit code to indicate successful | |
| completion. This command does not save the output file; if you have | |
| changed the current archive since the last @code{SAVE} command, those | |
| changes are lost. | |
| @item EXTRACT @var{module}, @var{module}, @dots{} @var{module} | |
| Extract each named @var{module} from the current archive, writing them | |
| into the current directory as separate files. Equivalent to @samp{ar -x | |
| @var{archive} @var{module}@dots{}}. | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @ignore | |
| @c FIXME Tokens but no commands??? | |
| @item FULLDIR | |
| @item HELP | |
| @end ignore | |
| @item LIST | |
| Display full contents of the current archive, in ``verbose'' style | |
| regardless of the state of @code{VERBOSE}. The effect is like @samp{ar | |
| tv @var{archive}}. (This single command is a @sc{gnu} @command{ar} | |
| enhancement, rather than present for MRI compatibility.) | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @item OPEN @var{archive} | |
| Opens an existing archive for use as the current archive (required for | |
| many other commands). Any changes as the result of subsequent commands | |
| will not actually affect @var{archive} until you next use @code{SAVE}. | |
| @item REPLACE @var{module}, @var{module}, @dots{} @var{module} | |
| In the current archive, replace each existing @var{module} (named in | |
| the @code{REPLACE} arguments) from files in the current working directory. | |
| To execute this command without errors, both the file, and the module in | |
| the current archive, must exist. | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @item VERBOSE | |
| Toggle an internal flag governing the output from @code{DIRECTORY}. | |
| When the flag is on, @code{DIRECTORY} output matches output from | |
| @samp{ar -tv }@dots{}. | |
| @item SAVE | |
| Commit your changes to the current archive, and actually save it as a | |
| file with the name specified in the last @code{CREATE} or @code{OPEN} | |
| command. | |
| Requires prior use of @code{OPEN} or @code{CREATE}. | |
| @end table | |
| @iftex | |
| @node ld | |
| @chapter ld | |
| @cindex linker | |
| @kindex ld | |
| The @sc{gnu} linker @command{ld} is now described in a separate manual. | |
| @xref{Top,, Overview,, Using LD: the @sc{gnu} linker}. | |
| @end iftex | |
| @node nm | |
| @chapter nm | |
| @cindex symbols | |
| @kindex nm | |
| @c man title nm list symbols from object files | |
| @smallexample | |
| @c man begin SYNOPSIS nm | |
| nm [@option{-a}|@option{--debug-syms}] [@option{-g}|@option{--extern-only}] | |
| [@option{-B}] [@option{-C}|@option{--demangle}[=@var{style}]] [@option{-D}|@option{--dynamic}] | |
| [@option{-S}|@option{--print-size}] [@option{-s}|@option{--print-armap}] | |
| [@option{-A}|@option{-o}|@option{--print-file-name}] | |
| [@option{-n}|@option{-v}|@option{--numeric-sort}] [@option{-p}|@option{--no-sort}] | |
| [@option{-r}|@option{--reverse-sort}] [@option{--size-sort}] [@option{-u}|@option{--undefined-only}] | |
| [@option{-t} @var{radix}|@option{--radix=}@var{radix}] [@option{-P}|@option{--portability}] | |
| [@option{--target=}@var{bfdname}] [@option{-f}@var{format}|@option{--format=}@var{format}] | |
| [@option{--defined-only}] [@option{-l}|@option{--line-numbers}] [@option{--no-demangle}] | |
| [@option{-V}|@option{--version}] [@option{-X 32_64}] [@option{--help}] [@var{objfile}@dots{}] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION nm | |
| @sc{gnu} @command{nm} lists the symbols from object files @var{objfile}@dots{}. | |
| If no object files are listed as arguments, @command{nm} assumes the file | |
| @file{a.out}. | |
| For each symbol, @command{nm} shows: | |
| @itemize @bullet | |
| @item | |
| The symbol value, in the radix selected by options (see below), or | |
| hexadecimal by default. | |
| @item | |
| The symbol type. At least the following types are used; others are, as | |
| well, depending on the object file format. If lowercase, the symbol is | |
| local; if uppercase, the symbol is global (external). | |
| @c Some more detail on exactly what these symbol types are used for | |
| @c would be nice. | |
| @table @code | |
| @item A | |
| The symbol's value is absolute, and will not be changed by further | |
| linking. | |
| @item B | |
| The symbol is in the uninitialized data section (known as BSS). | |
| @item C | |
| The symbol is common. Common symbols are uninitialized data. When | |
| linking, multiple common symbols may appear with the same name. If the | |
| symbol is defined anywhere, the common symbols are treated as undefined | |
| references. | |
| @ifclear man | |
| For more details on common symbols, see the discussion of | |
| --warn-common in @ref{Options,,Linker options,ld.info,The GNU linker}. | |
| @end ifclear | |
| @item D | |
| The symbol is in the initialized data section. | |
| @item G | |
| The symbol is in an initialized data section for small objects. Some | |
| object file formats permit more efficient access to small data objects, | |
| such as a global int variable as opposed to a large global array. | |
| @item I | |
| The symbol is an indirect reference to another symbol. This is a GNU | |
| extension to the a.out object file format which is rarely used. | |
| @item N | |
| The symbol is a debugging symbol. | |
| @item R | |
| The symbol is in a read only data section. | |
| @item S | |
| The symbol is in an uninitialized data section for small objects. | |
| @item T | |
| The symbol is in the text (code) section. | |
| @item U | |
| The symbol is undefined. | |
| @item V | |
| The symbol is a weak object. When a weak defined symbol is linked with | |
| a normal defined symbol, the normal defined symbol is used with no error. | |
| When a weak undefined symbol is linked and the symbol is not defined, | |
| the value of the weak symbol becomes zero with no error. | |
| @item W | |
| The symbol is a weak symbol that has not been specifically tagged as a | |
| weak object symbol. When a weak defined symbol is linked with a normal | |
| defined symbol, the normal defined symbol is used with no error. | |
| When a weak undefined symbol is linked and the symbol is not defined, | |
| the value of the weak symbol becomes zero with no error. | |
| @item - | |
| The symbol is a stabs symbol in an a.out object file. In this case, the | |
| next values printed are the stabs other field, the stabs desc field, and | |
| the stab type. Stabs symbols are used to hold debugging information. | |
| @ifclear man | |
| For more information, see @ref{Top,Stabs,Stabs Overview,stabs.info, The | |
| ``stabs'' debug format}. | |
| @end ifclear | |
| @item ? | |
| The symbol type is unknown, or object file format specific. | |
| @end table | |
| @item | |
| The symbol name. | |
| @end itemize | |
| @c man end | |
| @c man begin OPTIONS nm | |
| The long and short forms of options, shown here as alternatives, are | |
| equivalent. | |
| @table @env | |
| @item -A | |
| @itemx -o | |
| @itemx --print-file-name | |
| @cindex input file name | |
| @cindex file name | |
| @cindex source file name | |
| Precede each symbol by the name of the input file (or archive member) | |
| in which it was found, rather than identifying the input file once only, | |
| before all of its symbols. | |
| @item -a | |
| @itemx --debug-syms | |
| @cindex debugging symbols | |
| Display all symbols, even debugger-only symbols; normally these are not | |
| listed. | |
| @item -B | |
| @cindex @command{nm} format | |
| @cindex @command{nm} compatibility | |
| The same as @option{--format=bsd} (for compatibility with the MIPS @command{nm}). | |
| @item -C | |
| @itemx --demangle[=@var{style}] | |
| @cindex demangling in nm | |
| Decode (@dfn{demangle}) low-level symbol names into user-level names. | |
| Besides removing any initial underscore prepended by the system, this | |
| makes C++ function names readable. Different compilers have different | |
| mangling styles. The optional demangling style argument can be used to | |
| choose an appropriate demangling style for your compiler. @xref{c++filt}, | |
| for more information on demangling. | |
| @item --no-demangle | |
| Do not demangle low-level symbol names. This is the default. | |
| @item -D | |
| @itemx --dynamic | |
| @cindex dynamic symbols | |
| Display the dynamic symbols rather than the normal symbols. This is | |
| only meaningful for dynamic objects, such as certain types of shared | |
| libraries. | |
| @item -f @var{format} | |
| @itemx --format=@var{format} | |
| @cindex @command{nm} format | |
| @cindex @command{nm} compatibility | |
| Use the output format @var{format}, which can be @code{bsd}, | |
| @code{sysv}, or @code{posix}. The default is @code{bsd}. | |
| Only the first character of @var{format} is significant; it can be | |
| either upper or lower case. | |
| @item -g | |
| @itemx --extern-only | |
| @cindex external symbols | |
| Display only external symbols. | |
| @item -l | |
| @itemx --line-numbers | |
| @cindex symbol line numbers | |
| For each symbol, use debugging information to try to find a filename and | |
| line number. For a defined symbol, look for the line number of the | |
| address of the symbol. For an undefined symbol, look for the line | |
| number of a relocation entry which refers to the symbol. If line number | |
| information can be found, print it after the other symbol information. | |
| @item -n | |
| @itemx -v | |
| @itemx --numeric-sort | |
| Sort symbols numerically by their addresses, rather than alphabetically | |
| by their names. | |
| @item -p | |
| @itemx --no-sort | |
| @cindex sorting symbols | |
| Do not bother to sort the symbols in any order; print them in the order | |
| encountered. | |
| @item -P | |
| @itemx --portability | |
| Use the POSIX.2 standard output format instead of the default format. | |
| Equivalent to @samp{-f posix}. | |
| @item -S | |
| @itemx --print-size | |
| Print size of defined symbols for the @code{bsd} output format. | |
| @item -s | |
| @itemx --print-armap | |
| @cindex symbol index, listing | |
| When listing symbols from archive members, include the index: a mapping | |
| (stored in the archive by @command{ar} or @command{ranlib}) of which modules | |
| contain definitions for which names. | |
| @item -r | |
| @itemx --reverse-sort | |
| Reverse the order of the sort (whether numeric or alphabetic); let the | |
| last come first. | |
| @item --size-sort | |
| Sort symbols by size. The size is computed as the difference between | |
| the value of the symbol and the value of the symbol with the next higher | |
| value. The size of the symbol is printed, rather than the value. | |
| @item -t @var{radix} | |
| @itemx --radix=@var{radix} | |
| Use @var{radix} as the radix for printing the symbol values. It must be | |
| @samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal. | |
| @item --target=@var{bfdname} | |
| @cindex object code format | |
| Specify an object code format other than your system's default format. | |
| @xref{Target Selection}, for more information. | |
| @item -u | |
| @itemx --undefined-only | |
| @cindex external symbols | |
| @cindex undefined symbols | |
| Display only undefined symbols (those external to each object file). | |
| @item --defined-only | |
| @cindex external symbols | |
| @cindex undefined symbols | |
| Display only defined symbols for each object file. | |
| @item -V | |
| @itemx --version | |
| Show the version number of @command{nm} and exit. | |
| @item -X | |
| This option is ignored for compatibility with the AIX version of | |
| @command{nm}. It takes one parameter which must be the string | |
| @option{32_64}. The default mode of AIX @command{nm} corresponds | |
| to @option{-X 32}, which is not supported by @sc{gnu} @command{nm}. | |
| @item --help | |
| Show a summary of the options to @command{nm} and exit. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO nm | |
| ar(1), objdump(1), ranlib(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node objcopy | |
| @chapter objcopy | |
| @c man title objcopy copy and translate object files | |
| @smallexample | |
| @c man begin SYNOPSIS objcopy | |
| objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] | |
| [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}] | |
| [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}] | |
| [@option{-B} @var{bfdarch}|@option{--binary-architecture=}@var{bfdarch}] | |
| [@option{-S}|@option{--strip-all}] [@option{-g}|@option{--strip-debug}] | |
| [@option{-K} @var{symbolname}|@option{--keep-symbol=}@var{symbolname}] | |
| [@option{-N} @var{symbolname}|@option{--strip-symbol=}@var{symbolname}] | |
| [@option{-G} @var{symbolname}|@option{--keep-global-symbol=}@var{symbolname}] | |
| [@option{-L} @var{symbolname}|@option{--localize-symbol=}@var{symbolname}] | |
| [@option{-W} @var{symbolname}|@option{--weaken-symbol=}@var{symbolname}] | |
| [@option{-x}|@option{--discard-all}] [@option{-X}|@option{--discard-locals}] | |
| [@option{-b} @var{byte}|@option{--byte=}@var{byte}] | |
| [@option{-i} @var{interleave}|@option{--interleave=}@var{interleave}] | |
| [@option{-j} @var{sectionname}|@option{--only-section=}@var{sectionname}] | |
| [@option{-R} @var{sectionname}|@option{--remove-section=}@var{sectionname}] | |
| [@option{-p}|@option{--preserve-dates}] | |
| [@option{--debugging}] | |
| [@option{--gap-fill=}@var{val}] [@option{--pad-to=}@var{address}] | |
| [@option{--set-start=}@var{val}] [@option{--adjust-start=}@var{incr}] | |
| [@option{--change-addresses=}@var{incr}] | |
| [@option{--change-section-address} @var{section}@{=,+,-@}@var{val}] | |
| [@option{--change-section-lma} @var{section}@{=,+,-@}@var{val}] | |
| [@option{--change-section-vma} @var{section}@{=,+,-@}@var{val}] | |
| [@option{--change-warnings}] [@option{--no-change-warnings}] | |
| [@option{--set-section-flags} @var{section}=@var{flags}] | |
| [@option{--add-section} @var{sectionname}=@var{filename}] | |
| [@option{--rename-section} @var{oldname}=@var{newname}[,@var{flags}]] | |
| [@option{--change-leading-char} ] [@option{--remove-leading-char}] | |
| [@option{--srec-len=}@var{ival} ] [@option{--srec-forceS3}] | |
| [@option{--redefine-sym} @var{old}=@var{new} ] | |
| [@option{--weaken}] | |
| [@option{--keep-symbols=}@var{filename}] | |
| [@option{--strip-symbols=}@var{filename}] | |
| [@option{--keep-global-symbols=}@var{filename}] | |
| [@option{--localize-symbols=}@var{filename}] | |
| [@option{--weaken-symbols=}@var{filename}] | |
| [@option{--alt-machine-code=@var{index}}] | |
| [@option{-v}|@option{--verbose}] | |
| [@option{-V}|@option{--version}] | |
| [@option{--help}] | |
| @var{infile} [@var{outfile}] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION objcopy | |
| The @sc{gnu} @command{objcopy} utility copies the contents of an object | |
| file to another. @command{objcopy} uses the @sc{gnu} @sc{bfd} Library to | |
| read and write the object files. It can write the destination object | |
| file in a format different from that of the source object file. The | |
| exact behavior of @command{objcopy} is controlled by command-line options. | |
| Note that @command{objcopy} should be able to copy a fully linked file | |
| between any two formats. However, copying a relocatable object file | |
| between any two formats may not work as expected. | |
| @command{objcopy} creates temporary files to do its translations and | |
| deletes them afterward. @command{objcopy} uses @sc{bfd} to do all its | |
| translation work; it has access to all the formats described in @sc{bfd} | |
| and thus is able to recognize most formats without being told | |
| explicitly. @xref{BFD,,BFD,ld.info,Using LD}. | |
| @command{objcopy} can be used to generate S-records by using an output | |
| target of @samp{srec} (e.g., use @samp{-O srec}). | |
| @command{objcopy} can be used to generate a raw binary file by using an | |
| output target of @samp{binary} (e.g., use @option{-O binary}). When | |
| @command{objcopy} generates a raw binary file, it will essentially produce | |
| a memory dump of the contents of the input object file. All symbols and | |
| relocation information will be discarded. The memory dump will start at | |
| the load address of the lowest section copied into the output file. | |
| When generating an S-record or a raw binary file, it may be helpful to | |
| use @option{-S} to remove sections containing debugging information. In | |
| some cases @option{-R} will be useful to remove sections which contain | |
| information that is not needed by the binary file. | |
| Note - @command{objcopy} is not able to change the endianness of its input | |
| files. If the input format has an endianness, (some formats do not), | |
| @command{objcopy} can only copy the inputs into file formats that have the | |
| same endianness or which have no endianness (eg @samp{srec}). | |
| @c man end | |
| @c man begin OPTIONS objcopy | |
| @table @env | |
| @item @var{infile} | |
| @itemx @var{outfile} | |
| The input and output files, respectively. | |
| If you do not specify @var{outfile}, @command{objcopy} creates a | |
| temporary file and destructively renames the result with | |
| the name of @var{infile}. | |
| @item -I @var{bfdname} | |
| @itemx --input-target=@var{bfdname} | |
| Consider the source file's object format to be @var{bfdname}, rather than | |
| attempting to deduce it. @xref{Target Selection}, for more information. | |
| @item -O @var{bfdname} | |
| @itemx --output-target=@var{bfdname} | |
| Write the output file using the object format @var{bfdname}. | |
| @xref{Target Selection}, for more information. | |
| @item -F @var{bfdname} | |
| @itemx --target=@var{bfdname} | |
| Use @var{bfdname} as the object format for both the input and the output | |
| file; i.e., simply transfer data from source to destination with no | |
| translation. @xref{Target Selection}, for more information. | |
| @item -B @var{bfdarch} | |
| @itemx --binary-architecture=@var{bfdarch} | |
| Useful when transforming a raw binary input file into an object file. | |
| In this case the output architecture can be set to @var{bfdarch}. This | |
| option will be ignored if the input file has a known @var{bfdarch}. You | |
| can access this binary data inside a program by referencing the special | |
| symbols that are created by the conversion process. These symbols are | |
| called _binary_@var{objfile}_start, _binary_@var{objfile}_end and | |
| _binary_@var{objfile}_size. e.g. you can transform a picture file into | |
| an object file and then access it in your code using these symbols. | |
| @item -j @var{sectionname} | |
| @itemx --only-section=@var{sectionname} | |
| Copy only the named section from the input file to the output file. | |
| This option may be given more than once. Note that using this option | |
| inappropriately may make the output file unusable. | |
| @item -R @var{sectionname} | |
| @itemx --remove-section=@var{sectionname} | |
| Remove any section named @var{sectionname} from the output file. This | |
| option may be given more than once. Note that using this option | |
| inappropriately may make the output file unusable. | |
| @item -S | |
| @itemx --strip-all | |
| Do not copy relocation and symbol information from the source file. | |
| @item -g | |
| @itemx --strip-debug | |
| Do not copy debugging symbols from the source file. | |
| @item --strip-unneeded | |
| Strip all symbols that are not needed for relocation processing. | |
| @item -K @var{symbolname} | |
| @itemx --keep-symbol=@var{symbolname} | |
| Copy only symbol @var{symbolname} from the source file. This option may | |
| be given more than once. | |
| @item -N @var{symbolname} | |
| @itemx --strip-symbol=@var{symbolname} | |
| Do not copy symbol @var{symbolname} from the source file. This option | |
| may be given more than once. | |
| @item -G @var{symbolname} | |
| @itemx --keep-global-symbol=@var{symbolname} | |
| Keep only symbol @var{symbolname} global. Make all other symbols local | |
| to the file, so that they are not visible externally. This option may | |
| be given more than once. | |
| @item -L @var{symbolname} | |
| @itemx --localize-symbol=@var{symbolname} | |
| Make symbol @var{symbolname} local to the file, so that it is not | |
| visible externally. This option may be given more than once. | |
| @item -W @var{symbolname} | |
| @itemx --weaken-symbol=@var{symbolname} | |
| Make symbol @var{symbolname} weak. This option may be given more than once. | |
| @item -x | |
| @itemx --discard-all | |
| Do not copy non-global symbols from the source file. | |
| @c FIXME any reason to prefer "non-global" to "local" here? | |
| @item -X | |
| @itemx --discard-locals | |
| Do not copy compiler-generated local symbols. | |
| (These usually start with @samp{L} or @samp{.}.) | |
| @item -b @var{byte} | |
| @itemx --byte=@var{byte} | |
| Keep only every @var{byte}th byte of the input file (header data is not | |
| affected). @var{byte} can be in the range from 0 to @var{interleave}-1, | |
| where @var{interleave} is given by the @option{-i} or @option{--interleave} | |
| option, or the default of 4. This option is useful for creating files | |
| to program @sc{rom}. It is typically used with an @code{srec} output | |
| target. | |
| @item -i @var{interleave} | |
| @itemx --interleave=@var{interleave} | |
| Only copy one out of every @var{interleave} bytes. Select which byte to | |
| copy with the @option{-b} or @option{--byte} option. The default is 4. | |
| @command{objcopy} ignores this option if you do not specify either @option{-b} or | |
| @option{--byte}. | |
| @item -p | |
| @itemx --preserve-dates | |
| Set the access and modification dates of the output file to be the same | |
| as those of the input file. | |
| @item --debugging | |
| Convert debugging information, if possible. This is not the default | |
| because only certain debugging formats are supported, and the | |
| conversion process can be time consuming. | |
| @item --gap-fill @var{val} | |
| Fill gaps between sections with @var{val}. This operation applies to | |
| the @emph{load address} (LMA) of the sections. It is done by increasing | |
| the size of the section with the lower address, and filling in the extra | |
| space created with @var{val}. | |
| @item --pad-to @var{address} | |
| Pad the output file up to the load address @var{address}. This is | |
| done by increasing the size of the last section. The extra space is | |
| filled in with the value specified by @option{--gap-fill} (default zero). | |
| @item --set-start @var{val} | |
| Set the start address of the new file to @var{val}. Not all object file | |
| formats support setting the start address. | |
| @item --change-start @var{incr} | |
| @itemx --adjust-start @var{incr} | |
| @cindex changing start address | |
| Change the start address by adding @var{incr}. Not all object file | |
| formats support setting the start address. | |
| @item --change-addresses @var{incr} | |
| @itemx --adjust-vma @var{incr} | |
| @cindex changing object addresses | |
| Change the VMA and LMA addresses of all sections, as well as the start | |
| address, by adding @var{incr}. Some object file formats do not permit | |
| section addresses to be changed arbitrarily. Note that this does not | |
| relocate the sections; if the program expects sections to be loaded at a | |
| certain address, and this option is used to change the sections such | |
| that they are loaded at a different address, the program may fail. | |
| @item --change-section-address @var{section}@{=,+,-@}@var{val} | |
| @itemx --adjust-section-vma @var{section}@{=,+,-@}@var{val} | |
| @cindex changing section address | |
| Set or change both the VMA address and the LMA address of the named | |
| @var{section}. If @samp{=} is used, the section address is set to | |
| @var{val}. Otherwise, @var{val} is added to or subtracted from the | |
| section address. See the comments under @option{--change-addresses}, | |
| above. If @var{section} does not exist in the input file, a warning will | |
| be issued, unless @option{--no-change-warnings} is used. | |
| @item --change-section-lma @var{section}@{=,+,-@}@var{val} | |
| @cindex changing section LMA | |
| Set or change the LMA address of the named @var{section}. The LMA | |
| address is the address where the section will be loaded into memory at | |
| program load time. Normally this is the same as the VMA address, which | |
| is the address of the section at program run time, but on some systems, | |
| especially those where a program is held in ROM, the two can be | |
| different. If @samp{=} is used, the section address is set to | |
| @var{val}. Otherwise, @var{val} is added to or subtracted from the | |
| section address. See the comments under @option{--change-addresses}, | |
| above. If @var{section} does not exist in the input file, a warning | |
| will be issued, unless @option{--no-change-warnings} is used. | |
| @item --change-section-vma @var{section}@{=,+,-@}@var{val} | |
| @cindex changing section VMA | |
| Set or change the VMA address of the named @var{section}. The VMA | |
| address is the address where the section will be located once the | |
| program has started executing. Normally this is the same as the LMA | |
| address, which is the address where the section will be loaded into | |
| memory, but on some systems, especially those where a program is held in | |
| ROM, the two can be different. If @samp{=} is used, the section address | |
| is set to @var{val}. Otherwise, @var{val} is added to or subtracted | |
| from the section address. See the comments under | |
| @option{--change-addresses}, above. If @var{section} does not exist in | |
| the input file, a warning will be issued, unless | |
| @option{--no-change-warnings} is used. | |
| @item --change-warnings | |
| @itemx --adjust-warnings | |
| If @option{--change-section-address} or @option{--change-section-lma} or | |
| @option{--change-section-vma} is used, and the named section does not | |
| exist, issue a warning. This is the default. | |
| @item --no-change-warnings | |
| @itemx --no-adjust-warnings | |
| Do not issue a warning if @option{--change-section-address} or | |
| @option{--adjust-section-lma} or @option{--adjust-section-vma} is used, even | |
| if the named section does not exist. | |
| @item --set-section-flags @var{section}=@var{flags} | |
| Set the flags for the named section. The @var{flags} argument is a | |
| comma separated string of flag names. The recognized names are | |
| @samp{alloc}, @samp{contents}, @samp{load}, @samp{noload}, | |
| @samp{readonly}, @samp{code}, @samp{data}, @samp{rom}, @samp{share}, and | |
| @samp{debug}. You can set the @samp{contents} flag for a section which | |
| does not have contents, but it is not meaningful to clear the | |
| @samp{contents} flag of a section which does have contents--just remove | |
| the section instead. Not all flags are meaningful for all object file | |
| formats. | |
| @item --add-section @var{sectionname}=@var{filename} | |
| Add a new section named @var{sectionname} while copying the file. The | |
| contents of the new section are taken from the file @var{filename}. The | |
| size of the section will be the size of the file. This option only | |
| works on file formats which can support sections with arbitrary names. | |
| @item --rename-section @var{oldname}=@var{newname}[,@var{flags}] | |
| Rename a section from @var{oldname} to @var{newname}, optionally | |
| changing the section's flags to @var{flags} in the process. This has | |
| the advantage over usng a linker script to perform the rename in that | |
| the output stays as an object file and does not become a linked | |
| executable. | |
| This option is particularly helpful when the input format is binary, | |
| since this will always create a section called .data. If for example, | |
| you wanted instead to create a section called .rodata containing binary | |
| data you could use the following command line to achieve it: | |
| @smallexample | |
| objcopy -I binary -O <output_format> -B <architecture> \ | |
| --rename-section .data=.rodata,alloc,load,readonly,data,contents \ | |
| <input_binary_file> <output_object_file> | |
| @end smallexample | |
| @item --change-leading-char | |
| Some object file formats use special characters at the start of | |
| symbols. The most common such character is underscore, which compilers | |
| often add before every symbol. This option tells @command{objcopy} to | |
| change the leading character of every symbol when it converts between | |
| object file formats. If the object file formats use the same leading | |
| character, this option has no effect. Otherwise, it will add a | |
| character, or remove a character, or change a character, as | |
| appropriate. | |
| @item --remove-leading-char | |
| If the first character of a global symbol is a special symbol leading | |
| character used by the object file format, remove the character. The | |
| most common symbol leading character is underscore. This option will | |
| remove a leading underscore from all global symbols. This can be useful | |
| if you want to link together objects of different file formats with | |
| different conventions for symbol names. This is different from | |
| @option{--change-leading-char} because it always changes the symbol name | |
| when appropriate, regardless of the object file format of the output | |
| file. | |
| @item --srec-len=@var{ival} | |
| Meaningful only for srec output. Set the maximum length of the Srecords | |
| being produced to @var{ival}. This length covers both address, data and | |
| crc fields. | |
| @item --srec-forceS3 | |
| Meaningful only for srec output. Avoid generation of S1/S2 records, | |
| creating S3-only record format. | |
| @item --redefine-sym @var{old}=@var{new} | |
| Change the name of a symbol @var{old}, to @var{new}. This can be useful | |
| when one is trying link two things together for which you have no | |
| source, and there are name collisions. | |
| @item --weaken | |
| Change all global symbols in the file to be weak. This can be useful | |
| when building an object which will be linked against other objects using | |
| the @option{-R} option to the linker. This option is only effective when | |
| using an object file format which supports weak symbols. | |
| @item --keep-symbols=@var{filename} | |
| Apply @option{--keep-symbol} option to each symbol listed in the file | |
| @var{filename}. @var{filename} is simply a flat file, with one symbol | |
| name per line. Line comments may be introduced by the hash character. | |
| This option may be given more than once. | |
| @item --strip-symbols=@var{filename} | |
| Apply @option{--strip-symbol} option to each symbol listed in the file | |
| @var{filename}. @var{filename} is simply a flat file, with one symbol | |
| name per line. Line comments may be introduced by the hash character. | |
| This option may be given more than once. | |
| @item --keep-global-symbols=@var{filename} | |
| Apply @option{--keep-global-symbol} option to each symbol listed in the | |
| file @var{filename}. @var{filename} is simply a flat file, with one | |
| symbol name per line. Line comments may be introduced by the hash | |
| character. This option may be given more than once. | |
| @item --localize-symbols=@var{filename} | |
| Apply @option{--localize-symbol} option to each symbol listed in the file | |
| @var{filename}. @var{filename} is simply a flat file, with one symbol | |
| name per line. Line comments may be introduced by the hash character. | |
| This option may be given more than once. | |
| @item --weaken-symbols=@var{filename} | |
| Apply @option{--weaken-symbol} option to each symbol listed in the file | |
| @var{filename}. @var{filename} is simply a flat file, with one symbol | |
| name per line. Line comments may be introduced by the hash character. | |
| This option may be given more than once. | |
| @item --alt-machine-code=@var{index} | |
| If the output architecture has alternate machine codes, use the | |
| @var{index}th code instead of the default one. This is useful in case | |
| a machine is assigned an official code and the tool-chain adopts the | |
| new code, but other applications still depend on the original code | |
| being used. | |
| @item -V | |
| @itemx --version | |
| Show the version number of @command{objcopy}. | |
| @item -v | |
| @itemx --verbose | |
| Verbose output: list all object files modified. In the case of | |
| archives, @samp{objcopy -V} lists all members of the archive. | |
| @item --help | |
| Show a summary of the options to @command{objcopy}. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO objcopy | |
| ld(1), objdump(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node objdump | |
| @chapter objdump | |
| @cindex object file information | |
| @kindex objdump | |
| @c man title objdump display information from object files. | |
| @smallexample | |
| @c man begin SYNOPSIS objdump | |
| objdump [@option{-a}|@option{--archive-headers}] | |
| [@option{-b} @var{bfdname}|@option{--target=@var{bfdname}}] | |
| [@option{-C}|@option{--demangle}[=@var{style}] ] | |
| [@option{-d}|@option{--disassemble}] | |
| [@option{-D}|@option{--disassemble-all}] | |
| [@option{-z}|@option{--disassemble-zeroes}] | |
| [@option{-EB}|@option{-EL}|@option{--endian=}@{big | little @}] | |
| [@option{-f}|@option{--file-headers}] | |
| [@option{--file-start-context}] | |
| [@option{-g}|@option{--debugging}] | |
| [@option{-h}|@option{--section-headers}|@option{--headers}] | |
| [@option{-i}|@option{--info}] | |
| [@option{-j} @var{section}|@option{--section=}@var{section}] | |
| [@option{-l}|@option{--line-numbers}] | |
| [@option{-S}|@option{--source}] | |
| [@option{-m} @var{machine}|@option{--architecture=}@var{machine}] | |
| [@option{-M} @var{options}|@option{--disassembler-options=}@var{options}] | |
| [@option{-p}|@option{--private-headers}] | |
| [@option{-r}|@option{--reloc}] | |
| [@option{-R}|@option{--dynamic-reloc}] | |
| [@option{-s}|@option{--full-contents}] | |
| [@option{-G}|@option{--stabs}] | |
| [@option{-t}|@option{--syms}] | |
| [@option{-T}|@option{--dynamic-syms}] | |
| [@option{-x}|@option{--all-headers}] | |
| [@option{-w}|@option{--wide}] | |
| [@option{--start-address=}@var{address}] | |
| [@option{--stop-address=}@var{address}] | |
| [@option{--prefix-addresses}] | |
| [@option{--[no-]show-raw-insn}] | |
| [@option{--adjust-vma=}@var{offset}] | |
| [@option{-V}|@option{--version}] | |
| [@option{-H}|@option{--help}] | |
| @var{objfile}@dots{} | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION objdump | |
| @command{objdump} displays information about one or more object files. | |
| The options control what particular information to display. This | |
| information is mostly useful to programmers who are working on the | |
| compilation tools, as opposed to programmers who just want their | |
| program to compile and work. | |
| @var{objfile}@dots{} are the object files to be examined. When you | |
| specify archives, @command{objdump} shows information on each of the member | |
| object files. | |
| @c man end | |
| @c man begin OPTIONS objdump | |
| The long and short forms of options, shown here as alternatives, are | |
| equivalent. At least one option from the list | |
| @option{-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-S,-t,-T,-V,-x} must be given. | |
| @table @env | |
| @item -a | |
| @itemx --archive-header | |
| @cindex archive headers | |
| If any of the @var{objfile} files are archives, display the archive | |
| header information (in a format similar to @samp{ls -l}). Besides the | |
| information you could list with @samp{ar tv}, @samp{objdump -a} shows | |
| the object file format of each archive member. | |
| @item --adjust-vma=@var{offset} | |
| @cindex section addresses in objdump | |
| @cindex VMA in objdump | |
| When dumping information, first add @var{offset} to all the section | |
| addresses. This is useful if the section addresses do not correspond to | |
| the symbol table, which can happen when putting sections at particular | |
| addresses when using a format which can not represent section addresses, | |
| such as a.out. | |
| @item -b @var{bfdname} | |
| @itemx --target=@var{bfdname} | |
| @cindex object code format | |
| Specify that the object-code format for the object files is | |
| @var{bfdname}. This option may not be necessary; @var{objdump} can | |
| automatically recognize many formats. | |
| For example, | |
| @example | |
| objdump -b oasys -m vax -h fu.o | |
| @end example | |
| @noindent | |
| displays summary information from the section headers (@option{-h}) of | |
| @file{fu.o}, which is explicitly identified (@option{-m}) as a VAX object | |
| file in the format produced by Oasys compilers. You can list the | |
| formats available with the @option{-i} option. | |
| @xref{Target Selection}, for more information. | |
| @item -C | |
| @itemx --demangle[=@var{style}] | |
| @cindex demangling in objdump | |
| Decode (@dfn{demangle}) low-level symbol names into user-level names. | |
| Besides removing any initial underscore prepended by the system, this | |
| makes C++ function names readable. Different compilers have different | |
| mangling styles. The optional demangling style argument can be used to | |
| choose an appropriate demangling style for your compiler. @xref{c++filt}, | |
| for more information on demangling. | |
| @item -G | |
| @item --debugging | |
| Display debugging information. This attempts to parse debugging | |
| information stored in the file and print it out using a C like syntax. | |
| Only certain types of debugging information have been implemented. | |
| @item -d | |
| @itemx --disassemble | |
| @cindex disassembling object code | |
| @cindex machine instructions | |
| Display the assembler mnemonics for the machine instructions from | |
| @var{objfile}. This option only disassembles those sections which are | |
| expected to contain instructions. | |
| @item -D | |
| @itemx --disassemble-all | |
| Like @option{-d}, but disassemble the contents of all sections, not just | |
| those expected to contain instructions. | |
| @item --prefix-addresses | |
| When disassembling, print the complete address on each line. This is | |
| the older disassembly format. | |
| @item --disassemble-zeroes | |
| Normally the disassembly output will skip blocks of zeroes. This | |
| option directs the disassembler to disassemble those blocks, just like | |
| any other data. | |
| @item -EB | |
| @itemx -EL | |
| @itemx --endian=@{big|little@} | |
| @cindex endianness | |
| @cindex disassembly endianness | |
| Specify the endianness of the object files. This only affects | |
| disassembly. This can be useful when disassembling a file format which | |
| does not describe endianness information, such as S-records. | |
| @item -f | |
| @itemx --file-header | |
| @cindex object file header | |
| Display summary information from the overall header of | |
| each of the @var{objfile} files. | |
| @item --file-start-context | |
| @cindex source code context | |
| Specify that when displaying interlisted source code/disassembly | |
| (assumes @option{-S}) from a file that has not yet been displayed, extend the | |
| context to the start of the file. | |
| @item -h | |
| @itemx --section-header | |
| @itemx --header | |
| @cindex section headers | |
| Display summary information from the section headers of the | |
| object file. | |
| File segments may be relocated to nonstandard addresses, for example by | |
| using the @option{-Ttext}, @option{-Tdata}, or @option{-Tbss} options to | |
| @command{ld}. However, some object file formats, such as a.out, do not | |
| store the starting address of the file segments. In those situations, | |
| although @command{ld} relocates the sections correctly, using @samp{objdump | |
| -h} to list the file section headers cannot show the correct addresses. | |
| Instead, it shows the usual addresses, which are implicit for the | |
| target. | |
| @item --help | |
| Print a summary of the options to @command{objdump} and exit. | |
| @item -i | |
| @itemx --info | |
| @cindex architectures available | |
| @cindex object formats available | |
| Display a list showing all architectures and object formats available | |
| for specification with @option{-b} or @option{-m}. | |
| @item -j @var{name} | |
| @itemx --section=@var{name} | |
| @cindex section information | |
| Display information only for section @var{name}. | |
| @item -l | |
| @itemx --line-numbers | |
| @cindex source filenames for object files | |
| Label the display (using debugging information) with the filename and | |
| source line numbers corresponding to the object code or relocs shown. | |
| Only useful with @option{-d}, @option{-D}, or @option{-r}. | |
| @item -m @var{machine} | |
| @itemx --architecture=@var{machine} | |
| @cindex architecture | |
| @cindex disassembly architecture | |
| Specify the architecture to use when disassembling object files. This | |
| can be useful when disassembling object files which do not describe | |
| architecture information, such as S-records. You can list the available | |
| architectures with the @option{-i} option. | |
| @item -M @var{options} | |
| @itemx --disassembler-options=@var{options} | |
| Pass target specific information to the disassembler. Only supported on | |
| some targets. | |
| If the target is an ARM architecture then this switch can be used to | |
| select which register name set is used during disassembler. Specifying | |
| @option{-M reg-name-std} (the default) will select the register names as | |
| used in ARM's instruction set documentation, but with register 13 called | |
| 'sp', register 14 called 'lr' and register 15 called 'pc'. Specifying | |
| @option{-M reg-names-apcs} will select the name set used by the ARM | |
| Procedure Call Standard, whilst specifying @option{-M reg-names-raw} will | |
| just use @samp{r} followed by the register number. | |
| There are also two variants on the APCS register naming scheme enabled | |
| by @option{-M reg-names-atpcs} and @option{-M reg-names-special-atpcs} which | |
| use the ARM/Thumb Procedure Call Standard naming conventions. (Either | |
| with the normal register name or the special register names). | |
| This option can also be used for ARM architectures to force the | |
| disassembler to interpret all instructions as Thumb instructions by | |
| using the switch @option{--disassembler-options=force-thumb}. This can be | |
| useful when attempting to disassemble thumb code produced by other | |
| compilers. | |
| For the x86, some of the options duplicate functions of the @option{-m} | |
| switch, but allow finer grained control. Multiple selections from the | |
| following may be specified as a comma separated string. | |
| @option{x86-64}, @option{i386} and @option{i8086} select disassembly for | |
| the given architecture. @option{intel} and @option{att} select between | |
| intel syntax mode and AT&T syntax mode. @option{addr32}, | |
| @option{addr16}, @option{data32} and @option{data16} specify the default | |
| address size and operand size. These four options will be overridden if | |
| @option{x86-64}, @option{i386} or @option{i8086} appear later in the | |
| option string. Lastly, @option{suffix}, when in AT&T mode, | |
| instructs the dissassembler to print a mnemonic suffix even when the | |
| suffix could be inferred by the operands. | |
| For PPC, @option{booke}, @option{booke32} and @option{booke64} select | |
| disassembly of BookE instructions. @option{32} and @option{64} select | |
| PowerPC and PowerPC64 disassembly, respectively. | |
| @item -p | |
| @itemx --private-headers | |
| Print information that is specific to the object file format. The exact | |
| information printed depends upon the object file format. For some | |
| object file formats, no additional information is printed. | |
| @item -r | |
| @itemx --reloc | |
| @cindex relocation entries, in object file | |
| Print the relocation entries of the file. If used with @option{-d} or | |
| @option{-D}, the relocations are printed interspersed with the | |
| disassembly. | |
| @item -R | |
| @itemx --dynamic-reloc | |
| @cindex dynamic relocation entries, in object file | |
| Print the dynamic relocation entries of the file. This is only | |
| meaningful for dynamic objects, such as certain types of shared | |
| libraries. | |
| @item -s | |
| @itemx --full-contents | |
| @cindex sections, full contents | |
| @cindex object file sections | |
| Display the full contents of any sections requested. | |
| @item -S | |
| @itemx --source | |
| @cindex source disassembly | |
| @cindex disassembly, with source | |
| Display source code intermixed with disassembly, if possible. Implies | |
| @option{-d}. | |
| @item --show-raw-insn | |
| When disassembling instructions, print the instruction in hex as well as | |
| in symbolic form. This is the default except when | |
| @option{--prefix-addresses} is used. | |
| @item --no-show-raw-insn | |
| When disassembling instructions, do not print the instruction bytes. | |
| This is the default when @option{--prefix-addresses} is used. | |
| @item -G | |
| @item --stabs | |
| @cindex stab | |
| @cindex .stab | |
| @cindex debug symbols | |
| @cindex ELF object file format | |
| Display the full contents of any sections requested. Display the | |
| contents of the .stab and .stab.index and .stab.excl sections from an | |
| ELF file. This is only useful on systems (such as Solaris 2.0) in which | |
| @code{.stab} debugging symbol-table entries are carried in an ELF | |
| section. In most other file formats, debugging symbol-table entries are | |
| interleaved with linkage symbols, and are visible in the @option{--syms} | |
| output. | |
| @ifclear man | |
| For more information on stabs symbols, see @ref{Top,Stabs,Stabs | |
| Overview,stabs.info, The ``stabs'' debug format}. | |
| @end ifclear | |
| @item --start-address=@var{address} | |
| @cindex start-address | |
| Start displaying data at the specified address. This affects the output | |
| of the @option{-d}, @option{-r} and @option{-s} options. | |
| @item --stop-address=@var{address} | |
| @cindex stop-address | |
| Stop displaying data at the specified address. This affects the output | |
| of the @option{-d}, @option{-r} and @option{-s} options. | |
| @item -t | |
| @itemx --syms | |
| @cindex symbol table entries, printing | |
| Print the symbol table entries of the file. | |
| This is similar to the information provided by the @samp{nm} program. | |
| @item -T | |
| @itemx --dynamic-syms | |
| @cindex dynamic symbol table entries, printing | |
| Print the dynamic symbol table entries of the file. This is only | |
| meaningful for dynamic objects, such as certain types of shared | |
| libraries. This is similar to the information provided by the @samp{nm} | |
| program when given the @option{-D} (@option{--dynamic}) option. | |
| @item --version | |
| Print the version number of @command{objdump} and exit. | |
| @item -x | |
| @itemx --all-header | |
| @cindex all header information, object file | |
| @cindex header information, all | |
| Display all available header information, including the symbol table and | |
| relocation entries. Using @option{-x} is equivalent to specifying all of | |
| @option{-a -f -h -r -t}. | |
| @item -w | |
| @itemx --wide | |
| @cindex wide output, printing | |
| Format some lines for output devices that have more than 80 columns. | |
| Also do not truncate symbol names when they are displayed. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO objdump | |
| nm(1), readelf(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node ranlib | |
| @chapter ranlib | |
| @kindex ranlib | |
| @cindex archive contents | |
| @cindex symbol index | |
| @c man title ranlib generate index to archive. | |
| @smallexample | |
| @c man begin SYNOPSIS ranlib | |
| ranlib [@option{-vV}] @var{archive} | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION ranlib | |
| @command{ranlib} generates an index to the contents of an archive and | |
| stores it in the archive. The index lists each symbol defined by a | |
| member of an archive that is a relocatable object file. | |
| You may use @samp{nm -s} or @samp{nm --print-armap} to list this index. | |
| An archive with such an index speeds up linking to the library and | |
| allows routines in the library to call each other without regard to | |
| their placement in the archive. | |
| The @sc{gnu} @command{ranlib} program is another form of @sc{gnu} @command{ar}; running | |
| @command{ranlib} is completely equivalent to executing @samp{ar -s}. | |
| @xref{ar}. | |
| @c man end | |
| @c man begin OPTIONS ranlib | |
| @table @env | |
| @item -v | |
| @itemx -V | |
| @itemx --version | |
| Show the version number of @command{ranlib}. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO ranlib | |
| ar(1), nm(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node size | |
| @chapter size | |
| @kindex size | |
| @cindex section sizes | |
| @c man title size list section sizes and total size. | |
| @smallexample | |
| @c man begin SYNOPSIS size | |
| size [@option{-A}|@option{-B}|@option{--format=}@var{compatibility}] | |
| [@option{--help}] | |
| [@option{-d}|@option{-o}|@option{-x}|@option{--radix=}@var{number}] | |
| [@option{-t}|@option{--totals}] | |
| [@option{--target=}@var{bfdname}] [@option{-V}|@option{--version}] | |
| [@var{objfile}@dots{}] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION size | |
| The @sc{gnu} @command{size} utility lists the section sizes---and the total | |
| size---for each of the object or archive files @var{objfile} in its | |
| argument list. By default, one line of output is generated for each | |
| object file or each module in an archive. | |
| @var{objfile}@dots{} are the object files to be examined. | |
| If none are specified, the file @code{a.out} will be used. | |
| @c man end | |
| @c man begin OPTIONS size | |
| The command line options have the following meanings: | |
| @table @env | |
| @item -A | |
| @itemx -B | |
| @itemx --format=@var{compatibility} | |
| @cindex @command{size} display format | |
| Using one of these options, you can choose whether the output from @sc{gnu} | |
| @command{size} resembles output from System V @command{size} (using @option{-A}, | |
| or @option{--format=sysv}), or Berkeley @command{size} (using @option{-B}, or | |
| @option{--format=berkeley}). The default is the one-line format similar to | |
| Berkeley's. | |
| @c Bonus for doc-source readers: you can also say --format=strange (or | |
| @c anything else that starts with 's') for sysv, and --format=boring (or | |
| @c anything else that starts with 'b') for Berkeley. | |
| Here is an example of the Berkeley (default) format of output from | |
| @command{size}: | |
| @smallexample | |
| $ size --format=Berkeley ranlib size | |
| text data bss dec hex filename | |
| 294880 81920 11592 388392 5ed28 ranlib | |
| 294880 81920 11888 388688 5ee50 size | |
| @end smallexample | |
| @noindent | |
| This is the same data, but displayed closer to System V conventions: | |
| @smallexample | |
| $ size --format=SysV ranlib size | |
| ranlib : | |
| section size addr | |
| .text 294880 8192 | |
| .data 81920 303104 | |
| .bss 11592 385024 | |
| Total 388392 | |
| size : | |
| section size addr | |
| .text 294880 8192 | |
| .data 81920 303104 | |
| .bss 11888 385024 | |
| Total 388688 | |
| @end smallexample | |
| @item --help | |
| Show a summary of acceptable arguments and options. | |
| @item -d | |
| @itemx -o | |
| @itemx -x | |
| @itemx --radix=@var{number} | |
| @cindex @command{size} number format | |
| @cindex radix for section sizes | |
| Using one of these options, you can control whether the size of each | |
| section is given in decimal (@option{-d}, or @option{--radix=10}); octal | |
| (@option{-o}, or @option{--radix=8}); or hexadecimal (@option{-x}, or | |
| @option{--radix=16}). In @option{--radix=@var{number}}, only the three | |
| values (8, 10, 16) are supported. The total size is always given in two | |
| radices; decimal and hexadecimal for @option{-d} or @option{-x} output, or | |
| octal and hexadecimal if you're using @option{-o}. | |
| @item -t | |
| @itemx --totals | |
| Show totals of all objects listed (Berkeley format listing mode only). | |
| @item --target=@var{bfdname} | |
| @cindex object code format | |
| Specify that the object-code format for @var{objfile} is | |
| @var{bfdname}. This option may not be necessary; @command{size} can | |
| automatically recognize many formats. | |
| @xref{Target Selection}, for more information. | |
| @item -V | |
| @itemx --version | |
| Display the version number of @command{size}. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO size | |
| ar(1), objdump(1), readelf(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node strings | |
| @chapter strings | |
| @kindex strings | |
| @cindex listings strings | |
| @cindex printing strings | |
| @cindex strings, printing | |
| @c man title strings print the strings of printable characters in files. | |
| @smallexample | |
| @c man begin SYNOPSIS strings | |
| strings [@option{-afov}] [@option{-}@var{min-len}] | |
| [@option{-n} @var{min-len}] [@option{--bytes=}@var{min-len}] | |
| [@option{-t} @var{radix}] [@option{--radix=}@var{radix}] | |
| [@option{-e} @var{encoding}] [@option{--encoding=}@var{encoding}] | |
| [@option{-}] [@option{--all}] [@option{--print-file-name}] | |
| [@option{--target=}@var{bfdname}] | |
| [@option{--help}] [@option{--version}] @var{file}@dots{} | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION strings | |
| For each @var{file} given, @sc{gnu} @command{strings} prints the printable | |
| character sequences that are at least 4 characters long (or the number | |
| given with the options below) and are followed by an unprintable | |
| character. By default, it only prints the strings from the initialized | |
| and loaded sections of object files; for other types of files, it prints | |
| the strings from the whole file. | |
| @command{strings} is mainly useful for determining the contents of non-text | |
| files. | |
| @c man end | |
| @c man begin OPTIONS strings | |
| @table @env | |
| @item -a | |
| @itemx --all | |
| @itemx - | |
| Do not scan only the initialized and loaded sections of object files; | |
| scan the whole files. | |
| @item -f | |
| @itemx --print-file-name | |
| Print the name of the file before each string. | |
| @item --help | |
| Print a summary of the program usage on the standard output and exit. | |
| @item -@var{min-len} | |
| @itemx -n @var{min-len} | |
| @itemx --bytes=@var{min-len} | |
| Print sequences of characters that are at least @var{min-len} characters | |
| long, instead of the default 4. | |
| @item -o | |
| Like @samp{-t o}. Some other versions of @command{strings} have @option{-o} | |
| act like @samp{-t d} instead. Since we can not be compatible with both | |
| ways, we simply chose one. | |
| @item -t @var{radix} | |
| @itemx --radix=@var{radix} | |
| Print the offset within the file before each string. The single | |
| character argument specifies the radix of the offset---@samp{o} for | |
| octal, @samp{x} for hexadecimal, or @samp{d} for decimal. | |
| @item -e @var{encoding} | |
| @itemx --encoding=@var{encoding} | |
| Select the character encoding of the strings that are to be found. | |
| Possible values for @var{encoding} are: @samp{s} = single-byte | |
| characters (ASCII, ISO 8859, etc., default), @samp{b} = 16-bit | |
| Bigendian, @samp{l} = 16-bit Littleendian, @samp{B} = 32-bit Bigendian, | |
| @samp{L} = 32-bit Littleendian. Useful for finding wide character | |
| strings. | |
| @item --target=@var{bfdname} | |
| @cindex object code format | |
| Specify an object code format other than your system's default format. | |
| @xref{Target Selection}, for more information. | |
| @item -v | |
| @itemx --version | |
| Print the program version number on the standard output and exit. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO strings | |
| ar(1), nm(1), objdump(1), ranlib(1), readelf(1) | |
| and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node strip | |
| @chapter strip | |
| @kindex strip | |
| @cindex removing symbols | |
| @cindex discarding symbols | |
| @cindex symbols, discarding | |
| @c man title strip Discard symbols from object files. | |
| @smallexample | |
| @c man begin SYNOPSIS strip | |
| strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname} ] | |
| [@option{-I} @var{bfdname} |@option{--input-target=}@var{bfdname} ] | |
| [@option{-O} @var{bfdname} |@option{--output-target=}@var{bfdname} ] | |
| [@option{-s}|@option{--strip-all}] [@option{-S}|@option{-g}|@option{-d}|@option{--strip-debug}] | |
| [@option{-K} @var{symbolname} |@option{--keep-symbol=}@var{symbolname} ] | |
| [@option{-N} @var{symbolname} |@option{--strip-symbol=}@var{symbolname} ] | |
| [@option{-x}|@option{--discard-all} ] [@option{-X} |@option{--discard-locals}] | |
| [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname} ] | |
| [@option{-o} @var{file} ] [@option{-p}|@option{--preserve-dates}] | |
| [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}] [@option{--help}] | |
| @var{objfile}@dots{} | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION strip | |
| @sc{gnu} @command{strip} discards all symbols from object files | |
| @var{objfile}. The list of object files may include archives. | |
| At least one object file must be given. | |
| @command{strip} modifies the files named in its argument, | |
| rather than writing modified copies under different names. | |
| @c man end | |
| @c man begin OPTIONS strip | |
| @table @env | |
| @item -F @var{bfdname} | |
| @itemx --target=@var{bfdname} | |
| Treat the original @var{objfile} as a file with the object | |
| code format @var{bfdname}, and rewrite it in the same format. | |
| @xref{Target Selection}, for more information. | |
| @item --help | |
| Show a summary of the options to @command{strip} and exit. | |
| @item -I @var{bfdname} | |
| @itemx --input-target=@var{bfdname} | |
| Treat the original @var{objfile} as a file with the object | |
| code format @var{bfdname}. | |
| @xref{Target Selection}, for more information. | |
| @item -O @var{bfdname} | |
| @itemx --output-target=@var{bfdname} | |
| Replace @var{objfile} with a file in the output format @var{bfdname}. | |
| @xref{Target Selection}, for more information. | |
| @item -R @var{sectionname} | |
| @itemx --remove-section=@var{sectionname} | |
| Remove any section named @var{sectionname} from the output file. This | |
| option may be given more than once. Note that using this option | |
| inappropriately may make the output file unusable. | |
| @item -s | |
| @itemx --strip-all | |
| Remove all symbols. | |
| @item -g | |
| @itemx -S | |
| @itemx -d | |
| @itemx --strip-debug | |
| Remove debugging symbols only. | |
| @item --strip-unneeded | |
| Remove all symbols that are not needed for relocation processing. | |
| @item -K @var{symbolname} | |
| @itemx --keep-symbol=@var{symbolname} | |
| Keep only symbol @var{symbolname} from the source file. This option may | |
| be given more than once. | |
| @item -N @var{symbolname} | |
| @itemx --strip-symbol=@var{symbolname} | |
| Remove symbol @var{symbolname} from the source file. This option may be | |
| given more than once, and may be combined with strip options other than | |
| @option{-K}. | |
| @item -o @var{file} | |
| Put the stripped output in @var{file}, rather than replacing the | |
| existing file. When this argument is used, only one @var{objfile} | |
| argument may be specified. | |
| @item -p | |
| @itemx --preserve-dates | |
| Preserve the access and modification dates of the file. | |
| @item -x | |
| @itemx --discard-all | |
| Remove non-global symbols. | |
| @item -X | |
| @itemx --discard-locals | |
| Remove compiler-generated local symbols. | |
| (These usually start with @samp{L} or @samp{.}.) | |
| @item -V | |
| @itemx --version | |
| Show the version number for @command{strip}. | |
| @item -v | |
| @itemx --verbose | |
| Verbose output: list all object files modified. In the case of | |
| archives, @samp{strip -v} lists all members of the archive. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO strip | |
| the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node c++filt, addr2line, strip, Top | |
| @chapter c++filt | |
| @kindex c++filt | |
| @cindex demangling C++ symbols | |
| @c man title cxxfilt Demangle C++ and Java symbols. | |
| @smallexample | |
| @c man begin SYNOPSIS cxxfilt | |
| c++filt [@option{-_}|@option{--strip-underscores}] | |
| [@option{-j}|@option{--java}] | |
| [@option{-n}|@option{--no-strip-underscores}] | |
| [@option{-s} @var{format}|@option{--format=}@var{format}] | |
| [@option{--help}] [@option{--version}] [@var{symbol}@dots{}] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION cxxfilt | |
| @kindex cxxfilt | |
| The C++ and Java languages provides function overloading, which means | |
| that you can write many functions with the same name (providing each | |
| takes parameters of different types). All C++ and Java function names | |
| are encoded into a low-level assembly label (this process is known as | |
| @dfn{mangling}). The @command{c++filt} | |
| @footnote{MS-DOS does not allow @kbd{+} characters in file names, so on | |
| MS-DOS this program is named @command{cxxfilt}.} | |
| program does the inverse mapping: it decodes (@dfn{demangles}) low-level | |
| names into user-level names so that the linker can keep these overloaded | |
| functions from clashing. | |
| Every alphanumeric word (consisting of letters, digits, underscores, | |
| dollars, or periods) seen in the input is a potential label. If the | |
| label decodes into a C++ name, the C++ name replaces the low-level | |
| name in the output. | |
| You can use @command{c++filt} to decipher individual symbols: | |
| @example | |
| c++filt @var{symbol} | |
| @end example | |
| If no @var{symbol} arguments are given, @command{c++filt} reads symbol | |
| names from the standard input and writes the demangled names to the | |
| standard output. All results are printed on the standard output. | |
| @c man end | |
| @c man begin OPTIONS cxxfilt | |
| @table @env | |
| @item -_ | |
| @itemx --strip-underscores | |
| On some systems, both the C and C++ compilers put an underscore in front | |
| of every name. For example, the C name @code{foo} gets the low-level | |
| name @code{_foo}. This option removes the initial underscore. Whether | |
| @command{c++filt} removes the underscore by default is target dependent. | |
| @item -j | |
| @itemx --java | |
| Prints demangled names using Java syntax. The default is to use C++ | |
| syntax. | |
| @item -n | |
| @itemx --no-strip-underscores | |
| Do not remove the initial underscore. | |
| @item -s @var{format} | |
| @itemx --format=@var{format} | |
| @sc{gnu} @command{nm} can decode three different methods of mangling, used by | |
| different C++ compilers. The argument to this option selects which | |
| method it uses: | |
| @table @code | |
| @item gnu | |
| the one used by the @sc{gnu} compiler (the default method) | |
| @item lucid | |
| the one used by the Lucid compiler | |
| @item arm | |
| the one specified by the C++ Annotated Reference Manual | |
| @item hp | |
| the one used by the HP compiler | |
| @item edg | |
| the one used by the EDG compiler | |
| @item gnu-new-abi | |
| the one used by the @sc{gnu} compiler with the new ABI. | |
| @end table | |
| @item --help | |
| Print a summary of the options to @command{c++filt} and exit. | |
| @item --version | |
| Print the version number of @command{c++filt} and exit. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO cxxfilt | |
| the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @quotation | |
| @emph{Warning:} @command{c++filt} is a new utility, and the details of its | |
| user interface are subject to change in future releases. In particular, | |
| a command-line option may be required in the the future to decode a name | |
| passed as an argument on the command line; in other words, | |
| @example | |
| c++filt @var{symbol} | |
| @end example | |
| @noindent | |
| may in a future release become | |
| @example | |
| c++filt @var{option} @var{symbol} | |
| @end example | |
| @end quotation | |
| @node addr2line | |
| @chapter addr2line | |
| @kindex addr2line | |
| @cindex address to file name and line number | |
| @c man title addr2line convert addresses into file names and line numbers. | |
| @smallexample | |
| @c man begin SYNOPSIS addr2line | |
| addr2line [@option{-b} @var{bfdname}|@option{--target=}@var{bfdname}] | |
| [@option{-C}|@option{--demangle}[=@var{style}]] | |
| [@option{-e} @var{filename}|@option{--exe=}@var{filename}] | |
| [@option{-f}|@option{--functions}] [@option{-s}|@option{--basename}] | |
| [@option{-H}|@option{--help}] [@option{-V}|@option{--version}] | |
| [addr addr @dots{}] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION addr2line | |
| @command{addr2line} translates program addresses into file names and line | |
| numbers. Given an address and an executable, it uses the debugging | |
| information in the executable to figure out which file name and line | |
| number are associated with a given address. | |
| The executable to use is specified with the @option{-e} option. The | |
| default is the file @file{a.out}. | |
| @command{addr2line} has two modes of operation. | |
| In the first, hexadecimal addresses are specified on the command line, | |
| and @command{addr2line} displays the file name and line number for each | |
| address. | |
| In the second, @command{addr2line} reads hexadecimal addresses from | |
| standard input, and prints the file name and line number for each | |
| address on standard output. In this mode, @command{addr2line} may be used | |
| in a pipe to convert dynamically chosen addresses. | |
| The format of the output is @samp{FILENAME:LINENO}. The file name and | |
| line number for each address is printed on a separate line. If the | |
| @command{-f} option is used, then each @samp{FILENAME:LINENO} line is | |
| preceded by a @samp{FUNCTIONNAME} line which is the name of the function | |
| containing the address. | |
| If the file name or function name can not be determined, | |
| @command{addr2line} will print two question marks in their place. If the | |
| line number can not be determined, @command{addr2line} will print 0. | |
| @c man end | |
| @c man begin OPTIONS addr2line | |
| The long and short forms of options, shown here as alternatives, are | |
| equivalent. | |
| @table @env | |
| @item -b @var{bfdname} | |
| @itemx --target=@var{bfdname} | |
| @cindex object code format | |
| Specify that the object-code format for the object files is | |
| @var{bfdname}. | |
| @item -C | |
| @itemx --demangle[=@var{style}] | |
| @cindex demangling in objdump | |
| Decode (@dfn{demangle}) low-level symbol names into user-level names. | |
| Besides removing any initial underscore prepended by the system, this | |
| makes C++ function names readable. Different compilers have different | |
| mangling styles. The optional demangling style argument can be used to | |
| choose an appropriate demangling style for your compiler. @xref{c++filt}, | |
| for more information on demangling. | |
| @item -e @var{filename} | |
| @itemx --exe=@var{filename} | |
| Specify the name of the executable for which addresses should be | |
| translated. The default file is @file{a.out}. | |
| @item -f | |
| @itemx --functions | |
| Display function names as well as file and line number information. | |
| @item -s | |
| @itemx --basenames | |
| Display only the base of each file name. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO addr2line | |
| Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node nlmconv | |
| @chapter nlmconv | |
| @command{nlmconv} converts a relocatable object file into a NetWare | |
| Loadable Module. | |
| @ignore | |
| @command{nlmconv} currently works with @samp{i386} object | |
| files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC} | |
| object files in @sc{elf}, or @code{a.out} format@footnote{ | |
| @command{nlmconv} should work with any @samp{i386} or @sc{sparc} object | |
| format in the Binary File Descriptor library. It has only been tested | |
| with the above formats.}. | |
| @end ignore | |
| @quotation | |
| @emph{Warning:} @command{nlmconv} is not always built as part of the binary | |
| utilities, since it is only useful for NLM targets. | |
| @end quotation | |
| @c man title nlmconv converts object code into an NLM. | |
| @smallexample | |
| @c man begin SYNOPSIS nlmconv | |
| nlmconv [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}] | |
| [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}] | |
| [@option{-T} @var{headerfile}|@option{--header-file=}@var{headerfile}] | |
| [@option{-d}|@option{--debug}] [@option{-l} @var{linker}|@option{--linker=}@var{linker}] | |
| [@option{-h}|@option{--help}] [@option{-V}|@option{--version}] | |
| @var{infile} @var{outfile} | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION nlmconv | |
| @command{nlmconv} converts the relocatable @samp{i386} object file | |
| @var{infile} into the NetWare Loadable Module @var{outfile}, optionally | |
| reading @var{headerfile} for NLM header information. For instructions | |
| on writing the NLM command file language used in header files, see the | |
| @samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM | |
| Development and Tools Overview}, which is part of the NLM Software | |
| Developer's Kit (``NLM SDK''), available from Novell, Inc. | |
| @command{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read | |
| @var{infile}; | |
| @ifclear man | |
| see @ref{BFD,,BFD,ld.info,Using LD}, for more information. | |
| @end ifclear | |
| @command{nlmconv} can perform a link step. In other words, you can list | |
| more than one object file for input if you list them in the definitions | |
| file (rather than simply specifying one input file on the command line). | |
| In this case, @command{nlmconv} calls the linker for you. | |
| @c man end | |
| @c man begin OPTIONS nlmconv | |
| @table @env | |
| @item -I @var{bfdname} | |
| @itemx --input-target=@var{bfdname} | |
| Object format of the input file. @command{nlmconv} can usually determine | |
| the format of a given file (so no default is necessary). | |
| @xref{Target Selection}, for more information. | |
| @item -O @var{bfdname} | |
| @itemx --output-target=@var{bfdname} | |
| Object format of the output file. @command{nlmconv} infers the output | |
| format based on the input format, e.g. for a @samp{i386} input file the | |
| output format is @samp{nlm32-i386}. | |
| @xref{Target Selection}, for more information. | |
| @item -T @var{headerfile} | |
| @itemx --header-file=@var{headerfile} | |
| Reads @var{headerfile} for NLM header information. For instructions on | |
| writing the NLM command file language used in header files, see@ see the | |
| @samp{linkers} section, of the @cite{NLM Development and Tools | |
| Overview}, which is part of the NLM Software Developer's Kit, available | |
| from Novell, Inc. | |
| @item -d | |
| @itemx --debug | |
| Displays (on standard error) the linker command line used by @command{nlmconv}. | |
| @item -l @var{linker} | |
| @itemx --linker=@var{linker} | |
| Use @var{linker} for any linking. @var{linker} can be an absolute or a | |
| relative pathname. | |
| @item -h | |
| @itemx --help | |
| Prints a usage summary. | |
| @item -V | |
| @itemx --version | |
| Prints the version number for @command{nlmconv}. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO nlmconv | |
| the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node windres | |
| @chapter windres | |
| @command{windres} may be used to manipulate Windows resources. | |
| @quotation | |
| @emph{Warning:} @command{windres} is not always built as part of the binary | |
| utilities, since it is only useful for Windows targets. | |
| @end quotation | |
| @c man title windres manipulate Windows resources. | |
| @smallexample | |
| @c man begin SYNOPSIS windres | |
| windres [options] [input-file] [output-file] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION windres | |
| @command{windres} reads resources from an input file and copies them into | |
| an output file. Either file may be in one of three formats: | |
| @table @code | |
| @item rc | |
| A text format read by the Resource Compiler. | |
| @item res | |
| A binary format generated by the Resource Compiler. | |
| @item coff | |
| A COFF object or executable. | |
| @end table | |
| The exact description of these different formats is available in | |
| documentation from Microsoft. | |
| When @command{windres} converts from the @code{rc} format to the @code{res} | |
| format, it is acting like the Windows Resource Compiler. When | |
| @command{windres} converts from the @code{res} format to the @code{coff} | |
| format, it is acting like the Windows @code{CVTRES} program. | |
| When @command{windres} generates an @code{rc} file, the output is similar | |
| but not identical to the format expected for the input. When an input | |
| @code{rc} file refers to an external filename, an output @code{rc} file | |
| will instead include the file contents. | |
| If the input or output format is not specified, @command{windres} will | |
| guess based on the file name, or, for the input file, the file contents. | |
| A file with an extension of @file{.rc} will be treated as an @code{rc} | |
| file, a file with an extension of @file{.res} will be treated as a | |
| @code{res} file, and a file with an extension of @file{.o} or | |
| @file{.exe} will be treated as a @code{coff} file. | |
| If no output file is specified, @command{windres} will print the resources | |
| in @code{rc} format to standard output. | |
| The normal use is for you to write an @code{rc} file, use @command{windres} | |
| to convert it to a COFF object file, and then link the COFF file into | |
| your application. This will make the resources described in the | |
| @code{rc} file available to Windows. | |
| @c man end | |
| @c man begin OPTIONS windres | |
| @table @env | |
| @item -i @var{filename} | |
| @itemx --input @var{filename} | |
| The name of the input file. If this option is not used, then | |
| @command{windres} will use the first non-option argument as the input file | |
| name. If there are no non-option arguments, then @command{windres} will | |
| read from standard input. @command{windres} can not read a COFF file from | |
| standard input. | |
| @item -o @var{filename} | |
| @itemx --output @var{filename} | |
| The name of the output file. If this option is not used, then | |
| @command{windres} will use the first non-option argument, after any used | |
| for the input file name, as the output file name. If there is no | |
| non-option argument, then @command{windres} will write to standard output. | |
| @command{windres} can not write a COFF file to standard output. | |
| @item -I @var{format} | |
| @itemx --input-format @var{format} | |
| The input format to read. @var{format} may be @samp{res}, @samp{rc}, or | |
| @samp{coff}. If no input format is specified, @command{windres} will | |
| guess, as described above. | |
| @item -O @var{format} | |
| @itemx --output-format @var{format} | |
| The output format to generate. @var{format} may be @samp{res}, | |
| @samp{rc}, or @samp{coff}. If no output format is specified, | |
| @command{windres} will guess, as described above. | |
| @item -F @var{target} | |
| @itemx --target @var{target} | |
| Specify the BFD format to use for a COFF file as input or output. This | |
| is a BFD target name; you can use the @option{--help} option to see a list | |
| of supported targets. Normally @command{windres} will use the default | |
| format, which is the first one listed by the @option{--help} option. | |
| @ifclear man | |
| @ref{Target Selection}. | |
| @end ifclear | |
| @item --preprocessor @var{program} | |
| When @command{windres} reads an @code{rc} file, it runs it through the C | |
| preprocessor first. This option may be used to specify the preprocessor | |
| to use, including any leading arguments. The default preprocessor | |
| argument is @code{gcc -E -xc-header -DRC_INVOKED}. | |
| @item --include-dir @var{directory} | |
| Specify an include directory to use when reading an @code{rc} file. | |
| @command{windres} will pass this to the preprocessor as an @option{-I} | |
| option. @command{windres} will also search this directory when looking for | |
| files named in the @code{rc} file. | |
| @item -D @var{target} | |
| @itemx --define @var{sym}[=@var{val}] | |
| Specify a @option{-D} option to pass to the preprocessor when reading an | |
| @code{rc} file. | |
| @item -v | |
| Enable verbose mode. This tells you what the preprocessor is if you | |
| didn't specify one. | |
| @item --language @var{val} | |
| Specify the default language to use when reading an @code{rc} file. | |
| @var{val} should be a hexadecimal language code. The low eight bits are | |
| the language, and the high eight bits are the sublanguage. | |
| @item --use-temp-file | |
| Use a temporary file to instead of using popen to read the output of | |
| the preprocessor. Use this option if the popen implementation is buggy | |
| on the host (eg., certain non-English language versions of Windows 95 and | |
| Windows 98 are known to have buggy popen where the output will instead | |
| go the console). | |
| @item --no-use-temp-file | |
| Use popen, not a temporary file, to read the output of the preprocessor. | |
| This is the default behaviour. | |
| @item --help | |
| Prints a usage summary. | |
| @item --version | |
| Prints the version number for @command{windres}. | |
| @item --yydebug | |
| If @command{windres} is compiled with @code{YYDEBUG} defined as @code{1}, | |
| this will turn on parser debugging. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO windres | |
| the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node dlltool | |
| @chapter Create files needed to build and use DLLs | |
| @cindex DLL | |
| @kindex dlltool | |
| @command{dlltool} may be used to create the files needed to build and use | |
| dynamic link libraries (DLLs). | |
| @quotation | |
| @emph{Warning:} @command{dlltool} is not always built as part of the binary | |
| utilities, since it is only useful for those targets which support DLLs. | |
| @end quotation | |
| @c man title dlltool Create files needed to build and use DLLs. | |
| @smallexample | |
| @c man begin SYNOPSIS dlltool | |
| dlltool [@option{-d}|@option{--input-def} @var{def-file-name}] | |
| [@option{-b}|@option{--base-file} @var{base-file-name}] | |
| [@option{-e}|@option{--output-exp} @var{exports-file-name}] | |
| [@option{-z}|@option{--output-def} @var{def-file-name}] | |
| [@option{-l}|@option{--output-lib} @var{library-file-name}] | |
| [@option{--export-all-symbols}] [@option{--no-export-all-symbols}] | |
| [@option{--exclude-symbols} @var{list}] | |
| [@option{--no-default-excludes}] | |
| [@option{-S}|@option{--as} @var{path-to-assembler}] [@option{-f}|@option{--as-flags} @var{options}] | |
| [@option{-D}|@option{--dllname} @var{name}] [@option{-m}|@option{--machine} @var{machine}] | |
| [@option{-a}|@option{--add-indirect}] [@option{-U}|@option{--add-underscore}] [@option{-k}|@option{--kill-at}] | |
| [@option{-A}|@option{--add-stdcall-alias}] | |
| [@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}] [@option{-i}|@option{--interwork}] | |
| [@option{-n}|@option{--nodelete}] [@option{-v}|@option{--verbose}] | |
| [@option{-h}|@option{--help}] [@option{-V}|@option{--version}] | |
| [object-file @dots{}] | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION dlltool | |
| @command{dlltool} reads its inputs, which can come from the @option{-d} and | |
| @option{-b} options as well as object files specified on the command | |
| line. It then processes these inputs and if the @option{-e} option has | |
| been specified it creates a exports file. If the @option{-l} option | |
| has been specified it creates a library file and if the @option{-z} option | |
| has been specified it creates a def file. Any or all of the @option{-e}, | |
| @option{-l} and @option{-z} options can be present in one invocation of | |
| dlltool. | |
| When creating a DLL, along with the source for the DLL, it is necessary | |
| to have three other files. @command{dlltool} can help with the creation of | |
| these files. | |
| The first file is a @samp{.def} file which specifies which functions are | |
| exported from the DLL, which functions the DLL imports, and so on. This | |
| is a text file and can be created by hand, or @command{dlltool} can be used | |
| to create it using the @option{-z} option. In this case @command{dlltool} | |
| will scan the object files specified on its command line looking for | |
| those functions which have been specially marked as being exported and | |
| put entries for them in the .def file it creates. | |
| In order to mark a function as being exported from a DLL, it needs to | |
| have an @option{-export:<name_of_function>} entry in the @samp{.drectve} | |
| section of the object file. This can be done in C by using the | |
| asm() operator: | |
| @smallexample | |
| asm (".section .drectve"); | |
| asm (".ascii \"-export:my_func\""); | |
| int my_func (void) @{ @dots{} @} | |
| @end smallexample | |
| The second file needed for DLL creation is an exports file. This file | |
| is linked with the object files that make up the body of the DLL and it | |
| handles the interface between the DLL and the outside world. This is a | |
| binary file and it can be created by giving the @option{-e} option to | |
| @command{dlltool} when it is creating or reading in a .def file. | |
| The third file needed for DLL creation is the library file that programs | |
| will link with in order to access the functions in the DLL. This file | |
| can be created by giving the @option{-l} option to dlltool when it | |
| is creating or reading in a .def file. | |
| @command{dlltool} builds the library file by hand, but it builds the | |
| exports file by creating temporary files containing assembler statements | |
| and then assembling these. The @option{-S} command line option can be | |
| used to specify the path to the assembler that dlltool will use, | |
| and the @option{-f} option can be used to pass specific flags to that | |
| assembler. The @option{-n} can be used to prevent dlltool from deleting | |
| these temporary assembler files when it is done, and if @option{-n} is | |
| specified twice then this will prevent dlltool from deleting the | |
| temporary object files it used to build the library. | |
| Here is an example of creating a DLL from a source file @samp{dll.c} and | |
| also creating a program (from an object file called @samp{program.o}) | |
| that uses that DLL: | |
| @smallexample | |
| gcc -c dll.c | |
| dlltool -e exports.o -l dll.lib dll.o | |
| gcc dll.o exports.o -o dll.dll | |
| gcc program.o dll.lib -o program | |
| @end smallexample | |
| @c man end | |
| @c man begin OPTIONS dlltool | |
| The command line options have the following meanings: | |
| @table @env | |
| @item -d @var{filename} | |
| @itemx --input-def @var{filename} | |
| @cindex input .def file | |
| Specifies the name of a .def file to be read in and processed. | |
| @item -b @var{filename} | |
| @itemx --base-file @var{filename} | |
| @cindex base files | |
| Specifies the name of a base file to be read in and processed. The | |
| contents of this file will be added to the relocation section in the | |
| exports file generated by dlltool. | |
| @item -e @var{filename} | |
| @itemx --output-exp @var{filename} | |
| Specifies the name of the export file to be created by dlltool. | |
| @item -z @var{filename} | |
| @itemx --output-def @var{filename} | |
| Specifies the name of the .def file to be created by dlltool. | |
| @item -l @var{filename} | |
| @itemx --output-lib @var{filename} | |
| Specifies the name of the library file to be created by dlltool. | |
| @item --export-all-symbols | |
| Treat all global and weak defined symbols found in the input object | |
| files as symbols to be exported. There is a small list of symbols which | |
| are not exported by default; see the @option{--no-default-excludes} | |
| option. You may add to the list of symbols to not export by using the | |
| @option{--exclude-symbols} option. | |
| @item --no-export-all-symbols | |
| Only export symbols explicitly listed in an input .def file or in | |
| @samp{.drectve} sections in the input object files. This is the default | |
| behaviour. The @samp{.drectve} sections are created by @samp{dllexport} | |
| attributes in the source code. | |
| @item --exclude-symbols @var{list} | |
| Do not export the symbols in @var{list}. This is a list of symbol names | |
| separated by comma or colon characters. The symbol names should not | |
| contain a leading underscore. This is only meaningful when | |
| @option{--export-all-symbols} is used. | |
| @item --no-default-excludes | |
| When @option{--export-all-symbols} is used, it will by default avoid | |
| exporting certain special symbols. The current list of symbols to avoid | |
| exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0}, | |
| @samp{impure_ptr}. You may use the @option{--no-default-excludes} option | |
| to go ahead and export these special symbols. This is only meaningful | |
| when @option{--export-all-symbols} is used. | |
| @item -S @var{path} | |
| @itemx --as @var{path} | |
| Specifies the path, including the filename, of the assembler to be used | |
| to create the exports file. | |
| @item -f @var{options} | |
| @itemx --as-flags @var{options} | |
| Specifies any specific command line options to be passed to the | |
| assembler when building the exports file. This option will work even if | |
| the @option{-S} option is not used. This option only takes one argument, | |
| and if it occurs more than once on the command line, then later | |
| occurrences will override earlier occurrences. So if it is necessary to | |
| pass multiple options to the assembler they should be enclosed in | |
| double quotes. | |
| @item -D @var{name} | |
| @itemx --dll-name @var{name} | |
| Specifies the name to be stored in the .def file as the name of the DLL | |
| when the @option{-e} option is used. If this option is not present, then | |
| the filename given to the @option{-e} option will be used as the name of | |
| the DLL. | |
| @item -m @var{machine} | |
| @itemx -machine @var{machine} | |
| Specifies the type of machine for which the library file should be | |
| built. @command{dlltool} has a built in default type, depending upon how | |
| it was created, but this option can be used to override that. This is | |
| normally only useful when creating DLLs for an ARM processor, when the | |
| contents of the DLL are actually encode using Thumb instructions. | |
| @item -a | |
| @itemx --add-indirect | |
| Specifies that when @command{dlltool} is creating the exports file it | |
| should add a section which allows the exported functions to be | |
| referenced without using the import library. Whatever the hell that | |
| means! | |
| @item -U | |
| @itemx --add-underscore | |
| Specifies that when @command{dlltool} is creating the exports file it | |
| should prepend an underscore to the names of the exported functions. | |
| @item -k | |
| @itemx --kill-at | |
| Specifies that when @command{dlltool} is creating the exports file it | |
| should not append the string @samp{@@ <number>}. These numbers are | |
| called ordinal numbers and they represent another way of accessing the | |
| function in a DLL, other than by name. | |
| @item -A | |
| @itemx --add-stdcall-alias | |
| Specifies that when @command{dlltool} is creating the exports file it | |
| should add aliases for stdcall symbols without @samp{@@ <number>} | |
| in addition to the symbols with @samp{@@ <number>}. | |
| @item -x | |
| @itemx --no-idata4 | |
| Specifies that when @command{dlltool} is creating the exports and library | |
| files it should omit the @code{.idata4} section. This is for compatibility | |
| with certain operating systems. | |
| @item -c | |
| @itemx --no-idata5 | |
| Specifies that when @command{dlltool} is creating the exports and library | |
| files it should omit the @code{.idata5} section. This is for compatibility | |
| with certain operating systems. | |
| @item -i | |
| @itemx --interwork | |
| Specifies that @command{dlltool} should mark the objects in the library | |
| file and exports file that it produces as supporting interworking | |
| between ARM and Thumb code. | |
| @item -n | |
| @itemx --nodelete | |
| Makes @command{dlltool} preserve the temporary assembler files it used to | |
| create the exports file. If this option is repeated then dlltool will | |
| also preserve the temporary object files it uses to create the library | |
| file. | |
| @item -v | |
| @itemx --verbose | |
| Make dlltool describe what it is doing. | |
| @item -h | |
| @itemx --help | |
| Displays a list of command line options and then exits. | |
| @item -V | |
| @itemx --version | |
| Displays dlltool's version number and then exits. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO dlltool | |
| the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node readelf | |
| @chapter readelf | |
| @cindex ELF file information | |
| @kindex readelf | |
| @c man title readelf Displays information about ELF files. | |
| @smallexample | |
| @c man begin SYNOPSIS readelf | |
| readelf [@option{-a}|@option{--all}] | |
| [@option{-h}|@option{--file-header}] | |
| [@option{-l}|@option{--program-headers}|@option{--segments}] | |
| [@option{-S}|@option{--section-headers}|@option{--sections}] | |
| [@option{-e}|@option{--headers}] | |
| [@option{-s}|@option{--syms}|@option{--symbols}] | |
| [@option{-n}|@option{--notes}] | |
| [@option{-r}|@option{--relocs}] | |
| [@option{-u}|@option{--unwind}] | |
| [@option{-d}|@option{--dynamic}] | |
| [@option{-V}|@option{--version-info}] | |
| [@option{-D}|@option{--use-dynamic}] | |
| [@option{-x} <number>|@option{--hex-dump=}<number>] | |
| [@option{-w[liaprmfFso]}|@option{--debug-dump}[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]] | |
| [@option{-histogram}] | |
| [@option{-v}|@option{--version}] | |
| [@option{-W}|@option{--wide}] | |
| [@option{-H}|@option{--help}] | |
| @var{elffile}@dots{} | |
| @c man end | |
| @end smallexample | |
| @c man begin DESCRIPTION readelf | |
| @command{readelf} displays information about one or more ELF format object | |
| files. The options control what particular information to display. | |
| @var{elffile}@dots{} are the object files to be examined. At the | |
| moment, @command{readelf} does not support examining archives, nor does it | |
| support examing 64 bit ELF files. | |
| @c man end | |
| @c man begin OPTIONS readelf | |
| The long and short forms of options, shown here as alternatives, are | |
| equivalent. At least one option besides @samp{-v} or @samp{-H} must be | |
| given. | |
| @table @env | |
| @item -a | |
| @itemx --all | |
| Equivalent to specifiying @option{--file-header}, | |
| @option{--program-headers}, @option{--sections}, @option{--symbols}, | |
| @option{--relocs}, @option{--dynamic}, @option{--notes} and | |
| @option{--version-info}. | |
| @item -h | |
| @itemx --file-header | |
| @cindex ELF file header information | |
| Displays the information contained in the ELF header at the start of the | |
| file. | |
| @item -l | |
| @itemx --program-headers | |
| @itemx --segments | |
| @cindex ELF program header information | |
| @cindex ELF segment information | |
| Displays the information contained in the file's segment headers, if it | |
| has any. | |
| @item -S | |
| @itemx --sections | |
| @itemx --section-headers | |
| @cindex ELF section information | |
| Displays the information contained in the file's section headers, if it | |
| has any. | |
| @item -s | |
| @itemx --symbols | |
| @itemx --syms | |
| @cindex ELF symbol table information | |
| Displays the entries in symbol table section of the file, if it has one. | |
| @item -e | |
| @itemx --headers | |
| Display all the headers in the file. Equivalent to @option{-h -l -S}. | |
| @item -n | |
| @itemx --notes | |
| @cindex ELF core notes | |
| Displays the contents of the NOTE segment, if it exists. | |
| @item -r | |
| @itemx --relocs | |
| @cindex ELF reloc information | |
| Displays the contents of the file's relocation section, if it has one. | |
| @item -u | |
| @itemx --unwind | |
| @cindex unwind information | |
| Displays the contents of the file's unwind section, if it has one. Only | |
| the unwind sections for IA64 ELF files are currently supported. | |
| @item -d | |
| @itemx --dynamic | |
| @cindex ELF dynamic section information | |
| Displays the contents of the file's dynamic section, if it has one. | |
| @item -V | |
| @itemx --version-info | |
| @cindex ELF version sections informations | |
| Displays the contents of the version sections in the file, it they | |
| exist. | |
| @item -D | |
| @itemx --use-dynamic | |
| When displaying symbols, this option makes @command{readelf} use the | |
| symbol table in the file's dynamic section, rather than the one in the | |
| symbols section. | |
| @item -x <number> | |
| @itemx --hex-dump=<number> | |
| Displays the contents of the indicated section as a hexadecimal dump. | |
| @item -w[liaprmfFso] | |
| @itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc] | |
| Displays the contents of the debug sections in the file, if any are | |
| present. If one of the optional letters or words follows the switch | |
| then only data found in those specific sections will be dumped. | |
| @item --histogram | |
| Display a histogram of bucket list lengths when displaying the contents | |
| of the symbol tables. | |
| @item -v | |
| @itemx --version | |
| Display the version number of readelf. | |
| @item -W | |
| @itemx --wide | |
| Don't break output lines to fit into 80 columns. By default | |
| @command{readelf} breaks section header and segment listing lines for | |
| 64-bit ELF files, so that they fit into 80 columns. This option causes | |
| @command{readelf} to print each section header resp. each segment one a | |
| single line, which is far more readable on terminals wider than 80 columns. | |
| @item -H | |
| @itemx --help | |
| Display the command line options understood by @command{readelf}. | |
| @end table | |
| @c man end | |
| @ignore | |
| @c man begin SEEALSO readelf | |
| objdump(1), and the Info entries for @file{binutils}. | |
| @c man end | |
| @end ignore | |
| @node Selecting The Target System | |
| @chapter Selecting the target system | |
| You can specify three aspects of the target system to the @sc{gnu} | |
| binary file utilities, each in several ways: | |
| @itemize @bullet | |
| @item | |
| the target | |
| @item | |
| the architecture | |
| @item | |
| the linker emulation (which applies to the linker only) | |
| @end itemize | |
| In the following summaries, the lists of ways to specify values are in | |
| order of decreasing precedence. The ways listed first override those | |
| listed later. | |
| The commands to list valid values only list the values for which the | |
| programs you are running were configured. If they were configured with | |
| @option{--enable-targets=all}, the commands list most of the available | |
| values, but a few are left out; not all targets can be configured in at | |
| once because some of them can only be configured @dfn{native} (on hosts | |
| with the same type as the target system). | |
| @menu | |
| * Target Selection:: | |
| * Architecture Selection:: | |
| * Linker Emulation Selection:: | |
| @end menu | |
| @node Target Selection | |
| @section Target Selection | |
| A @dfn{target} is an object file format. A given target may be | |
| supported for multiple architectures (@pxref{Architecture Selection}). | |
| A target selection may also have variations for different operating | |
| systems or architectures. | |
| The command to list valid target values is @samp{objdump -i} | |
| (the first column of output contains the relevant information). | |
| Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips}, | |
| @samp{a.out-sunos-big}. | |
| You can also specify a target using a configuration triplet. This is | |
| the same sort of name that is passed to @file{configure} to specify a | |
| target. When you use a configuration triplet as an argument, it must be | |
| fully canonicalized. You can see the canonical version of a triplet by | |
| running the shell script @file{config.sub} which is included with the | |
| sources. | |
| Some sample configuration triplets are: @samp{m68k-hp-bsd}, | |
| @samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}. | |
| @subheading @command{objdump} Target | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line option: @option{-b} or @option{--target} | |
| @item | |
| environment variable @code{GNUTARGET} | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading @command{objcopy} and @command{strip} Input Target | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line options: @option{-I} or @option{--input-target}, or @option{-F} or @option{--target} | |
| @item | |
| environment variable @code{GNUTARGET} | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading @command{objcopy} and @command{strip} Output Target | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line options: @option{-O} or @option{--output-target}, or @option{-F} or @option{--target} | |
| @item | |
| the input target (see ``@command{objcopy} and @command{strip} Input Target'' above) | |
| @item | |
| environment variable @code{GNUTARGET} | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading @command{nm}, @command{size}, and @command{strings} Target | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line option: @option{--target} | |
| @item | |
| environment variable @code{GNUTARGET} | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading Linker Input Target | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line option: @option{-b} or @option{--format} | |
| (@pxref{Options,,Options,ld.info,Using LD}) | |
| @item | |
| script command @code{TARGET} | |
| (@pxref{Format Commands,,Format Commands,ld.info,Using LD}) | |
| @item | |
| environment variable @code{GNUTARGET} | |
| (@pxref{Environment,,Environment,ld.info,Using LD}) | |
| @item | |
| the default target of the selected linker emulation | |
| (@pxref{Linker Emulation Selection}) | |
| @end enumerate | |
| @subheading Linker Output Target | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line option: @option{-oformat} | |
| (@pxref{Options,,Options,ld.info,Using LD}) | |
| @item | |
| script command @code{OUTPUT_FORMAT} | |
| (@pxref{Format Commands,,Format Commands,ld.info,Using LD}) | |
| @item | |
| the linker input target (see ``Linker Input Target'' above) | |
| @end enumerate | |
| @node Architecture Selection | |
| @section Architecture selection | |
| An @dfn{architecture} is a type of @sc{cpu} on which an object file is | |
| to run. Its name may contain a colon, separating the name of the | |
| processor family from the name of the particular @sc{cpu}. | |
| The command to list valid architecture values is @samp{objdump -i} (the | |
| second column contains the relevant information). | |
| Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}. | |
| @subheading @command{objdump} Architecture | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line option: @option{-m} or @option{--architecture} | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading @command{objcopy}, @command{nm}, @command{size}, @command{strings} Architecture | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading Linker Input Architecture | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| deduced from the input file | |
| @end enumerate | |
| @subheading Linker Output Architecture | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| script command @code{OUTPUT_ARCH} | |
| (@pxref{Miscellaneous Commands,,Miscellaneous Commands,ld.info,Using LD}) | |
| @item | |
| the default architecture from the linker output target | |
| (@pxref{Target Selection}) | |
| @end enumerate | |
| @node Linker Emulation Selection | |
| @section Linker emulation selection | |
| A linker @dfn{emulation} is a ``personality'' of the linker, which gives | |
| the linker default values for the other aspects of the target system. | |
| In particular, it consists of | |
| @itemize @bullet | |
| @item | |
| the linker script | |
| @item | |
| the target | |
| @item | |
| several ``hook'' functions that are run at certain stages of the linking | |
| process to do special things that some targets require | |
| @end itemize | |
| The command to list valid linker emulation values is @samp{ld -V}. | |
| Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}. | |
| Ways to specify: | |
| @enumerate | |
| @item | |
| command line option: @option{-m} | |
| (@pxref{Options,,Options,ld.info,Using LD}) | |
| @item | |
| environment variable @code{LDEMULATION} | |
| @item | |
| compiled-in @code{DEFAULT_EMULATION} from @file{Makefile}, | |
| which comes from @code{EMUL} in @file{config/@var{target}.mt} | |
| @end enumerate | |
| @node Reporting Bugs | |
| @chapter Reporting Bugs | |
| @cindex bugs | |
| @cindex reporting bugs | |
| Your bug reports play an essential role in making the binary utilities | |
| reliable. | |
| Reporting a bug may help you by bringing a solution to your problem, or | |
| it may not. But in any case the principal function of a bug report is | |
| to help the entire community by making the next version of the binary | |
| utilities work better. Bug reports are your contribution to their | |
| maintenance. | |
| In order for a bug report to serve its purpose, you must include the | |
| information that enables us to fix the bug. | |
| @menu | |
| * Bug Criteria:: Have you found a bug? | |
| * Bug Reporting:: How to report bugs | |
| @end menu | |
| @node Bug Criteria | |
| @section Have you found a bug? | |
| @cindex bug criteria | |
| If you are not sure whether you have found a bug, here are some guidelines: | |
| @itemize @bullet | |
| @cindex fatal signal | |
| @cindex crash | |
| @item | |
| If a binary utility gets a fatal signal, for any input whatever, that is | |
| a bug. Reliable utilities never crash. | |
| @cindex error on valid input | |
| @item | |
| If a binary utility produces an error message for valid input, that is a | |
| bug. | |
| @item | |
| If you are an experienced user of binary utilities, your suggestions for | |
| improvement are welcome in any case. | |
| @end itemize | |
| @node Bug Reporting | |
| @section How to report bugs | |
| @cindex bug reports | |
| @cindex bugs, reporting | |
| A number of companies and individuals offer support for @sc{gnu} | |
| products. If you obtained the binary utilities from a support | |
| organization, we recommend you contact that organization first. | |
| You can find contact information for many support companies and | |
| individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs | |
| distribution. | |
| In any event, we also recommend that you send bug reports for the binary | |
| utilities to @samp{bug-binutils@@gnu.org}. | |
| The fundamental principle of reporting bugs usefully is this: | |
| @strong{report all the facts}. If you are not sure whether to state a | |
| fact or leave it out, state it! | |
| Often people omit facts because they think they know what causes the | |
| problem and assume that some details do not matter. Thus, you might | |
| assume that the name of a file you use in an example does not matter. | |
| Well, probably it does not, but one cannot be sure. Perhaps the bug is | |
| a stray memory reference which happens to fetch from the location where | |
| that pathname is stored in memory; perhaps, if the pathname were | |
| different, the contents of that location would fool the utility into | |
| doing the right thing despite the bug. Play it safe and give a | |
| specific, complete example. That is the easiest thing for you to do, | |
| and the most helpful. | |
| Keep in mind that the purpose of a bug report is to enable us to fix the bug if | |
| it is new to us. Therefore, always write your bug reports on the assumption | |
| that the bug has not been reported previously. | |
| Sometimes people give a few sketchy facts and ask, ``Does this ring a | |
| bell?'' Those bug reports are useless, and we urge everyone to | |
| @emph{refuse to respond to them} except to chide the sender to report | |
| bugs properly. | |
| To enable us to fix the bug, you should include all these things: | |
| @itemize @bullet | |
| @item | |
| The version of the utility. Each utility announces it if you start it | |
| with the @option{--version} argument. | |
| Without this, we will not know whether there is any point in looking for | |
| the bug in the current version of the binary utilities. | |
| @item | |
| Any patches you may have applied to the source, including any patches | |
| made to the @code{BFD} library. | |
| @item | |
| The type of machine you are using, and the operating system name and | |
| version number. | |
| @item | |
| What compiler (and its version) was used to compile the utilities---e.g. | |
| ``@code{gcc-2.7}''. | |
| @item | |
| The command arguments you gave the utility to observe the bug. To | |
| guarantee you will not omit something important, list them all. A copy | |
| of the Makefile (or the output from make) is sufficient. | |
| If we were to try to guess the arguments, we would probably guess wrong | |
| and then we might not encounter the bug. | |
| @item | |
| A complete input file, or set of input files, that will reproduce the | |
| bug. If the utility is reading an object file or files, then it is | |
| generally most helpful to send the actual object files, uuencoded if | |
| necessary to get them through the mail system. Note that | |
| @samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid | |
| sending very large files to it. Making the files available for | |
| anonymous FTP is OK. | |
| If the source files were produced exclusively using @sc{gnu} programs | |
| (e.g., @command{gcc}, @command{gas}, and/or the @sc{gnu} @command{ld}), then it | |
| may be OK to send the source files rather than the object files. In | |
| this case, be sure to say exactly what version of @command{gcc}, or | |
| whatever, was used to produce the object files. Also say how | |
| @command{gcc}, or whatever, was configured. | |
| @item | |
| A description of what behavior you observe that you believe is | |
| incorrect. For example, ``It gets a fatal signal.'' | |
| Of course, if the bug is that the utility gets a fatal signal, then we | |
| will certainly notice it. But if the bug is incorrect output, we might | |
| not notice unless it is glaringly wrong. You might as well not give us | |
| a chance to make a mistake. | |
| Even if the problem you experience is a fatal signal, you should still | |
| say so explicitly. Suppose something strange is going on, such as your | |
| copy of the utility is out of synch, or you have encountered a bug in | |
| the C library on your system. (This has happened!) Your copy might | |
| crash and ours would not. If you told us to expect a crash, then when | |
| ours fails to crash, we would know that the bug was not happening for | |
| us. If you had not told us to expect a crash, then we would not be able | |
| to draw any conclusion from our observations. | |
| @item | |
| If you wish to suggest changes to the source, send us context diffs, as | |
| generated by @command{diff} with the @option{-u}, @option{-c}, or @option{-p} | |
| option. Always send diffs from the old file to the new file. If you | |
| wish to discuss something in the @command{ld} source, refer to it by | |
| context, not by line number. | |
| The line numbers in our development sources will not match those in your | |
| sources. Your line numbers would convey no useful information to us. | |
| @end itemize | |
| Here are some things that are not necessary: | |
| @itemize @bullet | |
| @item | |
| A description of the envelope of the bug. | |
| Often people who encounter a bug spend a lot of time investigating | |
| which changes to the input file will make the bug go away and which | |
| changes will not affect it. | |
| This is often time consuming and not very useful, because the way we | |
| will find the bug is by running a single example under the debugger | |
| with breakpoints, not by pure deduction from a series of examples. | |
| We recommend that you save your time for something else. | |
| Of course, if you can find a simpler example to report @emph{instead} | |
| of the original one, that is a convenience for us. Errors in the | |
| output will be easier to spot, running under the debugger will take | |
| less time, and so on. | |
| However, simplification is not vital; if you do not want to do this, | |
| report the bug anyway and send us the entire test case you used. | |
| @item | |
| A patch for the bug. | |
| A patch for the bug does help us if it is a good one. But do not omit | |
| the necessary information, such as the test case, on the assumption that | |
| a patch is all we need. We might see problems with your patch and decide | |
| to fix the problem another way, or we might not understand it at all. | |
| Sometimes with programs as complicated as the binary utilities it is | |
| very hard to construct an example that will make the program follow a | |
| certain path through the code. If you do not send us the example, we | |
| will not be able to construct one, so we will not be able to verify that | |
| the bug is fixed. | |
| And if we cannot understand what bug you are trying to fix, or why your | |
| patch should be an improvement, we will not install it. A test case will | |
| help us to understand. | |
| @item | |
| A guess about what the bug is or what it depends on. | |
| Such guesses are usually wrong. Even we cannot guess right about such | |
| things without first using the debugger to find the facts. | |
| @end itemize | |
| @node GNU Free Documentation License | |
| @chapter GNU Free Documentation License | |
| @cindex GNU Free Documentation License | |
| GNU Free Documentation License | |
| Version 1.1, March 2000 | |
| Copyright (C) 2000 Free Software Foundation, Inc. | |
| 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| Everyone is permitted to copy and distribute verbatim copies | |
| of this license document, but changing it is not allowed. | |
| 0. PREAMBLE | |
| The purpose of this License is to make a manual, textbook, or other | |
| written document "free" in the sense of freedom: to assure everyone | |
| the effective freedom to copy and redistribute it, with or without | |
| modifying it, either commercially or noncommercially. Secondarily, | |
| this License preserves for the author and publisher a way to get | |
| credit for their work, while not being considered responsible for | |
| modifications made by others. | |
| This License is a kind of "copyleft", which means that derivative | |
| works of the document must themselves be free in the same sense. It | |
| complements the GNU General Public License, which is a copyleft | |
| license designed for free software. | |
| We have designed this License in order to use it for manuals for free | |
| software, because free software needs free documentation: a free | |
| program should come with manuals providing the same freedoms that the | |
| software does. But this License is not limited to software manuals; | |
| it can be used for any textual work, regardless of subject matter or | |
| whether it is published as a printed book. We recommend this License | |
| principally for works whose purpose is instruction or reference. | |
| 1. APPLICABILITY AND DEFINITIONS | |
| This License applies to any manual or other work that contains a | |
| notice placed by the copyright holder saying it can be distributed | |
| under the terms of this License. The "Document", below, refers to any | |
| such manual or work. Any member of the public is a licensee, and is | |
| addressed as "you". | |
| A "Modified Version" of the Document means any work containing the | |
| Document or a portion of it, either copied verbatim, or with | |
| modifications and/or translated into another language. | |
| A "Secondary Section" is a named appendix or a front-matter section of | |
| the Document that deals exclusively with the relationship of the | |
| publishers or authors of the Document to the Document's overall subject | |
| (or to related matters) and contains nothing that could fall directly | |
| within that overall subject. (For example, if the Document is in part a | |
| textbook of mathematics, a Secondary Section may not explain any | |
| mathematics.) The relationship could be a matter of historical | |
| connection with the subject or with related matters, or of legal, | |
| commercial, philosophical, ethical or political position regarding | |
| them. | |
| The "Invariant Sections" are certain Secondary Sections whose titles | |
| are designated, as being those of Invariant Sections, in the notice | |
| that says that the Document is released under this License. | |
| The "Cover Texts" are certain short passages of text that are listed, | |
| as Front-Cover Texts or Back-Cover Texts, in the notice that says that | |
| the Document is released under this License. | |
| A "Transparent" copy of the Document means a machine-readable copy, | |
| represented in a format whose specification is available to the | |
| general public, whose contents can be viewed and edited directly and | |
| straightforwardly with generic text editors or (for images composed of | |
| pixels) generic paint programs or (for drawings) some widely available | |
| drawing editor, and that is suitable for input to text formatters or | |
| for automatic translation to a variety of formats suitable for input | |
| to text formatters. A copy made in an otherwise Transparent file | |
| format whose markup has been designed to thwart or discourage | |
| subsequent modification by readers is not Transparent. A copy that is | |
| not "Transparent" is called "Opaque". | |
| Examples of suitable formats for Transparent copies include plain | |
| ASCII without markup, Texinfo input format, LaTeX input format, SGML | |
| or XML using a publicly available DTD, and standard-conforming simple | |
| HTML designed for human modification. Opaque formats include | |
| PostScript, PDF, proprietary formats that can be read and edited only | |
| by proprietary word processors, SGML or XML for which the DTD and/or | |
| processing tools are not generally available, and the | |
| machine-generated HTML produced by some word processors for output | |
| purposes only. | |
| The "Title Page" means, for a printed book, the title page itself, | |
| plus such following pages as are needed to hold, legibly, the material | |
| this License requires to appear in the title page. For works in | |
| formats which do not have any title page as such, "Title Page" means | |
| the text near the most prominent appearance of the work's title, | |
| preceding the beginning of the body of the text. | |
| 2. VERBATIM COPYING | |
| You may copy and distribute the Document in any medium, either | |
| commercially or noncommercially, provided that this License, the | |
| copyright notices, and the license notice saying this License applies | |
| to the Document are reproduced in all copies, and that you add no other | |
| conditions whatsoever to those of this License. You may not use | |
| technical measures to obstruct or control the reading or further | |
| copying of the copies you make or distribute. However, you may accept | |
| compensation in exchange for copies. If you distribute a large enough | |
| number of copies you must also follow the conditions in section 3. | |
| You may also lend copies, under the same conditions stated above, and | |
| you may publicly display copies. | |
| 3. COPYING IN QUANTITY | |
| If you publish printed copies of the Document numbering more than 100, | |
| and the Document's license notice requires Cover Texts, you must enclose | |
| the copies in covers that carry, clearly and legibly, all these Cover | |
| Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on | |
| the back cover. Both covers must also clearly and legibly identify | |
| you as the publisher of these copies. The front cover must present | |
| the full title with all words of the title equally prominent and | |
| visible. You may add other material on the covers in addition. | |
| Copying with changes limited to the covers, as long as they preserve | |
| the title of the Document and satisfy these conditions, can be treated | |
| as verbatim copying in other respects. | |
| If the required texts for either cover are too voluminous to fit | |
| legibly, you should put the first ones listed (as many as fit | |
| reasonably) on the actual cover, and continue the rest onto adjacent | |
| pages. | |
| If you publish or distribute Opaque copies of the Document numbering | |
| more than 100, you must either include a machine-readable Transparent | |
| copy along with each Opaque copy, or state in or with each Opaque copy | |
| a publicly-accessible computer-network location containing a complete | |
| Transparent copy of the Document, free of added material, which the | |
| general network-using public has access to download anonymously at no | |
| charge using public-standard network protocols. If you use the latter | |
| option, you must take reasonably prudent steps, when you begin | |
| distribution of Opaque copies in quantity, to ensure that this | |
| Transparent copy will remain thus accessible at the stated location | |
| until at least one year after the last time you distribute an Opaque | |
| copy (directly or through your agents or retailers) of that edition to | |
| the public. | |
| It is requested, but not required, that you contact the authors of the | |
| Document well before redistributing any large number of copies, to give | |
| them a chance to provide you with an updated version of the Document. | |
| 4. MODIFICATIONS | |
| You may copy and distribute a Modified Version of the Document under | |
| the conditions of sections 2 and 3 above, provided that you release | |
| the Modified Version under precisely this License, with the Modified | |
| Version filling the role of the Document, thus licensing distribution | |
| and modification of the Modified Version to whoever possesses a copy | |
| of it. In addition, you must do these things in the Modified Version: | |
| A. Use in the Title Page (and on the covers, if any) a title distinct | |
| from that of the Document, and from those of previous versions | |
| (which should, if there were any, be listed in the History section | |
| of the Document). You may use the same title as a previous version | |
| if the original publisher of that version gives permission. | |
| B. List on the Title Page, as authors, one or more persons or entities | |
| responsible for authorship of the modifications in the Modified | |
| Version, together with at least five of the principal authors of the | |
| Document (all of its principal authors, if it has less than five). | |
| C. State on the Title page the name of the publisher of the | |
| Modified Version, as the publisher. | |
| D. Preserve all the copyright notices of the Document. | |
| E. Add an appropriate copyright notice for your modifications | |
| adjacent to the other copyright notices. | |
| F. Include, immediately after the copyright notices, a license notice | |
| giving the public permission to use the Modified Version under the | |
| terms of this License, in the form shown in the Addendum below. | |
| G. Preserve in that license notice the full lists of Invariant Sections | |
| and required Cover Texts given in the Document's license notice. | |
| H. Include an unaltered copy of this License. | |
| I. Preserve the section entitled "History", and its title, and add to | |
| it an item stating at least the title, year, new authors, and | |
| publisher of the Modified Version as given on the Title Page. If | |
| there is no section entitled "History" in the Document, create one | |
| stating the title, year, authors, and publisher of the Document as | |
| given on its Title Page, then add an item describing the Modified | |
| Version as stated in the previous sentence. | |
| J. Preserve the network location, if any, given in the Document for | |
| public access to a Transparent copy of the Document, and likewise | |
| the network locations given in the Document for previous versions | |
| it was based on. These may be placed in the "History" section. | |
| You may omit a network location for a work that was published at | |
| least four years before the Document itself, or if the original | |
| publisher of the version it refers to gives permission. | |
| K. In any section entitled "Acknowledgements" or "Dedications", | |
| preserve the section's title, and preserve in the section all the | |
| substance and tone of each of the contributor acknowledgements | |
| and/or dedications given therein. | |
| L. Preserve all the Invariant Sections of the Document, | |
| unaltered in their text and in their titles. Section numbers | |
| or the equivalent are not considered part of the section titles. | |
| M. Delete any section entitled "Endorsements". Such a section | |
| may not be included in the Modified Version. | |
| N. Do not retitle any existing section as "Endorsements" | |
| or to conflict in title with any Invariant Section. | |
| If the Modified Version includes new front-matter sections or | |
| appendices that qualify as Secondary Sections and contain no material | |
| copied from the Document, you may at your option designate some or all | |
| of these sections as invariant. To do this, add their titles to the | |
| list of Invariant Sections in the Modified Version's license notice. | |
| These titles must be distinct from any other section titles. | |
| You may add a section entitled "Endorsements", provided it contains | |
| nothing but endorsements of your Modified Version by various | |
| parties--for example, statements of peer review or that the text has | |
| been approved by an organization as the authoritative definition of a | |
| standard. | |
| You may add a passage of up to five words as a Front-Cover Text, and a | |
| passage of up to 25 words as a Back-Cover Text, to the end of the list | |
| of Cover Texts in the Modified Version. Only one passage of | |
| Front-Cover Text and one of Back-Cover Text may be added by (or | |
| through arrangements made by) any one entity. If the Document already | |
| includes a cover text for the same cover, previously added by you or | |
| by arrangement made by the same entity you are acting on behalf of, | |
| you may not add another; but you may replace the old one, on explicit | |
| permission from the previous publisher that added the old one. | |
| The author(s) and publisher(s) of the Document do not by this License | |
| give permission to use their names for publicity for or to assert or | |
| imply endorsement of any Modified Version. | |
| 5. COMBINING DOCUMENTS | |
| You may combine the Document with other documents released under this | |
| License, under the terms defined in section 4 above for modified | |
| versions, provided that you include in the combination all of the | |
| Invariant Sections of all of the original documents, unmodified, and | |
| list them all as Invariant Sections of your combined work in its | |
| license notice. | |
| The combined work need only contain one copy of this License, and | |
| multiple identical Invariant Sections may be replaced with a single | |
| copy. If there are multiple Invariant Sections with the same name but | |
| different contents, make the title of each such section unique by | |
| adding at the end of it, in parentheses, the name of the original | |
| author or publisher of that section if known, or else a unique number. | |
| Make the same adjustment to the section titles in the list of | |
| Invariant Sections in the license notice of the combined work. | |
| In the combination, you must combine any sections entitled "History" | |
| in the various original documents, forming one section entitled | |
| "History"; likewise combine any sections entitled "Acknowledgements", | |
| and any sections entitled "Dedications". You must delete all sections | |
| entitled "Endorsements." | |
| 6. COLLECTIONS OF DOCUMENTS | |
| You may make a collection consisting of the Document and other documents | |
| released under this License, and replace the individual copies of this | |
| License in the various documents with a single copy that is included in | |
| the collection, provided that you follow the rules of this License for | |
| verbatim copying of each of the documents in all other respects. | |
| You may extract a single document from such a collection, and distribute | |
| it individually under this License, provided you insert a copy of this | |
| License into the extracted document, and follow this License in all | |
| other respects regarding verbatim copying of that document. | |
| 7. AGGREGATION WITH INDEPENDENT WORKS | |
| A compilation of the Document or its derivatives with other separate | |
| and independent documents or works, in or on a volume of a storage or | |
| distribution medium, does not as a whole count as a Modified Version | |
| of the Document, provided no compilation copyright is claimed for the | |
| compilation. Such a compilation is called an "aggregate", and this | |
| License does not apply to the other self-contained works thus compiled | |
| with the Document, on account of their being thus compiled, if they | |
| are not themselves derivative works of the Document. | |
| If the Cover Text requirement of section 3 is applicable to these | |
| copies of the Document, then if the Document is less than one quarter | |
| of the entire aggregate, the Document's Cover Texts may be placed on | |
| covers that surround only the Document within the aggregate. | |
| Otherwise they must appear on covers around the whole aggregate. | |
| 8. TRANSLATION | |
| Translation is considered a kind of modification, so you may | |
| distribute translations of the Document under the terms of section 4. | |
| Replacing Invariant Sections with translations requires special | |
| permission from their copyright holders, but you may include | |
| translations of some or all Invariant Sections in addition to the | |
| original versions of these Invariant Sections. You may include a | |
| translation of this License provided that you also include the | |
| original English version of this License. In case of a disagreement | |
| between the translation and the original English version of this | |
| License, the original English version will prevail. | |
| 9. TERMINATION | |
| You may not copy, modify, sublicense, or distribute the Document except | |
| as expressly provided for under this License. Any other attempt to | |
| copy, modify, sublicense or distribute the Document is void, and will | |
| automatically terminate your rights under this License. However, | |
| parties who have received copies, or rights, from you under this | |
| License will not have their licenses terminated so long as such | |
| parties remain in full compliance. | |
| 10. FUTURE REVISIONS OF THIS LICENSE | |
| The Free Software Foundation may publish new, revised versions | |
| of the GNU Free Documentation License from time to time. Such new | |
| versions will be similar in spirit to the present version, but may | |
| differ in detail to address new problems or concerns. See | |
| http://www.gnu.org/copyleft/. | |
| Each version of the License is given a distinguishing version number. | |
| If the Document specifies that a particular numbered version of this | |
| License "or any later version" applies to it, you have the option of | |
| following the terms and conditions either of that specified version or | |
| of any later version that has been published (not as a draft) by the | |
| Free Software Foundation. If the Document does not specify a version | |
| number of this License, you may choose any version ever published (not | |
| as a draft) by the Free Software Foundation. | |
| ADDENDUM: How to use this License for your documents | |
| To use this License in a document you have written, include a copy of | |
| the License in the document and put the following copyright and | |
| license notices just after the title page: | |
| @smallexample | |
| Copyright (c) YEAR YOUR NAME. | |
| Permission is granted to copy, distribute and/or modify this document | |
| under the terms of the GNU Free Documentation License, Version 1.1 | |
| or any later version published by the Free Software Foundation; | |
| with the Invariant Sections being LIST THEIR TITLES, with the | |
| Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. | |
| A copy of the license is included in the section entitled "GNU | |
| Free Documentation License". | |
| @end smallexample | |
| If you have no Invariant Sections, write "with no Invariant Sections" | |
| instead of saying which ones are invariant. If you have no | |
| Front-Cover Texts, write "no Front-Cover Texts" instead of | |
| "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. | |
| If your document contains nontrivial examples of program code, we | |
| recommend releasing these examples in parallel under your choice of | |
| free software license, such as the GNU General Public License, | |
| to permit their use in free software. | |
| @node Index | |
| @unnumbered Index | |
| @printindex cp | |
| @contents | |
| @bye |