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 23if [ $# != 1 ]; then 24 echo expected one argument: '<'dtrace-path'>' 25 exit 2 26fi 27 28dtrace=$1 29exe="tst.chasestrings.exe" 30 31elfdump "./$exe" | grep -q '.SUNW_ctf' 32if [[ $? -ne 0 ]]; then 33 echo "CTF does not exist in $exe, that's a bug" >&2 34 exit 1 35fi 36 37./$exe & 38pid=$! 39 40$dtrace -qs /dev/stdin <<EOF 41pid$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 50pid$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 59pid$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} 67EOF 68rc=$? 69 70kill -9 $pid 71 72exit $rc 73