8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / dtrace / test / tst / sparc / usdt / tst.tailcall.ksh
blob722eea608815cd033568e01a584f2e0f3c6fd85e
2 # CDDL HEADER START
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.
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.
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]
19 # CDDL HEADER END
23 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
28 # ASSERTION: Make sure USDT probes work as tail-calls on SPARC.
31 if [ $# != 1 ]; then
32 echo expected one argument: '<'dtrace-path'>'
33 exit 2
36 dtrace=$1
37 DIR=/var/tmp/dtest.$$
39 mkdir $DIR
40 cd $DIR
42 cat > test.s <<EOF
43 #include <sys/asm_linkage.h>
45 DGDEF(__fsr_init_value)
46 .word 0
48 ENTRY(test)
49 save %sp, -SA(MINFRAME + 4), %sp
50 mov 9, %i0
51 mov 19, %i1
52 mov 2006, %i2
53 call __dtrace_test___fire
54 restore
55 SET_SIZE(test)
57 ENTRY(main)
58 save %sp, -SA(MINFRAME + 4), %sp
61 call test
62 nop
64 ba 1b
65 nop
67 ret
68 restore %g0, %g0, %o0
69 SET_SIZE(main)
70 EOF
72 cat > prov.d <<EOF
73 provider test {
74 probe fire(int, int, int);
76 EOF
78 /usr/ccs/bin/as -xregsym=no -P -D_ASM -o test.o test.s
79 if [ $? -ne 0 ]; then
80 print -u2 "failed to compile test.s"
81 exit 1
84 $dtrace -G -32 -s prov.d test.o
85 if [ $? -ne 0 ]; then
86 print -u2 "failed to create DOF"
87 exit 1
90 gcc -m32 -o test test.o prov.o
91 if [ $? -ne 0 ]; then
92 print -u2 "failed to link final executable"
93 exit 1
96 $dtrace -c ./test -s /dev/stdin <<EOF
97 test\$target:::fire
98 /arg0 == 9 && arg1 == 19 && arg2 == 2006/
100 printf("%d/%d/%d", arg0, arg1, arg2);
101 exit(0);
104 test\$target:::fire
106 printf("%d/%d/%d", arg0, arg1, arg2);
107 exit(1);
110 BEGIN
113 * Let's just do this for 5 seconds.
115 timeout = timestamp + 5000000000;
118 profile:::tick-4
119 /timestamp > timeout/
121 trace("test timed out");
122 exit(1);
126 status=$?
128 cd /
129 /usr/bin/rm -rf $DIR
131 exit $status