svn commit: r266989 - vendor-sys/illumos/dist/uts/common/dtrace vendor-sys/illumos/dist/uts/common/sys vendor/illumos/dist/cmd/dtrace vendor/illumos/dist/cmd/dtrace/test/tst/common/pid vendor/illum...
Mark Johnston
markj at FreeBSD.org
Tue Jun 3 01:24:52 UTC 2014
Author: markj
Date: Tue Jun 3 01:24:46 2014
New Revision: 266989
URL: http://svnweb.freebsd.org/changeset/base/266989
Log:
4474 DTrace Userland CTF Support
4475 DTrace userland Keyword
4476 DTrace tests should be better citizens
4479 pid provider types
4480 dof emulation is missing checks
illumos/illumos-gate at a386cc11a86ecb60f5a48078d22c1500e2ad003e
Added:
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid.d (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid2.d (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid3.d (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.aouttype.c (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.c (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh.out
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.libtype.c (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.linkmap.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.c (contents, props changed)
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh.out
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtypetarg.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.userlandkey.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.userlandkey.ksh.out
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.userstrings.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.userstrings.ksh.out
Modified:
vendor/illumos/dist/cmd/dtrace/dtrace.c
vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/printa/tst.largeusersym.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.corruptenv.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.dlclose2.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.dlclose3.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.eliminate.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.enabled.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.enabled2.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.entryreturn.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.fork.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.header.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.linkpriv.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.linkunpriv.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.multiple.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.multiprov.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.noprobes.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.onlyenabled.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.reeval.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.static.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.static2.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/common/usdt/tst.user.ksh
vendor/illumos/dist/cmd/dtrace/test/tst/sparc/usdt/tst.tailcall.ksh
vendor/illumos/dist/common/ctf/ctf_open.c
vendor/illumos/dist/common/ctf/ctf_types.c
vendor/illumos/dist/lib/libdtrace/common/dt_as.c
vendor/illumos/dist/lib/libdtrace/common/dt_cc.c
vendor/illumos/dist/lib/libdtrace/common/dt_decl.c
vendor/illumos/dist/lib/libdtrace/common/dt_decl.h
vendor/illumos/dist/lib/libdtrace/common/dt_dis.c
vendor/illumos/dist/lib/libdtrace/common/dt_error.c
vendor/illumos/dist/lib/libdtrace/common/dt_grammar.y
vendor/illumos/dist/lib/libdtrace/common/dt_ident.c
vendor/illumos/dist/lib/libdtrace/common/dt_impl.h
vendor/illumos/dist/lib/libdtrace/common/dt_lex.l
vendor/illumos/dist/lib/libdtrace/common/dt_module.c
vendor/illumos/dist/lib/libdtrace/common/dt_module.h
vendor/illumos/dist/lib/libdtrace/common/dt_open.c
vendor/illumos/dist/lib/libdtrace/common/dt_parser.c
vendor/illumos/dist/lib/libdtrace/common/dt_parser.h
vendor/illumos/dist/lib/libdtrace/common/dt_pid.c
vendor/illumos/dist/lib/libdtrace/common/dt_pid.h
vendor/illumos/dist/lib/libdtrace/common/dt_print.c
vendor/illumos/dist/lib/libdtrace/common/dt_printf.c
vendor/illumos/dist/lib/libdtrace/common/dt_provider.c
vendor/illumos/dist/lib/libdtrace/common/dt_xlator.c
vendor/illumos/dist/lib/libdtrace/common/dtrace.h
Changes in other areas also in this revision:
Modified:
vendor-sys/illumos/dist/uts/common/dtrace/dtrace.c
vendor-sys/illumos/dist/uts/common/sys/ctf_api.h
vendor-sys/illumos/dist/uts/common/sys/dtrace.h
Modified: vendor/illumos/dist/cmd/dtrace/dtrace.c
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/dtrace.c Tue Jun 3 01:16:11 2014 (r266988)
+++ vendor/illumos/dist/cmd/dtrace/dtrace.c Tue Jun 3 01:24:46 2014 (r266989)
@@ -25,6 +25,7 @@
*/
/*
* Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013, Joyent, Inc. All rights reserved.
*/
#include <sys/types.h>
@@ -488,6 +489,7 @@ static void
print_probe_info(const dtrace_probeinfo_t *p)
{
char buf[BUFSIZ];
+ char *user;
int i;
oprintf("\n\tProbe Description Attributes\n");
@@ -511,10 +513,14 @@ print_probe_info(const dtrace_probeinfo_
oprintf("\n\tArgument Types\n");
for (i = 0; i < p->dtp_argc; i++) {
+ if (p->dtp_argv[i].dtt_flags & DTT_FL_USER)
+ user = "userland ";
+ else
+ user = "";
if (ctf_type_name(p->dtp_argv[i].dtt_ctfp,
p->dtp_argv[i].dtt_type, buf, sizeof (buf)) == NULL)
(void) strlcpy(buf, "(unknown)", sizeof (buf));
- oprintf("\t\targs[%d]: %s\n", i, buf);
+ oprintf("\t\targs[%d]: %s%s\n", i, user, buf);
}
if (p->dtp_argc == 0)
Modified: vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh Tue Jun 3 01:16:11 2014 (r266988)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -45,10 +45,10 @@ cat > Makefile <<EOF
all: main
main: main.o
- gcc -o main main.o
+ gcc -m32 -o main main.o
main.o: main.c
- gcc -c main.c
+ gcc -m32 -c main.c
EOF
cat > main.c <<EOF
Modified: vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh Tue Jun 3 01:16:11 2014 (r266988)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -45,16 +45,16 @@ cat > Makefile <<EOF
all: main altlib.so
main: main.o
- gcc -o main main.o
+ gcc -m32 -o main main.o
main.o: main.c
- gcc -c main.c
+ gcc -m32 -c main.c
altlib.so: altlib.o
- gcc -shared -o altlib.so altlib.o -lc
+ gcc -m32 -shared -o altlib.so altlib.o -lc
altlib.o: altlib.c
- gcc -c altlib.c
+ gcc -m32 -fPIC -c altlib.c
EOF
cat > altlib.c <<EOF
Modified: vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh Tue Jun 3 01:16:11 2014 (r266988)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -46,10 +46,10 @@ cat > Makefile <<EOF
all: main
main: main.o prov.o
- gcc -o main main.o prov.o
+ gcc -m32 -o main main.o prov.o
main.o: main.c prov.h
- gcc -c main.c
+ gcc -m32 -c main.c
prov.h: prov.d
$dtrace -h -s prov.d
Modified: vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh Tue Jun 3 01:16:11 2014 (r266988)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -46,10 +46,10 @@ cat > Makefile <<EOF
all: main altlib.so
main: main.o provmain.o
- gcc -o main main.o provmain.o
+ gcc -m32 -o main main.o provmain.o
main.o: main.c prov.h
- gcc -c main.c
+ gcc -m32 -c main.c
prov.h: prov.d
$dtrace -h -s prov.d
@@ -58,10 +58,10 @@ provmain.o: prov.d main.o
$dtrace -G -32 -o provmain.o -s prov.d main.o
altlib.so: altlib.o provalt.o
- gcc -shared -o altlib.so altlib.o provalt.o -lc
+ gcc -m32 -shared -o altlib.so altlib.o provalt.o -lc
altlib.o: altlib.c prov.h
- gcc -c altlib.c
+ gcc -m32 -c altlib.c
provalt.o: prov.d altlib.o
$dtrace -G -32 -o provalt.o -s prov.d altlib.o
Modified: vendor/illumos/dist/cmd/dtrace/test/tst/common/printa/tst.largeusersym.ksh
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/test/tst/common/printa/tst.largeusersym.ksh Tue Jun 3 01:16:11 2014 (r266988)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/printa/tst.largeusersym.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -50,7 +50,7 @@ main(int argc, char *argv[])
}
EOF
-gcc -o test test.c
+gcc -m32 -o test test.c
if [ $? -ne 0 ]; then
print -u2 "failed to compile test.c"
exit 1
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid.d
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid.d Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,21 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright (c) 2013 Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((pidfoo`int)0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid2.d
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid2.d Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,21 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright (c) 2013 Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((pid8foo`int)0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid3.d
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidpid3.d Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,21 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright (c) 2013 Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((pid0`int)0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidtype.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,34 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# While it's hard to be completely certain that a type of the name we want
+# doesn't exist, we're going to try to pick a name which is rather unique.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="season_8_mountain_of_madness_t"
+pid=$$
+
+rc=`$dtrace -n "BEGIN{ trace(pid$pid`$t)0); }"`
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.invalidtype2.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,35 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# While it's hard to be completely certain that a type of the name we want
+# doesn't exist, we're going to try to pick a name which is rather
+# unique. This time we're also going to use the pid$target alias.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="season_8_mountain_of_madness_t"
+pid=$$
+
+rc=`$dtrace -n "BEGIN{ trace(pid`$t)0); }"` -p $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/err.user64mode.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,90 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# This test is purposefully using a 64-bit DTrace and thus 64-bit types
+# when compared with a 32-bit process. This test uses the userland
+# keyword and so the implicit copyin should access illegal memory and
+# thus exit.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="zelda_info_t"
+exe="tst.chasestrings.exe"
+
+elfdump "./$exe" | grep -q '.SUNW_ctf'
+if [[ $? -ne 0 ]]; then
+ echo "CTF does not exist in $exe, that's a bug" >&2
+ exit 1
+fi
+
+./$exe &
+pid=$!
+
+$dtrace -64 -qs /dev/stdin <<EOF
+typedef struct info {
+ char *zi_gamename;
+ int zi_ndungeons;
+ char *zi_villain;
+ int zi_haszelda;
+} info_t;
+
+pid$pid::has_princess:entry
+/next == 0/
+{
+ this->t = (userland info_t *)arg0;
+ printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
+ stringof(this->t->zi_gamename), this->t->zi_ndungeons,
+ stringof(this->t->zi_villain), this->t->zi_haszelda);
+ next = 1;
+}
+
+pid$pid::has_dungeons:entry
+/next == 1/
+{
+ this->t = (userland info_t *)arg0;
+ printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
+ stringof(this->t->zi_gamename), this->t->zi_ndungeons,
+ stringof(this->t->zi_villain), this->t->zi_haszelda);
+ next = 2;
+}
+
+pid$pid::has_villain:entry
+/next == 2/
+{
+ this->t = (userland info_t *)arg0;
+ printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
+ stringof(this->t->zi_gamename), this->t->zi_ndungeons,
+ stringof(this->t->zi_villain), this->t->zi_haszelda);
+ exit(0);
+}
+
+ERROR
+{
+ exit(1);
+}
+EOF
+rc=$?
+
+kill -9 $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.aouttype.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.aouttype.c Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,46 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2013 (c) Joyent, Inc. All rights reserved.
+ */
+
+/*
+ * This test tries to make sure that we have CTF data for a type that only this
+ * binary would reasonably have. In this case, the
+ * season_7_lisa_the_vegetarian_t.
+ */
+#include <unistd.h>
+
+typedef struct season_7_lisa_the_vegetarian {
+ int fr_salad;
+} season_7_lisa_the_vegetarian_t;
+
+int
+sleeper(season_7_lisa_the_vegetarian_t *lp)
+{
+ for (;;) {
+ sleep(lp->fr_salad);
+ }
+ /*NOTREACHED*/
+ return (0);
+}
+
+int
+main(void)
+{
+ season_7_lisa_the_vegetarian_t l;
+ l.fr_salad = 100;
+
+ sleeper(&l);
+
+ return (0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.aouttype.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,44 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# Lookup a type that is inside a.out.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="season_7_lisa_the_vegetrian_t *"
+exe="tst.aouttype.exe"
+
+elfdump "./$exe" | grep -q '.SUNW_ctf'
+if [[ $? -ne 0 ]]; then
+ echo "CTF does not exist in $exe, that's a bug" >&2
+ exit 1
+fi
+
+./$exe &
+pid=$!
+
+rc=`$dtrace -n "BEGIN{ trace((pid$pid\`$t)0); exit(0); }"`
+
+kill -9 $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.c Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,79 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2013 (c) Joyent, Inc. All rights reserved.
+ */
+
+/*
+ * This test takes data from the current binary which is basically running in a
+ * loop between two functions and our goal is to have two unique types that they
+ * contain which we can print.
+ */
+
+#include <unistd.h>
+
+typedef struct zelda_info {
+ char *zi_gamename;
+ int zi_ndungeons;
+ char *zi_villain;
+ int zi_haszelda;
+} zelda_info_t;
+
+static int
+has_princess(zelda_info_t *z)
+{
+ return (z->zi_haszelda);
+}
+
+static int
+has_dungeons(zelda_info_t *z)
+{
+ return (z->zi_ndungeons != 0);
+}
+
+static const char *
+has_villain(zelda_info_t *z)
+{
+ return (z->zi_villain);
+}
+
+int
+main(void)
+{
+ zelda_info_t oot;
+ zelda_info_t la;
+ zelda_info_t lttp;
+
+ oot.zi_gamename = "Ocarina of Time";
+ oot.zi_ndungeons = 10;
+ oot.zi_villain = "Ganondorf";
+ oot.zi_haszelda = 1;
+
+ la.zi_gamename = "Link's Awakening";
+ la.zi_ndungeons = 9;
+ la.zi_villain = "Nightmare";
+ la.zi_haszelda = 0;
+
+ lttp.zi_gamename = "A Link to the Past";
+ lttp.zi_ndungeons = 12;
+ lttp.zi_villain = "Ganon";
+ lttp.zi_haszelda = 1;
+
+ for (;;) {
+ (void) has_princess(&oot);
+ (void) has_dungeons(&la);
+ (void) has_villain(<tp);
+ sleep(1);
+ }
+
+ return (0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,76 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# This test is checking that we can read members and that pointers inside
+# members point to valid data that is intelligible, eg. strings.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="zelda_info_t"
+exe="tst.chasestrings.exe"
+
+elfdump "./$exe" | grep -q '.SUNW_ctf'
+if [[ $? -ne 0 ]]; then
+ echo "CTF does not exist in $exe, that's a bug" >&2
+ exit 1
+fi
+
+./$exe &
+pid=$!
+
+$dtrace -qs /dev/stdin <<EOF
+pid$pid::has_princess:entry
+/next == 0/
+{
+ this->t = (pid$pid\`$t *)(copyin(arg0, sizeof (pid$pid\`$t)));
+ printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
+ copyinstr((uintptr_t)this->t->zi_gamename), this->t->zi_ndungeons,
+ copyinstr((uintptr_t)this->t->zi_villain), this->t->zi_haszelda);
+ next = 1;
+}
+
+pid$pid::has_dungeons:entry
+/next == 1/
+{
+ this->t = (pid$pid\`$t *)(copyin(arg0, sizeof (pid$pid\`$t)));
+ printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
+ copyinstr((uintptr_t)this->t->zi_gamename), this->t->zi_ndungeons,
+ copyinstr((uintptr_t)this->t->zi_villain), this->t->zi_haszelda);
+ next = 2;
+}
+
+pid$pid::has_villain:entry
+/next == 2/
+{
+ this->t = (pid$pid\`$t *)(copyin(arg0, sizeof (pid$pid\`$t)));
+ printf("game: %s, dungeon: %d, villain: %s, zelda: %d\n",
+ copyinstr((uintptr_t)this->t->zi_gamename), this->t->zi_ndungeons,
+ copyinstr((uintptr_t)this->t->zi_villain), this->t->zi_haszelda);
+ exit(0);
+}
+EOF
+rc=$?
+
+kill -9 $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh.out
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.ksh.out Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,4 @@
+game: Ocarina of Time, dungeon: 10, villain: Ganondorf, zelda: 1
+game: Link's Awakening, dungeon: 9, villain: Nightmare, zelda: 0
+game: A Link to the Past, dungeon: 12, villain: Ganon, zelda: 1
+
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.libtype.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.libtype.c Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,29 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2013 (c) Joyent, Inc. All rights reserved.
+ */
+
+/*
+ * We're linked against libc which has types, though we do not.
+ */
+#include <unistd.h>
+
+int
+main(void)
+{
+ for (;;) {
+ sleep(1000);
+ }
+ /*NOTREACHED*/
+ return (0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.libtype.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,45 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# Here we want to make sure that the program in question does not have ctf data
+# in its a.out; however, we can get types out of a linked libc.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="int"
+exe="tst.libtype.exe"
+
+elfdump "./$exe" | grep -q '.SUNW_ctf'
+if [[ $? -eq 0 ]]; then
+ echo "CTF exists in $exe, that's a bug" >&2
+ exit 1
+fi
+
+./$exe &
+pid=$!
+
+rc=`$dtrace -n "BEGIN{ trace((pid$pid\`$t)0); exit(0); }"`
+
+kill -9 $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.linkmap.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.linkmap.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,44 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# We should be able to see both strstr from libc and from ld on an
+# alternate linkmap.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+
+$dtrace -q -p $$ -s /dev/stdin <<EOF
+pid\$target:LM1\`ld.so.1:strstr:entry,
+pid\$target:libc.so.1:strstr:entry
+{
+ exit (0);
+}
+
+BEGIN
+{
+ exit (0);
+}
+EOF
+rc=$?
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.pidprint.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,69 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# Use print() on userland CTF types and verify we get the data we expect.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="final_fantasy_info_t"
+exe="tst.printtype.exe"
+
+elfdump "./$exe" | grep -q '.SUNW_ctf'
+if [[ $? -ne 0 ]]; then
+ echo "CTF does not exist in $exe, that's a bug" >&2
+ exit 1
+fi
+
+./$exe &
+pid=$!
+
+$dtrace -qs /dev/stdin <<EOF
+pid$pid::ff_getgameid:entry
+/next == 0/
+{
+ print(*args[0]);
+ printf("\n");
+ next = 1;
+}
+
+pid$pid::ff_getpartysize:entry
+/next == 1/
+{
+ print(*args[0]);
+ printf("\n");
+ next = 2;
+}
+
+pid$pid::ff_getsummons:entry
+/next == 2/
+{
+ print(*args[0]);
+ printf("\n");
+ exit(0);
+}
+EOF
+rc=$?
+
+kill -9 $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.pidprinttarg.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,70 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# Use print() on userland CTF types and verify we get the data we
+# expect. This time, use $target to make sure that path works correctly.
+#
+
+if [ $# != 1 ]; then
+ echo expected one argument: '<'dtrace-path'>'
+ exit 2
+fi
+
+dtrace=$1
+t="final_fantasy_info_t"
+exe="tst.printtype.exe"
+
+elfdump "./$exe" | grep -q '.SUNW_ctf'
+if [[ $? -ne 0 ]]; then
+ echo "CTF does not exist in $exe, that's a bug" >&2
+ exit 1
+fi
+
+./$exe &
+pid=$!
+
+$dtrace -p $pid -qs /dev/stdin <<EOF
+pid\$target::ff_getgameid:entry
+/next == 0/
+{
+ print(*args[0]);
+ printf("\n");
+ next = 1;
+}
+
+pid\$target::ff_getpartysize:entry
+/next == 1/
+{
+ print(*args[0]);
+ printf("\n");
+ next = 2;
+}
+
+pid\$target::ff_getsummons:entry
+/next == 2/
+{
+ print(*args[0]);
+ printf("\n");
+ exit(0);
+}
+EOF
+rc=$?
+
+kill -9 $pid
+
+exit $rc
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.c Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,72 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2013 (c) Joyent, Inc. All rights reserved.
+ */
+
+/*
+ * The point of this is to use print() on various functions to make sure that we
+ * can print basic structures. Note that we purposefully are making sure that
+ * there are no pointers here.
+ */
+#include <unistd.h>
+
+typedef struct final_fantasy_info {
+ int ff_gameid;
+ int ff_partysize;
+ int ff_hassummons;
+} final_fantasy_info_t;
+
+static int
+ff_getgameid(final_fantasy_info_t *f)
+{
+ return (0);
+}
+
+static int
+ff_getpartysize(final_fantasy_info_t *f)
+{
+ return (0);
+}
+
+static int
+ff_getsummons(final_fantasy_info_t *f)
+{
+ return (0);
+}
+
+int
+main(void)
+{
+ final_fantasy_info_t ffiii, ffx, ffi;
+
+ ffi.ff_gameid = 1;
+ ffi.ff_partysize = 4;
+ ffi.ff_hassummons = 0;
+
+ ffiii.ff_gameid = 6;
+ ffiii.ff_partysize = 4;
+ ffiii.ff_hassummons = 1;
+
+ ffx.ff_gameid = 10;
+ ffx.ff_partysize = 3;
+ ffx.ff_hassummons = 1;
+
+ for (;;) {
+ ff_getgameid(&ffi);
+ ff_getpartysize(&ffx);
+ ff_getsummons(&ffiii);
+ sleep(1);
+ }
+ /*NOTREACHED*/
+ return (0);
+}
Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/uctf/tst.printtype.ksh Tue Jun 3 01:24:46 2014 (r266989)
@@ -0,0 +1,69 @@
+#! /usr/bin/ksh
+#
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright (c) 2013 Joyent, Inc. All rights reserved.
+#
+
+#
+# Use print() on userland CTF types and verify we get the data we expect.
+#
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-vendor
mailing list