From 9f78a7c1d0963282608da836b840f0d5ae1c478e Mon Sep 17 00:00:00 2001 From: Sunil K Pandey Date: Tue, 13 Feb 2024 12:23:14 -0800 Subject: x86_64: Exclude SSE, AVX and FMA4 variants in libm multiarch When glibc is built with ISA level 3 or higher by default, the resulting glibc binaries won't run on SSE or FMA4 processors. Exclude SSE, AVX and FMA4 variants in libm multiarch when ISA level 3 or higher is enabled by default. When glibc is built with ISA level 2 enabled by default, only keep SSE4.1 variant. Fixes BZ 31335. NB: elf/tst-valgrind-smoke test fails with ISA level 4, because valgrind doesn't support AVX512 instructions: https://bugs.kde.org/show_bug.cgi?id=383010 Reviewed-by: H.J. Lu --- sysdeps/x86_64/fpu/multiarch/e_logf.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'sysdeps/x86_64/fpu/multiarch/e_logf.c') diff --git a/sysdeps/x86_64/fpu/multiarch/e_logf.c b/sysdeps/x86_64/fpu/multiarch/e_logf.c index 97e23c8fea..a3978d9a8e 100644 --- a/sysdeps/x86_64/fpu/multiarch/e_logf.c +++ b/sysdeps/x86_64/fpu/multiarch/e_logf.c @@ -16,28 +16,31 @@ License along with the GNU C Library; if not, see . */ -#include -#include +#include +#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL +# include +# include extern float __redirect_logf (float); -#define SYMBOL_NAME logf -#include "ifunc-fma.h" +# define SYMBOL_NAME logf +# include "ifunc-fma.h" libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ()); -#ifdef SHARED +# ifdef SHARED __hidden_ver1 (__logf, __GI___logf, __redirect_logf) __attribute__ ((visibility ("hidden"))); versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27); libm_alias_float_other (__log, log) -#else +# else libm_alias_float (__log, log) -#endif +# endif strong_alias (__logf, __ieee754_logf) libm_alias_finite (__logf, __logf) -#define __logf __logf_sse2 +# define __logf __logf_sse2 +#endif #include -- cgit 1.4.1