| ... | @@ -248,37 +248,55 @@ typedef char bool; | ... | @@ -248,37 +248,55 @@ typedef char bool; |
| 248 | | 248 | |
| 249 | #if zig_has_builtin(trap) | 249 | #if zig_has_builtin(trap) |
| 250 | #define zig_trap() __builtin_trap() | 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 | #define zig_trap() __ud2() | 252 | #define zig_trap() __ud2() |
| 253 | #elif _MSC_VER | 253 | #elif defined(_MSC_VER) |
| 254 | #define zig_trap() __fastfail(0) | 254 | #define zig_trap() __fastfail(7) |
| 255 | #elif defined(__i386__) || defined(__x86_64__) | 255 | #elif defined(__thumb__) |
| 256 | #define zig_trap() __asm__ volatile("ud2"); | 256 | #define zig_trap() __asm__ volatile("udf #0xfe") |
| 257 | #elif defined(__arm__) || defined(__aarch64__) | 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 | #else | 271 | #else |
| 260 | #include <stdlib.h> | 272 | #define zig_trap() zig_trap_unavailable |
| 261 | #define zig_trap() abort() | | |
| 262 | #endif | 273 | #endif |
| 263 | | 274 | |
| 264 | #if zig_has_builtin(debugtrap) | 275 | #if zig_has_builtin(debugtrap) |
| 265 | #define zig_breakpoint() __builtin_debugtrap() | 276 | #define zig_breakpoint() __builtin_debugtrap() |
| 266 | #elif defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) | 277 | #elif defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) |
| 267 | #define zig_breakpoint() __debugbreak() | 278 | #define zig_breakpoint() __debugbreak() |
| 268 | #elif defined(__i386__) || defined(__x86_64__) | | |
| 269 | #define zig_breakpoint() __asm__ volatile("int $0x03"); | | |
| 270 | #elif defined(__arm__) | 279 | #elif defined(__arm__) |
| 271 | #define zig_breakpoint() __asm__ volatile("bkpt #0"); | 280 | #define zig_breakpoint() __asm__ volatile("bkpt #0x0") |
| 272 | #elif defined(__aarch64__) | 281 | #elif defined(__aarch64__) |
| 273 | #define zig_breakpoint() __asm__ volatile("brk #0"); | 282 | #define zig_breakpoint() __asm__ volatile("brk #0xf000") |
| 274 | #else | 283 | #elif defined(__loongarch__) |
| 275 | #include <signal.h> | 284 | #define zig_breakpoint() __asm__ volatile("break 0x0") |
| 276 | #if defined(SIGTRAP) | 285 | #elif defined(__mips__) |
| 277 | #define zig_breakpoint() raise(SIGTRAP) | 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 | #else | 297 | #else |
| 279 | #define zig_breakpoint() zig_breakpoint_unavailable | 298 | #define zig_breakpoint() zig_breakpoint_unavailable |
| 280 | #endif | 299 | #endif |
| 281 | #endif | | |
| 282 | | 300 | |
| 283 | #if zig_has_builtin(return_address) || defined(zig_gnuc) | 301 | #if zig_has_builtin(return_address) || defined(zig_gnuc) |
| 284 | #define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0)) | 302 | #define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0)) |