aboutsummaryrefslogtreecommitdiffstats
path: root/libdevcore/debugbreak.h
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2016-10-15 22:46:50 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2016-10-15 22:46:50 +0800
commitbc537c7581fecc88cee80d5554c16dfc1d5c6a94 (patch)
tree0e088f3841e6c7590820a489763076ffb906e903 /libdevcore/debugbreak.h
parent2d9109ba453d49547778c39a506b0ed492305c16 (diff)
downloaddexon-solidity-bc537c7581fecc88cee80d5554c16dfc1d5c6a94.tar.gz
dexon-solidity-bc537c7581fecc88cee80d5554c16dfc1d5c6a94.tar.zst
dexon-solidity-bc537c7581fecc88cee80d5554c16dfc1d5c6a94.zip
Properly define trap_instruction
Diffstat (limited to 'libdevcore/debugbreak.h')
-rw-r--r--libdevcore/debugbreak.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/libdevcore/debugbreak.h b/libdevcore/debugbreak.h
index 65612a34..f8838a5f 100644
--- a/libdevcore/debugbreak.h
+++ b/libdevcore/debugbreak.h
@@ -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