1991-10-05 02:07:51 +00:00
|
|
|
\input texinfo
|
|
|
|
@setfilename binutils.info
|
|
|
|
@synindex ky cp
|
|
|
|
@c
|
|
|
|
@c This file documents the GNU binary utilities "ar", "ld", "objdump", "nm",
|
|
|
|
@c "size", "strip", and "ranlib".
|
|
|
|
@c
|
|
|
|
@c Copyright (C) 1991 Free Software Foundation, Inc.
|
|
|
|
@c
|
|
|
|
@c This text may be freely distributed under the terms of the GNU
|
|
|
|
@c General Public License.
|
|
|
|
@c
|
|
|
|
@c $Id$
|
1991-10-11 19:50:14 +00:00
|
|
|
@iftex
|
1991-10-05 02:07:51 +00:00
|
|
|
@finalout
|
|
|
|
@c @smallbook
|
1991-10-11 19:50:14 +00:00
|
|
|
@end iftex
|
1991-10-05 02:07:51 +00:00
|
|
|
@c @cropmarks
|
|
|
|
@setchapternewpage odd
|
|
|
|
@settitle GNU Binary Utilities
|
|
|
|
@titlepage
|
1991-10-11 19:50:14 +00:00
|
|
|
@title The GNU Binary Utilities
|
|
|
|
@subtitle Version 1.90
|
1991-10-05 02:07:51 +00:00
|
|
|
@sp 1
|
1991-10-08 02:22:16 +00:00
|
|
|
@subtitle October 1991
|
1991-10-11 19:50:14 +00:00
|
|
|
@author Roland H. Pesch
|
|
|
|
@author Cygnus Support
|
1991-10-05 02:07:51 +00:00
|
|
|
@page
|
|
|
|
|
|
|
|
@tex
|
|
|
|
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
|
|
|
|
\xdef\manvers{\$Revision$} % For use in headers, footers too
|
|
|
|
{\parskip=0pt \hfill Cygnus Support\par \hfill \manvers\par \hfill
|
|
|
|
\TeX{}info \texinfoversion\par }
|
|
|
|
@end tex
|
|
|
|
|
|
|
|
@vskip 0pt plus 1filll
|
|
|
|
Copyright @copyright{} 1991 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
|
|
this manual provided the copyright notice and this permission notice
|
|
|
|
are preserved on all copies.
|
|
|
|
|
|
|
|
Permission is granted to copy and distribute modified versions of this
|
|
|
|
manual under the conditions for verbatim copying, provided also that
|
|
|
|
the entire resulting derived work is distributed under the terms of a
|
|
|
|
permission notice identical to this one.
|
|
|
|
|
|
|
|
Permission is granted to copy and distribute translations of this manual
|
|
|
|
into another language, under the above conditions for modified versions.
|
|
|
|
@end titlepage
|
|
|
|
|
|
|
|
@node Top, ar, (dir), (dir)
|
1991-10-08 02:22:16 +00:00
|
|
|
@chapter Introduction
|
|
|
|
|
|
|
|
This brief manual contains preliminary documentation for the GNU binary
|
1991-10-10 00:56:38 +00:00
|
|
|
utilities (collectively version 1.90): @samp{ar}, @samp{objdump},
|
1991-10-08 02:22:16 +00:00
|
|
|
@samp{nm}, @samp{size}, @samp{strip}, and @samp{ranlib}. @refill
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@ifinfo
|
1991-10-05 02:07:51 +00:00
|
|
|
Copyright @copyright{} 1991 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
|
|
this manual provided the copyright notice and this permission notice
|
|
|
|
are preserved on all copies.
|
|
|
|
|
|
|
|
@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
|
|
|
|
|
|
|
|
Permission is granted to copy and distribute modified versions of this
|
|
|
|
manual under the conditions for verbatim copying, provided also that
|
|
|
|
the entire resulting derived work is distributed under the terms of a
|
|
|
|
permission notice identical to this one.
|
|
|
|
|
|
|
|
Permission is granted to copy and distribute translations of this manual
|
|
|
|
into another language, under the above conditions for modified versions.
|
|
|
|
@end ifinfo
|
|
|
|
|
|
|
|
@menu
|
1991-10-11 19:50:14 +00:00
|
|
|
* ar:: ar
|
|
|
|
* ld:: ld
|
|
|
|
* nm:: nm
|
|
|
|
* objdump:: objdump
|
|
|
|
* ranlib:: ranlib
|
|
|
|
* size:: size
|
|
|
|
* strip:: strip
|
1991-10-05 02:07:51 +00:00
|
|
|
@end menu
|
|
|
|
|
|
|
|
@node ar, ld, Top, Top
|
|
|
|
@chapter ar
|
|
|
|
|
|
|
|
@smallexample
|
1991-10-08 02:22:16 +00:00
|
|
|
ar [-]@var{p}@var{mod} [ @var{membername} ] @var{archive} @var{files}@dots{}
|
1991-10-05 02:07:51 +00:00
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
The GNU @code{ar} program creates, modifies, and extracts
|
|
|
|
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 may be reconstituted on
|
|
|
|
extraction.
|
|
|
|
|
1991-10-08 20:59:54 +00:00
|
|
|
GNU @code{ar} can maintain archives whose members have names of any
|
|
|
|
length; however, depending on how @code{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).
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@code{ar} is considered a binary utility because archives of this sort
|
|
|
|
are most often used as @dfn{libraries} holding commonly needed
|
|
|
|
subroutines.
|
|
|
|
|
|
|
|
@code{ar} will create an index to the symbols defined in relocatable
|
1991-10-08 23:55:58 +00:00
|
|
|
object modules in the archive when you specify the modifier @samp{s}.
|
1991-10-05 02:07:51 +00:00
|
|
|
Once created, this index is updated in the archive whenever @code{ar}
|
1991-10-10 00:48:05 +00:00
|
|
|
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.
|
|
|
|
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
You may use @samp{nm -s} or @samp{nm +print-armap} to list this index
|
1991-10-05 02:07:51 +00:00
|
|
|
table. If an archive lacks the table, another form of @code{ar} called
|
|
|
|
@code{ranlib} can be used to add just the table.
|
|
|
|
|
|
|
|
@code{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{files} arguments,
|
|
|
|
specifying particular files to operate on.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
GNU @code{ar} allows you to mix the operation code @var{p} and modifier
|
|
|
|
flags @var{mod} in any order, within the first command-line argument.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
If you wish, you may prefix the first command-line argument with a
|
1991-10-05 02:07:51 +00:00
|
|
|
dash.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
The @var{p} keyletter specifies what operation to execute; it may be
|
1991-10-05 02:07:51 +00:00
|
|
|
any of the following, but you must specify only one of them:
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item d
|
|
|
|
@emph{Delete} modules from the archive. Specify the names of modules to
|
|
|
|
be deleted as @var{files}; the archive is untouched if you
|
|
|
|
specify no files to delete.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
If you specify the @samp{v} modifier, @code{ar} will list each module
|
1991-10-05 02:07:51 +00:00
|
|
|
as it is deleted.
|
|
|
|
|
|
|
|
@item m
|
|
|
|
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.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
If no modifiers are used with @code{m}, any members you name in the
|
1991-10-05 02:07:51 +00:00
|
|
|
@var{files} arguments are moved to the @emph{end} of the archive;
|
1991-10-08 23:55:58 +00:00
|
|
|
you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
|
1991-10-05 02:07:51 +00:00
|
|
|
specified place instead.
|
|
|
|
|
|
|
|
@item p
|
|
|
|
@emph{Print} the specified members of the archive, to the standard
|
1991-10-08 23:55:58 +00:00
|
|
|
output file. If the @samp{v} modifier is specified, show the member
|
1991-10-05 02:07:51 +00:00
|
|
|
name before copying its contents to standard output.
|
|
|
|
|
1991-10-08 20:59:54 +00:00
|
|
|
If you specify no @var{files}, all the files in the archive are printed.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@item q
|
|
|
|
@emph{Quick append}; add @var{files} to the end of @var{archive},
|
1991-10-10 00:48:05 +00:00
|
|
|
without checking for replacement.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
|
1991-10-05 02:07:51 +00:00
|
|
|
operation; new members are always placed at the end of the archive.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
The modifier @samp{v} makes @code{ar} list each file as it is appended.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-10 00:48:05 +00:00
|
|
|
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
|
|
|
|
@code{ranlib} explicitly to update the symbol table index.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@item r
|
|
|
|
Insert @var{files} 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{files} doesn't exist, @code{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
|
1991-10-08 23:55:58 +00:00
|
|
|
use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request
|
1991-10-05 02:07:51 +00:00
|
|
|
placement relative to some existing member.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
The modifier @samp{v} used with this operation elicits a line of
|
1991-10-05 02:07:51 +00:00
|
|
|
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
|
|
|
|
Display a @emph{table} listing the contents of @var{archive}, or those
|
|
|
|
of the files listed in @var{files} 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
|
1991-10-08 23:55:58 +00:00
|
|
|
request that by also specifying the @samp{v} modifier.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
If you do not specify any @var{files}, all files in the archive
|
1991-10-08 20:59:54 +00:00
|
|
|
are listed.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
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} will list 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
|
1991-10-08 02:22:16 +00:00
|
|
|
@emph{Extract} members (named @var{files}) from the archive. You can
|
1991-10-08 23:55:58 +00:00
|
|
|
use the @samp{v} modifier with this operation, to request that
|
1991-10-08 02:22:16 +00:00
|
|
|
@code{ar} list each name as it extracts it.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
If you do not specify any @var{files}, all files in the archive
|
1991-10-08 20:59:54 +00:00
|
|
|
are extracted.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@end table
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
A number of modifiers (@var{mod}) may immediately follow the @var{p}
|
|
|
|
keyletter, to specify variations on an operation's behavior:
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item a
|
|
|
|
Add new files @emph{after} an existing member of the
|
|
|
|
archive. If you use the modifier @code{a}, the name of an existing archive
|
|
|
|
member must be present as the @var{membername} argument, before the
|
|
|
|
@var{archive} specification.
|
|
|
|
|
|
|
|
@item b
|
|
|
|
Add new files @emph{before} an existing member of the
|
|
|
|
archive. If you use the modifier @code{b}, the name of an existing archive
|
|
|
|
member must be present as the @var{membername} argument, before the
|
|
|
|
@var{archive} specification. (same as @samp{i}).
|
|
|
|
|
|
|
|
@item c
|
|
|
|
@emph{Create} the archive. The specified @var{archive} is always
|
|
|
|
created if it didn't exist, when you request an update. But a warning is
|
|
|
|
issued unless you specify in advance that you expect to create it, by
|
1991-10-08 23:55:58 +00:00
|
|
|
using this modifier.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@item i
|
|
|
|
Insert new files @emph{before} an existing member of the
|
|
|
|
archive. If you use the modifier @code{i}, the name of an existing archive
|
|
|
|
member must be present as the @var{membername} argument, before the
|
|
|
|
@var{archive} specification. (same as @samp{b}).
|
|
|
|
|
|
|
|
@item l
|
1991-10-08 23:55:58 +00:00
|
|
|
This modifier is accepted but not used.
|
1991-10-08 20:59:54 +00:00
|
|
|
@c whaffor ar l modifier??? presumably compat; with
|
|
|
|
@c what???---pesch@@cygnus.com, 25jan91
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@item o
|
|
|
|
Preserve the @emph{original} dates of members when extracting them. If
|
1991-10-08 23:55:58 +00:00
|
|
|
you do not specify this modifier, files extracted from the archive
|
1991-10-05 02:07:51 +00:00
|
|
|
will be stamped with the time of extraction.
|
|
|
|
|
|
|
|
@item s
|
|
|
|
Write an object-file index into the archive, or update an existing one,
|
1991-10-08 23:55:58 +00:00
|
|
|
even if no other change is made to the archive. You may use this modifier
|
1991-10-05 02:07:51 +00:00
|
|
|
flag either with any operation, or alone. Running @samp{ar s} on an
|
|
|
|
archive is equivalent to running @samp{ranlib} on it.
|
|
|
|
|
|
|
|
@item u
|
1991-10-08 23:55:58 +00:00
|
|
|
Normally, @code{ar r}@dots{} inserts all files
|
1991-10-05 02:07:51 +00:00
|
|
|
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
|
1991-10-08 23:55:58 +00:00
|
|
|
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}.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@item v
|
1991-10-08 23:55:58 +00:00
|
|
|
This modifier requests the @emph{verbose} version of an operation. Many
|
1991-10-05 02:07:51 +00:00
|
|
|
operations display additional information, such as filenames processed,
|
1991-10-08 23:55:58 +00:00
|
|
|
when the modifier @samp{v} is appended.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@end table
|
|
|
|
|
|
|
|
@node ld, nm, ar, Top
|
|
|
|
@chapter ld
|
|
|
|
The GNU linker @code{ld} is now described in a separate manual.
|
|
|
|
@xref{Top, , Overview, , GLD: the GNU linker}.
|
|
|
|
|
|
|
|
@node nm, objdump, ld, Top
|
|
|
|
@chapter nm
|
|
|
|
|
|
|
|
@smallexample
|
|
|
|
nm [ -a | +debug-syms ] [ -g | +extern-only ]
|
1991-10-08 02:22:16 +00:00
|
|
|
[ -s | +print-armap ] [ -o | +print-file-name ]
|
|
|
|
[ -n | +numeric-sort ] [ -p | +no-sort ]
|
|
|
|
[ -r | +reverse-sort ] [ -u | +undefined-only ]
|
1991-10-08 23:55:58 +00:00
|
|
|
[ +target @var{bfdname} ]
|
1991-10-05 02:07:51 +00:00
|
|
|
[ @var{objfiles}@dots{} ]
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
GNU @code{nm} will list the symbols from object files @var{objfiles}.
|
|
|
|
|
|
|
|
The long and short forms of options, shown here as alternatives, are
|
|
|
|
equivalent.
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item @var{objfiles}@dots{}
|
|
|
|
Object files whose symbols are to be listed. If no object files are
|
|
|
|
listed as arguments, @code{nm} assumes @samp{a.out}.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +debug-syms
|
|
|
|
@itemx -a
|
1991-10-05 02:07:51 +00:00
|
|
|
Display debugger-only symbols; normally these are not listed.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +extern-only
|
|
|
|
@itemx -g
|
1991-10-05 02:07:51 +00:00
|
|
|
Display only external symbols.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +no-sort
|
|
|
|
@itemx -p
|
|
|
|
Don't bother to sort the symbols in any order; just print them in the
|
|
|
|
order encountered.
|
|
|
|
|
|
|
|
@item +numeric-sort
|
|
|
|
@itemx -n
|
1991-10-05 02:07:51 +00:00
|
|
|
Sort symbols numerically by their addresses, not alphabetically by their
|
|
|
|
names.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +print-armap
|
|
|
|
@itemx -s
|
|
|
|
When listing symbols from archives, list the index: a mapping (stored in
|
1991-10-08 20:59:54 +00:00
|
|
|
the archive by @code{ar} or @code{ranlib}) of what modules contain
|
1991-10-08 02:22:16 +00:00
|
|
|
definitions for what names.
|
|
|
|
|
|
|
|
@item +print-file-name
|
|
|
|
@itemx -o
|
1991-10-05 02:07:51 +00:00
|
|
|
Precede each symbol by the name of the input file where it was found,
|
|
|
|
rather than identifying the input file once only before all of its
|
|
|
|
symbols.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +reverse-sort
|
|
|
|
@itemx -r
|
1991-10-05 02:07:51 +00:00
|
|
|
Reverse the sense of the sort (whether numeric or alphabetic); let the
|
|
|
|
last come first.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +target @var{bfdname}
|
|
|
|
@c @item +target
|
|
|
|
Specify an object code format other than your system's default format.
|
|
|
|
@xref{objdump}, for information on listing available formats.
|
|
|
|
@c FIXME what *does* +target/no arg do?
|
|
|
|
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +undefined-only
|
|
|
|
@itemx -u
|
1991-10-05 02:07:51 +00:00
|
|
|
Display only undefined symbols (those external to each object file).
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
|
|
|
@node objdump, ranlib, nm, Top
|
|
|
|
@chapter objdump
|
|
|
|
|
|
|
|
@smallexample
|
1991-10-08 02:28:43 +00:00
|
|
|
objdump [ -a ] [ -b @var{bfdname} ] [ -d ] [ -f ]
|
|
|
|
[ -h | +header ] [ -i ] [ -j @var{section} ] [ -l ]
|
|
|
|
[ -m @var{machine} ] [ -r | +reloc ] [ -s ]
|
|
|
|
[ -t | +syms ] [ -x ]
|
|
|
|
@var{objfiles}@dots{}
|
1991-10-05 02:07:51 +00:00
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@code{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.
|
|
|
|
|
|
|
|
The long and short forms of options, shown here as alternatives, are
|
|
|
|
equivalent.
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item @var{objfiles}@dots{}
|
|
|
|
The object files to be examined.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item -a
|
|
|
|
@c print_arelt_descr
|
|
|
|
If any files from @var{objfiles} are archives, display the archive
|
|
|
|
header information (in a format similar to @samp{ls -l}).
|
|
|
|
|
|
|
|
@c suggest longname +target or +format or +bfd
|
|
|
|
@item -b @var{bfdname}
|
|
|
|
You can specify a particular object-code format for your object files as
|
|
|
|
@var{bfdname}. This 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 (@samp{-h}) of
|
1991-10-08 23:55:58 +00:00
|
|
|
@file{fu.o}, which is explicitly identified (@samp{-m}) as a Vax object
|
1991-10-08 02:22:16 +00:00
|
|
|
file in the format produced by Oasys compilers. You can list the
|
1991-10-08 23:55:58 +00:00
|
|
|
formats available with the @samp{-i} option.
|
1991-10-08 02:22:16 +00:00
|
|
|
|
|
|
|
@item -d
|
|
|
|
Disassemble. Display the assembler mnemonics for the machine
|
|
|
|
instructions from @var{objfiles}.
|
|
|
|
|
|
|
|
@item -f
|
|
|
|
File header. Display summary information from the overall header of
|
|
|
|
each file in @var{objfiles}.
|
|
|
|
|
|
|
|
@item +header
|
|
|
|
@itemx -h
|
|
|
|
Header. Display summary information from the section headers of the
|
|
|
|
object file.
|
|
|
|
|
|
|
|
@item -i
|
|
|
|
Display a list showing all architectures and object formats available
|
|
|
|
for specification with @code{-b} or @code{-m}.
|
|
|
|
|
|
|
|
@c suggest longname +section
|
|
|
|
@item -j @var{name}
|
|
|
|
Display information only for section @var{name}
|
|
|
|
|
|
|
|
@c suggest longname +label or +linespec
|
|
|
|
@item -l
|
|
|
|
Label the display (using debugging information) with the source filename
|
|
|
|
and line numbers corresponding to the object code shown.
|
|
|
|
|
|
|
|
@c suggest longname +architecture
|
|
|
|
@item -m @var{machine}
|
|
|
|
Specify the object files @var{objfiles} are for architecture
|
|
|
|
@var{machine}. You can list available architectures using the @samp{-i}
|
|
|
|
option.
|
|
|
|
|
|
|
|
@item +reloc
|
|
|
|
@itemx -r
|
1991-10-05 02:07:51 +00:00
|
|
|
Relocation. Print the relocation entries of the file.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item -s
|
|
|
|
Display the full contents of any sections requested.
|
|
|
|
|
|
|
|
@item +syms
|
|
|
|
@itemx -t
|
1991-10-05 02:07:51 +00:00
|
|
|
Symbol Table. Print the symbol table entries of the file.
|
|
|
|
This is similar to the information provided by the @samp{nm} program.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item -x
|
|
|
|
Display all available header information, including the symbol table and
|
1991-10-08 23:55:58 +00:00
|
|
|
relocation entries. Using @samp{-x} is equivalent to specifying all of
|
|
|
|
@samp{-f -a -h -r -t}.
|
1991-10-08 02:22:16 +00:00
|
|
|
|
1991-10-05 02:07:51 +00:00
|
|
|
@end table
|
|
|
|
|
|
|
|
@node ranlib, size, objdump, Top
|
|
|
|
@chapter ranlib
|
|
|
|
|
|
|
|
@smallexample
|
1991-10-08 02:22:16 +00:00
|
|
|
ranlib @var{archive}
|
1991-10-05 02:07:51 +00:00
|
|
|
@end smallexample
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
@code{ranlib} generates an index to the contents of an archive, and
|
1991-10-05 02:07:51 +00:00
|
|
|
stores it in the archive. The index lists each symbol defined by a
|
|
|
|
member of an archive that is a relocatable object file.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
You may use @code{nm -s} or @code{nm +print-armap} to list this index.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
The GNU @code{ranlib} program is another form of GNU @code{ar}; running
|
|
|
|
@code{ranlib} is completely equivalent to executing @samp{ar -s}.
|
|
|
|
@xref{ar}.
|
|
|
|
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@ignore
|
|
|
|
@c FIXME vintage ranlib had options [ -t | +touch ] [ -v | +verbose ]
|
|
|
|
@c which are gone here. Good or evil?
|
|
|
|
|
1991-10-05 02:07:51 +00:00
|
|
|
@code{ranlib}'s options make it report on what it's doing and fake an
|
|
|
|
update of a particular archive's index.
|
|
|
|
|
|
|
|
Any command-line options must precede the archive name.
|
|
|
|
|
|
|
|
The long and short forms of options, shown here as alternatives, are
|
|
|
|
equivalent.
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
|
|
|
|
@item -t | +touch
|
|
|
|
You can use the ``touch'' option to fake an update of the index
|
|
|
|
table in archives; @code{ranlib} will first set the current date for the
|
|
|
|
index object module in the archive (to make it appear to have changed).
|
|
|
|
|
|
|
|
@item -v | +verbose
|
|
|
|
Use this option if you'd like informational messages about what
|
|
|
|
@code{ranlib} is up to, while it loops through the specified archives.
|
|
|
|
|
|
|
|
@end table
|
1991-10-08 02:22:16 +00:00
|
|
|
@end ignore
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@node size, strip, ranlib, Top
|
|
|
|
@chapter size
|
|
|
|
|
|
|
|
@smallexample
|
1991-10-08 23:55:58 +00:00
|
|
|
size [ -A | -B | +format @var{compatibility} ]
|
|
|
|
[ +help ] [ -d | -o | -x | +radix @var{number} ]
|
|
|
|
[ +target @var{bfdname} [ -V | +version ]
|
1991-10-08 02:22:16 +00:00
|
|
|
@var{objfiles}@dots{}
|
1991-10-05 02:07:51 +00:00
|
|
|
@end smallexample
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
The GNU @code{size} utility lists the section sizes---and the total
|
|
|
|
size---for each of the object files @var{objfiles} in its argument list.
|
|
|
|
By default, one line of output is generated for each object file or each
|
|
|
|
module in an archive.
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
The command line options have the following meanings:
|
|
|
|
@table @code
|
1991-10-08 23:55:58 +00:00
|
|
|
@item @var{objfiles}@dots{}
|
|
|
|
The object files to be examined.
|
1991-10-08 02:22:16 +00:00
|
|
|
|
|
|
|
@item +format @var{compatibility}
|
|
|
|
@itemx -A
|
|
|
|
@itemx -B
|
|
|
|
Using one of these options, you can choose whether the output from GNU
|
|
|
|
@code{size} resembles output from System V @code{size} (using @samp{-A},
|
|
|
|
or @samp{+format sysv}, or Berkeley @code{size} (using @samp{-B}, or
|
|
|
|
@samp{+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
|
|
|
|
@code{size}:
|
1991-10-05 02:07:51 +00:00
|
|
|
@smallexample
|
1991-10-08 02:22:16 +00:00
|
|
|
eg$ size +format Berkeley ranlib size
|
1991-10-11 19:50:14 +00:00
|
|
|
text data bss dec hex filename
|
|
|
|
294880 81920 11592 388392 5ed28 ranlib
|
|
|
|
294880 81920 11888 388688 5ee50 size
|
1991-10-08 02:22:16 +00:00
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
@noindent
|
|
|
|
This is the same data, but displayed closer to System V conventions:
|
1991-10-05 02:07:51 +00:00
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@smallexample
|
|
|
|
eg$ size +format SysV ranlib size
|
|
|
|
ranlib :
|
1991-10-11 19:50:14 +00:00
|
|
|
section size addr
|
|
|
|
.text 294880 8192
|
|
|
|
.data 81920 303104
|
|
|
|
.bss 11592 385024
|
|
|
|
Total 388392
|
1991-10-08 02:22:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
size :
|
1991-10-11 19:50:14 +00:00
|
|
|
section size addr
|
|
|
|
.text 294880 8192
|
|
|
|
.data 81920 303104
|
|
|
|
.bss 11888 385024
|
|
|
|
Total 388688
|
1991-10-08 02:28:43 +00:00
|
|
|
@end smallexample
|
1991-10-08 02:22:16 +00:00
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
@item +help
|
|
|
|
Show a summary of acceptable arguments and options.
|
|
|
|
|
|
|
|
@item +radix @var{number}
|
|
|
|
@itemx -d
|
|
|
|
@itemx -o
|
|
|
|
@itemx -x
|
|
|
|
Using one of these options, you can control whether the size of each
|
|
|
|
section is given in decimal (@samp{-d}, or @samp{+radix 10}); octal
|
|
|
|
(@samp{-o}, or @samp{+radix 8}); or hexadecimal (@samp{-x}, or
|
|
|
|
@samp{+radix 16}). In @samp{+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 @samp{-d} or @samp{-x} output, or
|
|
|
|
octal and hexadecimal if you're using @samp{-o}.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +target @var{bfdname}
|
|
|
|
You can specify a particular object-code format for @var{objfiles} as
|
|
|
|
@var{bfdname}. This may not be necessary; @var{size} can
|
|
|
|
automatically recognize many formats. @xref{objdump}, for information
|
|
|
|
on listing available formats.
|
|
|
|
|
|
|
|
@item +version
|
|
|
|
@itemx -V
|
|
|
|
Display version number information on @code{size} itself.
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@node strip, , size, Top
|
|
|
|
@chapter strip
|
|
|
|
|
|
|
|
@smallexample
|
1991-10-08 02:22:16 +00:00
|
|
|
strip [ -s | +strip-all ] [ -g | -S | +strip-debug ]
|
1991-10-05 02:07:51 +00:00
|
|
|
[ -x | +discard-all ] [ -X | +discard-locals ]
|
1991-10-08 02:22:16 +00:00
|
|
|
[ -T @var{bfdname} ]
|
1991-10-05 02:07:51 +00:00
|
|
|
@var{objfiles}@dots{}
|
|
|
|
@end smallexample
|
|
|
|
|
|
|
|
GNU @code{strip} will discard all symbols from object files
|
|
|
|
@var{objfiles}, if no options are specified; or only certain symbols,
|
|
|
|
depending on its command-line options.
|
|
|
|
|
|
|
|
@code{strip} will not execute unless at least one object file is listed.
|
|
|
|
|
1991-10-08 23:55:58 +00:00
|
|
|
@quotation
|
1991-10-05 02:07:51 +00:00
|
|
|
@emph{WARNING:} @code{strip} modifies the files named in its argument,
|
|
|
|
rather than writing modified copies under different names.
|
1991-10-08 23:55:58 +00:00
|
|
|
@end quotation
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
The long and short forms of options, shown here as alternatives, are
|
|
|
|
equivalent.
|
|
|
|
|
|
|
|
@table @code
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +strip-all
|
|
|
|
@itemx -s
|
1991-10-05 02:07:51 +00:00
|
|
|
This is the default case: strip all symbol entries from @var{objfiles}.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +strip-debug
|
|
|
|
@itemx -g
|
|
|
|
@itemx -S
|
1991-10-05 02:07:51 +00:00
|
|
|
Discard only debugging symbol information from @var{objfiles}.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +discard-all
|
|
|
|
@itemx -x
|
1991-10-05 02:07:51 +00:00
|
|
|
Discard all symbols local to each file in @var{objfiles}.
|
|
|
|
@emph{WARNING:} Note that @code{+discard-all} discards only @emph{local}
|
|
|
|
symbols, in spite of its name.
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item +discard-locals
|
|
|
|
@itemx -X
|
1991-10-05 02:07:51 +00:00
|
|
|
Discard local symbols starting with @samp{L} from each file in
|
|
|
|
@var{objfiles}. (Some compilers produce internally-used symbols that
|
|
|
|
begin with @samp{L}.)
|
|
|
|
|
1991-10-08 02:22:16 +00:00
|
|
|
@item -T @var{bfdname}
|
|
|
|
You can specify a particular object-code format @var{bfdname} for
|
|
|
|
@var{objfiles}. This may not be necessary; @var{strip} can automatically
|
|
|
|
recognize many formats. @xref{objdump}, for information on listing
|
|
|
|
available formats.
|
|
|
|
@end table
|
1991-10-05 02:07:51 +00:00
|
|
|
|
|
|
|
@contents
|
|
|
|
@bye
|
|
|
|
|
|
|
|
|