1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9# or http://www.opensolaris.org/os/licensing. 10# See the License for the specific language governing permissions 11# and limitations under the License. 12# 13# When distributing Covered Code, include this CDDL HEADER in each 14# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15# If applicable, add the following below this CDDL HEADER, with the 16# fields enclosed by brackets "[]" replaced with your own identifying 17# information: Portions Copyright [yyyy] [name of copyright owner] 18# 19# CDDL HEADER END 20# 21 22# 23# Copyright (c) 2011, Joyent Inc. All rights reserved. 24# Use is subject to license terms. 25# 26 27# 28# This test verifies that we only use the first entry of a file with a given 29# name in the library path 30# 31 32if [ $# != 1 ]; then 33 echo expected one argument: '<'dtrace-path'>' 34 exit 2 35fi 36 37firstinc=${TMPDIR:-/tmp}/firstinc.$$ 38secondinc=${TMPDIR:-/tmp}/secondinc.$$ 39expexit=23 40 41setup_include() 42{ 43 mkdir $firstinc 44 mkdir $secondinc 45 cat > $firstinc/lib.d <<EOF 46inline int foobar = $expexit; 47#pragma D binding "1.0" foobar 48EOF 49 cat > $secondinc/lib.d <<EOF 50inline int foobar = 42; 51#pragma D binding "1.0" foobar 52EOF 53} 54 55clean() 56{ 57 rm -rf $firstinc 58 rm -rf $secondinc 59} 60 61fail() 62{ 63 echo "$@" 64 clean 65 exit 1 66} 67 68setup_include 69 70dtrace -L$firstinc -L$secondinc -e -n 'BEGIN{ exit(foobar) }' 71[[ $? != 0 ]] && fail "Failed to compile with same file in include path twice" 72dtrace -L$firstinc -L$secondinc -n 'BEGIN{ exit(foobar) }' 73status=$? 74[[ $status != $expexit ]] && fail "Exited with unexpected status code: $status" 75clean 76exit 0 77