From 1a076b5c21f05066e079e6a0aa6f73935f9c0e1e Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 9 Sep 2025 18:41:54 +0200 Subject: [PATCH] i386: Use __seg_gs qualifiers in {STACK, POINTER}_CHK_GUARD macros Use the __seg_gs named address space qualifiers to cast reads of the guard values in the TCB as %gs: prefixed addresses. Signed-off-by: Uros Bizjak Cc: H.J.Lu Cc: Florian Weimer Cc: Carlos O'Donell Reviewed-by: H.J. Lu --- sysdeps/i386/stackguard-macros.h | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sysdeps/i386/stackguard-macros.h b/sysdeps/i386/stackguard-macros.h index 039762927c7..574a4095842 100644 --- a/sysdeps/i386/stackguard-macros.h +++ b/sysdeps/i386/stackguard-macros.h @@ -1,12 +1,7 @@ #include #define STACK_CHK_GUARD \ - ({ uintptr_t x; asm ("movl %%gs:0x14, %0" : "=r" (x)); x; }) + (*(uintptr_t __seg_gs *) offsetof (tcbhead_t, stack_guard)) #define POINTER_CHK_GUARD \ - ({ \ - uintptr_t x; \ - asm ("movl %%gs:%c1, %0" : "=r" (x) \ - : "i" (offsetof (tcbhead_t, pointer_guard))); \ - x; \ - }) + (*(uintptr_t __seg_gs *) offsetof (tcbhead_t, pointer_guard)) -- 2.47.3