From a48c0fb4b4c322a0e0214f59516b9bb7883352f8 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 28 Aug 2017 15:19:52 +0000 Subject: Simplify math-svid-compat code. Now there are no more assembly wrappers using _LIB_VERSION or __kernel_standard, the math-svid-compat code can be slighly simplified. math-svid-compat.h no longer needs __ASSEMBLER__ conditionals, and the _LIB_VERSION variable no longer needs to be built for static libm, since all references are now in C code that includes math-svid-compat.h and so gets the macro definition of _LIB_VERSION to _POSIX_ outside the compat case. This patch makes those cleanups. Tested for x86_64, and with build-many-glibcs.py. * math/math-svid-compat.h [!__ASSEMBLER__]: Make code unconditional. * sysdeps/ieee754/s_lib_version.c [!defined SHARED]: Remove conditional code; define contents only for [LIBM_SVID_COMPAT]. --- ChangeLog | 7 +++++++ math/math-svid-compat.h | 22 +++++++++------------- sysdeps/ieee754/s_lib_version.c | 7 +------ 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5d7c8cace1..d6aef6da03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-08-28 Joseph Myers + + * math/math-svid-compat.h [!__ASSEMBLER__]: Make code + unconditional. + * sysdeps/ieee754/s_lib_version.c [!defined SHARED]: Remove + conditional code; define contents only for [LIBM_SVID_COMPAT]. + 2017-08-28 Florian Weimer * sysdeps/unix/sysv/linux/aarch64/Makefile (abi-lp64-options) diff --git a/math/math-svid-compat.h b/math/math-svid-compat.h index 284cc13159..67acedc28c 100644 --- a/math/math-svid-compat.h +++ b/math/math-svid-compat.h @@ -19,7 +19,6 @@ #ifndef _MATH_SVID_COMPAT_H #define _MATH_SVID_COMPAT_H 1 -#ifndef __ASSEMBLER__ /* Support for various different standard error handling behaviors. */ typedef enum { @@ -49,37 +48,34 @@ struct exception extern int matherr (struct exception *__exc); extern int __matherr (struct exception *__exc); -# define X_TLOSS 1.41484755040568800000e+16 +#define X_TLOSS 1.41484755040568800000e+16 /* Types of exceptions in the `type' field. */ -# define DOMAIN 1 -# define SING 2 -# define OVERFLOW 3 -# define UNDERFLOW 4 -# define TLOSS 5 -# define PLOSS 6 +#define DOMAIN 1 +#define SING 2 +#define OVERFLOW 3 +#define UNDERFLOW 4 +#define TLOSS 5 +#define PLOSS 6 /* SVID mode specifies returning this large value instead of infinity. */ -# define HUGE 3.40282347e+38F -#endif +#define HUGE 3.40282347e+38F /* The above definitions may be used in testcases. The following code is only used in the implementation. */ #ifdef _LIBC -# ifndef __ASSEMBLER__ /* fdlibm kernel function */ extern double __kernel_standard (double, double, int); extern float __kernel_standard_f (float, float, int); extern long double __kernel_standard_l (long double, long double, int); -# endif # include # define LIBM_SVID_COMPAT SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_27) # if LIBM_SVID_COMPAT compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0); compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, GLIBC_2_0); -# elif !defined __ASSEMBLER__ +# else /* Except when building compat code, optimize out references to _LIB_VERSION and matherr. */ # define _LIB_VERSION _POSIX_ diff --git a/sysdeps/ieee754/s_lib_version.c b/sysdeps/ieee754/s_lib_version.c index f11d1c31f6..40f708d82d 100644 --- a/sysdeps/ieee754/s_lib_version.c +++ b/sysdeps/ieee754/s_lib_version.c @@ -24,12 +24,7 @@ static char rcsid[] = "$NetBSD: s_lib_version.c,v 1.6 1995/05/10 20:47:44 jtc Ex * define and initialize _LIB_VERSION */ #undef _LIB_VERSION -#if LIBM_SVID_COMPAT || !defined SHARED -_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _POSIX_; -#endif #if LIBM_SVID_COMPAT +_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _POSIX_; compat_symbol (libm, _LIB_VERSION_INTERNAL, _LIB_VERSION, GLIBC_2_0); -#elif !defined SHARED -/* For use in .S wrappers. */ -weak_alias (_LIB_VERSION_INTERNAL, _LIB_VERSION) #endif -- cgit v1.2.1