diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-03-07 12:25:22 -0500 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-03-07 12:46:35 -0500 |
| commit | e33dfc300e144dcf3323f96b38d8c67163259bb1 (patch) | |
| tree | ee3c2982bae11c5445dbf7ee5b3a9340d473e4ec /lib | |
| parent | 77d06012c2465f7c4ac22cb4834a2535c4de6cea (diff) | |
| download | zig-e33dfc300e144dcf3323f96b38d8c67163259bb1.tar.gz zig-e33dfc300e144dcf3323f96b38d8c67163259bb1.zip | |
zig.h: implement zig_breakpoint and zig_trap for more targets
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/zig.h | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -190,10 +190,17 @@ typedef char bool; #if zig_has_builtin(trap) #define zig_trap() __builtin_trap() +#elif _MSC_VER && (_M_IX86 || _M_X64) +#define zig_trap() __ud2() +#elif _MSC_VER +#define zig_trap() __fastfail(0) #elif defined(__i386__) || defined(__x86_64__) #define zig_trap() __asm__ volatile("ud2"); +#elif defined(__arm__) || defined(__aarch64__) +#define zig_breakpoint() __asm__ volatile("udf #0"); #else -#define zig_trap() raise(SIGTRAP) +#include <stdlib.h> +#define zig_trap() abort() #endif #if zig_has_builtin(debugtrap) @@ -202,8 +209,17 @@ typedef char bool; #define zig_breakpoint() __debugbreak() #elif defined(__i386__) || defined(__x86_64__) #define zig_breakpoint() __asm__ volatile("int $0x03"); +#elif defined(__arm__) +#define zig_breakpoint() __asm__ volatile("bkpt #0"); +#elif defined(__aarch64__) +#define zig_breakpoint() __asm__ volatile("brk #0"); #else +#include <signal.h> +#if defined(SIGTRAP) #define zig_breakpoint() raise(SIGTRAP) +#else +#define zig_breakpoint() zig_breakpoint_unavailable +#endif #endif #if zig_has_builtin(return_address) || defined(zig_gnuc) |
