]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / cddl / contrib / opensolaris / cmd / dtrace / test / tst / common / uctf / tst.printtype.ksh
1 #! /usr/bin/ksh
2 #
3 #
4 # This file and its contents are supplied under the terms of the
5 # Common Development and Distribution License ("CDDL"), version 1.0.
6 # You may only use this file in accordance with the terms of version
7 # 1.0 of the CDDL.
8 #
9 # A full copy of the text of the CDDL should have accompanied this
10 # source.  A copy of the CDDL is also available via the Internet at
11 # http://www.illumos.org/license/CDDL.
12 #
13
14 #
15 # Copyright (c) 2013 Joyent, Inc. All rights reserved.
16 #
17
18 #
19 # Use print() on userland CTF types and verify we get the data we expect.
20 #
21
22 if [ $# != 1 ]; then
23         echo expected one argument: '<'dtrace-path'>'
24         exit 2
25 fi
26
27 dtrace=$1
28 t="final_fantasy_info_t"
29 exe="tst.printtype.exe"
30
31 elfdump "./$exe" | grep -q '.SUNW_ctf' 
32 if [[ $? -ne 0 ]]; then
33         echo "CTF does not exist in $exe, that's a bug" >&2
34         exit 1
35 fi
36
37 ./$exe &
38 pid=$!
39
40 $dtrace -qs /dev/stdin <<EOF
41 pid$pid::ff_getgameid:entry
42 /next == 0/
43 {
44         print(*(pid$pid\`$t *)(copyin(arg0, sizeof (pid$pid\`$t))));
45         printf("\n");
46         next = 1;
47 }
48
49 pid$pid::ff_getpartysize:entry
50 /next == 1/
51 {
52         print(*(pid$pid\`$t *)(copyin(arg0, sizeof (pid$pid\`$t))));
53         printf("\n");
54         next = 2;
55 }
56
57 pid$pid::ff_getsummons:entry
58 /next == 2/
59 {
60         print(*(pid$pid\`$t *)(copyin(arg0, sizeof (pid$pid\`$t))));
61         printf("\n");
62         exit(0);
63 }
64 EOF
65 rc=$?
66
67 kill -9 $pid
68
69 exit $rc