This is the last patch necessary to have a full-blown
i686-unknown-linux-gnu --enable-targets=all configuration to work.  It
requires

        http://gcc.gnu.org/ml/gcc-patches/2011-12/msg01011.html

and fixes a compilation failure compiling the 64-bit libgcj multilib:

$ /var/gcc/regression/trunk/2.6.18-gcc-gas-gld-32/build/./gcc/xgcc 
-shared-libgcc -B/var/gcc/regression/trunk/2.6.18-gcc-gas-gld-32/build/./gcc 
-nostdinc++ 
-L/var/gcc/regression/trunk/2.6.18-gcc-gas-gld-32/build/i686-unknown-linux-gnu/64/libstdc++-v3/src
 
-L/var/gcc/regression/trunk/2.6.18-gcc-gas-gld-32/build/i686-unknown-linux-gnu/64/libstdc++-v3/src/.libs
 -B/vol/gcc/i686-unknown-linux-gnu/bin/ -B/vol/gcc/i686-unknown-linux-gnu/lib/ 
-isystem /vol/gcc/i686-unknown-linux-gnu/include -isystem 
/vol/gcc/i686-unknown-linux-gnu/sys-include -m64 -DHAVE_CONFIG_H -I. 
-I/vol/gcc/src/hg/trunk/local/libjava -I./include -I./gcj 
-I/vol/gcc/src/hg/trunk/local/libjava -Iinclude 
-I/vol/gcc/src/hg/trunk/local/libjava/include 
-I/vol/gcc/src/hg/trunk/local/libjava/classpath/include -Iclasspath/include 
-I/vol/gcc/src/hg/trunk/local/libjava/classpath/native/fdlibm 
-I/vol/gcc/src/hg/trunk/local/libjava/../boehm-gc/include -I../boehm-gc/include 
-I/vol/gcc/src/hg/trunk/local/libjava/libltdl 
-I/vol/gcc/src/hg/trunk/local/libjava/libltdl 
-I/vol/gcc/src/hg/trunk/local/libjava/.././libjava/../libgcc 
-I/vol/gcc/src/hg/trunk/local/libjava/../zlib 
-I/vol/gcc/src/hg/trunk/local/libjava/../libffi/include -I../libffi/include 
-fno-rtti -fnon-call-exceptions -fdollars-in-identifiers -Wswitch-enum 
-D_FILE_OFFSET_BITS=64 -ffloat-store -fomit-frame-pointer -Usun -Wextra -Wall 
-D_GNU_SOURCE -DPREFIX=\"/vol/gcc\" -DTOOLEXECLIBDIR=\"/vol/gcc/lib/../lib64\" 
-DJAVA_HOME=\"/vol/gcc\" 
-DBOOT_CLASS_PATH=\"/vol/gcc/share/java/libgcj-4.7.0.jar\" 
-DJAVA_EXT_DIRS=\"/vol/gcc/share/java/ext\" 
-DGCJ_ENDORSED_DIRS=\"/vol/gcc/share/java/gcj-endorsed\" 
-DGCJ_VERSIONED_LIBDIR=\"/vol/gcc/lib/../lib64/gcj-4.7.0-13\" 
-DPATH_SEPARATOR=\":\" -DECJ_JAR_FILE=\"\" 
-DLIBGCJ_DEFAULT_DATABASE=\"/vol/gcc/lib/../lib64/gcj-4.7.0-13/classmap.db\" 
-DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\"gcj-4.7.0-13/classmap.db\" 
-fno-omit-frame-pointer -g -O2 -D_GNU_SOURCE -m64 -MT prims.lo -MD -MP -MF 
.deps/prims.Tpo -c /vol/gcc/src/hg/trunk/local/libjava/prims.cc  -fPIC -DPIC -o 
.libs/prims.o
/vol/gcc/src/hg/trunk/local/libjava/prims.cc: In function 'void 
_Jv_catch_fpe(int, siginfo_t*, void*)':
/vol/gcc/src/hg/trunk/local/libjava/prims.cc:192:3: error: 'REG_EIP' was not 
declared in this scope
/vol/gcc/src/hg/trunk/local/libjava/prims.cc:192:3: error: 'REG_EAX' was not 
declared in this scope
/vol/gcc/src/hg/trunk/local/libjava/prims.cc:192:3: error: 'REG_EDX' was not 
declared in this scope

It applies the same technique already used for the 32-bit multilib in
the x86_64-*-linux* configuration.

It allowed the i686-unknown-linux-gnu bootstrap to finish successfully
and bootstrapped without regressions on x86_64-unknown-linux-gnu.

Ok for mainline?

        Rainer


2011-12-13  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        * configure.ac (i?86-*-linux*): Set SIGNAL_HANDLER_AUX.
        * configure: Regenerate.
        * include/i386-signal.h: Wrap in __i386__, include
        java-signal-aux.h otherwise.

diff --git a/libjava/configure.ac b/libjava/configure.ac
--- a/libjava/configure.ac
+++ b/libjava/configure.ac
@@ -1737,6 +1737,7 @@ case "${host}" in
     ;;
  i?86-*-linux*)
     SIGNAL_HANDLER=include/i386-signal.h
+    SIGNAL_HANDLER_AUX=include/x86_64-signal.h
     ;;
 # ia64-*)
 #    SYSDEP_SOURCES=sysdep/ia64.c
diff --git a/libjava/include/i386-signal.h b/libjava/include/i386-signal.h
--- a/libjava/include/i386-signal.h
+++ b/libjava/include/i386-signal.h
@@ -1,7 +1,8 @@
 // i386-signal.h - Catch runtime signals and turn them into exceptions
 // on an i386 based Linux system.
 
-/* Copyright (C) 1998, 1999, 2001, 2002, 2006, 2007  Free Software Foundation
+/* Copyright (C) 1998, 1999, 2001, 2002, 2006, 2007, 2011
+   Free Software Foundation
 
    This file is part of libgcj.
 
@@ -10,6 +11,8 @@ Libgcj License.  Please consult the file
 details.  */
 
 
+#ifdef __i386__
+
 #ifndef JAVA_SIGNAL_H
 #define JAVA_SIGNAL_H 1
 
@@ -165,3 +168,11 @@ while (0)
 
 #endif /* JAVA_SIGNAL_H */
   
+#else /* __i386__ */
+
+/* This is for the 64-bit subsystem on i386.  */
+
+#define sigcontext_struct sigcontext
+#include <java-signal-aux.h>
+
+#endif /* __i386__ */
-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to