about summary refs log tree commit diff
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.gz
glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.tar.xz
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: