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 26if [ $# != 1 ]; then 27 echo expected one argument: '<'dtrace-path'>' 28 exit 2 29fi 30 31dtrace=$1 32DIR=/var/tmp/dtest.$$ 33 34mkdir $DIR 35cd $DIR 36 37echo '#pragma D option quiet' > test.d 38echo '#pragma D option aggsortkey' >> test.d 39 40cat > test.c <<EOF 41#include <unistd.h> 42 43void 44main() 45{ 46EOF 47 48objs= 49 50for oogle in doogle bagnoogle; do 51 cat > $oogle.c <<EOF 52#include <sys/sdt.h> 53 54void 55$oogle() 56{ 57 DTRACE_PROBE($oogle, knows); 58} 59EOF 60 61 cat > $oogle.d <<EOF 62provider $oogle { 63 probe knows(); 64}; 65EOF 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 84done 85 86echo "}" >> test.c 87 88echo 'END{printa("%-10s %@d\\n", @)}' >> test.d 89 90gcc -m32 -o test test.c $objs 91 92if [ $? -ne 0 ]; then 93 print -u2 "failed to compile test.c" 94 exit 1 95fi 96 97$dtrace -s ./test.d -Zc ./test 98 99if [ $? -ne 0 ]; then 100 print -u2 "failed to execute test" 101 exit 1 102fi 103 104cd / 105/usr/bin/rm -rf $DIR 106exit 0 107