1#! /bin/sh
2# duplicate members
3
4need_prefix=no
5if test -z "$srcdir"; then
6  srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
7  test "$srcdir" = "$0" && srcdir=.
8  test "${VERBOSE+set}" != "set" && VERBOSE=yes
9fi
10. $srcdir/defs || exit 1
11
12test -d duplicate_members.dir && rm -rf duplicate_members.dir
13mkdir duplicate_members.dir
14# we don't want to use whole_archive_flag_spec, even if available
15sed -e 's|^whole_archive_flag_spec=.*|whole_archive_flag_spec=|g' < $libtool > duplicate_members.dir/libtool
16
17cd duplicate_members.dir
18chmod +x ./libtool
19
20for a in 1 2 3 4 5 6
21do
22  mkdir $a
23  echo "int foo$a() {return $a;}" > $a/a.c
24done
25eval `./libtool --config | grep ^CC`
26
27for a in 1 2 3 4 5 6
28do
29  ./libtool --mode=compile --tag=CC $CC -c $CFLAGS -o $a/a.lo $a/a.c
30done
31./libtool --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o libc0.la 6/a.lo
32./libtool --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o libconv.la 1/a.lo 2/a.lo 3/a.lo 4/a.lo 5/a.lo libc0.la
33
34cat <<EOF > bar.c
35int bar() {
36    int result=foo1() +foo2() +foo3() +foo4() +foo5() +foo6();
37    return result;
38}
39EOF
40
41./libtool --mode=compile --tag=CC $CC -c $CFLAGS -o bar.lo bar.c
42./libtool --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o libbar.la bar.lo libconv.la -rpath /notexist
43
44cat <<EOF > main.c
45int bar();
46int main()
47{
48if (bar() == 21) return 0;
49return 1;
50}
51EOF
52./libtool --mode=compile --tag=CC $CC -c $CFLAGS -o main.lo main.c
53./libtool --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o main main.lo ./libbar.la
54./main
55retcode=$?
56cd ..
57rm -rf duplicate_members.dir
58exit $retcode
59