[PATCH 2/2] i386: Use __seg_gs qualifiers in {STACK, POINTER}_CHK_GUARD macros

Uros Bizjak ubizjak@gmail.com
Tue Sep 9 16:41:54 GMT 2025


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 <ubizjak@gmail.com>
Cc: H.J.Lu <hjl.tools@gmail.com>
Cc: Florian Weimer <fweimer@redhat.com>
Cc: Carlos O'Donell <carlos@redhat.com>
---
 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 039762927c..574a409584 100644
--- a/sysdeps/i386/stackguard-macros.h
+++ b/sysdeps/i386/stackguard-macros.h
@@ -1,12 +1,7 @@
 #include <stdint.h>
 
 #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.51.0



More information about the Libc-alpha mailing list