Hi Eric, * Eric Blake wrote on Thu, Sep 08, 2005 at 11:06:45PM CEST: > Eric Blake <ebb9 <at> byu.net> writes: > > > I notice that it is attempting to link against /usr/lib/libltdl.dll.a, > > which comes from libtool 1.5.18, rather than /usr/local/lib/libltdl.dll.a, > > which is my installed libtool 2.1a, and I am pretty sure that > > lt_dlhandle_fi{nd,rst} were added in 2.x, explaining the link failure. > > What I can't track down is why the link command is looking in the wrong > > directory, and thus getting the wrong symbols for libltdl. > > I managed to work around the earlier bug report by configuring m4 using > --with- > included-ltdl, but it still feels hackish. I wish I knew why m4 was trying > to > link against the wrong libltld. In the meantime, once I was using my > workaround, it exposed another bug.
I'm sorry for not having looked into this yet; it may be related to another possible bug I am seeing. Can you post the value of $(LIBLTDL)? > ltdl.c, in lt_argz_insert, blindly calls argz_insert without checking whether > the before argument is NULL. But newlib (up until my patch posted there > today > is incorporated, http://sources.redhat.com/ml/newlib/2005/msg00516.html) > treated this as EINVAL, thus breaking load_deplibs() and failing every single > testcase of the m4 testsuite because of a failure to initialize. Thank you so much for analyzing this and providing a fix, I owe you a beer for that one! Your fix is not quite appropriate for inclusion, however, because our replacement argz.c does not provide argz_add. Does newlib have a similar bug in argz_append? If not, then the patch below should work as well, I believe (untested with newlib), and is less work than providing argz_add as well. Could you confirm this? If ok, I'll apply this CVS HEAD and backport to branch-1-5. By the way, how does the m4 testsuite fare on cygwin with this fixed? Cheers, Ralf * libltdl/ltdl.c (lt_argz_insert): Work around newlib argz_insert bug. * Makefile.am (VERSION_INFO): Bumped revision. Reported by Eric Blake <[EMAIL PROTECTED]>. Index: Makefile.am =================================================================== RCS file: /cvsroot/libtool/libtool/Makefile.am,v retrieving revision 1.161 diff -u -r1.161 Makefile.am --- Makefile.am 5 Sep 2005 06:21:48 -0000 1.161 +++ Makefile.am 9 Sep 2005 07:21:02 -0000 @@ -230,7 +230,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -Ilibltdl -I$(srcdir)/libltdl \ -I$(srcdir)/libltdl/libltdl AM_LDFLAGS = -no-undefined -VERSION_INFO = -version-info 6:0:0 +VERSION_INFO = -version-info 6:1:0 noinst_LTLIBRARIES = $(LT_DLLOADERS) Index: libltdl/ltdl.c =================================================================== RCS file: /cvsroot/libtool/libtool/libltdl/ltdl.c,v retrieving revision 1.231 diff -u -r1.231 ltdl.c --- libltdl/ltdl.c 28 Jul 2005 10:01:03 -0000 1.231 +++ libltdl/ltdl.c 9 Sep 2005 07:21:02 -0000 @@ -1,5 +1,5 @@ /* ltdl.c -- system independent dlopen wrapper - Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2004, 2005 Free Software Foundation, Inc. Originally by Thomas Tanner <[EMAIL PROTECTED]> NOTE: The canonical source of this file is maintained with the @@ -1445,7 +1445,12 @@ { error_t error; - if ((error = argz_insert (pargz, pargz_len, before, entry))) + if (before) + error = argz_insert (pargz, pargz_len, before, entry); + else + error = argz_append (pargz, pargz_len, entry, 1 + strlen (entry)); + + if (error) { switch (error) {