2018-11-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
+ * math/Versions (GLIBC_2.29): Add log2.
+ * math/w_log2_compat.c (__log2_compat): Change to versioned compat
+ symbol.
+ * math/w_log2.c: New file.
+ * sysdeps/i386/fpu/w_log2.c: New file.
+ * sysdeps/ia64/fpu/e_log2.S: Add versioned symbols.
+ * sysdeps/ieee754/dbl-64/e_log2.c (__ieee754_log2): Rename to __log2
+ and add necessary aliases.
+ * sysdeps/ieee754/dbl-64/w_log2.c: New file.
+ * sysdeps/m68k/m680x0/fpu/w_log2.c: New file.
+ * sysdeps/mach/hurd/i386/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/alpha/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/arm/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/hppa/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/i386/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/ia64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/nios2/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Update.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/sh/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Update.
+ * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Update.
+
+2018-11-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
* math/Versions (GLIBC_2.29): Add log.
* math/w_log_compat.c (__log_compat): Change to versioned compat
symbol.
}
GLIBC_2.29 {
# No SVID compatible error handling.
- exp; exp2; log;
+ exp; exp2; log; log2;
}
}
--- /dev/null
+#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_29);
+libm_alias_double_other (__log2, log2)
#include <libm-alias-double.h>
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && (SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_29) \
+ || defined NO_LONG_DOUBLE \
+ || defined LONG_DOUBLE_COMPAT)
/* wrapper log2(x) */
double
-__log2 (double x)
+__log2_compat (double x)
{
if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
{
return __ieee754_log2 (x);
}
-libm_alias_double (__log2, log2)
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_29)
+compat_symbol (libm, __log2_compat, log2, GLIBC_2_1);
+# endif
+# ifdef NO_LONG_DOUBLE
+weak_alias (__log2_compat, log2l)
+# endif
+# ifdef LONG_DOUBLE_COMPAT
+/* Work around gas bug "multiple versions for symbol". */
+weak_alias (__log2_compat, __log2_compat_alias)
+
+LONG_DOUBLE_COMPAT_CHOOSE_libm_log2l (
+ compat_symbol (libm, __log2_compat_alias, log2l, FIRST_VERSION_libm_log2l), );
+# endif
#endif
--- /dev/null
+#include <sysdeps/../math/w_log2.c>
.section .text
-GLOBAL_LIBM_ENTRY(log2)
+WEAK_LIBM_ENTRY(log2)
{ .mfi
alloc r32=ar.pfs,1,4,4,0
br.ret.sptk b0;;
}
-GLOBAL_LIBM_END(log2)
-libm_alias_double_other (log2, log2)
+WEAK_LIBM_END(log2)
+libm_alias_double_other (__log2, log2)
+#ifdef SHARED
+.symver log2,log2@@GLIBC_2.29
+.weak __log2_compat
+.set __log2_compat,__log2
+.symver __log2_compat,log2@GLIBC_2.2
+#endif
LOCAL_LIBM_ENTRY(__libm_error_region)
#include <math.h>
#include <stdint.h>
+#include <math-svid-compat.h>
+#include <shlib-compat.h>
+#include <libm-alias-double.h>
#include "math_config.h"
#define T __log2_data.tab
}
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;
y = lo + r2 * p + hi;
return y;
}
-#ifndef __ieee754_log2
-strong_alias (__ieee754_log2, __log2_finite)
+#ifndef __log2
+strong_alias (__log2, __ieee754_log2)
+strong_alias (__log2, __log2_finite)
+# if LIBM_SVID_COMPAT
+versioned_symbol (libm, __log2, log2, GLIBC_2_29);
+libm_alias_double_other (__log2, log2)
+# else
+libm_alias_double (__log2, log2)
+# endif
#endif
--- /dev/null
+/* Not needed. */
--- /dev/null
+#include <sysdeps/../math/w_log2.c>
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.3.4 __c1_cabsf F
GLIBC_2.3.4 __c1_cacosf F
GLIBC_2.3.4 __c1_cacoshf F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.4 __clog10f F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 exp2l F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 _LIB_VERSION D 0x4
GLIBC_2.4 __clog10 F
GLIBC_2.4 __clog10f F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 exp2l F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.3 _LIB_VERSION D 0x4
GLIBC_2.3 __clog10 F
GLIBC_2.3 __clog10f F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 exp2l F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F
GLIBC_2.29 exp F
GLIBC_2.29 exp2 F
GLIBC_2.29 log F
+GLIBC_2.29 log2 F