44 uintptr_t selfref = (uintptr_t)(
void *)guard;
51 guard[0] = cookie ^ selfref;
61#if defined(__clang__) || !defined(_MSC_VER)
62 __asm__ volatile (
"# NOTHING HERE" ::
"r"(guard) :
"memory");
70 uintptr_t selfref = (uintptr_t)(
void *)guard;
73 assert(guard !=
NULL);
74 if (guard[0] != (cookie ^ selfref) || guard[1] != selfref)
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
void checkasm_fail_abort(const char *const msg,...)
static struct @111144215057303131116103221376075045141373005341 current
void checkasm_pop_stack_guard(void)
void checkasm_push_stack_guard(uintptr_t guard[2])
Push stack guard values for corruption detection.
Test writing API for checkasm.