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