This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Huge regression...


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;;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]