summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog43
-rw-r--r--math/Versions2
-rw-r--r--math/w_log.c8
-rw-r--r--math/w_log_compat.c20
-rw-r--r--sysdeps/i386/fpu/w_log.c1
-rw-r--r--sysdeps/ia64/fpu/e_log.S6
-rw-r--r--sysdeps/ieee754/dbl-64/e_log.c16
-rw-r--r--sysdeps/ieee754/dbl-64/w_log.c1
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_log.c1
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/arm/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sh/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist1
-rw-r--r--sysdeps/x86_64/fpu/multiarch/e_log-avx.c3
-rw-r--r--sysdeps/x86_64/fpu/multiarch/e_log-fma.c3
-rw-r--r--sysdeps/x86_64/fpu/multiarch/e_log-fma4.c3
-rw-r--r--sysdeps/x86_64/fpu/multiarch/e_log.c4
-rw-r--r--sysdeps/x86_64/fpu/multiarch/w_log.c1
38 files changed, 125 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 5968aa4ee0..206d216bca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,48 @@
 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.
+	* math/w_log.c: New file.
+	* sysdeps/i386/fpu/w_log.c: New file.
+	* sysdeps/ia64/fpu/e_log.S: Update.
+	* sysdeps/ieee754/dbl-64/e_log.c (__ieee754_log): Rename to __log
+	and add necessary aliases.
+	* sysdeps/ieee754/dbl-64/w_log.c: New file.
+	* sysdeps/m68k/m680x0/fpu/w_log.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.
+	* sysdeps/x86_64/fpu/multiarch/e_log-avx.c (__ieee754_log): Rename to
+	__log.
+	* sysdeps/x86_64/fpu/multiarch/e_log-fma.c (__ieee754_log): Likewise.
+	* sysdeps/x86_64/fpu/multiarch/e_log-fma4.c (__ieee754_log): Likewise.
+	* sysdeps/x86_64/fpu/multiarch/e_log.c (__ieee754_log): Likewise.
+	* sysdeps/x86_64/fpu/multiarch/w_log.c: New file.
+
+2018-11-21  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
 	* math/Versions (GLIBC_2.29): Add exp and exp2.
 	* math/w_exp2_compat.c (__exp2_compat): Change to versioned compat
 	symbol, handle NO_LONG_DOUBLE and LONG_DOUBLE_COMPAT explicitly.
diff --git a/math/Versions b/math/Versions
index 29e02d6654..87aa6590ed 100644
--- a/math/Versions
+++ b/math/Versions
@@ -577,6 +577,6 @@ libm {
   }
   GLIBC_2.29 {
     # No SVID compatible error handling.
-    exp; exp2;
+    exp; exp2; log;
   }
 }
diff --git a/math/w_log.c b/math/w_log.c
new file mode 100644
index 0000000000..50065e302f
--- /dev/null
+++ b/math/w_log.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_log_template.c>
+versioned_symbol (libm, __log, log, GLIBC_2_29);
+libm_alias_double_other (__log, log)
diff --git a/math/w_log_compat.c b/math/w_log_compat.c
index 5413b8e8df..d99dd4f689 100644
--- a/math/w_log_compat.c
+++ b/math/w_log_compat.c
@@ -23,10 +23,12 @@
 #include <libm-alias-double.h>
 
 
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && (SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_29) \
+			 || defined NO_LONG_DOUBLE \
+			 || defined LONG_DOUBLE_COMPAT)
 /* wrapper log(x) */
 double
-__log (double x)
+__log_compat (double x)
 {
   if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
     {
@@ -44,5 +46,17 @@ __log (double x)
 
   return  __ieee754_log (x);
 }
-libm_alias_double (__log, log)
+# if SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_29)
+compat_symbol (libm, __log_compat, log, GLIBC_2_0);
+# endif
+# ifdef NO_LONG_DOUBLE
+weak_alias (__log_compat, logl)
+# endif
+# ifdef LONG_DOUBLE_COMPAT
+/* Work around gas bug "multiple versions for symbol".  */
+weak_alias (__log_compat, __log_compat_alias)
+
+LONG_DOUBLE_COMPAT_CHOOSE_libm_logl (
+  compat_symbol (libm, __log_compat_alias, logl, FIRST_VERSION_libm_logl), );
+# endif
 #endif
diff --git a/sysdeps/i386/fpu/w_log.c b/sysdeps/i386/fpu/w_log.c
new file mode 100644
index 0000000000..9b2b018711
--- /dev/null
+++ b/sysdeps/i386/fpu/w_log.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log.c>
diff --git a/sysdeps/ia64/fpu/e_log.S b/sysdeps/ia64/fpu/e_log.S
index 0b63ec43c5..7ee2392acd 100644
--- a/sysdeps/ia64/fpu/e_log.S
+++ b/sysdeps/ia64/fpu/e_log.S
@@ -1670,6 +1670,12 @@ log_libm_err:
 };;
 GLOBAL_IEEE754_END(log)
 libm_alias_double_other (__log, log)
+#ifdef SHARED
+.symver log,log@@GLIBC_2.29
+.weak __log_compat
+.set __log_compat,__log
+.symver __log_compat,log@GLIBC_2.2
+#endif
 
 
 LOCAL_LIBM_ENTRY(__libm_error_region)
diff --git a/sysdeps/ieee754/dbl-64/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c
index a56b714fb7..648fe141df 100644
--- a/sysdeps/ieee754/dbl-64/e_log.c
+++ b/sysdeps/ieee754/dbl-64/e_log.c
@@ -18,6 +18,9 @@
 
 #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 __log_data.tab
@@ -42,7 +45,7 @@ top16 (double x)
 
 double
 SECTION
-__ieee754_log (double x)
+__log (double x)
 {
   /* double_t for better performance on targets with FLT_EVAL_METHOD==2.  */
   double_t w, z, r, r2, r3, y, invc, logc, kd, hi, lo;
@@ -127,6 +130,13 @@ __ieee754_log (double x)
   y = lo + r2 * A[0] + r * r2 * (A[1] + r * A[2] + r2 * (A[3] + r * A[4])) + hi;
   return y;
 }
-#ifndef __ieee754_log
-strong_alias (__ieee754_log, __log_finite)
+#ifndef __log
+strong_alias (__log, __ieee754_log)
+strong_alias (__log, __log_finite)
+# if LIBM_SVID_COMPAT
+versioned_symbol (libm, __log, log, GLIBC_2_29);
+libm_alias_double_other (__log, log)
+# else
+libm_alias_double (__log, log)
+# endif
 #endif
diff --git a/sysdeps/ieee754/dbl-64/w_log.c b/sysdeps/ieee754/dbl-64/w_log.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/w_log.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_log.c b/sysdeps/m68k/m680x0/fpu/w_log.c
new file mode 100644
index 0000000000..9b2b018711
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_log.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log.c>
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index ff0a06fdb8..144bdb9cac 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1070,3 +1070,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index cfb8f7d729..6785ac6aa2 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1034,3 +1034,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 8a7f92f548..132ea00288 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1045,6 +1045,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 a4a2c9b5e0..45a233785d 100644
--- a/sysdeps/unix/sysv/linux/arm/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/libm.abilist
@@ -455,6 +455,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 c665d65ef1..b0689ff6c5 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -766,4 +766,5 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 6728695daa..3afd304881 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1077,3 +1077,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
index 3a5d2fb84d..637fd150c2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
@@ -1007,3 +1007,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index a4a2c9b5e0..45a233785d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -455,6 +455,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 84a580a3a0..b1689c2e65 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -806,3 +806,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist
index f2c3143b70..ae59dfbd66 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist
@@ -767,3 +767,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 7ecaeea9d5..38c665147a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -766,4 +766,5 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 c3679e812c..09777c71c7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1034,3 +1034,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 2964682f19..59fc049b86 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -767,3 +767,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index f7ceb788ce..7788f76e81 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -812,6 +812,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 7e1c1b559a..cae3604a00 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -811,6 +811,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
index de18417d46..732825e015 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
@@ -1078,3 +1078,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
index 6dd35dbb28..59f083dda7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
@@ -490,6 +490,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index b33b21431f..5a68b2701b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1035,6 +1035,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 567059b054..364f7e63d4 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1035,6 +1035,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 baea13116d..489f34db57 100644
--- a/sysdeps/unix/sysv/linux/sh/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/libm.abilist
@@ -766,4 +766,5 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 7249346330..288986f228 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1042,6 +1042,7 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log 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 629fb08f54..11fb7e4597 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1034,3 +1034,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index ac703100df..9fd399d31a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1068,3 +1068,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 55098e04c8..bbea57551d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1068,3 +1068,4 @@ GLIBC_2.28 fsub F
 GLIBC_2.28 fsubl F
 GLIBC_2.29 exp F
 GLIBC_2.29 exp2 F
+GLIBC_2.29 log F
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log-avx.c b/sysdeps/x86_64/fpu/multiarch/e_log-avx.c
index b22a5767be..b9f5be55fb 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log-avx.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log-avx.c
@@ -1,4 +1,5 @@
-#define __ieee754_log __ieee754_log_avx
+#include <math.h>
+#define __log __ieee754_log_avx
 #define SECTION __attribute__ ((section (".text.avx")))
 
 #include <sysdeps/ieee754/dbl-64/e_log.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log-fma.c b/sysdeps/x86_64/fpu/multiarch/e_log-fma.c
index bce0ee03c2..13b0a2ae4f 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log-fma.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log-fma.c
@@ -1,4 +1,5 @@
-#define __ieee754_log __ieee754_log_fma
+#include <math.h>
+#define __log __ieee754_log_fma
 #define SECTION __attribute__ ((section (".text.fma")))
 
 #include <sysdeps/ieee754/dbl-64/e_log.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log-fma4.c b/sysdeps/x86_64/fpu/multiarch/e_log-fma4.c
index f458f9c23c..16ef3ab837 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log-fma4.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log-fma4.c
@@ -1,4 +1,5 @@
-#define __ieee754_log __ieee754_log_fma4
+#include <math.h>
+#define __log __ieee754_log_fma4
 #define SECTION __attribute__ ((section (".text.fma4")))
 
 #include <sysdeps/ieee754/dbl-64/e_log.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log.c b/sysdeps/x86_64/fpu/multiarch/e_log.c
index e0a1b02fae..0cd2072325 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log.c
@@ -16,6 +16,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <math.h>
+
 extern double __redirect_ieee754_log (double);
 
 #define SYMBOL_NAME ieee754_log
@@ -25,5 +27,5 @@ libc_ifunc_redirected (__redirect_ieee754_log, __ieee754_log,
 		       IFUNC_SELECTOR ());
 strong_alias (__ieee754_log, __log_finite)
 
-#define __ieee754_log __ieee754_log_sse2
+#define __log __ieee754_log_sse2
 #include <sysdeps/ieee754/dbl-64/e_log.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/w_log.c b/sysdeps/x86_64/fpu/multiarch/w_log.c
new file mode 100644
index 0000000000..9b2b018711
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/w_log.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log.c>