This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix i686-linux --enable-targets=all
- From: Daniel Jacobowitz <drow at false dot org>
- To: gcc-patches at gcc dot gnu dot org
- Date: Mon, 6 Aug 2007 09:36:55 -0400
- Subject: Fix i686-linux --enable-targets=all
Right now all tests fail if you build an i686-linux compiler with
--enable-targets=all and test the -m64 multilib, while using bleeding
edge binutils. This was already fixed for x86_64, but different
arrangement of t-* fragments means that the fix didn't cover
i686-linux.
Is this OK? I have not been able to get my build server to bootstrap
an --enable-targets=all compiler due to the different way Debian /
Ubuntu handle multiple architecture support, but I did build 64-bit
libgcc and verify that crtend.o no longer has a zero terminator
followed by some unwind information.
--
Daniel Jacobowitz
CodeSourcery
2007-08-06 Daniel Jacobowitz <dan@codesourcery.com>
* config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Add
-fno-asynchronous-unwind-tables.
* config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Remove.
* gcc/config.gcc (x86_64-*-linux*): Use i386/t-crtstuff.
Index: gcc/config/i386/t-crtstuff
===================================================================
--- gcc/config/i386/t-crtstuff (revision 127159)
+++ gcc/config/i386/t-crtstuff (working copy)
@@ -1,2 +1,5 @@
# The pushl in CTOR initialization interferes with frame pointer elimination.
-CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer
+# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables,
+# because then __FRAME_END__ might not be the last thing in .eh_frame
+# section.
+CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables
Index: gcc/config/i386/t-linux64
===================================================================
--- gcc/config/i386/t-linux64 (revision 127159)
+++ gcc/config/i386/t-linux64 (working copy)
@@ -17,9 +17,3 @@ EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
softfp_wrap_start := '\#ifdef __x86_64__'
softfp_wrap_end := '\#endif'
-
-# The pushl in CTOR initialization interferes with frame pointer elimination.
-# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables,
-# because then __FRAME_END__ might not be the last thing in .eh_frame
-# section.
-CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc (revision 127159)
+++ gcc/config.gcc (working copy)
@@ -1166,7 +1166,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
esac
- tmake_file="${tmake_file} i386/t-linux64 i386/t-crtpc i386/t-crtfm i386/t-fprules-softfp64 soft-fp/t-softfp t-dfprules"
+ tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm i386/t-fprules-softfp64 soft-fp/t-softfp t-dfprules"
;;
i[34567]86-*-gnu*)
;;