Discussion:
[PATCH] In _IEEE_LIBM mode, use symbol aliases instead of wrapper funcs [v4]
Keith Packard
2018-09-22 17:09:27 UTC
Permalink
When the math library is compiled to just use bare IEEE_LIBM mode,
many public functions are just wrappers around the __ieee754 version.
Eliminate the extra function by creating a symbol alias for the public
name directly from the ieee754 name.

v2:
Use __weak_reference macro instead of using
'__attribute__((weak, alias' to make this code portable
to non-ELF systems.

v3:
Use __strong_reference macro instead of __weak_reference to
avoid changing the symbol in the resulting library. Make the
use of this and the un-definition of the wrapper functions
conditional on both the definition of _IEEE_LIBM and
__strong_reference so that systems without the latter will
still compile the wrapper functions and work properly.

v4:
Use HAVE_ALIAS_ATTRIBUTE define instead of just checking for
__strong_reference. This patch does not include any build
system changes for this; those will need to be done by someone
using autotools.

Signed-off-by: Keith Packard <***@keithp.com>

fixup for reference
---
newlib/libm/math/e_acos.c | 4 ++++
newlib/libm/math/e_acosh.c | 4 ++++
newlib/libm/math/e_asin.c | 4 ++++
newlib/libm/math/e_atan2.c | 4 ++++
newlib/libm/math/e_atanh.c | 4 ++++
newlib/libm/math/e_cosh.c | 4 ++++
newlib/libm/math/e_exp.c | 4 ++++
newlib/libm/math/e_fmod.c | 4 ++++
newlib/libm/math/e_hypot.c | 4 ++++
newlib/libm/math/e_j0.c | 8 ++++++++
newlib/libm/math/e_j1.c | 8 ++++++++
newlib/libm/math/e_jn.c | 8 ++++++++
newlib/libm/math/e_log.c | 4 ++++
newlib/libm/math/e_log10.c | 4 ++++
newlib/libm/math/e_pow.c | 4 ++++
newlib/libm/math/e_rem_pio2.c | 4 ++++
newlib/libm/math/e_remainder.c | 4 ++++
newlib/libm/math/e_scalb.c | 4 ++++
newlib/libm/math/e_sinh.c | 4 ++++
newlib/libm/math/e_sqrt.c | 4 ++++
newlib/libm/math/ef_acos.c | 4 ++++
newlib/libm/math/ef_acosh.c | 4 ++++
newlib/libm/math/ef_asin.c | 4 ++++
newlib/libm/math/ef_atan2.c | 4 ++++
newlib/libm/math/ef_atanh.c | 4 ++++
newlib/libm/math/ef_cosh.c | 4 ++++
newlib/libm/math/ef_exp.c | 4 ++++
newlib/libm/math/ef_fmod.c | 4 ++++
newlib/libm/math/ef_hypot.c | 4 ++++
newlib/libm/math/ef_j0.c | 8 ++++++++
newlib/libm/math/ef_j1.c | 8 ++++++++
newlib/libm/math/ef_jn.c | 8 ++++++++
newlib/libm/math/ef_log.c | 4 ++++
newlib/libm/math/ef_log10.c | 4 ++++
newlib/libm/math/ef_pow.c | 4 ++++
newlib/libm/math/ef_rem_pio2.c | 4 ++++
newlib/libm/math/ef_remainder.c | 4 ++++
newlib/libm/math/ef_scalb.c | 4 ++++
newlib/libm/math/ef_sinh.c | 4 ++++
newlib/libm/math/ef_sqrt.c | 4 ++++
newlib/libm/math/el_hypot.c | 4 ++++
newlib/libm/math/er_gamma.c | 4 ++++
newlib/libm/math/er_lgamma.c | 4 ++++
newlib/libm/math/erf_gamma.c | 4 ++++
newlib/libm/math/erf_lgamma.c | 4 ++++
newlib/libm/math/w_acos.c | 6 ++----
newlib/libm/math/w_acosh.c | 7 +++----
newlib/libm/math/w_asin.c | 6 ++----
newlib/libm/math/w_atanh.c | 10 ++--------
newlib/libm/math/w_cosh.c | 8 +++-----
newlib/libm/math/w_exp.c | 6 ++----
newlib/libm/math/w_fmod.c | 6 ++----
newlib/libm/math/w_hypot.c | 6 ++----
newlib/libm/math/w_j0.c | 12 ++++--------
newlib/libm/math/w_j1.c | 12 ++++--------
newlib/libm/math/w_jn.c | 12 ++++--------
newlib/libm/math/w_log.c | 6 ++----
newlib/libm/math/w_log10.c | 6 ++----
newlib/libm/math/w_pow.c | 6 ++----
newlib/libm/math/w_remainder.c | 6 ++----
newlib/libm/math/w_scalb.c | 7 +++----
newlib/libm/math/w_sinh.c | 6 ++----
newlib/libm/math/w_sqrt.c | 6 ++----
newlib/libm/math/wf_acos.c | 6 ++----
newlib/libm/math/wf_acosh.c | 6 ++----
newlib/libm/math/wf_asin.c | 6 ++----
newlib/libm/math/wf_atanh.c | 6 ++----
newlib/libm/math/wf_cosh.c | 6 ++----
newlib/libm/math/wf_exp.c | 6 ++----
newlib/libm/math/wf_fmod.c | 6 ++----
newlib/libm/math/wf_gamma.c | 6 ++----
newlib/libm/math/wf_hypot.c | 6 ++----
newlib/libm/math/wf_j0.c | 12 ++++--------
newlib/libm/math/wf_j1.c | 12 ++++--------
newlib/libm/math/wf_jn.c | 12 ++++--------
newlib/libm/math/wf_lgamma.c | 6 ++----
newlib/libm/math/wf_log.c | 6 ++----
newlib/libm/math/wf_log10.c | 6 ++----
newlib/libm/math/wf_pow.c | 6 ++----
newlib/libm/math/wf_remainder.c | 6 ++----
newlib/libm/math/wf_scalb.c | 6 ++----
newlib/libm/math/wf_sinh.c | 6 ++----
newlib/libm/math/wf_sqrt.c | 6 ++----
newlib/libm/math/wr_gamma.c | 6 ++----
newlib/libm/math/wr_lgamma.c | 6 ++----
newlib/libm/math/wrf_gamma.c | 6 ++----
newlib/libm/math/wrf_lgamma.c | 6 ++----
87 files changed, 303 insertions(+), 197 deletions(-)

diff --git a/newlib/libm/math/e_acos.c b/newlib/libm/math/e_acos.c
index 319b1d56f..d44550008 100644
--- a/newlib/libm/math/e_acos.c
+++ b/newlib/libm/math/e_acos.c
@@ -59,6 +59,10 @@ qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_acos, acos);
+#endif
+
#ifdef __STDC__
double __ieee754_acos(double x)
#else
diff --git a/newlib/libm/math/e_acosh.c b/newlib/libm/math/e_acosh.c
index 27984eb23..08422028e 100644
--- a/newlib/libm/math/e_acosh.c
+++ b/newlib/libm/math/e_acosh.c
@@ -38,6 +38,10 @@ static double
one = 1.0,
ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_acosh, acosh);
+#endif
+
#ifdef __STDC__
double __ieee754_acosh(double x)
#else
diff --git a/newlib/libm/math/e_asin.c b/newlib/libm/math/e_asin.c
index 4b6f45e15..38c388e64 100644
--- a/newlib/libm/math/e_asin.c
+++ b/newlib/libm/math/e_asin.c
@@ -68,6 +68,10 @@ qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_asin, asin);
+#endif
+
#ifdef __STDC__
double __ieee754_asin(double x)
#else
diff --git a/newlib/libm/math/e_atan2.c b/newlib/libm/math/e_atan2.c
index 8e9650f29..7f1ce6393 100644
--- a/newlib/libm/math/e_atan2.c
+++ b/newlib/libm/math/e_atan2.c
@@ -55,6 +55,10 @@ pi_o_2 = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */
pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_atan2, atan2);
+#endif
+
#ifdef __STDC__
double __ieee754_atan2(double y, double x)
#else
diff --git a/newlib/libm/math/e_atanh.c b/newlib/libm/math/e_atanh.c
index 58ad325f9..e9c5b057c 100644
--- a/newlib/libm/math/e_atanh.c
+++ b/newlib/libm/math/e_atanh.c
@@ -46,6 +46,10 @@ static const double zero = 0.0;
static double zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_atanh, atanh);
+#endif
+
#ifdef __STDC__
double __ieee754_atanh(double x)
#else
diff --git a/newlib/libm/math/e_cosh.c b/newlib/libm/math/e_cosh.c
index a6310bd07..b185cba2e 100644
--- a/newlib/libm/math/e_cosh.c
+++ b/newlib/libm/math/e_cosh.c
@@ -42,6 +42,10 @@ static const double one = 1.0, half=0.5, huge = 1.0e300;
static double one = 1.0, half=0.5, huge = 1.0e300;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_cosh, cosh);
+#endif
+
#ifdef __STDC__
double __ieee754_cosh(double x)
#else
diff --git a/newlib/libm/math/e_exp.c b/newlib/libm/math/e_exp.c
index 81ea64dfb..9a41f4750 100644
--- a/newlib/libm/math/e_exp.c
+++ b/newlib/libm/math/e_exp.c
@@ -102,6 +102,10 @@ P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */


+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_exp, exp);
+#endif
+
#ifdef __STDC__
double __ieee754_exp(double x) /* default IEEE double exp */
#else
diff --git a/newlib/libm/math/e_fmod.c b/newlib/libm/math/e_fmod.c
index f9739eec2..17dbaae94 100644
--- a/newlib/libm/math/e_fmod.c
+++ b/newlib/libm/math/e_fmod.c
@@ -27,6 +27,10 @@ static const double one = 1.0, Zero[] = {0.0, -0.0,};
static double one = 1.0, Zero[] = {0.0, -0.0,};
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_fmod, fmod);
+#endif
+
#ifdef __STDC__
double __ieee754_fmod(double x, double y)
#else
diff --git a/newlib/libm/math/e_hypot.c b/newlib/libm/math/e_hypot.c
index 03f7f51e5..8d256ff65 100644
--- a/newlib/libm/math/e_hypot.c
+++ b/newlib/libm/math/e_hypot.c
@@ -47,6 +47,10 @@

#ifndef _DOUBLE_IS_32BITS

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_hypot, hypot);
+#endif
+
#ifdef __STDC__
double __ieee754_hypot(double x, double y)
#else
diff --git a/newlib/libm/math/e_j0.c b/newlib/libm/math/e_j0.c
index 13773cbf9..2bbfef3e5 100644
--- a/newlib/libm/math/e_j0.c
+++ b/newlib/libm/math/e_j0.c
@@ -91,6 +91,10 @@ static const double zero = 0.0;
static double zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_j0, j0);
+#endif
+
#ifdef __STDC__
double __ieee754_j0(double x)
#else
@@ -160,6 +164,10 @@ v02 = 7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */
v03 = 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */
v04 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_y0, y0);
+#endif
+
#ifdef __STDC__
double __ieee754_y0(double x)
#else
diff --git a/newlib/libm/math/e_j1.c b/newlib/libm/math/e_j1.c
index 098eb569e..afde51d33 100644
--- a/newlib/libm/math/e_j1.c
+++ b/newlib/libm/math/e_j1.c
@@ -92,6 +92,10 @@ static const double zero = 0.0;
static double zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_j1, j1);
+#endif
+
#ifdef __STDC__
double __ieee754_j1(double x)
#else
@@ -161,6 +165,10 @@ static double V0[5] = {
1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
};

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_y1, y1);
+#endif
+
#ifdef __STDC__
double __ieee754_y1(double x)
#else
diff --git a/newlib/libm/math/e_jn.c b/newlib/libm/math/e_jn.c
index 1eea27be0..80333bb92 100644
--- a/newlib/libm/math/e_jn.c
+++ b/newlib/libm/math/e_jn.c
@@ -56,6 +56,10 @@ static const double zero = 0.00000000000000000000e+00;
static double zero = 0.00000000000000000000e+00;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_jn, jn);
+#endif
+
#ifdef __STDC__
double __ieee754_jn(int n, double x)
#else
@@ -216,6 +220,10 @@ static double zero = 0.00000000000000000000e+00;
if(sgn==1) return -b; else return b;
}

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_yn, yn);
+#endif
+
#ifdef __STDC__
double __ieee754_yn(int n, double x)
#else
diff --git a/newlib/libm/math/e_log.c b/newlib/libm/math/e_log.c
index ac4a95068..8f1693533 100644
--- a/newlib/libm/math/e_log.c
+++ b/newlib/libm/math/e_log.c
@@ -89,6 +89,10 @@ static const double zero = 0.0;
static double zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_log, log);
+#endif
+
#ifdef __STDC__
double __ieee754_log(double x)
#else
diff --git a/newlib/libm/math/e_log10.c b/newlib/libm/math/e_log10.c
index f7daaa1b2..0671abb3a 100644
--- a/newlib/libm/math/e_log10.c
+++ b/newlib/libm/math/e_log10.c
@@ -64,6 +64,10 @@ static const double zero = 0.0;
static double zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_log10, log10);
+#endif
+
#ifdef __STDC__
double __ieee754_log10(double x)
#else
diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c
index 6d2a501a1..b898f3eeb 100644
--- a/newlib/libm/math/e_pow.c
+++ b/newlib/libm/math/e_pow.c
@@ -99,6 +99,10 @@ ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */
ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_pow, pow);
+#endif
+
#ifdef __STDC__
double __ieee754_pow(double x, double y)
#else
diff --git a/newlib/libm/math/e_rem_pio2.c b/newlib/libm/math/e_rem_pio2.c
index ddfecba2d..9bae56102 100644
--- a/newlib/libm/math/e_rem_pio2.c
+++ b/newlib/libm/math/e_rem_pio2.c
@@ -82,6 +82,10 @@ pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */
pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_rem_pio2, rem_pio2);
+#endif
+
#ifdef __STDC__
__int32_t __ieee754_rem_pio2(double x, double *y)
#else
diff --git a/newlib/libm/math/e_remainder.c b/newlib/libm/math/e_remainder.c
index ae7ce649a..f7c5f2d5c 100644
--- a/newlib/libm/math/e_remainder.c
+++ b/newlib/libm/math/e_remainder.c
@@ -31,6 +31,10 @@ static double zero = 0.0;
#endif


+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_remainder, remainder);
+#endif
+
#ifdef __STDC__
double __ieee754_remainder(double x, double p)
#else
diff --git a/newlib/libm/math/e_scalb.c b/newlib/libm/math/e_scalb.c
index 4d8bb8b71..cbb42f590 100644
--- a/newlib/libm/math/e_scalb.c
+++ b/newlib/libm/math/e_scalb.c
@@ -21,6 +21,10 @@

#ifndef _DOUBLE_IS_32BITS

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_scalb, scalb);
+#endif
+
#ifdef _SCALB_INT
#ifdef __STDC__
double __ieee754_scalb(double x, int fn)
diff --git a/newlib/libm/math/e_sinh.c b/newlib/libm/math/e_sinh.c
index cf7ebfb88..b4f8ba235 100644
--- a/newlib/libm/math/e_sinh.c
+++ b/newlib/libm/math/e_sinh.c
@@ -39,6 +39,10 @@ static const double one = 1.0, shuge = 1.0e307;
static double one = 1.0, shuge = 1.0e307;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_sinh, sinh);
+#endif
+
#ifdef __STDC__
double __ieee754_sinh(double x)
#else
diff --git a/newlib/libm/math/e_sqrt.c b/newlib/libm/math/e_sqrt.c
index 78fc52417..7d68312c9 100644
--- a/newlib/libm/math/e_sqrt.c
+++ b/newlib/libm/math/e_sqrt.c
@@ -91,6 +91,10 @@ static const double one = 1.0, tiny=1.0e-300;
static double one = 1.0, tiny=1.0e-300;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_sqrt, sqrt);
+#endif
+
#ifdef __STDC__
double __ieee754_sqrt(double x)
#else
diff --git a/newlib/libm/math/ef_acos.c b/newlib/libm/math/ef_acos.c
index f73f97de7..d52b9aa8e 100644
--- a/newlib/libm/math/ef_acos.c
+++ b/newlib/libm/math/ef_acos.c
@@ -35,6 +35,10 @@ qS2 = 2.0209457874e+00, /* 0x4001572d */
qS3 = -6.8828397989e-01, /* 0xbf303361 */
qS4 = 7.7038154006e-02; /* 0x3d9dc62e */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_acosf, acosf);
+#endif
+
#ifdef __STDC__
float __ieee754_acosf(float x)
#else
diff --git a/newlib/libm/math/ef_acosh.c b/newlib/libm/math/ef_acosh.c
index 1119c2c86..398aff53f 100644
--- a/newlib/libm/math/ef_acosh.c
+++ b/newlib/libm/math/ef_acosh.c
@@ -24,6 +24,10 @@ static float
one = 1.0,
ln2 = 6.9314718246e-01; /* 0x3f317218 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_acoshf, acoshf);
+#endif
+
#ifdef __STDC__
float __ieee754_acoshf(float x)
#else
diff --git a/newlib/libm/math/ef_asin.c b/newlib/libm/math/ef_asin.c
index c49dcbbca..42f8ea7c2 100644
--- a/newlib/libm/math/ef_asin.c
+++ b/newlib/libm/math/ef_asin.c
@@ -37,6 +37,10 @@ qS2 = 2.0209457874e+00, /* 0x4001572d */
qS3 = -6.8828397989e-01, /* 0xbf303361 */
qS4 = 7.7038154006e-02; /* 0x3d9dc62e */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_asinf, asinf);
+#endif
+
#ifdef __STDC__
float __ieee754_asinf(float x)
#else
diff --git a/newlib/libm/math/ef_atan2.c b/newlib/libm/math/ef_atan2.c
index d57480b03..cfc3c7c95 100644
--- a/newlib/libm/math/ef_atan2.c
+++ b/newlib/libm/math/ef_atan2.c
@@ -28,6 +28,10 @@ pi_o_2 = 1.5707963705e+00, /* 0x3fc90fdb */
pi = 3.1415927410e+00, /* 0x40490fdb */
pi_lo = -8.7422776573e-08; /* 0xb3bbbd2e */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_atan2f, atan2f);
+#endif
+
#ifdef __STDC__
float __ieee754_atan2f(float y, float x)
#else
diff --git a/newlib/libm/math/ef_atanh.c b/newlib/libm/math/ef_atanh.c
index 74b3d3d6a..d878971bb 100644
--- a/newlib/libm/math/ef_atanh.c
+++ b/newlib/libm/math/ef_atanh.c
@@ -28,6 +28,10 @@ static const float zero = 0.0;
static float zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_atanhf, atanhf);
+#endif
+
#ifdef __STDC__
float __ieee754_atanhf(float x)
#else
diff --git a/newlib/libm/math/ef_cosh.c b/newlib/libm/math/ef_cosh.c
index bdce61a00..515bdc61a 100644
--- a/newlib/libm/math/ef_cosh.c
+++ b/newlib/libm/math/ef_cosh.c
@@ -25,6 +25,10 @@ static const float one = 1.0, half=0.5, huge = 1.0e30;
static float one = 1.0, half=0.5, huge = 1.0e30;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_coshf, coshf);
+#endif
+
#ifdef __STDC__
float __ieee754_coshf(float x)
#else
diff --git a/newlib/libm/math/ef_exp.c b/newlib/libm/math/ef_exp.c
index e817370ac..46d0e24a1 100644
--- a/newlib/libm/math/ef_exp.c
+++ b/newlib/libm/math/ef_exp.c
@@ -40,6 +40,10 @@ P3 = 6.6137559770e-05, /* 0x388ab355 */
P4 = -1.6533901999e-06, /* 0xb5ddea0e */
P5 = 4.1381369442e-08; /* 0x3331bb4c */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_expf, expf);
+#endif
+
#ifdef __STDC__
float __ieee754_expf(float x) /* default IEEE double exp */
#else
diff --git a/newlib/libm/math/ef_fmod.c b/newlib/libm/math/ef_fmod.c
index 53c1ba280..deab04c51 100644
--- a/newlib/libm/math/ef_fmod.c
+++ b/newlib/libm/math/ef_fmod.c
@@ -27,6 +27,10 @@ static const float one = 1.0, Zero[] = {0.0, -0.0,};
static float one = 1.0, Zero[] = {0.0, -0.0,};
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_fmodf, fmodf);
+#endif
+
#ifdef __STDC__
float __ieee754_fmodf(float x, float y)
#else
diff --git a/newlib/libm/math/ef_hypot.c b/newlib/libm/math/ef_hypot.c
index 9368eb41c..194690ebf 100644
--- a/newlib/libm/math/ef_hypot.c
+++ b/newlib/libm/math/ef_hypot.c
@@ -15,6 +15,10 @@

#include "fdlibm.h"

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_hypotf, hypotf);
+#endif
+
#ifdef __STDC__
float __ieee754_hypotf(float x, float y)
#else
diff --git a/newlib/libm/math/ef_j0.c b/newlib/libm/math/ef_j0.c
index 866cfcf96..8883a7665 100644
--- a/newlib/libm/math/ef_j0.c
+++ b/newlib/libm/math/ef_j0.c
@@ -46,6 +46,10 @@ static const float zero = 0.0;
static float zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_j0f, j0f);
+#endif
+
#ifdef __STDC__
float __ieee754_j0f(float x)
#else
@@ -115,6 +119,10 @@ v02 = 7.6006865129e-05, /* 0x389f65e0 */
v03 = 2.5915085189e-07, /* 0x348b216c */
v04 = 4.4111031494e-10; /* 0x2ff280c2 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_y0f, y0f);
+#endif
+
#ifdef __STDC__
float __ieee754_y0f(float x)
#else
diff --git a/newlib/libm/math/ef_j1.c b/newlib/libm/math/ef_j1.c
index 01bd24cf1..2db8ac7b8 100644
--- a/newlib/libm/math/ef_j1.c
+++ b/newlib/libm/math/ef_j1.c
@@ -47,6 +47,10 @@ static const float zero = 0.0;
static float zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_j1f, j1f);
+#endif
+
#ifdef __STDC__
float __ieee754_j1f(float x)
#else
@@ -116,6 +120,10 @@ static float V0[5] = {
1.6655924903e-11, /* 0x2d9281cf */
};

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_y1f, y1f);
+#endif
+
#ifdef __STDC__
float __ieee754_y1f(float x)
#else
diff --git a/newlib/libm/math/ef_jn.c b/newlib/libm/math/ef_jn.c
index e872c09c7..8275b361e 100644
--- a/newlib/libm/math/ef_jn.c
+++ b/newlib/libm/math/ef_jn.c
@@ -29,6 +29,10 @@ static const float zero = 0.0000000000e+00;
static float zero = 0.0000000000e+00;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_jnf, jnf);
+#endif
+
#ifdef __STDC__
float __ieee754_jnf(int n, float x)
#else
@@ -166,6 +170,10 @@ static float zero = 0.0000000000e+00;
if(sgn==1) return -b; else return b;
}

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_ynf, ynf);
+#endif
+
#ifdef __STDC__
float __ieee754_ynf(int n, float x)
#else
diff --git a/newlib/libm/math/ef_log.c b/newlib/libm/math/ef_log.c
index 8dc902478..eb425f009 100644
--- a/newlib/libm/math/ef_log.c
+++ b/newlib/libm/math/ef_log.c
@@ -38,6 +38,10 @@ static const float zero = 0.0;
static float zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_logf, logf);
+#endif
+
#ifdef __STDC__
float __ieee754_logf(float x)
#else
diff --git a/newlib/libm/math/ef_log10.c b/newlib/libm/math/ef_log10.c
index 5ab23c43f..fef1bca33 100644
--- a/newlib/libm/math/ef_log10.c
+++ b/newlib/libm/math/ef_log10.c
@@ -31,6 +31,10 @@ static const float zero = 0.0;
static float zero = 0.0;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_log10f, log10f);
+#endif
+
#ifdef __STDC__
float __ieee754_log10f(float x)
#else
diff --git a/newlib/libm/math/ef_pow.c b/newlib/libm/math/ef_pow.c
index 524e3f9b0..204086791 100644
--- a/newlib/libm/math/ef_pow.c
+++ b/newlib/libm/math/ef_pow.c
@@ -57,6 +57,10 @@ ivln2 = 1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */
ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/
ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_powf, powf);
+#endif
+
#ifdef __STDC__
float __ieee754_powf(float x, float y)
#else
diff --git a/newlib/libm/math/ef_rem_pio2.c b/newlib/libm/math/ef_rem_pio2.c
index f1191d09f..16de1d025 100644
--- a/newlib/libm/math/ef_rem_pio2.c
+++ b/newlib/libm/math/ef_rem_pio2.c
@@ -95,6 +95,10 @@ pio2_2t = 6.0770999344e-11, /* 0x2e85a308 */
pio2_3 = 6.0770943833e-11, /* 0x2e85a300 */
pio2_3t = 6.1232342629e-17; /* 0x248d3132 */

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_rem_pio2f, rem_pio2f);
+#endif
+
#ifdef __STDC__
__int32_t __ieee754_rem_pio2f(float x, float *y)
#else
diff --git a/newlib/libm/math/ef_remainder.c b/newlib/libm/math/ef_remainder.c
index 23d29d05a..11aa38166 100644
--- a/newlib/libm/math/ef_remainder.c
+++ b/newlib/libm/math/ef_remainder.c
@@ -22,6 +22,10 @@ static float zero = 0.0;
#endif


+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_remainderf, remainderf);
+#endif
+
#ifdef __STDC__
float __ieee754_remainderf(float x, float p)
#else
diff --git a/newlib/libm/math/ef_scalb.c b/newlib/libm/math/ef_scalb.c
index 8d973b1e7..d727ff5a8 100644
--- a/newlib/libm/math/ef_scalb.c
+++ b/newlib/libm/math/ef_scalb.c
@@ -16,6 +16,10 @@
#include "fdlibm.h"
#include <limits.h>

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_scalbf, scalbf);
+#endif
+
#ifdef _SCALB_INT
#ifdef __STDC__
float __ieee754_scalbf(float x, int fn)
diff --git a/newlib/libm/math/ef_sinh.c b/newlib/libm/math/ef_sinh.c
index a61b17294..b19b0a7b1 100644
--- a/newlib/libm/math/ef_sinh.c
+++ b/newlib/libm/math/ef_sinh.c
@@ -15,6 +15,10 @@

#include "fdlibm.h"

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_sinhf, sinhf);
+#endif
+
#ifdef __STDC__
static const float one = 1.0, shuge = 1.0e37;
#else
diff --git a/newlib/libm/math/ef_sqrt.c b/newlib/libm/math/ef_sqrt.c
index 80e7f360e..8b9b6dc49 100644
--- a/newlib/libm/math/ef_sqrt.c
+++ b/newlib/libm/math/ef_sqrt.c
@@ -21,6 +21,10 @@ static const float one = 1.0, tiny=1.0e-30;
static float one = 1.0, tiny=1.0e-30;
#endif

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_sqrtf, sqrtf);
+#endif
+
#ifdef __STDC__
float __ieee754_sqrtf(float x)
#else
diff --git a/newlib/libm/math/el_hypot.c b/newlib/libm/math/el_hypot.c
index 737cde36b..de8899cdc 100644
--- a/newlib/libm/math/el_hypot.c
+++ b/newlib/libm/math/el_hypot.c
@@ -6,6 +6,10 @@

#include "fdlibm.h"

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_hypotl, hypotl);
+#endif
+
long double
__ieee754_hypotl (long double x, long double y)
{
diff --git a/newlib/libm/math/er_gamma.c b/newlib/libm/math/er_gamma.c
index 3c0e241e5..d88390530 100644
--- a/newlib/libm/math/er_gamma.c
+++ b/newlib/libm/math/er_gamma.c
@@ -21,6 +21,10 @@

#include "fdlibm.h"

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_gamma_r, gamma_r);
+#endif
+
#ifdef __STDC__
double __ieee754_gamma_r(double x, int *signgamp)
#else
diff --git a/newlib/libm/math/er_lgamma.c b/newlib/libm/math/er_lgamma.c
index 386a8a73b..fd4a6aaad 100644
--- a/newlib/libm/math/er_lgamma.c
+++ b/newlib/libm/math/er_lgamma.c
@@ -209,6 +209,10 @@ static double zero= 0.00000000000000000000e+00;
}


+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_lgamma_r, lgamma_r);
+#endif
+
#ifdef __STDC__
double __ieee754_lgamma_r(double x, int *signgamp)
#else
diff --git a/newlib/libm/math/erf_gamma.c b/newlib/libm/math/erf_gamma.c
index 9e529dce0..b4bfde188 100644
--- a/newlib/libm/math/erf_gamma.c
+++ b/newlib/libm/math/erf_gamma.c
@@ -23,6 +23,10 @@

#include "fdlibm.h"

+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_gammaf_r, gammaf_r);
+#endif
+
#ifdef __STDC__
float __ieee754_gammaf_r(float x, int *signgamp)
#else
diff --git a/newlib/libm/math/erf_lgamma.c b/newlib/libm/math/erf_lgamma.c
index 3c6ba02af..775b54370 100644
--- a/newlib/libm/math/erf_lgamma.c
+++ b/newlib/libm/math/erf_lgamma.c
@@ -144,6 +144,10 @@ static float zero= 0.0000000000e+00;
}


+#if defined(_IEEE_LIBM) && defined(HAVE_ALIAS_ATTRIBUTE)
+__strong_reference(__ieee754_lgammaf_r, lgammaf_r);
+#endif
+
#ifdef __STDC__
float __ieee754_lgammaf_r(float x, int *signgamp)
#else
diff --git a/newlib/libm/math/w_acos.c b/newlib/libm/math/w_acos.c
index eb3e20111..908fe4bf7 100644
--- a/newlib/libm/math/w_acos.c
+++ b/newlib/libm/math/w_acos.c
@@ -70,6 +70,7 @@ MATHREF
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifndef _DOUBLE_IS_32BITS

#ifdef __STDC__
@@ -79,9 +80,6 @@ MATHREF
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_acos(x);
-#else
double z;
struct exception exc;
z = __ieee754_acos(x);
@@ -103,7 +101,7 @@ MATHREF
return exc.retval;
} else
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
+#endif /* defined(_IEEE_LIBM) */
diff --git a/newlib/libm/math/w_acosh.c b/newlib/libm/math/w_acosh.c
index ac15bb1bd..01813ac3f 100644
--- a/newlib/libm/math/w_acosh.c
+++ b/newlib/libm/math/w_acosh.c
@@ -76,6 +76,8 @@ MATHREF
#include "fdlibm.h"
#include <errno.h>

+
+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifndef _DOUBLE_IS_32BITS

#ifdef __STDC__
@@ -85,9 +87,6 @@ MATHREF
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_acosh(x);
-#else
double z;
struct exception exc;
z = __ieee754_acosh(x);
@@ -109,7 +108,7 @@ MATHREF
return exc.retval;
} else
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
+#endif /* defined(_IEEE_LIBM) */
diff --git a/newlib/libm/math/w_asin.c b/newlib/libm/math/w_asin.c
index 9964d75b0..bbdb9ddab 100644
--- a/newlib/libm/math/w_asin.c
+++ b/newlib/libm/math/w_asin.c
@@ -76,6 +76,7 @@ MATHREF

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double asin(double x) /* wrapper asin */
#else
@@ -83,9 +84,6 @@ MATHREF
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_asin(x);
-#else
double z;
struct exception exc;
z = __ieee754_asin(x);
@@ -107,7 +105,7 @@ MATHREF
return exc.retval;
} else
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
+#endif
diff --git a/newlib/libm/math/w_atanh.c b/newlib/libm/math/w_atanh.c
index a87e23cc4..43bd1a4ce 100644
--- a/newlib/libm/math/w_atanh.c
+++ b/newlib/libm/math/w_atanh.c
@@ -74,6 +74,7 @@ QUICKREF
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifndef _DOUBLE_IS_32BITS

#ifdef __STDC__
@@ -83,9 +84,6 @@ QUICKREF
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_atanh(x);
-#else
double z,y;
struct exception exc;
z = __ieee754_atanh(x);
@@ -122,11 +120,7 @@ QUICKREF
return exc.retval;
} else
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
-
-
-
-
+#endif
diff --git a/newlib/libm/math/w_cosh.c b/newlib/libm/math/w_cosh.c
index e5b08df00..5c481cd4d 100644
--- a/newlib/libm/math/w_cosh.c
+++ b/newlib/libm/math/w_cosh.c
@@ -60,8 +60,9 @@ QUICKREF
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifndef _DOUBLE_IS_32BITS
-
+
#ifdef __STDC__
double cosh(double x) /* wrapper cosh */
#else
@@ -69,9 +70,6 @@ QUICKREF
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_cosh(x);
-#else
double z;
struct exception exc;
z = __ieee754_cosh(x);
@@ -102,7 +100,7 @@ QUICKREF
return exc.retval;
} else
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
+#endif
diff --git a/newlib/libm/math/w_exp.c b/newlib/libm/math/w_exp.c
index 0c4467712..bfdc96c73 100644
--- a/newlib/libm/math/w_exp.c
+++ b/newlib/libm/math/w_exp.c
@@ -58,6 +58,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
static const double
#else
@@ -73,9 +74,6 @@ u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_exp(x);
-#else
double z;
struct exception exc;
z = __ieee754_exp(x);
@@ -123,8 +121,8 @@ u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */
}
}
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
+#endif
#endif /* __OBSOLETE_MATH */
diff --git a/newlib/libm/math/w_fmod.c b/newlib/libm/math/w_fmod.c
index df11dc34c..7a8b416c6 100644
--- a/newlib/libm/math/w_fmod.c
+++ b/newlib/libm/math/w_fmod.c
@@ -58,6 +58,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double fmod(double x, double y) /* wrapper fmod */
#else
@@ -65,9 +66,6 @@ PORTABILITY
double x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_fmod(x,y);
-#else
double z;
struct exception exc;
z = __ieee754_fmod(x,y);
@@ -93,7 +91,7 @@ PORTABILITY
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_hypot.c b/newlib/libm/math/w_hypot.c
index 533702277..47831192b 100644
--- a/newlib/libm/math/w_hypot.c
+++ b/newlib/libm/math/w_hypot.c
@@ -55,6 +55,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double hypot(double x, double y)/* wrapper hypot */
#else
@@ -62,9 +63,6 @@ PORTABILITY
double x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_hypot(x,y);
-#else
double z;
struct exception exc;
z = __ieee754_hypot(x,y);
@@ -96,7 +94,7 @@ PORTABILITY
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_j0.c b/newlib/libm/math/w_j0.c
index ab05dbdeb..6b1288c4c 100644
--- a/newlib/libm/math/w_j0.c
+++ b/newlib/libm/math/w_j0.c
@@ -94,6 +94,7 @@ None of the Bessel functions are in ANSI C.

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double j0(double x) /* wrapper j0 */
#else
@@ -101,9 +102,6 @@ None of the Bessel functions are in ANSI C.
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_j0(x);
-#else
struct exception exc;
double z = __ieee754_j0(x);
if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
@@ -124,9 +122,10 @@ None of the Bessel functions are in ANSI C.
return exc.retval;
} else
return z;
-#endif
}
+#endif

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double y0(double x) /* wrapper y0 */
#else
@@ -134,9 +133,6 @@ None of the Bessel functions are in ANSI C.
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_y0(x);
-#else
double z;
struct exception exc;
z = __ieee754_y0(x);
@@ -183,8 +179,8 @@ None of the Bessel functions are in ANSI C.
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */

diff --git a/newlib/libm/math/w_j1.c b/newlib/libm/math/w_j1.c
index ba7df1566..23c289963 100644
--- a/newlib/libm/math/w_j1.c
+++ b/newlib/libm/math/w_j1.c
@@ -20,6 +20,7 @@

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double j1(double x) /* wrapper j1 */
#else
@@ -27,9 +28,6 @@
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_j1(x);
-#else
double z;
struct exception exc;
z = __ieee754_j1(x);
@@ -51,9 +49,10 @@
return exc.retval;
} else
return z;
-#endif
}
+#endif

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double y1(double x) /* wrapper y1 */
#else
@@ -61,9 +60,6 @@
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_y1(x);
-#else
double z;
struct exception exc;
z = __ieee754_y1(x);
@@ -110,8 +106,8 @@
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */

diff --git a/newlib/libm/math/w_jn.c b/newlib/libm/math/w_jn.c
index 6cadc9a01..f8d072bd6 100644
--- a/newlib/libm/math/w_jn.c
+++ b/newlib/libm/math/w_jn.c
@@ -42,6 +42,7 @@

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double jn(int n, double x) /* wrapper jn */
#else
@@ -49,9 +50,6 @@
double x; int n;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_jn(n,x);
-#else
double z;
struct exception exc;
z = __ieee754_jn(n,x);
@@ -74,9 +72,10 @@
return exc.retval;
} else
return z;
-#endif
}
+#endif

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double yn(int n, double x) /* wrapper yn */
#else
@@ -84,9 +83,6 @@
double x; int n;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_yn(n,x);
-#else
double z;
struct exception exc;
z = __ieee754_yn(n,x);
@@ -135,7 +131,7 @@
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_log.c b/newlib/libm/math/w_log.c
index 5f66d26ad..088dd2129 100644
--- a/newlib/libm/math/w_log.c
+++ b/newlib/libm/math/w_log.c
@@ -54,6 +54,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double log(double x) /* wrapper log */
#else
@@ -61,9 +62,6 @@ PORTABILITY
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_log(x);
-#else
double z;
struct exception exc;
z = __ieee754_log(x);
@@ -103,8 +101,8 @@ PORTABILITY
if (exc.err != 0)
errno = exc.err;
return exc.retval;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
#endif /* __OBSOLETE_MATH */
diff --git a/newlib/libm/math/w_log10.c b/newlib/libm/math/w_log10.c
index 3b436d539..baa33cb55 100644
--- a/newlib/libm/math/w_log10.c
+++ b/newlib/libm/math/w_log10.c
@@ -50,6 +50,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double log10(double x) /* wrapper log10 */
#else
@@ -57,9 +58,6 @@ PORTABILITY
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_log10(x);
-#else
double z;
struct exception exc;
z = __ieee754_log10(x);
@@ -102,7 +100,7 @@ PORTABILITY
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_pow.c b/newlib/libm/math/w_pow.c
index 9d1e396a5..6252fab7c 100644
--- a/newlib/libm/math/w_pow.c
+++ b/newlib/libm/math/w_pow.c
@@ -57,6 +57,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double pow(double x, double y) /* wrapper pow */
#else
@@ -64,9 +65,6 @@ PORTABILITY
double x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_pow(x,y);
-#else
double z;
#ifndef HUGE_VAL
#define HUGE_VAL inf
@@ -204,8 +202,8 @@ PORTABILITY
return exc.retval;
}
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
#endif /* __OBSOLETE_MATH */
diff --git a/newlib/libm/math/w_remainder.c b/newlib/libm/math/w_remainder.c
index 5b13390f9..9a7f901e4 100644
--- a/newlib/libm/math/w_remainder.c
+++ b/newlib/libm/math/w_remainder.c
@@ -46,6 +46,7 @@ PORTABILITY

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double remainder(double x, double y) /* wrapper remainder */
#else
@@ -53,9 +54,6 @@ PORTABILITY
double x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_remainder(x,y);
-#else
double z;
struct exception exc;
z = __ieee754_remainder(x,y);
@@ -78,8 +76,8 @@ PORTABILITY
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */

diff --git a/newlib/libm/math/w_scalb.c b/newlib/libm/math/w_scalb.c
index c32496892..9a75ba30a 100644
--- a/newlib/libm/math/w_scalb.c
+++ b/newlib/libm/math/w_scalb.c
@@ -22,6 +22,8 @@

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
+
#ifdef __STDC__
#ifdef _SCALB_INT
double scalb(double x, int fn) /* wrapper scalb */
@@ -37,9 +39,6 @@
#endif
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_scalb(x,fn);
-#else
double z;
#ifndef HUGE_VAL
#define HUGE_VAL inf
@@ -88,7 +87,7 @@
if(!finite(fn)) errno = ERANGE;
#endif
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_sinh.c b/newlib/libm/math/w_sinh.c
index 340a7112d..c878adcaf 100644
--- a/newlib/libm/math/w_sinh.c
+++ b/newlib/libm/math/w_sinh.c
@@ -66,6 +66,7 @@ QUICKREF

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double sinh(double x) /* wrapper sinh */
#else
@@ -73,9 +74,6 @@ QUICKREF
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_sinh(x);
-#else
double z;
struct exception exc;
z = __ieee754_sinh(x);
@@ -106,7 +104,7 @@ QUICKREF
return exc.retval;
} else
return z;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_sqrt.c b/newlib/libm/math/w_sqrt.c
index 61d42fcec..f2e33daa8 100644
--- a/newlib/libm/math/w_sqrt.c
+++ b/newlib/libm/math/w_sqrt.c
@@ -47,6 +47,7 @@ PORTABILITY
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifndef _DOUBLE_IS_32BITS

#ifdef __STDC__
@@ -56,9 +57,6 @@ PORTABILITY
double x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_sqrt(x);
-#else
struct exception exc;
double z;
z = __ieee754_sqrt(x);
@@ -82,7 +80,7 @@ PORTABILITY
return exc.retval;
} else
return z;
-#endif
}

#endif /* defined(_DOUBLE_IS_32BITS) */
+#endif /* defined(_IEEE_LIBM) */
diff --git a/newlib/libm/math/wf_acos.c b/newlib/libm/math/wf_acos.c
index 8154c795e..cc631f2a4 100644
--- a/newlib/libm/math/wf_acos.c
+++ b/newlib/libm/math/wf_acos.c
@@ -20,11 +20,9 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
float acosf(float x) /* wrapper acosf */
{
-#ifdef _IEEE_LIBM
- return __ieee754_acosf(x);
-#else
float z;
struct exception exc;
z = __ieee754_acosf(x);
@@ -46,8 +44,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_acosh.c b/newlib/libm/math/wf_acosh.c
index fc8ec3a0a..e8686b513 100644
--- a/newlib/libm/math/wf_acosh.c
+++ b/newlib/libm/math/wf_acosh.c
@@ -21,6 +21,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float acoshf(float x) /* wrapper acoshf */
#else
@@ -28,9 +29,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_acoshf(x);
-#else
float z;
struct exception exc;
z = __ieee754_acoshf(x);
@@ -52,8 +50,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_asin.c b/newlib/libm/math/wf_asin.c
index 385de5499..282702a4a 100644
--- a/newlib/libm/math/wf_asin.c
+++ b/newlib/libm/math/wf_asin.c
@@ -22,6 +22,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float asinf(float x) /* wrapper asinf */
#else
@@ -29,9 +30,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_asinf(x);
-#else
float z;
struct exception exc;
z = __ieee754_asinf(x);
@@ -53,8 +51,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_atanh.c b/newlib/libm/math/wf_atanh.c
index 565630411..dc5abdc72 100644
--- a/newlib/libm/math/wf_atanh.c
+++ b/newlib/libm/math/wf_atanh.c
@@ -19,6 +19,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float atanhf(float x) /* wrapper atanhf */
#else
@@ -26,9 +27,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_atanhf(x);
-#else
float z,y;
struct exception exc;
z = __ieee754_atanhf(x);
@@ -65,8 +63,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_cosh.c b/newlib/libm/math/wf_cosh.c
index 02eb12472..73ef0214a 100644
--- a/newlib/libm/math/wf_cosh.c
+++ b/newlib/libm/math/wf_cosh.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float coshf(float x) /* wrapper coshf */
#else
@@ -27,9 +28,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_coshf(x);
-#else
float z;
struct exception exc;
z = __ieee754_coshf(x);
@@ -60,8 +58,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_exp.c b/newlib/libm/math/wf_exp.c
index f16af1d1b..21199a88d 100644
--- a/newlib/libm/math/wf_exp.c
+++ b/newlib/libm/math/wf_exp.c
@@ -21,6 +21,7 @@
#if __OBSOLETE_MATH
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
static const float
#else
@@ -36,9 +37,6 @@ u_threshold= -1.0397208405e+02; /* 0xc2cff1b5 */
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_expf(x);
-#else
float z;
struct exception exc;
z = __ieee754_expf(x);
@@ -86,8 +84,8 @@ u_threshold= -1.0397208405e+02; /* 0xc2cff1b5 */
}
}
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_fmod.c b/newlib/libm/math/wf_fmod.c
index 030ca3e7a..d471ccb61 100644
--- a/newlib/libm/math/wf_fmod.c
+++ b/newlib/libm/math/wf_fmod.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float fmodf(float x, float y) /* wrapper fmodf */
#else
@@ -27,9 +28,6 @@
float x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_fmodf(x,y);
-#else
float z;
struct exception exc;
z = __ieee754_fmodf(x,y);
@@ -55,8 +53,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_gamma.c b/newlib/libm/math/wf_gamma.c
index 1204f3999..5d066814a 100644
--- a/newlib/libm/math/wf_gamma.c
+++ b/newlib/libm/math/wf_gamma.c
@@ -18,6 +18,7 @@
#include <reent.h>
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float gammaf(float x)
#else
@@ -25,9 +26,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_gammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
-#else
float y;
struct exception exc;
y = __ieee754_gammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
@@ -75,8 +73,8 @@
return (float)exc.retval;
} else
return y;
+}
#endif
-}

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_hypot.c b/newlib/libm/math/wf_hypot.c
index c04ace110..4869394a2 100644
--- a/newlib/libm/math/wf_hypot.c
+++ b/newlib/libm/math/wf_hypot.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float hypotf(float x, float y) /* wrapper hypotf */
#else
@@ -27,9 +28,6 @@
float x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_hypotf(x,y);
-#else
float z;
struct exception exc;
z = __ieee754_hypotf(x,y);
@@ -61,8 +59,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_j0.c b/newlib/libm/math/wf_j0.c
index 1f7f5ede5..8940b90f4 100644
--- a/newlib/libm/math/wf_j0.c
+++ b/newlib/libm/math/wf_j0.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float j0f(float x) /* wrapper j0f */
#else
@@ -27,9 +28,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_j0f(x);
-#else
struct exception exc;
float z = __ieee754_j0f(x);
if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
@@ -50,9 +48,10 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float y0f(float x) /* wrapper y0f */
#else
@@ -60,9 +59,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_y0f(x);
-#else
float z;
struct exception exc;
z = __ieee754_y0f(x);
@@ -109,8 +105,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_j1.c b/newlib/libm/math/wf_j1.c
index b91962881..b33502619 100644
--- a/newlib/libm/math/wf_j1.c
+++ b/newlib/libm/math/wf_j1.c
@@ -21,6 +21,7 @@
#include <errno.h>


+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float j1f(float x) /* wrapper j1f */
#else
@@ -28,9 +29,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_j1f(x);
-#else
float z;
struct exception exc;
z = __ieee754_j1f(x);
@@ -52,9 +50,10 @@
return exc.retval;
} else
return z;
-#endif
}
+#endif

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float y1f(float x) /* wrapper y1f */
#else
@@ -62,9 +61,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_y1f(x);
-#else
float z;
struct exception exc;
z = __ieee754_y1f(x);
@@ -111,8 +107,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_jn.c b/newlib/libm/math/wf_jn.c
index 837b6b703..8a3325af7 100644
--- a/newlib/libm/math/wf_jn.c
+++ b/newlib/libm/math/wf_jn.c
@@ -17,6 +17,7 @@
#include <errno.h>


+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float jnf(int n, float x) /* wrapper jnf */
#else
@@ -24,9 +25,6 @@
float x; int n;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_jnf(n,x);
-#else
float z;
struct exception exc;
z = __ieee754_jnf(n,x);
@@ -49,9 +47,10 @@
return exc.retval;
} else
return z;
-#endif
}
+#endif

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float ynf(int n, float x) /* wrapper ynf */
#else
@@ -59,9 +58,6 @@
float x; int n;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_ynf(n,x);
-#else
float z;
struct exception exc;
z = __ieee754_ynf(n,x);
@@ -110,8 +106,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_lgamma.c b/newlib/libm/math/wf_lgamma.c
index f1bf0c019..c944b3a11 100644
--- a/newlib/libm/math/wf_lgamma.c
+++ b/newlib/libm/math/wf_lgamma.c
@@ -18,6 +18,7 @@
#include <reent.h>
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float lgammaf(float x)
#else
@@ -25,9 +26,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_lgammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
-#else
float y;
struct exception exc;
y = __ieee754_lgammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
@@ -69,8 +67,8 @@
return (float)exc.retval;
} else
return y;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_log.c b/newlib/libm/math/wf_log.c
index 07be8d63c..d8fd7f993 100644
--- a/newlib/libm/math/wf_log.c
+++ b/newlib/libm/math/wf_log.c
@@ -21,6 +21,7 @@
#if __OBSOLETE_MATH
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float logf(float x) /* wrapper logf */
#else
@@ -28,9 +29,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_logf(x);
-#else
float z;
struct exception exc;
z = __ieee754_logf(x);
@@ -69,8 +67,8 @@
if (exc.err != 0)
errno = exc.err;
return (float)exc.retval;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_log10.c b/newlib/libm/math/wf_log10.c
index 11c595637..51ab4aa34 100644
--- a/newlib/libm/math/wf_log10.c
+++ b/newlib/libm/math/wf_log10.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float log10f(float x) /* wrapper log10f */
#else
@@ -27,9 +28,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_log10f(x);
-#else
float z;
struct exception exc;
z = __ieee754_log10f(x);
@@ -71,8 +69,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_pow.c b/newlib/libm/math/wf_pow.c
index f753b5226..c17981643 100644
--- a/newlib/libm/math/wf_pow.c
+++ b/newlib/libm/math/wf_pow.c
@@ -21,6 +21,7 @@
#if __OBSOLETE_MATH
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float powf(float x, float y) /* wrapper powf */
#else
@@ -28,9 +29,6 @@
float x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_powf(x,y);
-#else
float z;
struct exception exc;
z=__ieee754_powf(x,y);
@@ -164,8 +162,8 @@
return (float)exc.retval;
}
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_remainder.c b/newlib/libm/math/wf_remainder.c
index f38c23785..3adf8f3be 100644
--- a/newlib/libm/math/wf_remainder.c
+++ b/newlib/libm/math/wf_remainder.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float remainderf(float x, float y) /* wrapper remainder */
#else
@@ -27,9 +28,6 @@
float x,y;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_remainderf(x,y);
-#else
float z;
struct exception exc;
z = __ieee754_remainderf(x,y);
@@ -52,8 +50,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_scalb.c b/newlib/libm/math/wf_scalb.c
index d2c3cd2aa..7ef24567a 100644
--- a/newlib/libm/math/wf_scalb.c
+++ b/newlib/libm/math/wf_scalb.c
@@ -22,6 +22,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
#ifdef _SCALB_INT
float scalbf(float x, int fn) /* wrapper scalbf */
@@ -37,9 +38,6 @@
#endif
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_scalbf(x,fn);
-#else
float z;
#ifndef HUGE_VAL
#define HUGE_VAL inf
@@ -88,8 +86,8 @@
if(!finitef(fn)) errno = ERANGE;
#endif
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_sinh.c b/newlib/libm/math/wf_sinh.c
index 80c7a8e6e..3671e7bb4 100644
--- a/newlib/libm/math/wf_sinh.c
+++ b/newlib/libm/math/wf_sinh.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float sinhf(float x) /* wrapper sinhf */
#else
@@ -27,9 +28,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_sinhf(x);
-#else
float z;
struct exception exc;
z = __ieee754_sinhf(x);
@@ -60,8 +58,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wf_sqrt.c b/newlib/libm/math/wf_sqrt.c
index 4536ba0ac..56ed008aa 100644
--- a/newlib/libm/math/wf_sqrt.c
+++ b/newlib/libm/math/wf_sqrt.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float sqrtf(float x) /* wrapper sqrtf */
#else
@@ -27,9 +28,6 @@
float x;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_sqrtf(x);
-#else
float z;
struct exception exc;
z = __ieee754_sqrtf(x);
@@ -54,8 +52,8 @@
return (float)exc.retval;
} else
return z;
-#endif
}
+#endif

#ifdef _DOUBLE_IS_32BITS

diff --git a/newlib/libm/math/wr_gamma.c b/newlib/libm/math/wr_gamma.c
index 0092ed02c..0e4a27da1 100644
--- a/newlib/libm/math/wr_gamma.c
+++ b/newlib/libm/math/wr_gamma.c
@@ -20,6 +20,7 @@

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double gamma_r(double x, int *signgamp) /* wrapper lgamma_r */
#else
@@ -27,9 +28,6 @@
double x; int *signgamp;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_gamma_r(x,signgamp);
-#else
double y;
struct exception exc;
y = __ieee754_gamma_r(x,signgamp);
@@ -70,7 +68,7 @@
return exc.retval;
} else
return y;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/wr_lgamma.c b/newlib/libm/math/wr_lgamma.c
index c59c1cce9..e3b18d078 100644
--- a/newlib/libm/math/wr_lgamma.c
+++ b/newlib/libm/math/wr_lgamma.c
@@ -20,6 +20,7 @@

#ifndef _DOUBLE_IS_32BITS

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
double lgamma_r(double x, int *signgamp) /* wrapper lgamma_r */
#else
@@ -27,9 +28,6 @@
double x; int *signgamp;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_lgamma_r(x,signgamp);
-#else
double y;
struct exception exc;
y = __ieee754_lgamma_r(x,signgamp);
@@ -71,7 +69,7 @@
return exc.retval;
} else
return y;
-#endif
}
+#endif

#endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/wrf_gamma.c b/newlib/libm/math/wrf_gamma.c
index ae285f564..c47bf5c0d 100644
--- a/newlib/libm/math/wrf_gamma.c
+++ b/newlib/libm/math/wrf_gamma.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float gammaf_r(float x, int *signgamp) /* wrapper lgammaf_r */
#else
@@ -27,9 +28,6 @@
float x; int *signgamp;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_gammaf_r(x,signgamp);
-#else
float y;
struct exception exc;
y = __ieee754_gammaf_r(x,signgamp);
@@ -70,5 +68,5 @@
return (float)exc.retval;
} else
return y;
-#endif
}
+#endif
diff --git a/newlib/libm/math/wrf_lgamma.c b/newlib/libm/math/wrf_lgamma.c
index 73985e271..6bbecc4a4 100644
--- a/newlib/libm/math/wrf_lgamma.c
+++ b/newlib/libm/math/wrf_lgamma.c
@@ -20,6 +20,7 @@
#include "fdlibm.h"
#include <errno.h>

+#if !defined(_IEEE_LIBM) || !defined(HAVE_ALIAS_ATTRIBUTE)
#ifdef __STDC__
float lgammaf_r(float x, int *signgamp) /* wrapper lgammaf_r */
#else
@@ -27,9 +28,6 @@
float x; int *signgamp;
#endif
{
-#ifdef _IEEE_LIBM
- return __ieee754_lgammaf_r(x,signgamp);
-#else
float y;
struct exception exc;
y = __ieee754_lgammaf_r(x,signgamp);
@@ -71,5 +69,5 @@
return (float)exc.retval;
} else
return y;
-#endif
}
+#endif
--
2.19.0
Loading...