cygming.h (DWARF2_UNWIND_INFO): Allow --disable-sjlj-exceptions for TARGET_BI_ARCH...
authorSandra Loosemore <sandra@codesourcery.com>
Thu, 19 May 2016 21:59:45 +0000 (17:59 -0400)
committerSandra Loosemore <sandra@gcc.gnu.org>
Thu, 19 May 2016 21:59:45 +0000 (17:59 -0400)
2016-05-19  Sandra Loosemore  <sandra@codesourcery.com>

gcc/
* config/i386/cygming.h (DWARF2_UNWIND_INFO): Allow
--disable-sjlj-exceptions for TARGET_BI_ARCH to select DWARF-2 EH
for 32-bit mode and SEH for 64-bit.
* config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): Handle
TARGET_64BIT_DEFAULT.

libgcc/
* config.host [x86_64-*-cygwin*]: Handle tmake_eh_file for mixed
dw2/seh configuration.
[x86_64-*-mingw*]: Likewise.

From-SVN: r236490

gcc/ChangeLog
gcc/config/i386/cygming.h
gcc/config/i386/mingw32.h
libgcc/ChangeLog
libgcc/config.host

index b8fb96c1d0bee089a82fb0c651e3dd951fc16183..c5e637bdaeab087fee7198c1fbb586716204b7ce 100644 (file)
@@ -1,3 +1,11 @@
+2016-05-19  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * config/i386/cygming.h (DWARF2_UNWIND_INFO): Allow 
+       --disable-sjlj-exceptions for TARGET_BI_ARCH to select DWARF-2 EH
+       for 32-bit mode and SEH for 64-bit.
+       * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): Handle
+       TARGET_64BIT_DEFAULT.
+
 2016-05-16  Ryan Burn  <contact@rnburn.com>
 
        * Makefile.in (GTFILES): Add cilk.h and cilk-common.c.
index 9da473359a571a1fb5e0a48a9d0e3d0b856f7c9f..d6c2254b8000329793d135260a735a36d0513087 100644 (file)
@@ -339,16 +339,13 @@ do {                                              \
 #define ASM_COMMENT_START " #"
 
 #ifndef DWARF2_UNWIND_INFO
-/* If configured with --disable-sjlj-exceptions, use DWARF2, else
-   default to SJLJ.  */
+/* If configured with --disable-sjlj-exceptions, use DWARF2 for 32-bit
+   mode else default to SJLJ.  64-bit code uses SEH unless you request
+   SJLJ.  */
 #if  (defined (CONFIG_SJLJ_EXCEPTIONS) && !CONFIG_SJLJ_EXCEPTIONS)
 /* The logic of this #if must be kept synchronised with the logic
-   for selecting the tmake_eh_file fragment in config.gcc.  */
+   for selecting the tmake_eh_file fragment in libgcc/config.host.  */
 #define DWARF2_UNWIND_INFO 1
-/* If multilib is selected break build as sjlj is required.  */
-#if defined (TARGET_BI_ARCH)
-#error For 64-bit windows and 32-bit based multilib version of gcc just SJLJ exceptions are supported.
-#endif
 #else
 #define DWARF2_UNWIND_INFO 0
 #endif
index e04818966fa95e450d0a010bd45157757162c198..0407efe7df3ab2ad208d1a08a4833614fd0773f5 100644 (file)
@@ -100,10 +100,12 @@ along with GCC; see the file COPYING3.  If not see
 #if DWARF2_UNWIND_INFO
 /* DW2-unwind is just available for 32-bit mode.  */
 #if TARGET_64BIT_DEFAULT
-#error DW2 unwind is not available for 64-bit.
-#endif
+#define SHARED_LIBGCC_UNDEFS_SPEC \
+  "%{m32: %{shared-libgcc: -u ___register_frame_info -u ___deregister_frame_info}}"
+#else
 #define SHARED_LIBGCC_UNDEFS_SPEC \
  "%{shared-libgcc: -u ___register_frame_info -u ___deregister_frame_info}"
+#endif
 #else
 #define SHARED_LIBGCC_UNDEFS_SPEC ""
 #endif
index 91f968a408ebd859183cc0071f3abf6815de244a..6b20f9bd2f9c78e347422dfd10f1d4a6d4e9358d 100644 (file)
@@ -1,3 +1,9 @@
+2016-05-19  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * config.host [x86_64-*-cygwin*]: Handle tmake_eh_file for mixed 
+       dw2/seh configuration.
+       [x86_64-*-mingw*]: Likewise.
+
 2016-05-10  Joel Sherrill <joel@rtems.org>
 
        PR libgcc/70720
index 4fe308568feaa651cee06607523659eaeb93068a..7899216af6c40b3ab11f0a37119da15d7752ef8a 100644 (file)
@@ -678,6 +678,9 @@ x86_64-*-cygwin*)
        # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
        if test x$ac_cv_sjlj_exceptions = xyes; then
                tmake_eh_file="i386/t-sjlj-eh"
+       elif test "${host_address}" = 32; then
+               # biarch -m32 with --disable-sjlj-exceptions
+               tmake_eh_file="i386/t-dw2-eh"
        else
                tmake_eh_file="i386/t-seh-eh"
        fi
@@ -730,6 +733,10 @@ x86_64-*-mingw*)
        # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
        if test x$ac_cv_sjlj_exceptions = xyes; then
                tmake_eh_file="i386/t-sjlj-eh"
+       elif test "${host_address}" = 32; then
+               # biarch -m32 with --disable-sjlj-exceptions
+               tmake_eh_file="i386/t-dw2-eh"
+               md_unwind_header=i386/w32-unwind.h
        else
                tmake_eh_file="i386/t-seh-eh"
        fi