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
20# expect. Use the pid` alias for $target.
21#
22
23if [ $# != 1 ]; then
24        echo expected one argument: '<'dtrace-path'>'
25        exit 2
26fi
27
28dtrace=$1
29t="final_fantasy_info_t"
30exe="tst.printtype.exe"
31
32elfdump "./$exe" | grep -q '.SUNW_ctf'
33if [[ $? -ne 0 ]]; then
34	echo "CTF does not exist in $exe, that's a bug" >&2
35	exit 1
36fi
37
38./$exe &
39pid=$!
40
41$dtrace -p $pid -qs /dev/stdin <<EOF
42pid\$target::ff_getgameid:entry
43/next == 0/
44{
45	print(*(pid\`$t *)(copyin(arg0, sizeof (pid\`$t))));
46	printf("\n");
47	next = 1;
48}
49
50pid\$target::ff_getpartysize:entry
51/next == 1/
52{
53	print(*(pid\`$t *)(copyin(arg0, sizeof (pid\`$t))));
54	printf("\n");
55	next = 2;
56}
57
58pid\$target::ff_getsummons:entry
59/next == 2/
60{
61	print(*(pid\`$t *)(copyin(arg0, sizeof (pid\`$t))));
62	printf("\n");
63	exit(0);
64}
65EOF
66rc=$?
67
68kill -9 $pid
69
70exit $rc
71