Copyright 1989 AT&T Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with
the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
size [-f] [-F] [-n] [-o] [-V] [-x] filename...
The size command produces segment or section size information in bytes for each loaded section in ELF object files. size prints out the size of the text, data, and bss (uninitialized data) segments (or sections) and their total.
size processes ELF object files entered on the command line. If an archive file is input to the size command, the information for each object file in the archive is displayed.
When calculating segment information, the size command prints out the total file size of the non-writable segments, the total file size of the writable segments, and the total memory size of the writable segments minus the total file size of the writable segments.
If it cannot calculate segment information, size calculates section information. When calculating section information, it prints out the total size of sections that are allocatable, non-writable, and not NOBITS, the total size of the sections that are allocatable, writable, and not NOBITS, and the total size of the writable sections of type NOBITS. NOBITS sections do not actually take up space in the filename.
If size cannot calculate either segment or section information, it prints an error message and stops processing the file.
The following options are supported:
-f
Prints out the size of each allocatable section, the name of the section, and the total of the section sizes. If there is no section data, size prints out an error message and stops processing the file.
-F
Prints out the size of each loadable segment, the permission flags of the segment, then the total of the loadable segment sizes. If there is no segment data, size prints an error message and stops processing the file.
-n
Prints out non-loadable segment or non-allocatable section sizes. If segment data exists, size prints out the memory size of each loadable segment or file size of each non-loadable segment, the permission flags, and the total size of the segments. If there is no segment data, size prints out, for each allocatable and non-allocatable section, the memory size, the section name, and the total size of the sections. If there is no segment or section data, size prints an error message and stops processing.
-o
Prints numbers in octal, not decimal.
-V
Prints the version information for the size command on the standard error output.
-x
Prints numbers in hexadecimal, not decimal.
The examples below are typical size output.
Example 1 Producing size information
example% size filename
2724 + 88 + 0 = 2812
Example 2 Producing allocatable section size information
example% size -f filename
26(.text) + 5(.init) + 5(.fini) = 36
Example 3 Producing loadable segment size information
example% size -F filename 2724(r-x) + 88(rwx) + 0(rwx) = 2812 ... (If statically linked)
as(1), ld(1), ar.h(3HEAD), a.out(4), attributes(5)
Since the size of bss sections is not known until link-edit time, the size command will not give the true total size of pre-linked objects.