Properly define trap_instruction

This commit is contained in:
Alex Beregszaszi 2016-10-15 15:46:50 +01:00
parent 2d9109ba45
commit bc537c7581

View File

@ -93,6 +93,13 @@ static void __inline__ trap_instruction(void)
/* Has same known problem and workaround
* as Thumb mode */
}
#elif defined(ETH_EMSCRIPTEN)
enum { HAVE_TRAP_INSTRUCTION = 1, };
__attribute__((gnu_inline, always_inline))
static void __inline__ trap_instruction(void)
{
asm("debugger");
}
#else
enum { HAVE_TRAP_INSTRUCTION = 0, };
#endif
@ -101,11 +108,7 @@ __attribute__((gnu_inline, always_inline))
static void __inline__ debug_break(void)
{
if (HAVE_TRAP_INSTRUCTION) {
#if defined(ETH_EMSCRIPTEN)
asm("debugger");
#else
trap_instruction();
#endif
} else if (DEBUG_BREAK_PREFER_BUILTIN_TRAP_TO_SIGTRAP) {
/* raises SIGILL on Linux x86{,-64}, to continue in gdb:
* (gdb) handle SIGILL stop nopass