Don't fall back to raise(SIGTRAP) on Windows

When targeting mingw on architectures other than x86, the earlier cases
don't apply, and the final fallback, raise(SIGTRAP) isn't usable there.

GCC and Clang both support __builtin_trap(), so in case we have no
other alternatives, and are on windows (where raise() isn't available),
we can resort to this.
This commit is contained in:
Martin Storsjö 2020-03-31 23:11:05 +03:00 committed by Philip Withnall
parent f733eff2ee
commit 77346d903d

View File

@ -61,7 +61,7 @@ void g_on_error_stack_trace (const gchar *prg_name);
# define G_BREAKPOINT() G_STMT_START{ __debugbreak(); }G_STMT_END # define G_BREAKPOINT() G_STMT_START{ __debugbreak(); }G_STMT_END
#elif defined (__alpha__) && !defined(__osf__) && defined (__GNUC__) && __GNUC__ >= 2 #elif defined (__alpha__) && !defined(__osf__) && defined (__GNUC__) && __GNUC__ >= 2
# define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END # define G_BREAKPOINT() G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
#elif defined (__APPLE__) #elif defined (__APPLE__) || (defined(_WIN32) && (defined(__clang__) || defined(__GNUC__)))
# define G_BREAKPOINT() G_STMT_START{ __builtin_trap(); }G_STMT_END # define G_BREAKPOINT() G_STMT_START{ __builtin_trap(); }G_STMT_END
#else /* !__i386__ && !__alpha__ */ #else /* !__i386__ && !__alpha__ */
# define G_BREAKPOINT() G_STMT_START{ raise (SIGTRAP); }G_STMT_END # define G_BREAKPOINT() G_STMT_START{ raise (SIGTRAP); }G_STMT_END