aboutsummaryrefslogtreecommitdiff
path: root/elf/sotruss.ksh
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-05-28 13:20:12 -0400
committerUlrich Drepper <drepper@gmail.com>2011-05-28 13:20:12 -0400
commita91710475294c66d0005bdaae0919d36ef8ce3d2 (patch)
tree78b01f0610b9e49ab0047b82fad7fd0c5728d95c /elf/sotruss.ksh
parentd0478f0c813861837659bd41888100e2b2c5bf8c (diff)
downloadglibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.tar
glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.tar.gz
glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.tar.bz2
glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.zip
Add sotruss program
Diffstat (limited to 'elf/sotruss.ksh')
-rwxr-xr-xelf/sotruss.ksh154
1 files changed, 154 insertions, 0 deletions
diff --git a/elf/sotruss.ksh b/elf/sotruss.ksh
new file mode 100755
index 0000000000..6bbdc89ffe
--- /dev/null
+++ b/elf/sotruss.ksh
@@ -0,0 +1,154 @@
+#! @KSH@
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, write to the Free
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+
+# We should be able to find the translation right at the beginning.
+TEXTDOMAIN=libc
+TEXTDOMAINDIR=@TEXTDOMAINDIR@
+
+unset SOTRUSS_FROMLIST
+unset SOTRUSS_TOLIST
+unset SOTRUSS_OUTNAME
+unset SOTRUSS_EXIT
+unset SOTRUSS_NOINDENT
+SOTRUSS_WHICH=$$
+lib='@PREFIX@/$LIB/audit/sotruss-lib.so'
+
+function do_help {
+ echo $"Usage: sotruss [OPTION...] [--] EXECUTABLE [EXECUTABLE-OPTION...]
+ -F, --from FROMLIST trace calls from objects on FORMLIST
+ -T, --to TOLIST trace calls to objects on TOLIST
+
+ -e, --exit also show exits from the function calls
+ -f, --follow trace child processes
+ -o, --output FILENAME write output to FILENAME (or FILENAME.$PID in case
+ -f is also used) instead of standard error
+
+ --help print this help and exit
+ --version print version information and exit"
+
+ echo
+ printf $"Mandatory arguments to long options are also mandatory for any corresponding\nshort options.\n"
+ echo
+
+ echo $"For bug reporting instructions, please see:
+<http://www.gnu.org/software/libc/bugs.html>.
+"
+ exit 0
+}
+
+function do_missing_arg {
+ printf >&2 $"%s: option requires an argument -- '%s'\n" sotruss "$1"
+ printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss
+ exit 1
+}
+
+function do_ambiguous {
+ printf >&2 $"%s: option is ambiguous; possibilities:"
+ while test $# -gt 0; do
+ printf >&2 " '%s'" $1
+ shift
+ done
+ printf >&2 "\n"
+ printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss
+ exit 1
+}
+
+while test $# -gt 0; do
+ case "$1" in
+ --v | --ve | --ver | --vers | --versi | --versio | --version)
+ echo "sotruss (GNU libc) @VERSION@"
+ printf $"Copyright (C) %s Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+" "2011"
+ printf $"Written by %s.\n" "Ulrich Drepper"
+ exit 0
+ ;;
+ --h | --he | --hel | --help)
+ do_help
+ ;;
+ --u | --us | --usa | --usag | --usage)
+ printf $"Usage: %s [-ef] [-F FROMLIST] [-o FILENAME] [-T TOLIST] [--exit]
+ [--follow] [--from FROMLIST] [--output FILENAME] [--to TOLIST]\n" sotruss
+ exit 0
+ ;;
+ -F | --fr | --fro | --from)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ SOTRUSS_FROMLIST="$2"
+ ;;
+ -T | --t | --to)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ SOTRUSS_TOLIST="$2"
+ ;;
+ -o | --o | --ou | --out | --outp | --outpu | --output)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ SOTRUSS_OUTNAME="$1"
+ ;;
+ -f | --fo | --fol | --foll | --follo | --follow)
+ unset SOTRUSS_WHICH
+ ;;
+ -l | --l | --li | --lib)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ lib="$1"
+ ;;
+ -e | --e | --ex | --exi | --exit)
+ SOTRUSS_EXIT=1
+ ;;
+ --f)
+ do_ambiguous '--from' '--follow'
+ ;;
+ --)
+ shift
+ break
+ ;;
+ -*)
+ printf >&2 $"%s: unrecognized option '%c%s'\n" sotruss '-' ${1#-}
+ printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+export SOTRUSS_FROMLIST
+export SOTRUSS_TOLIST
+export SOTRUSS_OUTNAME
+export SOTRUSS_WHICH
+export SOTRUSS_EXIT
+export LD_AUDIT="$lib"
+
+exec "$@"
+# Local Variables:
+# mode:ksh
+# End: