diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-05-28 13:20:12 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-05-28 13:20:12 -0400 |
commit | a91710475294c66d0005bdaae0919d36ef8ce3d2 (patch) | |
tree | 78b01f0610b9e49ab0047b82fad7fd0c5728d95c /elf/sotruss.ksh | |
parent | d0478f0c813861837659bd41888100e2b2c5bf8c (diff) | |
download | glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.tar.gz glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.tar.xz glibc-a91710475294c66d0005bdaae0919d36ef8ce3d2.zip |
Add sotruss program
Diffstat (limited to 'elf/sotruss.ksh')
-rwxr-xr-x | elf/sotruss.ksh | 154 |
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: |