| ... | ... | @@ -248,37 +248,55 @@ typedef char bool; |
| 248 | 248 | |
| 249 | 249 | #if zig_has_builtin(trap) |
| 250 | 250 | #define zig_trap() __builtin_trap() |
| 251 | | #elif _MSC_VER && (_M_IX86 || _M_X64) |
| 251 | #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) |
| 252 | 252 | #define zig_trap() __ud2() |
| 253 | | #elif _MSC_VER |
| 254 | | #define zig_trap() __fastfail(0) |
| 255 | | #elif defined(__i386__) || defined(__x86_64__) |
| 256 | | #define zig_trap() __asm__ volatile("ud2"); |
| 253 | #elif defined(_MSC_VER) |
| 254 | #define zig_trap() __fastfail(7) |
| 255 | #elif defined(__thumb__) |
| 256 | #define zig_trap() __asm__ volatile("udf #0xfe") |
| 257 | 257 | #elif defined(__arm__) || defined(__aarch64__) |
| 258 | | #define zig_trap() __asm__ volatile("udf #0"); |
| 258 | #define zig_trap() __asm__ volatile("udf #0xfdee") |
| 259 | #elif defined(__loongarch__) || defined(__powerpc__) |
| 260 | #define zig_trap() __asm__ volatile(".word 0x0") |
| 261 | #elif defined(__mips__) |
| 262 | #define zig_trap() __asm__ volatile(".word 0x3d") |
| 263 | #elif defined(__riscv) |
| 264 | #define zig_trap() __asm__ volatile("unimp") |
| 265 | #elif defined(__s390__) |
| 266 | #define zig_trap() __asm__ volatile("j 0x2") |
| 267 | #elif defined(__sparc__) |
| 268 | #define zig_trap() __asm__ volatile("illtrap") |
| 269 | #elif defined(__i386__) || defined(__x86_64__) |
| 270 | #define zig_trap() __asm__ volatile("ud2") |
| 259 | 271 | #else |
| 260 | | #include <stdlib.h> |
| 261 | | #define zig_trap() abort() |
| 272 | #define zig_trap() zig_trap_unavailable |
| 262 | 273 | #endif |
| 263 | 274 | |
| 264 | 275 | #if zig_has_builtin(debugtrap) |
| 265 | 276 | #define zig_breakpoint() __builtin_debugtrap() |
| 266 | 277 | #elif defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) |
| 267 | 278 | #define zig_breakpoint() __debugbreak() |
| 268 | | #elif defined(__i386__) || defined(__x86_64__) |
| 269 | | #define zig_breakpoint() __asm__ volatile("int $0x03"); |
| 270 | 279 | #elif defined(__arm__) |
| 271 | | #define zig_breakpoint() __asm__ volatile("bkpt #0"); |
| 280 | #define zig_breakpoint() __asm__ volatile("bkpt #0x0") |
| 272 | 281 | #elif defined(__aarch64__) |
| 273 | | #define zig_breakpoint() __asm__ volatile("brk #0"); |
| 274 | | #else |
| 275 | | #include <signal.h> |
| 276 | | #if defined(SIGTRAP) |
| 277 | | #define zig_breakpoint() raise(SIGTRAP) |
| 282 | #define zig_breakpoint() __asm__ volatile("brk #0xf000") |
| 283 | #elif defined(__loongarch__) |
| 284 | #define zig_breakpoint() __asm__ volatile("break 0x0") |
| 285 | #elif defined(__mips__) |
| 286 | #define zig_breakpoint() __asm__ volatile("break") |
| 287 | #elif defined(__powerpc__) |
| 288 | #define zig_breakpoint() __asm__ volatile("trap") |
| 289 | #elif defined(__riscv) |
| 290 | #define zig_breakpoint() __asm__ volatile("ebreak") |
| 291 | #elif defined(__s390__) |
| 292 | #define zig_breakpoint() __asm__ volatile("j 0x6") |
| 293 | #elif defined(__sparc__) |
| 294 | #define zig_breakpoint() __asm__ volatile("ta 0x1") |
| 295 | #elif defined(__i386__) || defined(__x86_64__) |
| 296 | #define zig_breakpoint() __asm__ volatile("int $0x3") |
| 278 | 297 | #else |
| 279 | 298 | #define zig_breakpoint() zig_breakpoint_unavailable |
| 280 | 299 | #endif |
| 281 | | #endif |
| 282 | 300 | |
| 283 | 301 | #if zig_has_builtin(return_address) || defined(zig_gnuc) |
| 284 | 302 | #define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0)) |