Message ID | a1760a90-08f5-a684-cf16-14f67f1931d6@arm.com |
---|---|
State | New, archived |
Headers |
Commit Message
diff --git a/math/Versions b/math/Versions index 78d02c2f41..986dd3cee4 100644 --- a/math/Versions +++ b/math/Versions @@ -575,6 +575,6 @@ libm { f32xsubf64x; f32xsubf128; f64subf64x; f64subf128; f64xsubf128; # No SVID compatible error handling. - exp; exp2; log; + exp; exp2; log; log2; } } diff --git a/math/w_log2.c b/math/w_log2.c new file mode 100644 index 0000000000..da00b2805f --- /dev/null +++ b/math/w_log2.c @@ -0,0 +1,8 @@ +#include <math-type-macros-double.h> +#undef __USE_WRAPPER_TEMPLATE +#define __USE_WRAPPER_TEMPLATE 1 +#undef declare_mgen_alias +#define declare_mgen_alias(a, b) +#include <w_log2_template.c> +versioned_symbol (libm, __log2, log2, GLIBC_2_28); +libm_alias_double_other (__log2, log2) diff --git a/math/w_log2_compat.c b/math/w_log2_compat.c index 61e7170ae1..4bd5289606 100644 --- a/math/w_log2_compat.c +++ b/math/w_log2_compat.c @@ -23,10 +23,10 @@ #include <libm-alias-double.h> -#if LIBM_SVID_COMPAT +#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_28) /* wrapper log2(x) */ double -__log2 (double x) +__log2_compat (double x) { if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_) { @@ -44,5 +44,5 @@ __log2 (double x) return __ieee754_log2 (x); } -libm_alias_double (__log2, log2) +compat_symbol (libm, __log2_compat, log2, GLIBC_2_1); #endif diff --git a/sysdeps/i386/fpu/w_log2.c b/sysdeps/i386/fpu/w_log2.c new file mode 100644 index 0000000000..eafbe5cf3e --- /dev/null +++ b/sysdeps/i386/fpu/w_log2.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_log2.c> diff --git a/sysdeps/ia64/fpu/e_log2.S b/sysdeps/ia64/fpu/e_log2.S index 17893a2ede..c0831b3701 100644 --- a/sysdeps/ia64/fpu/e_log2.S +++ b/sysdeps/ia64/fpu/e_log2.S @@ -655,6 +655,12 @@ SPECIAL_LOG2: GLOBAL_LIBM_END(log2) libm_alias_double_other (log2, log2) +#ifdef SHARED +.symver log2,log2@@GLIBC_2.28 +.weak __log2_compat +.set __log2_compat,__log2 +.symver __log2_compat,log2@GLIBC_2.1 +#endif LOCAL_LIBM_ENTRY(__libm_error_region) diff --git a/sysdeps/ieee754/dbl-64/e_log2.c b/sysdeps/ieee754/dbl-64/e_log2.c index 9c63cb6beb..24f6715732 100644 --- a/sysdeps/ieee754/dbl-64/e_log2.c +++ b/sysdeps/ieee754/dbl-64/e_log2.c @@ -18,6 +18,8 @@ #include <math.h> #include <stdint.h> +#include <shlib-compat.h> +#include <libm-alias-double.h> #include "math_config.h" #define T __log2_data.tab @@ -37,7 +39,7 @@ top16 (double x) } double -__ieee754_log2 (double x) +__log2 (double x) { /* double_t for better performance on targets with FLT_EVAL_METHOD==2. */ double_t z, r, r2, r4, y, invc, logc, kd, hi, lo, t1, t2, t3, p; @@ -142,6 +144,9 @@ __ieee754_log2 (double x) #endif return y; } -#ifndef __ieee754_log2 -strong_alias (__ieee754_log2, __log2_finite) +#ifndef __log2 +strong_alias (__log2, __ieee754_log2) +strong_alias (__log2, __log2_finite) +versioned_symbol (libm, __log2, log2, GLIBC_2_28); +libm_alias_double_other (__log2, log2) #endif diff --git a/sysdeps/ieee754/dbl-64/w_log2.c b/sysdeps/ieee754/dbl-64/w_log2.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/dbl-64/w_log2.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/m68k/m680x0/fpu/w_log2.c b/sysdeps/m68k/m680x0/fpu/w_log2.c new file mode 100644 index 0000000000..eafbe5cf3e --- /dev/null +++ b/sysdeps/m68k/m680x0/fpu/w_log2.c @@ -0,0 +1 @@ +#include <sysdeps/../math/w_log2.c> diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index e4df9ed69d..49b8298cae 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1071,3 +1071,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 1c3add0005..5822c73a25 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1035,3 +1035,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 3f322996a5..99fd72df34 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1046,6 +1046,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.3.4 __c1_cabsf F GLIBC_2.3.4 __c1_cacosf F GLIBC_2.3.4 __c1_cacoshf F diff --git a/sysdeps/unix/sysv/linux/arm/libm.abilist b/sysdeps/unix/sysv/linux/arm/libm.abilist index 709a2f6b75..f25337fe76 100644 --- a/sysdeps/unix/sysv/linux/arm/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/libm.abilist @@ -456,6 +456,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 843b35ff24..cee07ba66c 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -767,4 +767,5 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index e813a34b69..98f19cb137 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1078,3 +1078,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist index b71bb9b08f..b32cff741b 100644 --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist @@ -1008,3 +1008,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 709a2f6b75..f25337fe76 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -456,6 +456,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 591b67823c..9a04d77ec0 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -807,3 +807,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist index ada5cb622e..519eaa6df9 100644 --- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist @@ -768,3 +768,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 085b26ade4..4050a919d5 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -767,4 +767,5 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index e3857aa5e5..61c60c4e11 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1035,3 +1035,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist index 72da89b941..bc52c8f7ee 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -768,3 +768,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 3191dd05ab..66f87147e2 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -813,6 +813,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 74f61203af..324b4e68dc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -812,6 +812,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist index a57ea562e1..39ff08b018 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist @@ -491,6 +491,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.3 _LIB_VERSION D 0x4 GLIBC_2.3 __clog10 F GLIBC_2.3 __clog10f F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist index 83a78fc91a..1c8404c8de 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist @@ -1022,3 +1022,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 53dbbe1a45..ba4d1a1959 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1036,6 +1036,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 446c18bbd8..3649e5321a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1036,6 +1036,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/sh/libm.abilist b/sysdeps/unix/sysv/linux/sh/libm.abilist index cc7289f1fe..5e42e06e1d 100644 --- a/sysdeps/unix/sysv/linux/sh/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/libm.abilist @@ -767,4 +767,5 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 0dfc34b305..795f7a70de 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1043,6 +1043,7 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index f17165c5bd..e3cd41f16e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1035,3 +1035,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index d76f2b221d..6d9a61107c 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1069,3 +1069,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index fbf49ae82d..ca609340df 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1069,3 +1069,4 @@ GLIBC_2.28 fmull F GLIBC_2.28 fsub F GLIBC_2.28 fsubl F GLIBC_2.28 log F +GLIBC_2.28 log2 F