154a20ab4SBryan Cantrill# 254a20ab4SBryan Cantrill# CDDL HEADER START 354a20ab4SBryan Cantrill# 454a20ab4SBryan Cantrill# The contents of this file are subject to the terms of the 554a20ab4SBryan Cantrill# Common Development and Distribution License (the "License"). 654a20ab4SBryan Cantrill# You may not use this file except in compliance with the License. 754a20ab4SBryan Cantrill# 854a20ab4SBryan Cantrill# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 954a20ab4SBryan Cantrill# or http://www.opensolaris.org/os/licensing. 1054a20ab4SBryan Cantrill# See the License for the specific language governing permissions 1154a20ab4SBryan Cantrill# and limitations under the License. 1254a20ab4SBryan Cantrill# 1354a20ab4SBryan Cantrill# When distributing Covered Code, include this CDDL HEADER in each 1454a20ab4SBryan Cantrill# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1554a20ab4SBryan Cantrill# If applicable, add the following below this CDDL HEADER, with the 1654a20ab4SBryan Cantrill# fields enclosed by brackets "[]" replaced with your own identifying 1754a20ab4SBryan Cantrill# information: Portions Copyright [yyyy] [name of copyright owner] 1854a20ab4SBryan Cantrill# 1954a20ab4SBryan Cantrill# CDDL HEADER END 2054a20ab4SBryan Cantrill# 2154a20ab4SBryan Cantrill 2254a20ab4SBryan Cantrill# 2354a20ab4SBryan Cantrill# Copyright (c) 2013, Joyent, Inc. All rights reserved. 2454a20ab4SBryan Cantrill# 2554a20ab4SBryan Cantrill 2654a20ab4SBryan Cantrillif [ $# != 1 ]; then 2754a20ab4SBryan Cantrill echo expected one argument: '<'dtrace-path'>' 2854a20ab4SBryan Cantrill exit 2 2954a20ab4SBryan Cantrillfi 3054a20ab4SBryan Cantrill 3154a20ab4SBryan Cantrilldtrace=$1 3254a20ab4SBryan CantrillDIR=/var/tmp/dtest.$$ 3354a20ab4SBryan Cantrill 3454a20ab4SBryan Cantrillmkdir $DIR 3554a20ab4SBryan Cantrillcd $DIR 3654a20ab4SBryan Cantrill 3754a20ab4SBryan Cantrillecho '#pragma D option quiet' > test.d 3854a20ab4SBryan Cantrillecho '#pragma D option aggsortkey' >> test.d 3954a20ab4SBryan Cantrill 4054a20ab4SBryan Cantrillcat > test.c <<EOF 4154a20ab4SBryan Cantrill#include <unistd.h> 4254a20ab4SBryan Cantrill 4354a20ab4SBryan Cantrillvoid 4454a20ab4SBryan Cantrillmain() 4554a20ab4SBryan Cantrill{ 4654a20ab4SBryan CantrillEOF 4754a20ab4SBryan Cantrill 4854a20ab4SBryan Cantrillobjs= 4954a20ab4SBryan Cantrill 5054a20ab4SBryan Cantrillfor oogle in doogle bagnoogle; do 5154a20ab4SBryan Cantrill cat > $oogle.c <<EOF 5254a20ab4SBryan Cantrill#include <sys/sdt.h> 5354a20ab4SBryan Cantrill 5454a20ab4SBryan Cantrillvoid 5554a20ab4SBryan Cantrill$oogle() 5654a20ab4SBryan Cantrill{ 5754a20ab4SBryan Cantrill DTRACE_PROBE($oogle, knows); 5854a20ab4SBryan Cantrill} 5954a20ab4SBryan CantrillEOF 6054a20ab4SBryan Cantrill 6154a20ab4SBryan Cantrill cat > $oogle.d <<EOF 6254a20ab4SBryan Cantrillprovider $oogle { 6354a20ab4SBryan Cantrill probe knows(); 6454a20ab4SBryan Cantrill}; 6554a20ab4SBryan CantrillEOF 6654a20ab4SBryan Cantrill 67*a386cc11SRobert Mustacchi gcc -m32 -c $oogle.c 6854a20ab4SBryan Cantrill 6954a20ab4SBryan Cantrill if [ $? -ne 0 ]; then 7054a20ab4SBryan Cantrill print -u2 "failed to compile $oogle.c" 7154a20ab4SBryan Cantrill exit 1 7254a20ab4SBryan Cantrill fi 7354a20ab4SBryan Cantrill 7454a20ab4SBryan Cantrill $dtrace -G -32 -s $oogle.d $oogle.o -o $oogle.d.o 7554a20ab4SBryan Cantrill 7654a20ab4SBryan Cantrill if [ $? -ne 0 ]; then 7754a20ab4SBryan Cantrill print -u2 "failed to process $oogle.d" 7854a20ab4SBryan Cantrill exit 1 7954a20ab4SBryan Cantrill fi 8054a20ab4SBryan Cantrill 8154a20ab4SBryan Cantrill objs="$objs $oogle.o $oogle.d.o" 8254a20ab4SBryan Cantrill echo $oogle'();' >> test.c 8354a20ab4SBryan Cantrill echo $oogle'$target:::{@[probefunc] = count()}' >> test.d 8454a20ab4SBryan Cantrilldone 8554a20ab4SBryan Cantrill 8654a20ab4SBryan Cantrillecho "}" >> test.c 8754a20ab4SBryan Cantrill 8854a20ab4SBryan Cantrillecho 'END{printa("%-10s %@d\\n", @)}' >> test.d 8954a20ab4SBryan Cantrill 90*a386cc11SRobert Mustacchigcc -m32 -o test test.c $objs 9154a20ab4SBryan Cantrill 9254a20ab4SBryan Cantrillif [ $? -ne 0 ]; then 9354a20ab4SBryan Cantrill print -u2 "failed to compile test.c" 9454a20ab4SBryan Cantrill exit 1 9554a20ab4SBryan Cantrillfi 9654a20ab4SBryan Cantrill 9754a20ab4SBryan Cantrill$dtrace -s ./test.d -Zc ./test 9854a20ab4SBryan Cantrill 9954a20ab4SBryan Cantrillif [ $? -ne 0 ]; then 10054a20ab4SBryan Cantrill print -u2 "failed to execute test" 10154a20ab4SBryan Cantrill exit 1 10254a20ab4SBryan Cantrillfi 10354a20ab4SBryan Cantrill 10454a20ab4SBryan Cantrillcd / 10554a20ab4SBryan Cantrill/usr/bin/rm -rf $DIR 10654a20ab4SBryan Cantrillexit 0 107