]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
Make preloading heed libname_spec.
authorPeter Rosin <peda@lysator.liu.se>
Thu, 8 Jul 2010 16:12:02 +0000 (18:12 +0200)
committerPeter Rosin <peda@lysator.liu.se>
Thu, 8 Jul 2010 16:12:02 +0000 (18:12 +0200)
Fixes testsuite failure for lt_dladvise.at on MSYS/MSVC.

* libltdl/ltdl.c (libprefix): New static variable describing
the prefix of static archives.
(try_dlopen): Use libprefix.
* libltdl/m4/ltdl.m4 (_LTDL_SETUP): Export prefix of static
archives to config.h. Also fix assignment of LTDLOPEN to be more
efficient and less error prone while at it.

ChangeLog
libltdl/ltdl.c
libltdl/m4/ltdl.m4

index 641ee0b00defc8a1e985404237a2958639766bdb..a20add4cc219ac94cd7e3daf204e412c47e5f96e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2010-07-08  Peter Rosin  <peda@lysator.liu.se>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Make preloading heed libname_spec.
+       Fixes testsuite failure for lt_dladvise.at on MSYS/MSVC.
+       * libltdl/ltdl.c (libprefix): New static variable describing
+       the prefix of static archives.
+       (try_dlopen): Use libprefix.
+       * libltdl/m4/ltdl.m4 (_LTDL_SETUP): Export prefix of static
+       archives to config.h. Also fix assignment of LTDLOPEN to be more
+       efficient and less error prone while at it.
+
 2010-07-08  Gary V. Vaughan  <gary@gnu.org>
 
        Rename _LT_PROG_XSI_REPLACE macro to _LT_PROG_FUNCTION_REPLACE.
index 1213f0dd2b372c18bd38764e3377acc964120739..992584c9c483c733d01511d8a8ffc70596050d46 100644 (file)
@@ -54,6 +54,10 @@ or obtained by writing to the Free Software Foundation, Inc.,
 #  define LT_LIBEXT "a"
 #endif
 
+#if !defined(LT_LIBPREFIX)
+#  define LT_LIBPREFIX "lib"
+#endif
+
 /* This is the maximum symbol size that won't require malloc/free */
 #undef LT_SYMBOL_LENGTH
 #define LT_SYMBOL_LENGTH       128
@@ -72,6 +76,7 @@ or obtained by writing to the Free Software Foundation, Inc.,
 static const char      objdir[]                = LT_OBJDIR;
 static const char      archive_ext[]           = LT_ARCHIVE_EXT;
 static  const char     libext[]                = LT_LIBEXT;
+static  const char     libprefix[]             = LT_LIBPREFIX;
 #if defined(LT_MODULE_EXT)
 static const char      shlib_ext[]             = LT_MODULE_EXT;
 #endif
@@ -1272,8 +1277,8 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
 
       if (vtable)
        {
-         /* name + "." + libext + NULL */
-         archive_name = MALLOC (char, LT_STRLEN (name) + strlen (libext) + 2);
+         /* libprefix + name + "." + libext + NULL */
+         archive_name = MALLOC (char, strlen (libprefix) + LT_STRLEN (name) + strlen (libext) + 2);
          *phandle = (lt_dlhandle) lt__zalloc (sizeof (struct lt__handle));
 
          if ((*phandle == NULL) || (archive_name == NULL))
@@ -1285,7 +1290,14 @@ try_dlopen (lt_dlhandle *phandle, const char *filename, const char *ext,
 
          /* Preloaded modules are always named according to their old
             archive name.  */
-         sprintf (archive_name, "%s.%s", name, libext);
+         if (strncmp(name, "lib", 3) == 0)
+           {
+             sprintf (archive_name, "%s%s.%s", libprefix, name + 3, libext);
+           }
+         else
+           {
+             sprintf (archive_name, "%s.%s", name, libext);
+           }
 
          if (tryall_dlopen (&newhandle, archive_name, advise, vtable) == 0)
            {
index 93de12a13066056cd47c4c507321c745ecc1796a..42e07e9f75ca5d6d8644d115915fb5e5e92983d1 100644 (file)
@@ -410,8 +410,13 @@ AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
 m4_pattern_allow([LT_LIBEXT])dnl
 AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
 
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
 name=ltdl
-LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""`
+eval "LTDLOPEN=\"$libname_spec\""
 AC_SUBST([LTDLOPEN])
 ])# _LTDL_SETUP