]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.userstrings.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.userstrings.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 # This test is checking that we can read members and that pointers inside
20 # members point to valid data that is intelligible, eg. strings.
21 #
22
23 if [ $# != 1 ]; then
24         echo expected one argument: '<'dtrace-path'>'
25         exit 2
26 fi
27
28 dtrace=$1
29 exe="tst.chasestrings.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::has_princess:entry
42 /next == 0/
43 {
44         printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
45             stringof(args[0]->zi_gamename), args[0]->zi_ndungeons,
46             stringof(args[0]->zi_villain), args[0]->zi_haszelda);
47         next = 1;
48 }
49
50 pid$pid::has_dungeons:entry
51 /next == 1/
52 {
53         printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
54             stringof(args[0]->zi_gamename), args[0]->zi_ndungeons,
55             stringof(args[0]->zi_villain), args[0]->zi_haszelda);
56         next = 2;
57 }
58
59 pid$pid::has_villain:entry
60 /next == 2/
61 {
62         printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
63             stringof(args[0]->zi_gamename), args[0]->zi_ndungeons,
64             stringof(args[0]->zi_villain), args[0]->zi_haszelda);
65         exit(0);
66 }
67 EOF
68 rc=$?
69
70 kill -9 $pid
71
72 exit $rc