mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
[BZ #15666] alpha: Add __sqrt*_finite definitions
With compatibility for ev6 and non-ev6 builds, as the non-ev6 did manage to get definitions emitted for the float and double functions.
This commit is contained in:
parent
17db6e8d6b
commit
385fd0d524
2
NEWS
2
NEWS
@ -21,7 +21,7 @@ Version 2.18
|
||||
15406, 15409, 15416, 15418, 15419, 15423, 15424, 15426, 15429, 15431,
|
||||
15432, 15441, 15442, 15448, 15465, 15480, 15485, 15488, 15490, 15492,
|
||||
15493, 15497, 15506, 15529, 15536, 15553, 15577, 15583, 15618, 15627,
|
||||
15631, 15654, 15655, 15667.
|
||||
15631, 15654, 15655, 15666, 15667.
|
||||
|
||||
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
|
||||
#15078).
|
||||
|
@ -1,3 +1,15 @@
|
||||
2013-06-24 Richard Henderson <rth@redhat.com>
|
||||
|
||||
[BZ #15666]
|
||||
* sysdeps/alpha/Versions (GLIBC_2.18): Add __sqrt_finite,
|
||||
__sqrtf_finite, and __sqrtl_finite.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libm.abilist: Likewise.
|
||||
* sysdeps/alpha/alphaev6/fpu/e_sqrt.S: Add __sqrt_finite.
|
||||
* sysdeps/alpha/alphaev6/fpu/e_sqrtf.S: Add __sqrtf_finite.
|
||||
* sysdeps/alpha/fpu/e_sqrt.c: Add __sqrt_finite compatibility.
|
||||
* sysdeps/alpha/fpu/e_sqrtf.c: New file.
|
||||
* sysdeps/alpha/soft-fp/e_sqrtl.c: Add __sqrtl_finite.
|
||||
|
||||
2013-06-23 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/alpha/fpu/libm-test-ulps: Update.
|
||||
|
@ -10,4 +10,8 @@ libm {
|
||||
# used in inline functions.
|
||||
__atan2;
|
||||
}
|
||||
GLIBC_2.18 {
|
||||
# forgotten when the symbols were added to glibc 2.15 for other targets
|
||||
__sqrt_finite; __sqrtf_finite; __sqrtl_finite;
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <shlib-compat.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
@ -42,3 +43,11 @@ ENTRY(__ieee754_sqrt)
|
||||
nop
|
||||
|
||||
END(__ieee754_sqrt)
|
||||
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
strong_alias(__ieee754_sqrt, __sqrt_finite1)
|
||||
compat_symbol(libm, __sqrt_finite1, __sqrt_finite, GLIBC_2_15)
|
||||
versioned_symbol(libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_18)
|
||||
#else
|
||||
strong_alias(__ieee754_sqrt, __sqrt_finite)
|
||||
#endif
|
||||
|
@ -16,6 +16,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <shlib-compat.h>
|
||||
|
||||
.arch ev6
|
||||
.set noreorder
|
||||
@ -42,3 +43,11 @@ ENTRY(__ieee754_sqrtf)
|
||||
nop
|
||||
|
||||
END(__ieee754_sqrtf)
|
||||
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
strong_alias(__ieee754_sqrtf, __sqrtf_finite1)
|
||||
compat_symbol(libm, __sqrtf_finite1, __sqrtf_finite, GLIBC_2_15)
|
||||
versioned_symbol(libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_18)
|
||||
#else
|
||||
strong_alias(__ieee754_sqrtf, __sqrtf_finite)
|
||||
#endif
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <math.h>
|
||||
#include <math_private.h>
|
||||
#include <shlib-compat.h>
|
||||
|
||||
#if !defined(_IEEE_FP_INEXACT)
|
||||
|
||||
@ -157,9 +158,30 @@ $fixup: \n\
|
||||
\n\
|
||||
.end __ieee754_sqrt");
|
||||
|
||||
/* Avoid the __sqrt_finite alias that dbl-64/e_sqrt.c would give... */
|
||||
#undef strong_alias
|
||||
#define strong_alias(a,b)
|
||||
|
||||
/* ... defining our own. */
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
asm (".global __sqrt_finite1; __sqrt_finite1 = __ieee754_sqrt");
|
||||
#else
|
||||
asm (".global __sqrt_finite; __sqrt_finite = __ieee754_sqrt");
|
||||
#endif
|
||||
|
||||
static double __full_ieee754_sqrt(double) __attribute_used__;
|
||||
#define __ieee754_sqrt __full_ieee754_sqrt
|
||||
|
||||
#elif SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
# define __sqrt_finite __sqrt_finite1
|
||||
#endif /* _IEEE_FP_INEXACT */
|
||||
|
||||
#include <sysdeps/ieee754/dbl-64/e_sqrt.c>
|
||||
|
||||
/* Work around forgotten symbol in alphaev6 build. */
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
# undef __sqrt_finite
|
||||
# undef __ieee754_sqrt
|
||||
compat_symbol (libm, __sqrt_finite1, __sqrt_finite, GLIBC_2_15);
|
||||
versioned_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_18);
|
||||
#endif
|
||||
|
14
ports/sysdeps/alpha/fpu/e_sqrtf.c
Normal file
14
ports/sysdeps/alpha/fpu/e_sqrtf.c
Normal file
@ -0,0 +1,14 @@
|
||||
#include <shlib-compat.h>
|
||||
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
# define __sqrtf_finite __sqrtf_finite1
|
||||
#endif
|
||||
|
||||
#include <sysdeps/ieee754/flt-32/e_sqrtf.c>
|
||||
|
||||
/* Work around forgotten symbol in alphaev6 build. */
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
# undef __sqrtf_finite
|
||||
compat_symbol (libm, __sqrtf_finite1, __sqrtf_finite, GLIBC_2_15);
|
||||
versioned_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_18);
|
||||
#endif
|
@ -21,6 +21,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <soft-fp.h>
|
||||
#include <quad.h>
|
||||
#include <shlib-compat.h>
|
||||
|
||||
long double
|
||||
__ieee754_sqrtl (const long double a)
|
||||
@ -37,3 +38,12 @@ __ieee754_sqrtl (const long double a)
|
||||
FP_HANDLE_EXCEPTIONS;
|
||||
return c;
|
||||
}
|
||||
|
||||
/* ??? We forgot to add this symbol in 2.15. Getting this into 2.18 isn't as
|
||||
straight-forward as just adding the alias, since a generic Versions file
|
||||
includes the 2.15 version and the linker uses the first one it sees. */
|
||||
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
|
||||
versioned_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_18);
|
||||
#else
|
||||
strong_alias(__ieee754_sqrtl, __sqrtl_finite)
|
||||
#endif
|
||||
|
@ -382,6 +382,8 @@ GLIBC_2.15
|
||||
__sinh_finite F
|
||||
__sinhf_finite F
|
||||
__sinhl_finite F
|
||||
__sqrt_finite F
|
||||
__sqrtf_finite F
|
||||
__y0_finite F
|
||||
__y0f_finite F
|
||||
__y0l_finite F
|
||||
@ -396,6 +398,9 @@ GLIBC_2.18
|
||||
__issignaling F
|
||||
__issignalingf F
|
||||
__issignalingl F
|
||||
__sqrt_finite F
|
||||
__sqrtf_finite F
|
||||
__sqrtl_finite F
|
||||
GLIBC_2.2
|
||||
GLIBC_2.2 A
|
||||
feclearexcept F
|
||||
|
Loading…
Reference in New Issue
Block a user