From 941ea10f8099cb4fcc98c65249fc17a63fcff6a4 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Mon, 15 Mar 2021 20:24:45 +0530 Subject: [PATCH] Build get-cpuid-feature-leaf.c without stack-protector [BZ #27555] __x86_get_cpuid_feature_leaf is called during early startup, before the stack check guard is initialized and is hence not safe to build with stack-protector. Additionally, IFUNC resolvers for static tst-ifunc-isa tests get called too early for stack protector to be useful, so fix them to disable stack protector for the resolver functions. This fixes all failures seen with --enable-stack-protector=all configuration. Reviewed-by: Adhemerval Zanella --- sysdeps/x86/Makefile | 2 ++ sysdeps/x86/tst-ifunc-isa.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile index 06c9f84f51..3ca7bfefe4 100644 --- a/sysdeps/x86/Makefile +++ b/sysdeps/x86/Makefile @@ -7,6 +7,8 @@ sysdep_routines += get-cpuid-feature-leaf sysdep-dl-routines += dl-get-cpu-features sysdep_headers += sys/platform/x86.h +CFLAGS-get-cpuid-feature-leaf.o += $(no-stack-protector) + tests += tst-get-cpu-features tst-get-cpu-features-static \ tst-cpu-features-cpuinfo tst-cpu-features-cpuinfo-static \ tst-cpu-features-supports tst-cpu-features-supports-static diff --git a/sysdeps/x86/tst-ifunc-isa.h b/sysdeps/x86/tst-ifunc-isa.h index 60aa1cea6a..6d906966a7 100644 --- a/sysdeps/x86/tst-ifunc-isa.h +++ b/sysdeps/x86/tst-ifunc-isa.h @@ -29,6 +29,7 @@ enum isa }; enum isa +__attribute__ ((__optimize__ ("-fno-stack-protector"))) get_isa (void) { if (CPU_FEATURE_USABLE (AVX512F)) @@ -83,6 +84,7 @@ isa_none (void) int foo (void) __attribute__ ((ifunc ("foo_ifunc"))); void * +__attribute__ ((__optimize__ ("-fno-stack-protector"))) foo_ifunc (void) { switch (get_isa ())