diff options
author | pfg <pfg@FreeBSD.org> | 2012-07-17 19:57:34 +0000 |
---|---|---|
committer | pfg <pfg@FreeBSD.org> | 2012-07-17 19:57:34 +0000 |
commit | d75ae2f261e0388ab653d345fdfe8d17b64aaf62 (patch) | |
tree | 514723b2e08585e273c82e445c37452f8ce9f815 /cddl/contrib/opensolaris/cmd/dtrace/test/tst | |
parent | b3c14b7d4a1c51dc4a0a2c31de89a4e23f1b1952 (diff) | |
parent | 84258b1f15098e2a784fd3bd7d214416f1e97104 (diff) | |
download | FreeBSD-src-d75ae2f261e0388ab653d345fdfe8d17b64aaf62.zip FreeBSD-src-d75ae2f261e0388ab653d345fdfe8d17b64aaf62.tar.gz |
Dtrace: improve handling of library paths.
Merge changes from illumos
906 dtrace depends_on pragma should search all library paths, not just the
current one
949 dtrace should only include the first instance of a library found on
its library path
Illumos Revisions: 13353:936a1e45726c
13354:2b2c36a81512
Reference:
https://www.illumos.org/issues/906
https://www.illumos.org/issues/949
Tested by: Fabian Keil
Obtained from: Illumos
MFC after: 3 weeks
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/dtrace/test/tst')
-rw-r--r-- | cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/include/tst.includefirst.ksh | 76 | ||||
-rw-r--r-- | cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.libdepsepdir.ksh | 76 |
2 files changed, 152 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/include/tst.includefirst.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/include/tst.includefirst.ksh new file mode 100644 index 0000000..b8240d6 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/include/tst.includefirst.ksh @@ -0,0 +1,76 @@ +# +# 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 (c) 2011, Joyent Inc. All rights reserved. +# Use is subject to license terms. +# + +# +# This test verifies that we only use the first entry of a file with a given +# name in the library path +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +firstinc=${TMPDIR:-/tmp}/firstinc.$$ +secondinc=${TMPDIR:-/tmp}/secondinc.$$ +expexit=23 + +setup_include() +{ + mkdir $firstinc + mkdir $secondinc + cat > $firstinc/lib.d <<EOF +inline int foobar = $expexit; +#pragma D binding "1.0" foobar +EOF + cat > $secondinc/lib.d <<EOF +inline int foobar = 42; +#pragma D binding "1.0" foobar +EOF +} + +clean() +{ + rm -rf $firstinc + rm -rf $secondinc +} + +fail() +{ + echo "$@" + clean + exit 1 +} + +setup_include + +dtrace -L$firstinc -L$secondinc -e -n 'BEGIN{ exit(foobar) }' +[[ $? != 0 ]] && fail "Failed to compile with same file in include path twice" +dtrace -L$firstinc -L$secondinc -n 'BEGIN{ exit(foobar) }' +status=$? +[[ $status != $expexit ]] && fail "Exited with unexpected status code: $status" +clean +exit 0 diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.libdepsepdir.ksh b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.libdepsepdir.ksh new file mode 100644 index 0000000..ced6584 --- /dev/null +++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.libdepsepdir.ksh @@ -0,0 +1,76 @@ +# +# 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 (c) 2011, Joyent Inc. All rights reserved. +# Use is subject to license terms. +# + +# +# Test to catch that we properly look for libraries dependencies in +# our full library parth +# + +if [ $# != 1 ]; then + echo expected one argument: '<'dtrace-path'>' + exit 2 +fi + +libdira=${TMPDIR:-/tmp}/libdepa.$$ +libdirb=${TMPDIR:-/tmp}/libdepb.$$ +libdirc=${TMPDIR:-/tmp}/libdepc.$$ +dtrace=$1 + +setup_libs() +{ + mkdir $libdira + mkdir $libdirb + mkdir $libdirc + cat > $libdira/liba.$$.d <<EOF +#pragma D depends_on library libb.$$.d +#pragma D depends_on library libc.$$.d +#pragma D depends_on library libd.$$.d +EOF + cat > $libdirb/libb.$$.d <<EOF +#pragma D depends_on library libc.$$.d +EOF + cat > $libdirb/libc.$$.d <<EOF +EOF + cat > $libdirb/libd.$$.d <<EOF +EOF + cat > $libdirc/libe.$$.d <<EOF +#pragma D depends_on library liba.$$.d +EOF + cat > $libdirc/libf.$$.d <<EOF +EOF +} + + +setup_libs + +$dtrace -L$libdira -L$libdirb -L$libdirc -e + +status=$? +rm -rf $libdira +rm -rf $libdirb +rm -rf $libdirc +return $status + |