From 871ee96d6f8fef01f3560c90edbad5bd19dac5c6 Mon Sep 17 00:00:00 2001 From: jb Date: Fri, 25 Apr 2008 06:56:31 +0000 Subject: Vendor import of the DTrace app and test suite from OpenSolaris. --- .../test/tst/common/pid/err.D_PDESC_ZERO.badlib.d | 38 +++++ .../tst/common/pid/err.D_PDESC_ZERO.badproc1.d | 38 +++++ .../tst/common/pid/err.D_PROC_BADPID.badproc2.d | 38 +++++ .../tst/common/pid/err.D_PROC_CREATEFAIL.many.d | 36 +++++ .../test/tst/common/pid/err.D_PROC_FUNC.badfunc.d | 40 ++++++ .../test/tst/common/pid/err.D_PROC_LIB.libdash.d | 38 +++++ .../test/tst/common/pid/err.D_PROC_NAME.alldash.d | 38 +++++ .../test/tst/common/pid/err.D_PROC_NAME.badname.d | 38 +++++ .../test/tst/common/pid/err.D_PROC_NAME.globdash.d | 38 +++++ .../test/tst/common/pid/err.D_PROC_OFF.toobig.d | 40 ++++++ .../dtrace/test/tst/common/pid/tst.addprobes.ksh | 61 ++++++++ .../cmd/dtrace/test/tst/common/pid/tst.args1.c | 52 +++++++ .../cmd/dtrace/test/tst/common/pid/tst.args1.d | 75 ++++++++++ .../cmd/dtrace/test/tst/common/pid/tst.coverage.d | 51 +++++++ .../dtrace/test/tst/common/pid/tst.emptystack.d | 64 +++++++++ .../test/tst/common/pid/tst.emptystack.d.out | 3 + .../cmd/dtrace/test/tst/common/pid/tst.float.c | 46 ++++++ .../cmd/dtrace/test/tst/common/pid/tst.float.d | 51 +++++++ .../cmd/dtrace/test/tst/common/pid/tst.fork.c | 63 +++++++++ .../cmd/dtrace/test/tst/common/pid/tst.fork.d | 86 ++++++++++++ .../cmd/dtrace/test/tst/common/pid/tst.gcc.c | 63 +++++++++ .../cmd/dtrace/test/tst/common/pid/tst.gcc.d | 52 +++++++ .../cmd/dtrace/test/tst/common/pid/tst.main.ksh | 59 ++++++++ .../dtrace/test/tst/common/pid/tst.manypids.ksh | 70 ++++++++++ .../dtrace/test/tst/common/pid/tst.newprobes.ksh | 62 +++++++++ .../test/tst/common/pid/tst.newprobes.ksh.out | 7 + .../dtrace/test/tst/common/pid/tst.probemod.ksh | 56 ++++++++ .../dtrace/test/tst/common/pid/tst.provregex1.ksh | 93 +++++++++++++ .../dtrace/test/tst/common/pid/tst.provregex2.ksh | 131 ++++++++++++++++++ .../test/tst/common/pid/tst.provregex2.ksh.out | 3 + .../dtrace/test/tst/common/pid/tst.provregex3.ksh | 102 ++++++++++++++ .../test/tst/common/pid/tst.provregex3.ksh.out | 3 + .../dtrace/test/tst/common/pid/tst.provregex4.ksh | 154 +++++++++++++++++++++ .../test/tst/common/pid/tst.provregex4.ksh.out | 3 + .../cmd/dtrace/test/tst/common/pid/tst.ret1.c | 64 +++++++++ .../cmd/dtrace/test/tst/common/pid/tst.ret1.d | 73 ++++++++++ .../cmd/dtrace/test/tst/common/pid/tst.ret2.c | 58 ++++++++ .../cmd/dtrace/test/tst/common/pid/tst.ret2.d | 73 ++++++++++ .../cmd/dtrace/test/tst/common/pid/tst.vfork.c | 65 +++++++++ .../cmd/dtrace/test/tst/common/pid/tst.vfork.d | 61 ++++++++ .../cmd/dtrace/test/tst/common/pid/tst.weak1.c | 58 ++++++++ .../cmd/dtrace/test/tst/common/pid/tst.weak1.d | 83 +++++++++++ .../cmd/dtrace/test/tst/common/pid/tst.weak2.c | 58 ++++++++ .../cmd/dtrace/test/tst/common/pid/tst.weak2.d | 83 +++++++++++ 44 files changed, 2468 insertions(+) create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badproc1.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_BADPID.badproc2.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_CREATEFAIL.many.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.addprobes.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d.out create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.main.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.manypids.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh.out create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.probemod.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh.out create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh.out create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh.out create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.d create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c create mode 100644 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.d (limited to 'cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid') diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.d new file mode 100644 index 0000000..a3fa24f --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badlib.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: can't specify a bogus library name + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pid$1:libbmc_sucks.so.1::entry +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badproc1.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badproc1.d new file mode 100644 index 0000000..3f3ca22 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PDESC_ZERO.badproc1.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Verify that we don't grab bogus process IDs. + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pidgin:::entry +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_BADPID.badproc2.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_BADPID.badproc2.d new file mode 100644 index 0000000..8e01b06 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_BADPID.badproc2.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Make sure we can't grab pid 0 + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pid0:::entry +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_CREATEFAIL.many.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_CREATEFAIL.many.d new file mode 100644 index 0000000..dabcd9c --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_CREATEFAIL.many.d @@ -0,0 +1,36 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +pid$1::: +{ +} + +BEGIN +{ + exit(1); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.d new file mode 100644 index 0000000..f1c44e8 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_FUNC.badfunc.d @@ -0,0 +1,40 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Can't specify a bogus function name (if the module is specified) + * + * SECTION: User Process Tracing/pid Provider + * + * NOTES: + * + */ + +pid$1:a.out:ahl_r00lz:entry +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.d new file mode 100644 index 0000000..dd90530 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_LIB.libdash.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Test that the '-' function doesn't work with random modules + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pid$1:libc:-:800 +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.d new file mode 100644 index 0000000..6acf8aa --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.alldash.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Verify that you can't enable "all" '-' function probes + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pid$1::-: +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.d new file mode 100644 index 0000000..829c002 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.badname.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Only entry, return and offsets are valid names + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pid$1:a.out:main:beginning +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.d new file mode 100644 index 0000000..36bf9d6 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_NAME.globdash.d @@ -0,0 +1,38 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Verify that you can't glob the probe name with the '-' function + * + * SECTION: User Process Tracing/pid Provider + * + */ + +pid$1::-:10* +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.d new file mode 100644 index 0000000..60e5a8c --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/err.D_PROC_OFF.toobig.d @@ -0,0 +1,40 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Can't have an offset that's outside of a function + * + * SECTION: User Process Tracing/pid Provider + * + * NOTES: If _exit(2) becomes _way_ more complex this could fail... + * + */ + +pid$1::_exit:100 +{ +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.addprobes.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.addprobes.ksh new file mode 100644 index 0000000..6c269ca --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.addprobes.ksh @@ -0,0 +1,61 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +# +# This test verifies that it's possible to add new pid probes to an existing +# pid provider. +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 + +sleep 60 & +pid=$! + +$dtrace -n pid$pid:libc::entry -n 'tick-1s{exit(0);}' +status=$? + +if [ $status -gt 0 ]; then + exit $status; +fi + +$dtrace -n pid$pid:libc::return -n 'tick-1s{exit(0);}' +status=$? + +if [ $status -gt 0 ]; then + exit $status; +fi + +kill $pid + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c new file mode 100644 index 0000000..23bbab2 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c @@ -0,0 +1,52 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include +#include + +int +go(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9) +{ + return (arg1); +} + +static void +handle(int sig) +{ + go(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); + exit(0); +} + +int +main(int argc, char **argv) +{ + (void) signal(SIGUSR1, handle); + for (;;) + getpid(); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.d new file mode 100644 index 0000000..a3ad6c9 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.d @@ -0,0 +1,75 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: test that all 10 arguments are what we expect them to be. + * + * SECTION: pid provider + */ + +#pragma D option destructive + +BEGIN +{ + /* + * Wait no more than a second for the first call to getpid(2). + */ + timeout = timestamp + 1000000000; +} + +syscall::getpid:return +/pid == $1/ +{ + i = 0; + raise(SIGUSR1); + /* + * Wait half a second after raising the signal. + */ + timeout = timestamp + 500000000; +} + +pid$1:a.out:go:entry +/arg0 == 0 && arg1 == 1 && arg2 == 2 && arg3 == 3 && arg4 == 4 && +arg5 == 5 && arg6 == 6 && arg7 == 7 && arg8 == 8 && arg9 == 9/ +{ + exit(0); +} + +pid$1:a.out:go:entry +{ + printf("wrong args: %d %d %d %d %d %d %d %d %d %d", arg0, arg1, arg2, + arg3, arg4, arg5, arg6, arg7, arg8, arg9); + exit(1); +} + +profile:::tick-4 +/timestamp > timeout/ +{ + trace("test timed out"); + exit(1); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.d new file mode 100644 index 0000000..d3d568e --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.coverage.d @@ -0,0 +1,51 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: test that we can trace every instruction safely + * + * SECTION: pid provider + * + */ + +BEGIN +{ + /* + * Let's just do this for 2 seconds. + */ + timeout = timestamp + 2000000000; +} + +pid$1:a.out:: +{} + +profile:::tick-4 +/timestamp > timeout/ +{ + exit(0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d new file mode 100644 index 0000000..e0fada8 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d @@ -0,0 +1,64 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: the stack() action should be empty for all pid probes + * + * SECTION: pid provider + */ + +#pragma D option quiet + +BEGIN +{ + /* + * Monitor the program for two seconds. + */ + timeout = timestamp + 1000000000 * 2; +} + +pid$1:::return +{ + @[stack()] = sum(0); +} + +pid$1:a.out:: +{ + @[stack()] = sum(0); +} + +pid$1:::entry +{ + @[stack()] = sum(0); +} + +profile:::tick-4 +/timestamp > timeout/ +{ + exit(0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d.out new file mode 100644 index 0000000..2304a61 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.emptystack.d.out @@ -0,0 +1,3 @@ + + + 0 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.c new file mode 100644 index 0000000..450c6aa --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.c @@ -0,0 +1,46 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include + +volatile double c = 1.2; + +int +main(int argc, char **argv) +{ + double a = 1.56; + double b = (double)argc; + + for (;;) { + c *= a; + c += b; + (void) usleep(1000); + } + + return (0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.d new file mode 100644 index 0000000..4e11ee3 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.float.d @@ -0,0 +1,51 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Make sure we can work on processes that use the FPU + * + * SECTION: pid provider + */ + +BEGIN +{ + /* + * Let's just do this for 5 seconds. + */ + timeout = timestamp + 5000000000; +} + +pid$1:a.out:main: +{} + +profile:::tick-4 +/timestamp > timeout/ +{ + exit(0); +} + diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.c new file mode 100644 index 0000000..d5e90db --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.c @@ -0,0 +1,63 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include + +int +waiting(volatile int *a) +{ + return (*a); +} + +int +go(void) +{ + int i, j, total = 0; + + for (i = 0; i < 10; i++) { + for (j = 0; j < 10; j++) { + total += i * j; + } + } + + return (total); +} + +int +main(int argc, char **argv) +{ + volatile int a = 0; + + while (waiting(&a) == 0) + continue; + + (void) forkall(); + (void) go(); + + return (0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d new file mode 100644 index 0000000..f1b1197 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d @@ -0,0 +1,86 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: make sure fork(2) is okay + * + * SECTION: pid provider + */ + +#pragma D option destructive + +pid$1:a.out:waiting:entry +{ + this->value = (int *)alloca(sizeof (int)); + *this->value = 1; + copyout(this->value, arg0, sizeof (int)); +} + +proc:::create +/pid == $1/ +{ + child = args[0]->pr_pid; + trace(pid); +} + +pid$1:a.out:go: +/pid == child/ +{ + trace("wrong pid"); + exit(1); +} + +proc:::exit +/pid == $1 || pid == child/ +{ + out++; + trace(pid); +} + +proc:::exit +/out == 2/ +{ + exit(0); +} + + +BEGIN +{ + /* + * Let's just do this for 5 seconds. + */ + timeout = timestamp + 5000000000; +} + +profile:::tick-4 +/timestamp > timeout/ +{ + trace("test timed out"); + exit(1); +} + diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c new file mode 100644 index 0000000..b97fa9d --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c @@ -0,0 +1,63 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include +#include + +void +go(void) +{ + pid_t pid; + + (void) posix_spawn(&pid, "/usr/bin/ls", NULL, NULL, NULL, NULL); + + (void) waitpid(pid, NULL, 0); +} + +void +intr(int sig) +{ +} + +int +main(int argc, char **argv) +{ + struct sigaction sa; + + sa.sa_handler = intr; + sigfillset(&sa.sa_mask); + sa.sa_flags = 0; + + (void) sigaction(SIGUSR1, &sa, NULL); + + for (;;) { + go(); + } + + return (0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.d new file mode 100644 index 0000000..f119098 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.d @@ -0,0 +1,52 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: test that we can trace every instruction safely for gcc + * compiled apps. + * + * SECTION: pid provider + * + */ + +BEGIN +{ + /* + * Let's just do this for 2 seconds. + */ + timeout = timestamp + 2000000000; +} + +pid$1:a.out:: +{} + +profile:::tick-4 +/timestamp > timeout/ +{ + exit(0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.main.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.main.ksh new file mode 100644 index 0000000..b3b9960 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.main.ksh @@ -0,0 +1,59 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 + +# +# Make sure we can trace main:entry properly -- this was problematic because +# we also set a breakpoint on the same spot in libdtrace. +# + +$dtrace -c date -s /dev/stdin <' + exit 2 +fi + +dtrace=$1 + +set -A pids + +for lib in `ls -1 /lib/lib*.so.1 | grep -v ld.so.1`; do + preload=$lib:${preload} +done + +export LD_PRELOAD=$preload + +let numkids=100 +let i=0 + +tmpfile=/tmp/dtest.$$ + +while [ "$i" -lt "$numkids" ]; do + sleep 500 & + pids[$i]=$! + let i=i+1 +done + +export LD_PRELOAD= + +let i=0 + +echo "tick-1sec\n{\n\texit(0);\n}\n" > $tmpfile + +while [ "$i" -lt "$numkids" ]; do + echo "pid${pids[$i]}::malloc:entry\n{}\n" >> $tmpfile + let i=i+1 +done + +$dtrace -s $tmpfile +status=$? + +rm $tmpfile +pkill sleep +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh new file mode 100644 index 0000000..35f0391 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh @@ -0,0 +1,62 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 + +$dtrace -wZq -x switchrate=100ms -s /dev/stdin < 5/ +{ + exit(0); +} + +tick-1s +/(i % 2) == 0/ +{ + system("dtrace -c date -ln 'pid\$target::main:entry' >/dev/null"); +} + +tick-1s +/(i % 2) == 1/ +{ + system("dtrace -c date -ln 'pid\$target::main:return' >/dev/null"); +} +EOF + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh.out new file mode 100644 index 0000000..b2742c4 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh.out @@ -0,0 +1,7 @@ +main:return +main:entry +main:return +main:entry +main:return +main:entry + diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.probemod.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.probemod.ksh new file mode 100644 index 0000000..2565b50 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.probemod.ksh @@ -0,0 +1,56 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 + +# +# Let's see if we can successfully specify a module using partial +# matches as well as the full module name. We'll use 'libc.so.1' +# (and therefore 'libc' and 'libc.so') as it's definitely there. +# + +for lib in libc libc.so libc.so.1; do + sleep 60 & + pid=$! + dtrace -n "pid$pid:$lib::entry" -n 'tick-2s{exit(0);}' + status=$? + + kill $pid + + if [ $status -gt 0 ]; then + exit $status + fi +done + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh new file mode 100644 index 0000000..892ff3e --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex1.ksh @@ -0,0 +1,93 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" + +# +# This test verifies that specifying a glob in a pid provider name +# (e.g., p*d$target) works. +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=${TMPDIR:-/tmp}/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > Makefile < main.c < /dev/null +if [ $? -ne 0 ]; then + print -u2 "failed to build" + exit 1 +fi + +cat > main.d <<'EOF' +p*d$target::go:entry +{ + printf("%s:%s:%s\n", probemod, probefunc, probename); +} +EOF + +script() { + $dtrace -q -s ./main.d -c ./main +} + +script +status=$? + +cd /tmp +/usr/bin/rm -rf $DIR + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh new file mode 100644 index 0000000..8d83bdd --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh @@ -0,0 +1,131 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" + +# +# This test verifies that probes will be picked up after a dlopen(3C) +# when the pid provider is specified as a glob (e.g., p*d$target.) +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=${TMPDIR:-/tmp}/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > Makefile < altlib.c < main.c < +#include +#include + +void +go(void) +{ +} + +int +main(int argc, char **argv) +{ + void *alt; + void *alt_go; + + go(); + + if ((alt = dlopen("./altlib.so", RTLD_LAZY | RTLD_LOCAL)) + == NULL) { + printf("dlopen of altlib.so failed: %s\n", dlerror()); + return (1); + } + + if ((alt_go = dlsym(alt, "go")) == NULL) { + printf("failed to lookup 'go' in altlib.so\n"); + return (1); + } + + ((void (*)(void))alt_go)(); + + return (0); +} +EOF + +make > /dev/null +if [ $? -ne 0 ]; then + print -u2 "failed to build" + exit 1 +fi + +cat > main.d <<'EOF' +p*d$target::go:entry +{ + @foo[probemod, probefunc, probename] = count(); +} + +END +{ + printa("%s:%s:%s %@u\n",@foo); +} +EOF + +script() { + $dtrace -q -s ./main.d -c ./main +} + +script +status=$? + +cd /tmp +/usr/bin/rm -rf $DIR + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh.out new file mode 100644 index 0000000..824d898 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex2.ksh.out @@ -0,0 +1,3 @@ +altlib.so:go:entry 1 +main:go:entry 1 + diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh new file mode 100644 index 0000000..c9ac6b1 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh @@ -0,0 +1,102 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" + +# +# This test verifies that a regex in the provider name will match +# USDT probes as well as pid probes (e.g., p*d$target matches both +# pid$target and pyramid$target.) +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=${TMPDIR:-/tmp}/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > Makefile < prov.d < main.c < +#include "prov.h" + +int +main(int argc, char **argv) +{ + PYRAMID_ENTRY(); +} +EOF + +make > /dev/null +if [ $? -ne 0 ]; then + print -u2 "failed to build" + exit 1 +fi + +cat > main.d <<'EOF' +p*d$target::main:entry +{ + printf("%s:%s:%s\n", probemod, probefunc, probename); +} +EOF + +script() { + $dtrace -q -s ./main.d -c ./main +} + +script +status=$? + +cd /tmp +/usr/bin/rm -rf $DIR + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh.out new file mode 100644 index 0000000..5a8938f --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex3.ksh.out @@ -0,0 +1,3 @@ +main:main:entry +main:main:entry + diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh new file mode 100644 index 0000000..278ec12 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh @@ -0,0 +1,154 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +# ident "%Z%%M% %I% %E% SMI" + +# +# This test verifies that USDT probes will be picked up after a dlopen(3C) +# when a regex in the provider name matches both USDT probes and pid probes +# (e.g., p*d$target matches both pid$target and pyramid$target.) +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +dtrace=$1 +DIR=${TMPDIR:-/tmp}/dtest.$$ + +mkdir $DIR +cd $DIR + +cat > Makefile < prov.d < altlib.c < +#include "prov.h" + +void +go(void) +{ + PYRAMID_ENTRY(); +} +EOF + +cat > main.c < +#include +#include +#include +#include "prov.h" + +void +go(void) +{ + PYRAMID_ENTRY(); +} + +int +main(int argc, char **argv) +{ + void *alt; + void *alt_go; + + go(); + + if ((alt = dlopen("./altlib.so", RTLD_LAZY | RTLD_LOCAL)) + == NULL) { + printf("dlopen of altlib.so failed: %s\n", dlerror()); + return (1); + } + + if ((alt_go = dlsym(alt, "go")) == NULL) { + printf("failed to lookup 'go' in altlib.so\n"); + return (1); + } + + ((void (*)(void))alt_go)(); + + return (0); +} +EOF + +make > /dev/null +if [ $? -ne 0 ]; then + print -u2 "failed to build" + exit 1 +fi + +cat > main.d <<'EOF' +p*d$target::go:entry +{ + @foo[probemod, probefunc, probename] = count(); +} + +END +{ + printa("%s:%s:%s %@u\n",@foo); +} +EOF + +script() { + $dtrace -q -s ./main.d -c ./main +} + +script +status=$? + +cd /tmp +/usr/bin/rm -rf $DIR + +exit $status diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh.out b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh.out new file mode 100644 index 0000000..f471538 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.provregex4.ksh.out @@ -0,0 +1,3 @@ +altlib.so:go:entry 2 +main:go:entry 2 + diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c new file mode 100644 index 0000000..cfb88a8 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c @@ -0,0 +1,64 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include +#include + +/* + * The canonical name should be 'go' since we prefer symbol names with fewer + * leading underscores. + */ + +int a = 100; + +int +help(void) +{ + return (a); +} + +int +go(void) +{ + return (help() + 1); +} + +static void +handle(int sig) +{ + go(); + exit(0); +} + +int +main(int argc, char **argv) +{ + (void) signal(SIGUSR1, handle); + for (;;) + getpid(); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.d new file mode 100644 index 0000000..0305d09 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.d @@ -0,0 +1,73 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: test that we get the right return value from non-leaf returns + * + * SECTION: pid provider + */ + +#pragma D option destructive + +BEGIN +{ + /* + * Wait no more than a second for the first call to getpid(2). + */ + timeout = timestamp + 1000000000; +} + +syscall::getpid:return +/pid == $1/ +{ + i = 0; + raise(SIGUSR1); + /* + * Wait half a second after raising the signal. + */ + timeout = timestamp + 500000000; +} + +pid$1:a.out:go:return +/arg1 == 101/ +{ + exit(0); +} + +pid$1:a.out:go:return +{ + printf("wrong return value: %d", arg1); + exit(1); +} + +profile:::tick-4 +/timestamp > timeout/ +{ + trace("test timed out"); + exit(1); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c new file mode 100644 index 0000000..b64aa05 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c @@ -0,0 +1,58 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include +#include + +/* + * The canonical name should be 'go' since we prefer symbol names with fewer + * leading underscores. + */ + +int a = 100; + +int +go(void) +{ + return (a); +} + +static void +handle(int sig) +{ + go(); + exit(0); +} + +int +main(int argc, char **argv) +{ + (void) signal(SIGUSR1, handle); + for (;;) + getpid(); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.d new file mode 100644 index 0000000..0232948 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.d @@ -0,0 +1,73 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: test that we get the right return value from leaf returns + * + * SECTION: pid provider + */ + +#pragma D option destructive + +BEGIN +{ + /* + * Wait no more than a second for the first call to getpid(2). + */ + timeout = timestamp + 1000000000; +} + +syscall::getpid:return +/pid == $1/ +{ + i = 0; + raise(SIGUSR1); + /* + * Wait half a second after raising the signal. + */ + timeout = timestamp + 500000000; +} + +pid$1:a.out:go:return +/arg1 == 100/ +{ + exit(0); +} + +pid$1:a.out:go:return +{ + printf("wrong return value: %d", arg1); + exit(1); +} + +profile:::tick-4 +/timestamp > timeout/ +{ + trace("test timed out"); + exit(1); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.c new file mode 100644 index 0000000..76fa711 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.c @@ -0,0 +1,65 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include + +int +waiting(volatile int *a) +{ + return (*a); +} + +int +go(void) +{ + int i, j, total = 0; + + for (i = 0; i < 10; i++) { + for (j = 0; j < 10; j++) { + total += i * j; + } + } + + return (total); +} + +int +main(int argc, char **argv) +{ + volatile int a = 0; + + while (waiting(&a) == 0) + continue; + + if (vfork() == 0) { + int ret = go(); + (void) _exit(ret); + } + + return (0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d new file mode 100644 index 0000000..b31bb7f --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d @@ -0,0 +1,61 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: make sure probes called from a vfork(2) child fire in the parent + * + * SECTION: pid provider + */ + +#pragma D option destructive + +pid$1:a.out:waiting:entry +{ + this->value = (int *)alloca(sizeof (int)); + *this->value = 1; + copyout(this->value, arg0, sizeof (int)); +} + +proc:::create +/pid == $1/ +{ + child = args[0]->pr_pid; +} + +pid$1:a.out:go: +/child != pid/ +{ + printf("wrong pid (%d %d)", pid, child); + exit(1); +} + +syscall::rexit:entry +/pid == $1/ +{ + exit(0); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c new file mode 100644 index 0000000..1418f2a --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c @@ -0,0 +1,58 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include +#include + +/* + * The canonical name should be 'go' since we prefer symbol names with fewer + * leading underscores. + */ + +#pragma weak _go = go + +int +go(int a) +{ + return (a + 1); +} + +static void +handle(int sig) +{ + _go(1); + exit(0); +} + +int +main(int argc, char **argv) +{ + (void) signal(SIGUSR1, handle); + for (;;) + getpid(); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.d new file mode 100644 index 0000000..458eada --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.d @@ -0,0 +1,83 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: test that we prefer symbols with fewer underscores + * + * SECTION: pid provider + */ + +#pragma D option destructive + +BEGIN +{ + /* + * Wait no more than a second for the first call to getpid(2). + */ + timeout = timestamp + 1000000000; +} + +syscall::getpid:return +/pid == $1/ +{ + i = 0; + raise(SIGUSR1); + /* + * Wait half a second after raising the signal. + */ + timeout = timestamp + 500000000; +} + +pid$1:a.out:go:entry, +pid$1:a.out:_go:entry +/probefunc == "go"/ +{ + i++; +} + +pid$1:a.out:go:entry, +pid$1:a.out:_go:entry +/probefunc == "_go"/ +{ + trace("resolved to '_go' rather than 'go'"); + exit(1); +} + +pid$1:a.out:go:entry, +pid$1:a.out:_go:entry +/i == 2/ +{ + exit(0); +} + +profile:::tick-4 +/timestamp > timeout/ +{ + trace("test timed out"); + exit(1); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c new file mode 100644 index 0000000..8dabbe6 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c @@ -0,0 +1,58 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include +#include + +/* + * The canonical name should be 'go' since we prefer symbol names with fewer + * leading underscores. + */ + +#pragma weak _go = go + +static int +go(int a) +{ + return (a + 1); +} + +static void +handle(int sig) +{ + _go(1); + exit(0); +} + +int +main(int argc, char **argv) +{ + (void) signal(SIGUSR1, handle); + for (;;) + getpid(); +} diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.d new file mode 100644 index 0000000..e3688b5 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.d @@ -0,0 +1,83 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: check that we prefer weak symbols to local ones + * + * SECTION: pid provider + */ + +#pragma D option destructive + +BEGIN +{ + /* + * Wait no more than a second for the first call to getpid(2). + */ + timeout = timestamp + 1000000000; +} + +syscall::getpid:return +/pid == $1/ +{ + i = 0; + raise(SIGUSR1); + /* + * Wait half a second after raising the signal. + */ + timeout = timestamp + 500000000; +} + +pid$1:a.out:go:entry, +pid$1:a.out:_go:entry +/probefunc == "_go"/ +{ + i++; +} + +pid$1:a.out:go:entry, +pid$1:a.out:_go:entry +/probefunc == "go"/ +{ + trace("resolved to '_go' rather than 'go'"); + exit(1); +} + +pid$1:a.out:go:entry, +pid$1:a.out:_go:entry +/i == 2/ +{ + exit(0); +} + +profile:::tick-4 +/timestamp > timeout/ +{ + trace("test timed out"); + exit(1); +} -- cgit v1.1