summaryrefslogtreecommitdiff
path: root/usr/src/tools/scripts/find_elf.1
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/tools/scripts/find_elf.1')
-rw-r--r--usr/src/tools/scripts/find_elf.1176
1 files changed, 176 insertions, 0 deletions
diff --git a/usr/src/tools/scripts/find_elf.1 b/usr/src/tools/scripts/find_elf.1
new file mode 100644
index 0000000000..828b8e21a2
--- /dev/null
+++ b/usr/src/tools/scripts/find_elf.1
@@ -0,0 +1,176 @@
+.\" Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+.\" Use is subject to license terms.
+.\"
+.\" CDDL HEADER START
+.\"
+.\" 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]
+.\"
+.\" CDDL HEADER END
+.\"
+.TH find_elf 1 "2 July 2009"
+.SH NAME
+find_elf \- Locate ELF sharable objects and executables
+.SH SYNOPSIS
+\fBfind_elf [-frs] path\fP
+.LP
+.SH DESCRIPTION
+.IX "OS-Net build tools" "find_elf" "" "\fBfind_elf\fP"
+The
+.I find_elf
+command descends a directory hierarchy and produces one line
+of output on stdout for each ELF executable or sharable object found.
+.LP
+.SH OPTIONS
+.LP
+The following options are supported:
+.TP 4
+.B \-f
+Fast Mode. When reading directories, the file name and modes are
+used to eliminate files from consideration and speed up the search:
+Executables must have the execute bit set, and
+sharable objects must end with a .so extension. Files that do not
+meet these requirements are silently eliminated from consideration without
+further analysis.
+.TP 4
+.B \-r
+Report file names as relative paths, relative to the given file or directory,
+instead of fully qualified.
+.TP 4
+.B \-s
+Only report sharable objects.
+.LP
+.SH OUTPUT
+.LP
+.I find_elf
+produces a series of PREFIX, OBJECT, and ALIAS lines, which collectively
+describe the ELF objects located. Whitespace is used within each
+line to delimit the various fields of information provided.
+.P
+If the \fB-r\fP option is used to specify that file names be reported
+as relative paths, a PREFIX line is output to provide the base path from
+which the relative names should be interpreted.
+There can only be one PREFIX line, and it is output first, before any
+OBJECT or ALIAS lines.
+.sp
+.in +4
+.nf
+PREFIX path
+.fi
+.in -4
+.sp
+For each object found, an OBJECT line is produced to describe it:
+.sp
+.in +4
+.nf
+OBJECT [32 | 64] [DYN | EXEC] [VERDEF | NOVERDEF] object-path
+.fi
+.in -4
+.sp
+The first field provides the ELF class of the object, and will be
+either 32 or 64.
+The second field provides the type of object, either
+a sharable object (DYN) or executable (EXEC).
+The third field will be VERDEF if the object contains ELF
+version definitions, and NOVERDEF if the object is not versioned.
+The final field gives the path to the object.
+.P
+Under Unix, a file can have multiple names. In the context of ELF
+objects, this often happens for one of two reasons:
+.RS +4
+.TP
+.ie t \(bu
+.el o
+Compilation symlinks, used to provide a non-versioned name for a sharable object.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+Symlinks such as '32' and '64' used to provide alternative
+non-machine specific paths to objects.
+.RE
+.sp
+When
+.I find_elf
+identifies an object via such an aliased name, it issues an ALIAS line
+mapping it to the main name for the object:
+.sp
+.in +4
+.nf
+ALIAS object-path alias-path
+.fi
+.in -4
+.sp
+.PP
+.SH EXAMPLES
+Assume the following hierarchy of files exist under /usr/lib/foo:
+.sp
+.in +4
+.nf
+% /bin/ls -alRF /usr/lib/foo
+/usr/lib/foo:
+total 111
+drwxr-xr-x 3 root root 7 Jul 16 17:35 ./
+drwxr-xr-x 34 root root 42 Jul 16 17:34 ../
+lrwxrwxrwx 1 root bin 1 Jul 16 17:34 32 -> ./
+lrwxrwxrwx 1 root bin 5 Jul 16 17:34 64 -> amd64/
+drwxr-xr-x 2 root bin 4 Jul 16 17:35 amd64/
+lrwxrwxrwx 1 root bin 11 Jul 16 17:35 libfoo.so -> libfoo.so.1*
+-rwxr-xr-x 1 root bin 49132 Jul 16 17:35 libfoo.so.1*
+
+/usr/lib/foo/amd64:
+total 150
+drwxr-xr-x 2 root root 4 Jul 16 17:35 ./
+drwxr-xr-x 3 root root 7 Jul 16 17:35 ../
+lrwxrwxrwx 1 root bin 11 Jul 16 17:35 libfoo.so -> libfoo.so.1*
+-rwxr-xr-x 1 root bin 72536 Jul 16 17:35 libfoo.so.1*
+.fi
+.in -4
+.sp
+This hierarchy contains compilation symlinks (libfoo.so) and
+path alias symlinks (32, 64), as discussed in OUTPUT.
+.p
+.I find_elf
+produces the following output for the above hierarchy:
+.sp
+.in +4
+.nf
+% find_elf -rh /usr/lib/foo
+PREFIX /usr/lib/foo
+OBJECT 64 DYN VERDEF amd64/libfoo.so.1
+ALIAS amd64/libfoo.so.1 64/libfoo.so
+ALIAS amd64/libfoo.so.1 64/libfoo.so.1
+ALIAS amd64/libfoo.so.1 amd64/libfoo.so
+OBJECT 32 DYN VERDEF libfoo.so.1
+ALIAS libfoo.so.1 32/libfoo.so
+ALIAS libfoo.so.1 32/libfoo.so.1
+ALIAS libfoo.so.1 libfoo.so
+.fi
+.in -4
+.sp
+.PP
+.RS
+.nf
+.SH SEE ALSO
+.BR check_rtime (1),
+.BR interface_check (1),
+.BR interface_cmp (1),
+.BR ld (1),
+.BR ldd (1),
+.BR elfdump (1),
+.BR pvs (1).
+.LP
+.TZ LLM