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