This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[RFC][PATCH] check-localplt failure associated with IBM long double 128 and PowerPC
- From: "Ryan S. Arnold" <rsa at us dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com
- Date: Wed, 20 Feb 2008 16:13:17 -0600
- Subject: [RFC][PATCH] check-localplt failure associated with IBM long double 128 and PowerPC
- Reply-to: rsa at us dot ibm dot com
The following patch is a first pass at fixing the check-localplt make
check errors associated with PowerPC and IBM long double.
Some of the IBM long double related check-localplt failures have
tendrils into libc/sysdeps/ieee754/ldb-128/ that required fixing.
The reason that this is an [RFC] is that I'm not sure what to do about
the requirements I added into libc/include/fenv.h in order to make libm
local calls invoke hidden symbols, namely:
libm_hidden_proto (fegetexcept)
libm_hidden_proto (fetestexcept)
libm_hidden_proto (__fe_nomask_env)
On non-PowerPC systems the libm_hidden_proto for fegetexcept and
fetestexcept are simply an added internal symbol that isn't used.
On PowerPC they're required because the PowerPC fe functions use these
functions inside of libm.
The real problem is with __fe_nomask_env(). This is a PowerPC only
function defined in sysdeps/powerpc/bits/fenv.h that is unfortunately
used within other PowerPC libm functions.
My experiments indicated that the libm_hidden_proto had to be in
libc/include/fenv.h so that the libm internal functions invoking
__fe_nomask_env (et al) pick up the hidden symbol prototype and not the
external PLT reference.
Perhaps there's an architecture specific way this can be resolved. Any
ideas?
Ryan S. Arnold
IBM Linux Technology Center
Linux Toolchain Development
2008-02-20 Ryan S. Arnold <rsa@us.ibm.com>
* include/fenv.h (fegetexcept, fetestexcept, __fe_nomask_env): Add
libm_hidden_proto.
* include/math.h (__signbitl): Add hidden_proto.
* math/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* math/ftestexcept.c (fetestexcept): Add libm_hidden_def.
* math/s_significandl.c (__significandl): Change ilogb() to
__ilogb().
* scripts/data/localplt-powerpc64-linux-gnu.data: New file.
* sysdeps/alpha/fpu/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* sysdeps/alpha/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def.
* sysdeps/i386/fpu/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* sysdeps/i386/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def.
* sysdeps/ia64/fpu/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* sysdeps/ia64/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def.
* sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l __ieee754_y0l):
Change finitel() to __finitel(). Change cosl(), sinl(), and sqrtl()
to __cosl(), __sinl(), and __sqrtl() respectively for both functions.
* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l __ieee754_y1l):
Change finitel() to __finitel(). Change cosl(), sinl(), and sqrtl()
to __cosl(), __sinl(), and __sqrtl() respectively for both functions.
* sysdeps/ieee754/ldbl-128/s_expm1l.c (__expm1l): Change ldexpl() to
__ldexpl().
* sysdeps/ieee754/ldbl-128/s_log1pl.c: Change forward declaration
prototypes frexpl() and ldexpl() to __frexpl() and ldexpl()
respectivley.
(__log1pl): Change frexpl() to __frexpl().
* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Change
roundl() to __roundl().
* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Change ldexpl()
to __ldexpl().
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c: Change forward declaration
prototypes frexpl() and ldexpl() to __frexpl() and ldexpl()
respectivley.
(__log1pl): Change frexpl() to __frexpl().
* sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c (__nearbyintl): Change
nextafter() to __nextafter().
* sysdeps/ieee754/ldbl-128ibm/s_signbitl.c (__signbitl): Add
hidden_ver.
* sysdeps/powerpc/fpu/fe_nomask.c (__fe_nomask_env): Add
libm_hidden_def.
* sysdeps/powerpc/fpu/fegetexcept.c (fegetexcept): Add
libm_hidden_def.
* sysdeps/powerpc/fpu/ftestexcept.c (fetestexcept): Add
libm_hidden_def.
* sysdeps/s390/fpu/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* sysdeps/s390/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def.
* sysdeps/sh/sh4/fpu/ftestexcept.c (fetestexcept): Add
libm_hidden_def.
* sysdeps/sparc/fpu/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* sysdeps/sparc/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
(__fe_nomask_env): Add libm_hidden_def.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c:
(__fe_nomask_env): Add libm_hidden_def.
* sysdeps/x86_64/fpu/fegetexcept.c (fegetexcept): Add libm_hidden_def.
* sysdeps/x86_64/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def.
diff -uNr libc/include/fenv.h libc-patched/include/fenv.h
--- libc/include/fenv.h 2005-07-08 13:45:36.000000000 -0500
+++ libc-patched/include/fenv.h 2008-02-19 13:15:01.000000000 -0600
@@ -15,5 +15,8 @@
libm_hidden_proto (fesetenv)
libm_hidden_proto (fesetround)
libm_hidden_proto (feholdexcept)
+libm_hidden_proto (fegetexcept)
+libm_hidden_proto (fetestexcept)
+libm_hidden_proto (__fe_nomask_env)
#endif
diff -uNr libc/include/math.h libc-patched/include/math.h
--- libc/include/math.h 2002-09-09 19:41:44.000000000 -0500
+++ libc-patched/include/math.h 2008-02-19 13:15:01.000000000 -0600
@@ -17,6 +17,7 @@
hidden_proto (__finitel)
hidden_proto (__isinfl)
hidden_proto (__isnanl)
+hidden_proto (__signbitl)
# endif
# endif
diff -uNr libc/math/fegetexcept.c libc-patched/math/fegetexcept.c
--- libc/math/fegetexcept.c 2005-12-14 02:52:22.000000000 -0600
+++ libc-patched/math/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -26,5 +26,6 @@
/* Signal failure. */
return -1;
}
+libm_hidden_def (fegetexcept)
stub_warning (fegetexcept)
#include <stub-tag.h>
diff -uNr libc/math/ftestexcept.c libc-patched/math/ftestexcept.c
--- libc/math/ftestexcept.c 2005-12-14 02:59:46.000000000 -0600
+++ libc-patched/math/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -25,5 +25,6 @@
{
return 0;
}
+libm_hidden_def(fetestexcept)
stub_warning (fetestexcept)
#include <stub-tag.h>
diff -uNr libc/math/s_significandl.c libc-patched/math/s_significandl.c
--- libc/math/s_significandl.c 2005-12-14 04:35:24.000000000 -0600
+++ libc-patched/math/s_significandl.c 2008-02-19 13:15:01.000000000 -0600
@@ -34,6 +34,6 @@
long double x;
#endif
{
- return __ieee754_scalbl(x,(long double) -ilogbl(x));
+ return __ieee754_scalbl(x,(long double) -__ilogbl(x));
}
weak_alias (__significandl, significandl)
diff -uNr libc/scripts/data/localplt-powerpc64-linux-gnu.data libc-patched/scripts/data/localplt-powerpc64-linux-gnu.data
--- libc/scripts/data/localplt-powerpc64-linux-gnu.data 1969-12-31 18:00:00.000000000 -0600
+++ libc-patched/scripts/data/localplt-powerpc64-linux-gnu.data 2008-02-19 16:03:23.000000000 -0600
@@ -0,0 +1,6 @@
+libc.so: calloc
+libc.so: free
+libc.so: malloc
+libc.so: memalign
+libc.so: realloc
+libm.so: matherr
diff -uNr libc/sysdeps/alpha/fpu/fegetexcept.c libc-patched/sysdeps/alpha/fpu/fegetexcept.c
--- libc/sysdeps/alpha/fpu/fegetexcept.c 2001-07-05 23:55:47.000000000 -0500
+++ libc-patched/sysdeps/alpha/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -29,3 +29,4 @@
return (exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/alpha/fpu/ftestexcept.c libc-patched/sysdeps/alpha/fpu/ftestexcept.c
--- libc/sysdeps/alpha/fpu/ftestexcept.c 2001-07-05 23:55:47.000000000 -0500
+++ libc-patched/sysdeps/alpha/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,3 +30,4 @@
return tmp & excepts & SWCR_STATUS_MASK;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/i386/fpu/fegetexcept.c libc-patched/sysdeps/i386/fpu/fegetexcept.c
--- libc/sysdeps/i386/fpu/fegetexcept.c 2001-07-05 23:55:53.000000000 -0500
+++ libc-patched/sysdeps/i386/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,3 +30,4 @@
return (~exc) & FE_ALL_EXCEPT;
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/i386/fpu/ftestexcept.c libc-patched/sysdeps/i386/fpu/ftestexcept.c
--- libc/sysdeps/i386/fpu/ftestexcept.c 2008-01-22 12:36:15.000000000 -0600
+++ libc-patched/sysdeps/i386/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -38,3 +38,4 @@
return (temp | xtemp) & excepts & FE_ALL_EXCEPT;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/ia64/fpu/fegetexcept.c libc-patched/sysdeps/ia64/fpu/fegetexcept.c
--- libc/sysdeps/ia64/fpu/fegetexcept.c 2001-07-05 23:55:54.000000000 -0500
+++ libc-patched/sysdeps/ia64/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -29,3 +29,4 @@
return (fpsr ^ FE_ALL_EXCEPT) & FE_ALL_EXCEPT;
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/ia64/fpu/ftestexcept.c libc-patched/sysdeps/ia64/fpu/ftestexcept.c
--- libc/sysdeps/ia64/fpu/ftestexcept.c 2001-07-05 23:55:54.000000000 -0500
+++ libc-patched/sysdeps/ia64/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,3 +30,4 @@
return (fpsr >> 13) & excepts & FE_ALL_EXCEPT;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/ieee754/ldbl-128/e_j0l.c libc-patched/sysdeps/ieee754/ldbl-128/e_j0l.c
--- libc/sysdeps/ieee754/ldbl-128/e_j0l.c 2003-12-28 14:50:20.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128/e_j0l.c 2008-02-19 13:15:01.000000000 -0600
@@ -679,7 +679,7 @@
{
long double xx, xinv, z, p, q, c, s, cc, ss;
- if (! finitel (x))
+ if (! __finitel (x))
{
if (x != x)
return x;
@@ -768,16 +768,16 @@
= 1/sqrt(2) * (sin(x) - cos(x))
sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
cf. Fdlibm. */
- c = cosl (xx);
- s = sinl (xx);
+ c = __cosl (xx);
+ s = __sinl (xx);
ss = s - c;
cc = s + c;
- z = -cosl (xx + xx);
+ z = -__cosl (xx + xx);
if ((s * c) < 0)
cc = z / ss;
else
ss = z / cc;
- z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
+ z = ONEOSQPI * (p * cc - q * ss) / __sqrtl (xx);
return z;
}
@@ -817,7 +817,7 @@
{
long double xx, xinv, z, p, q, c, s, cc, ss;
- if (! finitel (x))
+ if (! __finitel (x))
{
if (x != x)
return x;
@@ -836,7 +836,7 @@
/* 0 <= x <= 2 */
z = xx * xx;
p = neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
- p = TWOOPI * logl(x) * __ieee754_j0l(x) + p;
+ p = TWOOPI * __logl(x) * __ieee754_j0l(x) + p;
return p;
}
@@ -908,15 +908,15 @@
= 1/sqrt(2) * (sin(x) - cos(x))
sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
cf. Fdlibm. */
- c = cosl (x);
- s = sinl (x);
+ c = __cosl (x);
+ s = __sinl (x);
ss = s - c;
cc = s + c;
- z = -cosl (x + x);
+ z = -__cosl (x + x);
if ((s * c) < 0)
cc = z / ss;
else
ss = z / cc;
- z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
+ z = ONEOSQPI * (p * ss + q * cc) / __sqrtl (x);
return z;
}
diff -uNr libc/sysdeps/ieee754/ldbl-128/e_j1l.c libc-patched/sysdeps/ieee754/ldbl-128/e_j1l.c
--- libc/sysdeps/ieee754/ldbl-128/e_j1l.c 2003-12-28 14:50:20.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128/e_j1l.c 2008-02-19 13:15:01.000000000 -0600
@@ -685,7 +685,7 @@
{
long double xx, xinv, z, p, q, c, s, cc, ss;
- if (! finitel (x))
+ if (! __finitel (x))
{
if (x != x)
return x;
@@ -773,16 +773,16 @@
sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4)
= -1/sqrt(2) * (sin(x) + cos(x))
cf. Fdlibm. */
- c = cosl (xx);
- s = sinl (xx);
+ c = __cosl (xx);
+ s = __sinl (xx);
ss = -s - c;
cc = s - c;
- z = cosl (xx + xx);
+ z = __cosl (xx + xx);
if ((s * c) > 0)
cc = z / ss;
else
ss = z / cc;
- z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
+ z = ONEOSQPI * (p * cc - q * ss) / __sqrtl (xx);
if (x < 0)
z = -z;
return z;
@@ -824,7 +824,7 @@
{
long double xx, xinv, z, p, q, c, s, cc, ss;
- if (! finitel (x))
+ if (! __finitel (x))
{
if (x != x)
return x;
@@ -844,7 +844,7 @@
z = xx * xx;
p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
p = -TWOOPI / xx + p;
- p = TWOOPI * logl(x) * __ieee754_j1l (x) + p;
+ p = TWOOPI * __logl(x) * __ieee754_j1l (x) + p;
return p;
}
@@ -915,15 +915,15 @@
sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4)
= -1/sqrt(2) * (sin(x) + cos(x))
cf. Fdlibm. */
- c = cosl (xx);
- s = sinl (xx);
+ c = __cosl (xx);
+ s = __sinl (xx);
ss = -s - c;
cc = s - c;
- z = cosl (xx + xx);
+ z = __cosl (xx + xx);
if ((s * c) > 0)
cc = z / ss;
else
ss = z / cc;
- z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
+ z = ONEOSQPI * (p * ss + q * cc) / __sqrtl (xx);
return z;
}
diff -uNr libc/sysdeps/ieee754/ldbl-128/s_expm1l.c libc-patched/sysdeps/ieee754/ldbl-128/s_expm1l.c
--- libc/sysdeps/ieee754/ldbl-128/s_expm1l.c 2002-09-09 19:57:17.000000000 -0500
+++ libc-patched/sysdeps/ieee754/ldbl-128/s_expm1l.c 2008-02-19 13:15:01.000000000 -0600
@@ -153,7 +153,7 @@
exp(x) - 1 = 2^k (qx + 1) - 1
= 2^k qx + 2^k - 1. */
- px = ldexpl (1.0L, k);
+ px = __ldexpl (1.0L, k);
x = px * qx + (px - 1.0);
return x;
}
diff -uNr libc/sysdeps/ieee754/ldbl-128/s_log1pl.c libc-patched/sysdeps/ieee754/ldbl-128/s_log1pl.c
--- libc/sysdeps/ieee754/ldbl-128/s_log1pl.c 2002-08-26 17:40:02.000000000 -0500
+++ libc-patched/sysdeps/ieee754/ldbl-128/s_log1pl.c 2008-02-19 13:15:01.000000000 -0600
@@ -122,8 +122,8 @@
#if 1
/* Make sure these are prototyped. */
-long double frexpl (long double, int *);
-long double ldexpl (long double, int);
+long double __frexpl (long double, int *);
+long double __ldexpl (long double, int);
#endif
@@ -160,7 +160,7 @@
/* Separate mantissa from exponent. */
/* Use frexp used so that denormal numbers will be handled properly. */
- x = frexpl (x, &e);
+ x = __frexpl (x, &e);
/* Logarithm using log(x) = z + z^3 P(z^2)/Q(z^2),
where z = 2(x-1)/x+1). */
diff -uNr libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c libc-patched/sysdeps/ieee754/ldbl-128ibm/e_expl.c
--- libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c 2006-01-27 18:07:25.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128ibm/e_expl.c 2008-02-19 13:15:01.000000000 -0600
@@ -148,15 +148,15 @@
fesetround (FE_TONEAREST);
#endif
- n = roundl(x*M_1_LN2);
+ n = __roundl(x*M_1_LN2);
x = x-n*M_LN2_0;
xl = n*M_LN2_1;
- tval1 = roundl(x*TWO8);
+ tval1 = __roundl(x*TWO8);
x -= __expl_table[T_EXPL_ARG1+2*tval1];
xl -= __expl_table[T_EXPL_ARG1+2*tval1+1];
- tval2 = roundl(x*TWO15);
+ tval2 = __roundl(x*TWO15);
x -= __expl_table[T_EXPL_ARG2+2*tval2];
xl -= __expl_table[T_EXPL_ARG2+2*tval2+1];
diff -uNr libc/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c libc-patched/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
--- libc/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c 2006-01-27 18:07:25.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c 2008-02-19 13:15:01.000000000 -0600
@@ -152,7 +152,7 @@
exp(x) - 1 = 2^k (qx + 1) - 1
= 2^k qx + 2^k - 1. */
- px = ldexpl (1.0L, k);
+ px = __ldexpl (1.0L, k);
x = px * qx + (px - 1.0);
return x;
}
diff -uNr libc/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c libc-patched/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
--- libc/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c 2006-01-27 18:07:25.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c 2008-02-19 13:15:01.000000000 -0600
@@ -123,8 +123,8 @@
#if 1
/* Make sure these are prototyped. */
-long double frexpl (long double, int *);
-long double ldexpl (long double, int);
+long double __frexpl (long double, int *);
+long double __ldexpl (long double, int);
#endif
@@ -161,7 +161,7 @@
/* Separate mantissa from exponent. */
/* Use frexp used so that denormal numbers will be handled properly. */
- x = frexpl (x, &e);
+ x = __frexpl (x, &e);
/* Logarithm using log(x) = z + z^3 P(z^2)/Q(z^2),
where z = 2(x-1)/x+1). */
diff -uNr libc/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c libc-patched/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
--- libc/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c 2006-01-27 18:07:25.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c 2008-02-19 13:15:01.000000000 -0600
@@ -85,7 +85,7 @@
/* Else the high double is pre rounded and we need to
adjust for that. */
- tau = nextafter (u.dd[0], 0.0);
+ tau = __nextafter (u.dd[0], 0.0);
tau = (u.dd[0] - tau) * 2.0;
high = u.dd[0] - tau;
low = u.dd[1] + tau;
@@ -106,7 +106,7 @@
{
/* Else the high double is pre rounded and we need to
adjust for that. */
- tau = nextafter (u.dd[0], 0.0);
+ tau = __nextafter (u.dd[0], 0.0);
tau = (u.dd[0] - tau) * 2.0;
high = u.dd[0] - tau;
low = u.dd[1] + tau;
diff -uNr libc/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c libc-patched/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c
--- libc/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c 2006-01-27 18:07:25.000000000 -0600
+++ libc-patched/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,6 +30,7 @@
GET_LDOUBLE_MSW64 (e, x);
return e < 0;
}
+hidden_ver (___signbitl, __signbitl);
#ifdef IS_IN_libm
long_double_symbol (libm, ___signbitl, __signbitl);
#else
diff -uNr libc/sysdeps/powerpc/fpu/fe_nomask.c libc-patched/sysdeps/powerpc/fpu/fe_nomask.c
--- libc/sysdeps/powerpc/fpu/fe_nomask.c 2007-05-07 01:21:08.000000000 -0500
+++ libc-patched/sysdeps/powerpc/fpu/fe_nomask.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,4 +30,5 @@
__set_errno (ENOSYS);
return FE_ENABLED_ENV;
}
+libm_hidden_def(__fe_nomask_env)
stub_warning (__fe_nomask_env)
diff -uNr libc/sysdeps/powerpc/fpu/fegetexcept.c libc-patched/sysdeps/powerpc/fpu/fegetexcept.c
--- libc/sysdeps/powerpc/fpu/fegetexcept.c 2001-07-05 23:56:02.000000000 -0500
+++ libc-patched/sysdeps/powerpc/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -41,3 +41,4 @@
return result;
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/powerpc/fpu/ftestexcept.c libc-patched/sysdeps/powerpc/fpu/ftestexcept.c
--- libc/sysdeps/powerpc/fpu/ftestexcept.c 2001-07-05 23:56:02.000000000 -0500
+++ libc-patched/sysdeps/powerpc/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -31,3 +31,4 @@
just: */
return u.l[1] & excepts;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/s390/fpu/fegetexcept.c libc-patched/sysdeps/s390/fpu/fegetexcept.c
--- libc/sysdeps/s390/fpu/fegetexcept.c 2001-07-05 23:56:02.000000000 -0500
+++ libc-patched/sysdeps/s390/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -29,3 +29,4 @@
_FPU_GETCW (exc);
return ((exc & FPC_EXCEPTION_MASK) >> FPC_EXCEPTION_MASK_SHIFT);
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/s390/fpu/ftestexcept.c libc-patched/sysdeps/s390/fpu/ftestexcept.c
--- libc/sysdeps/s390/fpu/ftestexcept.c 2001-07-05 23:56:02.000000000 -0500
+++ libc-patched/sysdeps/s390/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -31,3 +31,4 @@
temp = (temp >> FPC_DXC_SHIFT) | (temp >> FPC_FLAGS_SHIFT);
return temp & excepts & FE_ALL_EXCEPT;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/sh/sh4/fpu/ftestexcept.c libc-patched/sysdeps/sh/sh4/fpu/ftestexcept.c
--- libc/sysdeps/sh/sh4/fpu/ftestexcept.c 2001-07-05 23:56:04.000000000 -0500
+++ libc-patched/sysdeps/sh/sh4/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,3 +30,4 @@
return temp & excepts & FE_ALL_EXCEPT;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/sparc/fpu/fegetexcept.c libc-patched/sysdeps/sparc/fpu/fegetexcept.c
--- libc/sysdeps/sparc/fpu/fegetexcept.c 2001-07-05 23:56:04.000000000 -0500
+++ libc-patched/sysdeps/sparc/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -28,3 +28,4 @@
return (exc >> 18) & FE_ALL_EXCEPT;
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/sparc/fpu/ftestexcept.c libc-patched/sysdeps/sparc/fpu/ftestexcept.c
--- libc/sysdeps/sparc/fpu/ftestexcept.c 2001-07-05 23:56:04.000000000 -0500
+++ libc-patched/sysdeps/sparc/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -28,3 +28,4 @@
return tmp & excepts & FE_ALL_EXCEPT;
}
+libm_hidden_def(fetestexcept)
diff -uNr libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c libc-patched/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
--- libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c 2007-05-07 01:19:27.000000000 -0500
+++ libc-patched/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c 2008-02-19 13:15:01.000000000 -0600
@@ -66,3 +66,4 @@
return FE_ENABLED_ENV;
}
+libm_hidden_def(__fe_nomask_env)
diff -uNr libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c libc-patched/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
--- libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c 2007-05-07 01:19:33.000000000 -0500
+++ libc-patched/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c 2008-02-19 13:15:01.000000000 -0600
@@ -41,3 +41,4 @@
#endif
return FE_ENABLED_ENV;
}
+libm_hidden_def(__fe_nomask_env)
diff -uNr libc/sysdeps/x86_64/fpu/fegetexcept.c libc-patched/sysdeps/x86_64/fpu/fegetexcept.c
--- libc/sysdeps/x86_64/fpu/fegetexcept.c 2001-09-19 05:23:17.000000000 -0500
+++ libc-patched/sysdeps/x86_64/fpu/fegetexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -30,3 +30,4 @@
return (~exc) & FE_ALL_EXCEPT;
}
+libm_hidden_def (fegetexcept)
diff -uNr libc/sysdeps/x86_64/fpu/ftestexcept.c libc-patched/sysdeps/x86_64/fpu/ftestexcept.c
--- libc/sysdeps/x86_64/fpu/ftestexcept.c 2001-09-19 05:23:17.000000000 -0500
+++ libc-patched/sysdeps/x86_64/fpu/ftestexcept.c 2008-02-19 13:15:01.000000000 -0600
@@ -31,3 +31,4 @@
return (temp | mxscr) & excepts & FE_ALL_EXCEPT;
}
+libm_hidden_def(fetestexcept)