[patch] PR bootstrap/25672: Avoid CFLAGS in CFLAGS_FOR_TARGETS if cross-compiling

Aldy Hernandez aldyh@redhat.com
Mon Mar 9 22:22:00 GMT 2015


Hello gentlemen.

The problem here is that we pick up the system's CFLAGS and pass it down 
to the target libraries.  This causes havoc when, for instance, CFLAGS 
is -march=x86-64 and the target is powerpc-linux.

I don't see in what scenario the toplevel shell's CFLAGS would be of any 
use in the target libraries, so I've just avoided that code path altogether.

Tested by doing a cross-build from x86-64 to ppc64-linux-gnu in a 
combined tree, and seeing if libgcc starts to build.  Previously we 
would fail while configuring GCC.  Now, gcc builds fine, and the target 
libraries start to build.

OK for mainline?

Aldy
-------------- next part --------------
commit f2d130b93f334c5c680761553624964f87594adf
Author: Aldy Hernandez <aldyh@redhat.com>
Date:   Mon Mar 9 15:12:33 2015 -0700

    	PR bootstrap/25672
    	* configure.ac: Do not initialize CFLAGS_FOR_TARGET from CFLAGS if
    	cross-compiling.  Similarly for CXX_FOR_TARGET.
    	* configure: Regenerate.

diff --git a/configure.ac b/configure.ac
index 00f7452..2a14c35 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2319,28 +2319,36 @@ AC_SUBST(DEBUG_PREFIX_CFLAGS_FOR_TARGET)
 # gcc) are built with "-O2 -g", so include those options when setting
 # CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
 if test "x$CFLAGS_FOR_TARGET" = x; then
-  CFLAGS_FOR_TARGET=$CFLAGS
-  case " $CFLAGS " in
-    *" -O2 "*) ;;
-    *) CFLAGS_FOR_TARGET="-O2 $CFLAGS_FOR_TARGET" ;;
-  esac
-  case " $CFLAGS " in
-    *" -g "* | *" -g3 "*) ;;
-    *) CFLAGS_FOR_TARGET="-g $CFLAGS_FOR_TARGET" ;;
-  esac
+  if test "x${is_cross_compiler}" = xyes; then
+    CFLAGS_FOR_TARGET="-g -O2"
+  else
+    CFLAGS_FOR_TARGET=$CFLAGS
+    case " $CFLAGS " in
+      *" -O2 "*) ;;
+      *) CFLAGS_FOR_TARGET="-O2 $CFLAGS_FOR_TARGET" ;;
+    esac
+    case " $CFLAGS " in
+      *" -g "* | *" -g3 "*) ;;
+      *) CFLAGS_FOR_TARGET="-g $CFLAGS_FOR_TARGET" ;;
+    esac
+  fi
 fi
 AC_SUBST(CFLAGS_FOR_TARGET)
 
 if test "x$CXXFLAGS_FOR_TARGET" = x; then
-  CXXFLAGS_FOR_TARGET=$CXXFLAGS
-  case " $CXXFLAGS " in
-    *" -O2 "*) ;;
-    *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS_FOR_TARGET" ;;
-  esac
-  case " $CXXFLAGS " in
-    *" -g "* | *" -g3 "*) ;;
-    *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS_FOR_TARGET" ;;
-  esac
+  if test "x${is_cross_compiler}" = xyes; then
+    CXXFLAGS_FOR_TARGET="-g -O2"
+  else
+    CXXFLAGS_FOR_TARGET=$CXXFLAGS
+    case " $CXXFLAGS " in
+      *" -O2 "*) ;;
+      *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS_FOR_TARGET" ;;
+    esac
+    case " $CXXFLAGS " in
+      *" -g "* | *" -g3 "*) ;;
+      *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS_FOR_TARGET" ;;
+    esac
+  fi
 fi
 AC_SUBST(CXXFLAGS_FOR_TARGET)
 


More information about the Gcc-patches mailing list