]> 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>
Thu, 13 Apr 2017 16:20:05 +0000 (19:20 +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 f7a0a714a320b7c34b3221f94261375066c500be..c5a575c9cab718f7cd1eca18ef0947dd1671a2dc 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 d5682134d6b4681fe45b0dbbed07da96611241bd..4d7670cc31c782099ab59890e7b8eb0c92828b19 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>