| ... | @@ -190,10 +190,17 @@ typedef char bool; | ... | @@ -190,10 +190,17 @@ typedef char bool; |
| 190 | | 190 | |
| 191 | #if zig_has_builtin(trap) | 191 | #if zig_has_builtin(trap) |
| 192 | #define zig_trap() __builtin_trap() | 192 | #define zig_trap() __builtin_trap() |
| | 193 | #elif _MSC_VER && (_M_IX86 || _M_X64) |
| | 194 | #define zig_trap() __ud2() |
| | 195 | #elif _MSC_VER |
| | 196 | #define zig_trap() __fastfail(0) |
| 193 | #elif defined(__i386__) || defined(__x86_64__) | 197 | #elif defined(__i386__) || defined(__x86_64__) |
| 194 | #define zig_trap() __asm__ volatile("ud2"); | 198 | #define zig_trap() __asm__ volatile("ud2"); |
| | 199 | #elif defined(__arm__) || defined(__aarch64__) |
| | 200 | #define zig_breakpoint() __asm__ volatile("udf #0"); |
| 195 | #else | 201 | #else |
| 196 | #define zig_trap() raise(SIGTRAP) | 202 | #include <stdlib.h> |
| | 203 | #define zig_trap() abort() |
| 197 | #endif | 204 | #endif |
| 198 | | 205 | |
| 199 | #if zig_has_builtin(debugtrap) | 206 | #if zig_has_builtin(debugtrap) |
| ... | @@ -202,8 +209,17 @@ typedef char bool; | ... | @@ -202,8 +209,17 @@ typedef char bool; |
| 202 | #define zig_breakpoint() __debugbreak() | 209 | #define zig_breakpoint() __debugbreak() |
| 203 | #elif defined(__i386__) || defined(__x86_64__) | 210 | #elif defined(__i386__) || defined(__x86_64__) |
| 204 | #define zig_breakpoint() __asm__ volatile("int $0x03"); | 211 | #define zig_breakpoint() __asm__ volatile("int $0x03"); |
| | 212 | #elif defined(__arm__) |
| | 213 | #define zig_breakpoint() __asm__ volatile("bkpt #0"); |
| | 214 | #elif defined(__aarch64__) |
| | 215 | #define zig_breakpoint() __asm__ volatile("brk #0"); |
| 205 | #else | 216 | #else |
| | 217 | #include <signal.h> |
| | 218 | #if defined(SIGTRAP) |
| 206 | #define zig_breakpoint() raise(SIGTRAP) | 219 | #define zig_breakpoint() raise(SIGTRAP) |
| | 220 | #else |
| | 221 | #define zig_breakpoint() zig_breakpoint_unavailable |
| | 222 | #endif |
| 207 | #endif | 223 | #endif |
| 208 | | 224 | |
| 209 | #if zig_has_builtin(return_address) || defined(zig_gnuc) | 225 | #if zig_has_builtin(return_address) || defined(zig_gnuc) |