From: H.J. Lu Date: Sat, 1 Feb 2025 10:06:33 +0000 (+0800) Subject: x86: Add a -mstack-protector-guard=global test X-Git-Tag: basepoints/gcc-16~2238 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b38efaf36058b40aaf8659a9348815110242ced8;p=thirdparty%2Fgcc.git x86: Add a -mstack-protector-guard=global test Verify that -mstack-protector-guard=global works on x86. Default stack protector uses TLS. -mstack-protector-guard=global uses a global variable, __stack_chk_guard, instead of TLS. * gcc.target/i386/ssp-global.c: New file. Signed-off-by: H.J. Lu --- diff --git a/gcc/testsuite/gcc.target/i386/ssp-global.c b/gcc/testsuite/gcc.target/i386/ssp-global.c new file mode 100644 index 00000000000..85a288c781c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/ssp-global.c @@ -0,0 +1,35 @@ +/* { dg-do run { target fstack_protector } } */ +/* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=global" } */ + +#include + +#ifdef __LP64__ +const unsigned long int __stack_chk_guard = 0x2d853605a4d9a09cUL; +#else +const unsigned long int __stack_chk_guard = 0xdd2cc927UL; +#endif + +void +__stack_chk_fail (void) +{ + exit (0); /* pass */ +} + +__attribute__ ((noipa)) +void +smash (char *p, int i) +{ + p[i] = 42; +} + +int +main (void) +{ + char foo[255]; + + /* smash stack */ + for (int i = 0; i <= 400; i++) + smash (foo, i); + + return 1; +}