]> granicus.if.org Git - gc/commitdiff
Eliminate 'incompatible function pointer' warning in mark_some (MinGW/x86)
authorIvan Maidanski <ivmai@mail.ru>
Thu, 13 Apr 2017 16:19:00 +0000 (19:19 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 24 May 2017 22:14:31 +0000 (01:14 +0300)
* include/private/gc_priv.h [__MINGW32__ && __i386__ && GC_EXTERN]
(__MINGW_EXCPT_DEFINE_PSDK): Define (before any system header include);
this macro definition is needed only when extra/gc.c is compiled.
* mark.c [__MINGW32__ && __i386__] (__MINGW_EXCPT_DEFINE_PSDK): Define
(before include gc_pmark.h).

include/private/gc_priv.h
mark.c

index 38eba5958bf2b65c6ed29fcd47db309c0c89cb9b..1bc589e9c77d835d1ae3c0224e3dd7bbdb8df48e 100644 (file)
 # define _USING_POSIX4A_DRAFT10 1
 #endif
 
+#if defined(__MINGW32__) && !defined(__MINGW_EXCPT_DEFINE_PSDK) \
+    && defined(__i386__) && defined(GC_EXTERN) /* defined in gc.c */
+  /* See the description in mark.c.     */
+# define __MINGW_EXCPT_DEFINE_PSDK 1
+#endif
+
 # if defined(NO_DEBUGGING) && !defined(GC_ASSERTIONS) && !defined(NDEBUG)
     /* To turn off assertion checking (in atomic_ops.h). */
 #   define NDEBUG 1
diff --git a/mark.c b/mark.c
index b5548478329f027d166ecde0cc0f467301cf476a..11929a551dd8f6036c632a5c3e356c98776eaefd 100644 (file)
--- a/mark.c
+++ b/mark.c
  *
  */
 
+#if defined(__MINGW32__) && !defined(__MINGW_EXCPT_DEFINE_PSDK) \
+    && defined(__i386__) /* cannot use macros from gcconfig.h */
+  /* Otherwise EXCEPTION_REGISTRATION type declaration from winnt.h     */
+  /* might be used.  That declaration has "handler" callback with NTAPI */
+  /* attribute.  The proper type (with "handler" field compatible with  */
+  /* GC mark_ex_handler) is declared in excpt.h.  The given macro is    */
+  /* defined before any system header include.                          */
+# define __MINGW_EXCPT_DEFINE_PSDK 1
+#endif
+
 #include "private/gc_pmark.h"
 
 #include <stdio.h>