about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2017-09-13 18:14:26 +0100
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2017-10-02 14:39:38 +0100
commitbd4430c2a6d9d4deb49cab20ebe6aaf8a779ba0d (patch)
tree2c3ab316856c7021bb6e474036b029dc8c070a6f
parentf7a0b063e7fc81d0eff1e8b2b169876bdfb4cc44 (diff)
downloadglibc-bd4430c2a6d9d4deb49cab20ebe6aaf8a779ba0d.tar.gz
glibc-bd4430c2a6d9d4deb49cab20ebe6aaf8a779ba0d.tar.xz
glibc-bd4430c2a6d9d4deb49cab20ebe6aaf8a779ba0d.zip
Do not wrap logf, log2f and powf
The new generic logf, log2f and powf code don't need wrappers any more,
they set errno inline so only use the wrappers on targets that need it.

	* sysdeps/ieee754/flt-32/e_log2f.c (__log2f): Define without wrapper.
	* sysdeps/ieee754/flt-32/e_logf.c (__logf): Likewise
	* sysdeps/ieee754/flt-32/e_powf.c (__powf): Likewise
	* sysdeps/ieee754/flt-32/w_log2f.c: New file.
	* sysdeps/ieee754/flt-32/w_logf.c: New file.
	* sysdeps/ieee754/flt-32/w_powf.c: New file.
	* sysdeps/i386/fpu/w_log2f.c: New file.
	* sysdeps/i386/fpu/w_logf.c: New file.
	* sysdeps/i386/fpu/w_powf.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_log2f.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_logf.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_powf.c: New file.
-rw-r--r--ChangeLog15
-rw-r--r--sysdeps/i386/fpu/w_log2f.c1
-rw-r--r--sysdeps/i386/fpu/w_logf.c1
-rw-r--r--sysdeps/i386/fpu/w_powf.c1
-rw-r--r--sysdeps/ieee754/flt-32/e_log2f.c9
-rw-r--r--sysdeps/ieee754/flt-32/e_logf.c9
-rw-r--r--sysdeps/ieee754/flt-32/e_powf.c9
-rw-r--r--sysdeps/ieee754/flt-32/w_log2f.c1
-rw-r--r--sysdeps/ieee754/flt-32/w_logf.c1
-rw-r--r--sysdeps/ieee754/flt-32/w_powf.c1
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_log2f.c1
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_logf.c1
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_powf.c1
13 files changed, 45 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 25587d670e..a60ba0a70e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,19 @@
 2017-10-02  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* sysdeps/ieee754/flt-32/e_log2f.c (__log2f): Define without wrapper.
+	* sysdeps/ieee754/flt-32/e_logf.c (__logf): Likewise
+	* sysdeps/ieee754/flt-32/e_powf.c (__powf): Likewise
+	* sysdeps/ieee754/flt-32/w_log2f.c: New file.
+	* sysdeps/ieee754/flt-32/w_logf.c: New file.
+	* sysdeps/ieee754/flt-32/w_powf.c: New file.
+	* sysdeps/i386/fpu/w_log2f.c: New file.
+	* sysdeps/i386/fpu/w_logf.c: New file.
+	* sysdeps/i386/fpu/w_powf.c: New file.
+	* sysdeps/m68k/m680x0/fpu/w_log2f.c: New file.
+	* sysdeps/m68k/m680x0/fpu/w_logf.c: New file.
+	* sysdeps/m68k/m680x0/fpu/w_powf.c: New file.
+
+2017-10-02  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 	    H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/ieee754/flt-32/e_exp2f.c (__exp2f): Define without wrapper.
diff --git a/sysdeps/i386/fpu/w_log2f.c b/sysdeps/i386/fpu/w_log2f.c
new file mode 100644
index 0000000000..3f5c71cec2
--- /dev/null
+++ b/sysdeps/i386/fpu/w_log2f.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log2f.c>
diff --git a/sysdeps/i386/fpu/w_logf.c b/sysdeps/i386/fpu/w_logf.c
new file mode 100644
index 0000000000..ea48d1356e
--- /dev/null
+++ b/sysdeps/i386/fpu/w_logf.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_logf.c>
diff --git a/sysdeps/i386/fpu/w_powf.c b/sysdeps/i386/fpu/w_powf.c
new file mode 100644
index 0000000000..d133216f5b
--- /dev/null
+++ b/sysdeps/i386/fpu/w_powf.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_powf.c>
diff --git a/sysdeps/ieee754/flt-32/e_log2f.c b/sysdeps/ieee754/flt-32/e_log2f.c
index 6c42f27843..ef13b372cb 100644
--- a/sysdeps/ieee754/flt-32/e_log2f.c
+++ b/sysdeps/ieee754/flt-32/e_log2f.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 #include "math_config.h"
 
 /*
@@ -34,7 +35,7 @@ Relative error: 1.9 * 2^-26 (before rounding.)
 #define OFF 0x3f330000
 
 float
-__ieee754_log2f (float x)
+__log2f (float x)
 {
   /* double_t for better performance on targets with FLT_EVAL_METHOD==2.  */
   double_t z, r, r2, p, y, y0, invc, logc;
@@ -85,4 +86,8 @@ __ieee754_log2f (float x)
   y = y * r2 + p;
   return (float) y;
 }
-strong_alias (__ieee754_log2f, __log2f_finite)
+#ifndef __log2f
+strong_alias (__log2f, __ieee754_log2f)
+strong_alias (__log2f, __log2f_finite)
+versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c
index b8d262441f..ea847b57ec 100644
--- a/sysdeps/ieee754/flt-32/e_logf.c
+++ b/sysdeps/ieee754/flt-32/e_logf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 #include "math_config.h"
 
 /*
@@ -35,7 +36,7 @@ Relative error: 1.957 * 2^-26 (before rounding.)
 #define OFF 0x3f330000
 
 float
-__ieee754_logf (float x)
+__logf (float x)
 {
   /* double_t for better performance on targets with FLT_EVAL_METHOD==2.  */
   double_t z, r, r2, y, y0, invc, logc;
@@ -84,4 +85,8 @@ __ieee754_logf (float x)
   y = y * r2 + (y0 + r);
   return (float) y;
 }
-strong_alias (__ieee754_logf, __logf_finite)
+#ifndef __logf
+strong_alias (__logf, __ieee754_logf)
+strong_alias (__logf, __logf_finite)
+versioned_symbol (libm, __logf, logf, GLIBC_2_27);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c
index 644a18d05e..08d2c6d058 100644
--- a/sysdeps/ieee754/flt-32/e_powf.c
+++ b/sysdeps/ieee754/flt-32/e_powf.c
@@ -18,6 +18,7 @@
 
 #include <math.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 #include "math_config.h"
 
 /*
@@ -139,7 +140,7 @@ zeroinfnan (uint32_t ix)
 }
 
 float
-__ieee754_powf (float x, float y)
+__powf (float x, float y)
 {
   unsigned long sign_bias = 0;
   uint32_t ix, iy;
@@ -214,4 +215,8 @@ __ieee754_powf (float x, float y)
     }
   return (float) exp2_inline (ylogx, sign_bias);
 }
-strong_alias (__ieee754_powf, __powf_finite)
+#ifndef __powf
+strong_alias (__powf, __ieee754_powf)
+strong_alias (__powf, __powf_finite)
+versioned_symbol (libm, __powf, powf, GLIBC_2_27);
+#endif
diff --git a/sysdeps/ieee754/flt-32/w_log2f.c b/sysdeps/ieee754/flt-32/w_log2f.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/flt-32/w_log2f.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/ieee754/flt-32/w_logf.c b/sysdeps/ieee754/flt-32/w_logf.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/flt-32/w_logf.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/ieee754/flt-32/w_powf.c b/sysdeps/ieee754/flt-32/w_powf.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/flt-32/w_powf.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_log2f.c b/sysdeps/m68k/m680x0/fpu/w_log2f.c
new file mode 100644
index 0000000000..3f5c71cec2
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_log2f.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_log2f.c>
diff --git a/sysdeps/m68k/m680x0/fpu/w_logf.c b/sysdeps/m68k/m680x0/fpu/w_logf.c
new file mode 100644
index 0000000000..ea48d1356e
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_logf.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_logf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/w_powf.c b/sysdeps/m68k/m680x0/fpu/w_powf.c
new file mode 100644
index 0000000000..d133216f5b
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_powf.c
@@ -0,0 +1 @@
+#include <sysdeps/../math/w_powf.c>