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