mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-17 04:26:59 +00:00
DEBUG: crash using an invalid opcode on aarch64 instead of an invalid access
On aarch64 there's also a guaranted invalid instruction, called UDF, and which even supports an optional 16-bit immediate operand: https://developer.arm.com/documentation/ddi0596/2021-12/Base-Instructions/UDF--Permanently-Undefined-?lang=en It's conveniently encoded as 4 zeroes (when the operand is zero). It's unclear when support for it was added into GAS, if at all; even a not-so-old 2.27 doesn't know about it. Let's byte-encode it. Tested on an A72 and works as expected.
This commit is contained in:
parent
77787ec9bc
commit
543e2544ca
@ -54,6 +54,13 @@
|
||||
my_unreachable(); \
|
||||
} while (0)
|
||||
|
||||
#elif defined(__aarch64__)
|
||||
#define ha_crash_now() do { \
|
||||
/* udf#imm16: 4 bytes (), raises illegal instruction */ \
|
||||
__asm__ volatile(".byte 0x00,0x00,0x00,0x00\n"); \
|
||||
my_unreachable(); \
|
||||
} while (0)
|
||||
|
||||
#else // not x86
|
||||
|
||||
/* generic implementation, causes a segfault */
|
||||
|
Loading…
Reference in New Issue
Block a user