diff options
author | Simon J. Gerraty <sjg@FreeBSD.org> | 2014-11-19 01:07:58 +0000 |
---|---|---|
committer | Simon J. Gerraty <sjg@FreeBSD.org> | 2014-11-19 01:07:58 +0000 |
commit | 9268022b74279434ed6300244e3f977e56a8ceb5 (patch) | |
tree | 377ac0ac449528621eb192cd245adadb5fd53668 /cddl/contrib/opensolaris/cmd/dtrace | |
parent | 29c34e9d2781cf25403647fb5af7d7ddb23be7e1 (diff) | |
parent | 8c3d6a4ab2a4a95d864d9a32d0157d7de90498a4 (diff) | |
download | src-9268022b74279434ed6300244e3f977e56a8ceb5.tar.gz src-9268022b74279434ed6300244e3f977e56a8ceb5.zip |
Merge from head@274682
Notes
Notes:
svn path=/projects/bmake/; revision=274683
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/dtrace')
16 files changed, 65 insertions, 58 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 index cc3a3112df7c..2d210a2cde84 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 +++ b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.1 @@ -277,6 +277,19 @@ Generate a header file containing macros that correspond to probes in the specified provider definitions. This option should be used to generate a header file that is included by other source files for later use with the +.Fl G +option. +If the +.Fl o +option is present, the header file is saved using the pathname specified as the +argument for that option. +If the +.Fl o +option is not present and the DTrace program is contained within a file whose +name is +.Ar filename.d , +then the header file is saved using the name +.Ar filename.h . .It Fl H Print the pathnames of included files when invoking .Xr cpp 1 @@ -289,20 +302,6 @@ option to each .Xr cpp 1 invocation, causing it to display the list of pathnames, one for each line, to standard error. -.Fl G -option. -If the -.Fl o -option -is present, the header file is saved using the pathname specified as the -argument for that option. -If the -.Fl o -option is not present and the DTrace program is contained with a file whose -name is -.Ar filename.d , -then the header file is saved using the name -.Ar filename.h . .It Fl i Ar probe-id Op Oo Ar predicate Oc Ar action Specify probe identifier .Ar ( probe-id ) diff --git a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c index 4cbb866cfad7..3a954ed40482 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c +++ b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c @@ -710,6 +710,9 @@ list_probe(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp, void *arg) if (g_verbose && dtrace_probe_info(dtp, pdp, &p) == 0) print_probe_info(&p); + if (g_intr != 0) + return (1); + return (0); } @@ -1220,11 +1223,34 @@ intr(int signo) g_impatient = 1; } +static void +installsighands(void) +{ + struct sigaction act, oact; + + (void) sigemptyset(&act.sa_mask); + act.sa_flags = 0; + act.sa_handler = intr; + + if (sigaction(SIGINT, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) + (void) sigaction(SIGINT, &act, NULL); + + if (sigaction(SIGTERM, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) + (void) sigaction(SIGTERM, &act, NULL); + +#if !defined(sun) + if (sigaction(SIGPIPE, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) + (void) sigaction(SIGPIPE, &act, NULL); + + if (sigaction(SIGUSR1, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) + (void) sigaction(SIGUSR1, &act, NULL); +#endif +} + int main(int argc, char *argv[]) { dtrace_bufdesc_t buf; - struct sigaction act, oact; dtrace_status_t status[2]; dtrace_optval_t opt; dtrace_cmd_t *dcp; @@ -1776,6 +1802,8 @@ main(int argc, char *argv[]) if (g_ofile != NULL && (g_ofp = fopen(g_ofile, "a")) == NULL) fatal("failed to open output file '%s'", g_ofile); + installsighands(); + oprintf("%5s %10s %17s %33s %s\n", "ID", "PROVIDER", "MODULE", "FUNCTION", "NAME"); @@ -1861,20 +1889,7 @@ main(int argc, char *argv[]) if (opt != DTRACEOPT_UNSET) notice("allowing destructive actions\n"); - (void) sigemptyset(&act.sa_mask); - act.sa_flags = 0; - act.sa_handler = intr; - - if (sigaction(SIGINT, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) - (void) sigaction(SIGINT, &act, NULL); - - if (sigaction(SIGTERM, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) - (void) sigaction(SIGTERM, &act, NULL); - -#if !defined(sun) - if (sigaction(SIGUSR1, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN) - (void) sigaction(SIGUSR1, &act, NULL); -#endif + installsighands(); /* * Now that tracing is active and we are ready to consume trace data, diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c index 8dabbe6e33ac..bb571d2ea33e 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c @@ -34,14 +34,14 @@ * leading underscores. */ -#pragma weak _go = go - static int go(int a) { return (a + 1); } +#pragma weak _go = go + static void handle(int sig) { diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh index 978cde3cf0ef..432a9fccb44f 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh @@ -29,6 +29,7 @@ dtrace=$1 t="season_8_mountain_of_madness_t" pid=$$ -rc=`$dtrace -n "BEGIN{ trace(pid$pid`$t)0); }"` +$dtrace -n "BEGIN{ trace(pid$pid\`$t)0); }" +rc=$? exit $rc diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh index e64ed526ed37..d1b48769ba6c 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh @@ -30,6 +30,7 @@ dtrace=$1 t="season_8_mountain_of_madness_t" pid=$$ -rc=`$dtrace -n "BEGIN{ trace(pid`$t)0); }"` -p $pid +$dtrace -n "BEGIN{ trace(pid$pid\`$t)0); }" -p $pid +rc=$? exit $rc diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh index d987c8da7a47..4eaf169f06dd 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh @@ -31,7 +31,7 @@ dtrace=$1 t="zelda_info_t" exe="tst.chasestrings.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh index 151a93676d6d..95b26c82d7ab 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh @@ -25,10 +25,10 @@ if [ $# != 1 ]; then fi dtrace=$1 -t="season_7_lisa_the_vegetrian_t *" +t="season_7_lisa_the_vegetarian_t *" exe="tst.aouttype.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 @@ -37,7 +37,8 @@ fi ./$exe & pid=$! -rc=`$dtrace -n "BEGIN{ trace((pid$pid\`$t)0); exit(0); }"` +$dtrace -n "BEGIN{ trace((pid$pid\`$t)0); exit(0); }" +rc=$? kill -9 $pid diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh index 25028460db43..d754c194b4b4 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh @@ -29,7 +29,7 @@ dtrace=$1 t="zelda_info_t" exe="tst.chasestrings.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh index af7c6c8fe13a..233616619e7d 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh @@ -29,7 +29,7 @@ dtrace=$1 t="int" exe="tst.libtype.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -eq 0 ]]; then echo "CTF exists in $exe, that's a bug" >&2 exit 1 @@ -38,7 +38,8 @@ fi ./$exe & pid=$! -rc=`$dtrace -n "BEGIN{ trace((pid$pid\`$t)0); exit(0); }"` +$dtrace -n "BEGIN{ trace((pid$pid\`$t)0); exit(0); }" +rc=$? kill -9 $pid diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh index febb0159185a..e5902faf2cb2 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh @@ -28,7 +28,7 @@ dtrace=$1 t="final_fantasy_info_t" exe="tst.printtype.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh index 7398dc41d9da..5e92cf924c2a 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh @@ -29,7 +29,7 @@ dtrace=$1 t="final_fantasy_info_t" exe="tst.printtype.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh index dfc15358290d..a93a3b8722c3 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh @@ -28,7 +28,7 @@ dtrace=$1 t="final_fantasy_info_t" exe="tst.printtype.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtypetarg.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtypetarg.ksh index 025d4a8c02df..fa080a53f3ff 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtypetarg.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtypetarg.ksh @@ -29,7 +29,7 @@ dtrace=$1 t="final_fantasy_info_t" exe="tst.printtype.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userlandkey.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userlandkey.ksh index 58811ff6fb5a..54d975f63aff 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userlandkey.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userlandkey.ksh @@ -29,7 +29,7 @@ dtrace=$1 t="zelda_info_t" exe="tst.chasestrings.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 @@ -38,7 +38,7 @@ fi ./$exe & pid=$! -$dtrace -32 -qs /dev/stdin <<EOF +$dtrace -qs /dev/stdin <<EOF typedef struct info { char *zi_gamename; int zi_ndungeons; diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userstrings.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userstrings.ksh index 79d79de8aec6..c5a105b3a55c 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userstrings.ksh +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userstrings.ksh @@ -28,7 +28,7 @@ fi dtrace=$1 exe="tst.chasestrings.exe" -elfdump "./$exe" | grep -q '.SUNW_ctf' +elfdump -c "./$exe" | grep -Fq 'sh_name: .SUNW_ctf' if [[ $? -ne 0 ]]; then echo "CTF does not exist in $exe, that's a bug" >&2 exit 1 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/main.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/main.c deleted file mode 100644 index 9dc0a0e63beb..000000000000 --- a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/main.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <stdlib.h> -#include <sys/sdt.h> -#include "prov.h" - -int -main(int argc, char **argv, char **envp) -{ - envp[0] = (char*)0xff; - TESTER_ENTRY(); - return 0; -} |