On Sun, Jan 10, 2021 at 11:57 AM Arnaud Charlet <char...@adacore.com> wrote:
>
> > This fixes a compilation error preventing bootstrap with Ada on
> > x86_64-pc-cygwin. See PR bootstrap/94918 for details.
> >
> > Compared to the initial patch sent in May 2020, this v2 patch places
> > the fix in Ada's raise-gcc.c instead of the shared unwind-generic.h,
> > which should hopefully simplify getting it applied.
>
> Not sure why. Applying it there looks incomplete and kludgy, don't you
> agree?

Ok, then here's v3 which places the fix in unwind-generic.h. The fix
matches what Ada's mingw32.h does.

Tested by bootstrapping this and the preliminary workaround for
PR98590 on x86_64-pc-cygwin.

Ok for master and branches?

libgcc/

2021-01-10  Mikael Pettersson  <mikpeli...@gmail.com>

        PR bootstrap/94918
        * unwind-generic.h (__SEH__): Prevent windows.h from including
        x86intrin.h or emmintrin.h on Cygwin64.

--- gcc-11-20210103/libgcc/unwind-generic.h.~1~ 2021-01-03
23:32:20.000000000 +0100
+++ gcc-11-20210103/libgcc/unwind-generic.h     2021-01-09
14:51:16.262378715 +0100
@@ -30,6 +30,12 @@

 #if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
 /* Only for _GCC_specific_handler.  */
+#if defined (__CYGWIN__) && !defined (__CYGWIN32__) && !defined (IN_RTS)
+/* Note: windows.h on cygwin-64 includes x86intrin.h which uses malloc.
+   That fails to compile, if malloc is poisoned, i.e. if !IN_RTS.  */
+#define _X86INTRIN_H_INCLUDED
+#define _EMMINTRIN_H_INCLUDED
+#endif
 #include <windows.h>
 #endif
libgcc/

2021-01-10  Mikael Pettersson  <mikpeli...@gmail.com>

	PR bootstrap/94918
	* unwind-generic.h (__SEH__): Prevent windows.h from including
	x86intrin.h or emmintrin.h on Cygwin64.

--- gcc-11-20210103/libgcc/unwind-generic.h.~1~	2021-01-03 23:32:20.000000000 +0100
+++ gcc-11-20210103/libgcc/unwind-generic.h	2021-01-09 14:51:16.262378715 +0100
@@ -30,6 +30,12 @@
 
 #if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
 /* Only for _GCC_specific_handler.  */
+#if defined (__CYGWIN__) && !defined (__CYGWIN32__) && !defined (IN_RTS)
+/* Note: windows.h on cygwin-64 includes x86intrin.h which uses malloc.
+   That fails to compile, if malloc is poisoned, i.e. if !IN_RTS.  */
+#define _X86INTRIN_H_INCLUDED
+#define _EMMINTRIN_H_INCLUDED
+#endif
 #include <windows.h>
 #endif
 

Reply via email to