.\" Copyright (c) 1991 Free Software Foundation
.\" See section COPYING for conditions for redistribution
.TH size 1 "5 November 1991" "cygnus support" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
\(**
..

.SH NAME
size \- list section sizes and total size.

.SH SYNOPSIS
.hy 0
.na
.TP
.B size
.RB "[\|" \-A \||\| \-B \||\| \c
.BI "\-\-format=" compatibility\c
\&\|]
.RB "[\|" \-\-help "\|]" 
.RB "[\|" \-d \||\| \-o \||\| \-x\c
\||\|\c
.BI "\-\-radix=" number\c
\&\|]
.RB "[\|" \c
.BI "\-\-target=" bfdname\c
\&\|]
.RB "[\|" \-V \||\| \-\-version "\|]"  
.I objfile\c
\&.\|.\|.
.ad b
.hy 1
.SH DESCRIPTION
The GNU \c
.B size\c
\& utility lists the section sizes\(em\&and the total
size\(em\&for each of the object files
.I objfile
in its argument list.
By default, one line of output is generated for each object file or each
module in an archive.

.SH OPTIONS
.TP
.B \-A
.TP
.B \-B
.TP
.BI "\-\-format " "compatibility"
Using one of these options, you can choose whether the output from GNU
\c
.B size\c
\& resembles output from System V \c
.B size\c
\& (using `\|\c
.B \-A\c
\|',
or `\|\c
.B \-\-format=sysv\c
\|'), or Berkeley \c
.B size\c
\& (using `\|\c
.B \-B\c
\|', or
`\|\c
.B \-\-format=berkeley\c
\|').  The default is the one-line format similar to
Berkeley's.  

.TP
.B \-\-help
Show a summary of acceptable arguments and options.

.TP
.B \-d
.TP
.B \-o
.TP
.B \-x
.TP
.BI "\-\-radix " "number"
Using one of these options, you can control whether the size of each
section is given in decimal (`\|\c
.B \-d\c
\|', or `\|\c
.B \-\-radix 10\c
\|'); octal
(`\|\c
.B \-o\c
\|', or `\|\c
.B \-\-radix 8\c
\|'); or hexadecimal (`\|\c
.B \-x\c
\|', or
`\|\c
.B \-\-radix 16\c
\|').  In `\|\c
.B \-\-radix \c
.I number\c
\&\c
\|', only the three
values (8, 10, 16) are supported.  The total size is always given in two
radices; decimal and hexadecimal for `\|\c
.B \-d\c
\|' or `\|\c
.B \-x\c
\|' output, or
octal and hexadecimal if you're using `\|\c
.B \-o\c
\|'.

.TP
.BI "\-\-target " "bfdname"
You can specify a particular object-code format for \c
.I objfile\c
\& as
\c
.I bfdname\c
\&.  This may not be necessary; \c
.I size\c
\& can
automatically recognize many formats.   See 
.BR objdump ( 1 ) 
for information
on listing available formats.

.TP
.B \-V
.TP
.B \-\-version
Display version number information on \c
.B size\c
\& itself.

.SH "SEE ALSO"
.RB "`\|" binutils "\|'" 
entry in 
.BR info ;
.IR "The GNU Binary Utilities" ,
 Roland H. Pesch (October 1991); 
.BR ar "(" 1 "),"
.BR objdump ( 1 ).

.SH COPYING
Copyright (c) 1991 Free Software Foundation, Inc.
.PP
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.
.PP
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
