[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cygwin build problem with m4 HEAD
From: |
Eric Blake |
Subject: |
Re: cygwin build problem with m4 HEAD |
Date: |
Thu, 8 Sep 2005 21:06:45 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
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.
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.
2005-09-08 Eric Blake <address@hidden> (tiny change)
* libltdl/ltdl.c (lt_argz_insert): Work around newlib argz_insert bug.
Index: libltdl/ltdl.c
===================================================================
RCS file: /cvsroot/libtool/libtool/libltdl/ltdl.c,v
retrieving revision 1.231
diff -u -b -r1.231 ltdl.c
--- libltdl/ltdl.c 28 Jul 2005 10:01:03 -0000 1.231
+++ libltdl/ltdl.c 8 Sep 2005 20:54:46 -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 <address@hidden>
NOTE: The canonical source of this file is maintained with the
@@ -1445,7 +1445,13 @@
{
error_t error;
- if ((error = argz_insert (pargz, pargz_len, before, entry)))
+ /* Prior to Sep 8, 2005, newlib had a bug where argz_insert(pargz,
+ pargz_len, NULL, entry) failed with EINVAL. */
+ if (before)
+ error = argz_insert (pargz, pargz_len, before, entry);
+ else
+ error = argz_add (pargz, pargz_len, entry);
+ if (error)
{
switch (error)
{