Print this page
4474 DTrace Userland CTF Support
4475 DTrace userland Keyword
4476 DTrace tests should be better citizens
4479 pid provider types
4480 dof emulation missing checks
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/cmd/dtrace/test/tst/sparc/usdt/tst.tailcall.ksh
+++ new/usr/src/cmd/dtrace/test/tst/sparc/usdt/tst.tailcall.ksh
1 1 #
2 2 # CDDL HEADER START
3 3 #
4 4 # The contents of this file are subject to the terms of the
5 5 # Common Development and Distribution License (the "License").
6 6 # You may not use this file except in compliance with the License.
7 7 #
8 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 # or http://www.opensolaris.org/os/licensing.
10 10 # See the License for the specific language governing permissions
11 11 # and limitations under the License.
12 12 #
13 13 # When distributing Covered Code, include this CDDL HEADER in each
14 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 # If applicable, add the following below this CDDL HEADER, with the
16 16 # fields enclosed by brackets "[]" replaced with your own identifying
17 17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 18 #
19 19 # CDDL HEADER END
20 20 #
21 21
22 22 #
23 23 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 24 # Use is subject to license terms.
25 25 #
26 26
27 27 #
28 28 # ASSERTION: Make sure USDT probes work as tail-calls on SPARC.
29 29 #
30 30
31 31 if [ $# != 1 ]; then
32 32 echo expected one argument: '<'dtrace-path'>'
33 33 exit 2
34 34 fi
35 35
36 36 dtrace=$1
37 37 DIR=/var/tmp/dtest.$$
38 38
39 39 mkdir $DIR
40 40 cd $DIR
41 41
42 42 cat > test.s <<EOF
43 43 #include <sys/asm_linkage.h>
44 44
45 45 DGDEF(__fsr_init_value)
46 46 .word 0
47 47
48 48 ENTRY(test)
49 49 save %sp, -SA(MINFRAME + 4), %sp
50 50 mov 9, %i0
51 51 mov 19, %i1
52 52 mov 2006, %i2
53 53 call __dtrace_test___fire
54 54 restore
55 55 SET_SIZE(test)
56 56
57 57 ENTRY(main)
58 58 save %sp, -SA(MINFRAME + 4), %sp
59 59
60 60 1:
61 61 call test
62 62 nop
63 63
64 64 ba 1b
65 65 nop
66 66
67 67 ret
68 68 restore %g0, %g0, %o0
69 69 SET_SIZE(main)
70 70 EOF
71 71
72 72 cat > prov.d <<EOF
73 73 provider test {
74 74 probe fire(int, int, int);
75 75 };
76 76 EOF
77 77
78 78 /usr/ccs/bin/as -xregsym=no -P -D_ASM -o test.o test.s
79 79 if [ $? -ne 0 ]; then
↓ open down ↓ |
79 lines elided |
↑ open up ↑ |
80 80 print -u2 "failed to compile test.s"
81 81 exit 1
82 82 fi
83 83
84 84 $dtrace -G -32 -s prov.d test.o
85 85 if [ $? -ne 0 ]; then
86 86 print -u2 "failed to create DOF"
87 87 exit 1
88 88 fi
89 89
90 -gcc -o test test.o prov.o
90 +gcc -m32 -o test test.o prov.o
91 91 if [ $? -ne 0 ]; then
92 92 print -u2 "failed to link final executable"
93 93 exit 1
94 94 fi
95 95
96 96 $dtrace -c ./test -s /dev/stdin <<EOF
97 97 test\$target:::fire
98 98 /arg0 == 9 && arg1 == 19 && arg2 == 2006/
99 99 {
100 100 printf("%d/%d/%d", arg0, arg1, arg2);
101 101 exit(0);
102 102 }
103 103
104 104 test\$target:::fire
105 105 {
106 106 printf("%d/%d/%d", arg0, arg1, arg2);
107 107 exit(1);
108 108 }
109 109
110 110 BEGIN
111 111 {
112 112 /*
113 113 * Let's just do this for 5 seconds.
114 114 */
115 115 timeout = timestamp + 5000000000;
116 116 }
117 117
118 118 profile:::tick-4
119 119 /timestamp > timeout/
120 120 {
121 121 trace("test timed out");
122 122 exit(1);
123 123 }
124 124 EOF
125 125
126 126 status=$?
127 127
128 128 cd /
129 129 /usr/bin/rm -rf $DIR
130 130
131 131 exit $status
↓ open down ↓ |
31 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX