This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Huge regression...
- To: Manfred Hollstein <manfred dot h at gmx dot net>
- Subject: Re: Huge regression...
- From: Zack Weinberg <zack at wolery dot cumb dot org>
- Date: Fri, 4 Aug 2000 11:00:23 -0700
- Cc: Theodore Papadopoulo <Theodore dot Papadopoulo at sophia dot inria dot fr>, Alexandre Oliva <aoliva at redhat dot com>, gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- References: <200008041708.e74H8vx03137@mururoa.inria.fr> <14730.64571.166130.380967@saturn.hollstein.net>
On Fri, Aug 04, 2000 at 07:24:11PM +0200, Manfred Hollstein wrote:
> On Friday, 4 August 2000, 19:08:57 +0200, Theodore.Papadopoulo@sophia.inria.fr wrote:
>
> >
> > Am I alone to see this huge regression with today's cvs???
>
> No, this happened to me since 08/02; the last successfull build was
> checked out at 2000/08/01 16:43:36 +0200. BTW, the failure is caused
> by libstdc++.so referencing several pthread* functions, but since
> libpthread isn't linked... I cannot find a ChangeLog entry which
> patch could have caused this behaviour, though.
I've been looking into this, and as far as I can tell, it has been
broken for a long time but somehow masked until recently. The
problems are threefold:
- In lots of places, configure scripts expect 'linux-gnu' and are
being handed just 'linux' as the last bit of a configuration triple.
- --disable-threads is being ignored in the libio and libstdc++
directories.
- A recent patch to the toplevel configure script added an -I for
libio/stdio. I believe this is always wrong. I might be mistaken,
but it is definitely wrong for targets where libio is included in
libc.
I am testing the following patch. It fixes #2 and #3 completely and
#1 partially - enough to squelch the regressions. I'll do a followup
patch that finishes with #1, if this one works and is approved.
* configure.in (libstdcxx_flags): Remove -isystem $$s/libio/stdio.
(target switch): Accept -linux* not just -linux-gnu*.
* libio/configure.in: Honor --disable-shared.
(target switch): Accept -linux* not just -linux-gnu*.
* libstdc++/configure.in: Honor --disable-shared.
(target switch): Accept -linux* not just -linux-gnu*.
===================================================================
Index: configure.in
--- configure.in 2000/08/03 23:52:12 1.60
+++ configure.in 2000/08/04 17:56:08
@@ -54,7 +54,7 @@ if [ "${enable_libstdcxx_v3}" = "yes" ]
libstdcxx_flags='`case $$dir in libstdc++-v3) ;; *) test -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/mkcheck && $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/mkcheck 2 $$r/$(TARGET_SUBDIR)/libstdc++-v3 $$s/libstdc++-v3 | sed -e '"'s/-I/-isystem /g'"' ;; esac` -L$$r/$(TARGET_SUBDIR)/libstd++-v3/src -L$$r/$(TARGET_SUBDIR)/libstd++-v3/src/.libs'
else
libstdcxx_version="target-libio target-libstdc++"
- libstdcxx_flags='-isystem $$s/libstdc++ -isystem $$s/libstdc++/std -isystem $$s/libstdc++/stl -isystem $$s/libio/ -isystem $$s/libio/stdio -L$$r/$(TARGET_SUBDIR)/libstdc++'
+ libstdcxx_flags='-isystem $$s/libstdc++ -isystem $$s/libstdc++/std -isystem $$s/libstdc++/stl -isystem $$s/libio -L$$r/$(TARGET_SUBDIR)/libstdc++'
fi
# these tools are built for the host environment
@@ -352,7 +352,7 @@ case "${target}" in
powerpc-*-netware*)
target_makefile_frag="${target_makefile_frag} config/mt-netware"
;;
- *-*-linux-gnu*)
+ *-*-linux*)
target_makefile_frag="${target_makefile_frag} config/mt-linux"
;;
*-*-aix4.[3456789]* | *-*-aix[56789].*)
===================================================================
Index: libio/configure.in
--- libio/configure.in 2000/05/11 21:34:11 1.30
+++ libio/configure.in 2000/08/04 17:56:17
@@ -47,22 +47,28 @@ package_makefile_rules_frag=Make.pack.r
echo "# Warning: this fragment is automatically generated" > temp.mt
frags=
+mtsafe=
+case x$enable_threads in
+ xno) ;;
+ *) mtsafe=mtsafe.mt ;;
+esac
case "${target}" in
*-mpeix*) frags="mpeix.mt" ;;
*-hpux*) frags=hpux.mt ;;
alpha*-*-linux-gnulibc1)
- frags="linux.mt linuxaxp1.mt mtsafe.mt" ;;
+ frags="linux.mt linuxaxp1.mt $mtsafe" ;;
powerpc*-*-linux-gnulibc1)
- frags="linux.mt linuxaxp1.mt mtsafe.mt" ;;
- *-linux-gnulibc1)
+ frags="linux.mt linuxaxp1.mt $mtsafe" ;;
+ *-linux-gnulibc1 | *-linuxlibc1)
frags=linuxlibc1.mt ;;
- *-linux-gnu*) frags="linux.mt mtsafe.mt" ;;
+ *-linux-gnu* | *-linux*)
+ frags="linux.mt $mtsafe" ;;
*-isc*) frags=isc.mt ;;
*-netware*) frags=netware.mt ;;
*-dgux*) frags=dgux.mt ;;
*vxworks*) frags="vxworks.mt" ;;
- *-beos*) frags="beos.mt mtsafe.mt" ;;
+ *-beos*) frags="beos.mt $mtsafe" ;;
*) frags=${target_cpu}.mt ;;
esac
@@ -104,7 +110,7 @@ case "${target}" in
cp ${srcdir}/config/linuxaxp1-libc-lock.h libc-lock.h
cp ${srcdir}/config/linuxaxp1-stdio-lock.h stdio-lock.h
;;
- *-linux-gnu*)
+ *-linux-gnu* | *-linux*)
# We have a correct libc-lock.h in glibc 2.1 but not all glibc 2.0.
# Create a wrapper if necessary.
(echo "#include <bits/libc-lock.h>" | ${CC-cc} -E -) >/dev/null 2>&1 ||
===================================================================
Index: libstdc++/configure.in
--- libstdc++/configure.in 2000/05/11 14:16:25 1.33
+++ libstdc++/configure.in 2000/08/04 17:56:17
@@ -89,10 +89,11 @@ fi
# Make sure the right flags are defined for multi-threading.
case "${target}" in
- alpha*-*-linux-gnulibc1) frags="${frags} linux.mt" ;;
- powerpc*-*-linux-gnulibc1) frags="${frags} linux.mt" ;;
- *-*-linux-gnu*) frags="${frags} linux.mt" ;;
- *-*-openbsd*)
+ *-*-linux-gnu* | *-*-linux*)
+ case "x${enable_threads}" in
+ xyes|xposix) frags="${frags} linux.mt" ;;
+ esac;;
+ *-*-openbsd*)
case "x${enable_threads}" in
xyes|xposix) frags="${frags} openbsd.mt" ;;
esac;;