1 # 2 # CDDL HEADER START 3 # 4 # The contents of this file are subject to the terms of the 5 # Common Development and Distribution License (the "License"). 6 # You may not use this file except in compliance with the License. 7 # 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 # or http://www.opensolaris.org/os/licensing. 10 # See the License for the specific language governing permissions 11 # and limitations under the License. 12 # 13 # When distributing Covered Code, include this CDDL HEADER in each 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 # If applicable, add the following below this CDDL HEADER, with the 16 # fields enclosed by brackets "[]" replaced with your own identifying 17 # information: Portions Copyright [yyyy] [name of copyright owner] 18 # 19 # CDDL HEADER END 20 # 21 22 # 23 # Copyright (c) 2013, Joyent, Inc. All rights reserved. 24 # 25 26 if [ $# != 1 ]; then 27 echo expected one argument: '<'dtrace-path'>' 28 exit 2 29 fi 30 31 dtrace=$1 32 DIR=/var/tmp/dtest.$$ 33 34 mkdir $DIR 35 cd $DIR 36 37 echo '#pragma D option quiet' > test.d 38 echo '#pragma D option aggsortkey' >> test.d 39 40 cat > test.c <<EOF 41 #include <unistd.h> 42 43 void 44 main() 45 { 46 EOF 47 48 objs= 49 50 for oogle in doogle bagnoogle; do 51 cat > $oogle.c <<EOF 52 #include <sys/sdt.h> 53 54 void 55 $oogle() 56 { 57 DTRACE_PROBE($oogle, knows); 58 } 59 EOF 60 61 cat > $oogle.d <<EOF 62 provider $oogle { 63 probe knows(); 64 }; 65 EOF 66 67 gcc -m32 -c $oogle.c 68 69 if [ $? -ne 0 ]; then 70 print -u2 "failed to compile $oogle.c" 71 exit 1 72 fi 73 74 $dtrace -G -32 -s $oogle.d $oogle.o -o $oogle.d.o 75 76 if [ $? -ne 0 ]; then 77 print -u2 "failed to process $oogle.d" 78 exit 1 79 fi 80 81 objs="$objs $oogle.o $oogle.d.o" 82 echo $oogle'();' >> test.c 83 echo $oogle'$target:::{@[probefunc] = count()}' >> test.d 84 done 85 86 echo "}" >> test.c 87 88 echo 'END{printa("%-10s %@d\\n", @)}' >> test.d 89 90 gcc -m32 -o test test.c $objs 91 92 if [ $? -ne 0 ]; then 93 print -u2 "failed to compile test.c" 94 exit 1 95 fi 96 97 $dtrace -s ./test.d -Zc ./test 98 99 if [ $? -ne 0 ]; then 100 print -u2 "failed to execute test" 101 exit 1 102 fi 103 104 cd / 105 /usr/bin/rm -rf $DIR 106 exit 0