* Peter O'Gorman wrote on Thu, Apr 07, 2005 at 03:04:17PM CEST: > Peter O'Gorman wrote: > | Maciej W. Rozycki wrote: > | | > | | A change dated 2004-12-10 broke handling of archives containing multiple > | | members of the same name for GNU binutils. Unlike what the relevant *snip* > | > | Aw crap! Oh well, Alexandre Olivia has a patch, applied to gcc, that avoids > | putting duplicate members in the archive in the first place. Seems like a > | good plan. I'll go look for it. > > This is Alexandre Oliva's patch with a test case. OK to apply to branch-1-5 > and forward port?
Yes. Please show the forward-port, though. Nice and clean fix, BTW. May I suggest to add the additional step below to the test, to link another convenience lib into the convenience lib? Regards, Ralf --- tests/duplicate_members.test 2005-04-07 22:55:42.380753315 +0200 +++ tests/duplicate_members.test 2005-04-07 22:53:14.450335507 +0200 @@ -17,7 +17,7 @@ cd duplicate_members.dir chmod +x ./libtool -for a in 1 2 3 4 5 +for a in 1 2 3 4 5 6 do mkdir $a echo "int foo$a() {return $a;}" > $a/a.c @@ -28,12 +28,14 @@ do ./libtool --mode=compile --tag=CC $CC -c $CFLAGS -o $a/a.lo $a/a.c done +./libtool --mode=compile --tag=CC $CC -c $CFLAGS -o 6/a.lo 6/a.c -./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 +./libtool --mode=link --tag=CC $CC $CFLAGS $LDFLAGS -o libc0.la 6/a.lo +./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 cat <<EOF > bar.c int bar() { - int result=foo1() +foo2() +foo3() +foo4() +foo5(); + int result=foo1() +foo2() +foo3() +foo4() +foo5() + foo6(); return result; } EOF @@ -45,7 +47,7 @@ int bar(); int main() { -if (bar() == 15) return 0; +if (bar() == 21) return 0; return 1; } EOF