bug-libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libtool-2.2.8 fails test 56 with --as-needed


From: Ralf Wildenhues
Subject: Re: libtool-2.2.8 fails test 56 with --as-needed
Date: Mon, 7 Jun 2010 22:42:42 +0200
User-agent: Mutt/1.5.20 (2009-10-28)

Hello Ryan,

* Ryan Hill wrote on Sun, Jun 06, 2010 at 12:24:54PM CEST:
> On Sun, 6 Jun 2010 11:44:59 +0200 Ralf Wildenhues wrote:
> 
> > Thanks for the bug report.  To facilitate analysis, please show the
> > output of:
> >   cd tests/testsuite.dir/056
> >   objdump -p inst/bin/* inst/lib/*.so
> 
> Here you go.

Thank you.  The bug is that libb is relinked upon installation, which
makes a difference for the incompatible library update in that it causes
it to be linked against the new liba.so.2.  That's not the situation the
test aims to set up though.

I'm pushing the following patches and adding you to THANKS.

Cheers,
Ralf

    Fix versioning test for LDFLAGS=-Wl,--as-needed.
    
    * tests/versioning.at (versioning): For the library update
    hypotheses, ensure the unchanged library libb isn't accidentally
    relinked against the new liba, by not reinstalling libb.
    Fixes testsuite failure for the incompatible update case with
    LDFLAGS=-Wl,--as-needed.
    * THANKS: Update.
    Report by Ryan Hill.

diff --git a/tests/versioning.at b/tests/versioning.at
index 136a549..31f294e 100644
--- a/tests/versioning.at
+++ b/tests/versioning.at
@@ -1,6 +1,6 @@
 # versioning.at -- test libtool versioning           -*- Autotest -*-
 #
-#   Copyright (C) 2009 Free Software Foundation, Inc.
+#   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 #
 #   This file is part of GNU Libtool.
 #
@@ -190,18 +190,17 @@ AT_CHECK([$LIBTOOL --mode=uninstall rm -f 
$libdir/liba.la], [], [ignore], [ignor
 
 
 # Hypothesis: library revision updates do not require (uninstalled
-# nor installed) programs to be relinked.
+# nor installed) programs or libraries to be relinked.
 AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba2.lo ]dnl
         [-version-info 0:1:0 -rpath $libdir], [], [ignore], [ignore])
 test_uninstalled
-AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
-        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore])
 AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
 test_installed
 # do not uninstall here: the library may be reused in the next test.
 
 # Hypothesis: backward compatible library updates do not require
-# (uninstalled nor installed) programs to be relinked.
+# (uninstalled nor installed) programs or libraries to be relinked.
 # This can have one of several reasons:
 # - the soname is the difference between $current and $age, thus
 #   unchanged; in this case, the newly installed library will be used,
@@ -212,26 +211,26 @@ test_installed
 AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba3.lo ]dnl
         [-version-info 1:0:1 -rpath $libdir], [], [ignore], [ignore])
 # Do not test the uninstalled program, it may be broken (in the second case).
-AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
-        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore])
 AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
 test_installed
 # do not uninstall here: the library may be reused in the next test.
 
 
 # Hypothesis: with shared libraries, incompatible library updates
-# will not cause old installed programs (linked against the old
+# will not cause old installed programs or libraries (linked against the old
 # library version) to break.
 # This can have one of several reasons:
 # - the soname has changed, so the old installed library will still be
 #   available,
 # - we are linking statically, so the old library code will still be used.
+# In order to be sure we are still linking against the old library version,
+# we must ensure that libb is not relinked, so we must not reinstall libb here.
 AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba4.lo ]dnl
         [-version-info 2:0:0 -rpath $libdir], [], [ignore], [ignore])
 # We do not guarantee that old versions of an uninstalled library are still
 # available, so test_uninstalled will not necessarily work here any more.
-AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
-        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore])
 AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
 test_installed
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]