mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-08 17:42:12 +03:00
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].
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2017-08-28 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* 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 <fweimer@redhat.com>
|
2017-08-28 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/aarch64/Makefile (abi-lp64-options)
|
* sysdeps/unix/sysv/linux/aarch64/Makefile (abi-lp64-options)
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
#ifndef _MATH_SVID_COMPAT_H
|
#ifndef _MATH_SVID_COMPAT_H
|
||||||
#define _MATH_SVID_COMPAT_H 1
|
#define _MATH_SVID_COMPAT_H 1
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
|
||||||
/* Support for various different standard error handling behaviors. */
|
/* Support for various different standard error handling behaviors. */
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@@ -49,37 +48,34 @@ struct exception
|
|||||||
extern int matherr (struct exception *__exc);
|
extern int matherr (struct exception *__exc);
|
||||||
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. */
|
/* Types of exceptions in the `type' field. */
|
||||||
# define DOMAIN 1
|
#define DOMAIN 1
|
||||||
# define SING 2
|
#define SING 2
|
||||||
# define OVERFLOW 3
|
#define OVERFLOW 3
|
||||||
# define UNDERFLOW 4
|
#define UNDERFLOW 4
|
||||||
# define TLOSS 5
|
#define TLOSS 5
|
||||||
# define PLOSS 6
|
#define PLOSS 6
|
||||||
|
|
||||||
/* SVID mode specifies returning this large value instead of infinity. */
|
/* SVID mode specifies returning this large value instead of infinity. */
|
||||||
# define HUGE 3.40282347e+38F
|
#define HUGE 3.40282347e+38F
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The above definitions may be used in testcases. The following code
|
/* The above definitions may be used in testcases. The following code
|
||||||
is only used in the implementation. */
|
is only used in the implementation. */
|
||||||
|
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
# ifndef __ASSEMBLER__
|
|
||||||
/* fdlibm kernel function */
|
/* fdlibm kernel function */
|
||||||
extern double __kernel_standard (double, double, int);
|
extern double __kernel_standard (double, double, int);
|
||||||
extern float __kernel_standard_f (float, float, int);
|
extern float __kernel_standard_f (float, float, int);
|
||||||
extern long double __kernel_standard_l (long double, long double, int);
|
extern long double __kernel_standard_l (long double, long double, int);
|
||||||
# endif
|
|
||||||
|
|
||||||
# include <shlib-compat.h>
|
# include <shlib-compat.h>
|
||||||
# define LIBM_SVID_COMPAT SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_27)
|
# define LIBM_SVID_COMPAT SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_27)
|
||||||
# if LIBM_SVID_COMPAT
|
# if LIBM_SVID_COMPAT
|
||||||
compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
|
compat_symbol_reference (libm, matherr, matherr, GLIBC_2_0);
|
||||||
compat_symbol_reference (libm, _LIB_VERSION, _LIB_VERSION, 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
|
/* Except when building compat code, optimize out references to
|
||||||
_LIB_VERSION and matherr. */
|
_LIB_VERSION and matherr. */
|
||||||
# define _LIB_VERSION _POSIX_
|
# define _LIB_VERSION _POSIX_
|
||||||
|
@@ -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
|
* define and initialize _LIB_VERSION
|
||||||
*/
|
*/
|
||||||
#undef _LIB_VERSION
|
#undef _LIB_VERSION
|
||||||
#if LIBM_SVID_COMPAT || !defined SHARED
|
|
||||||
_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _POSIX_;
|
|
||||||
#endif
|
|
||||||
#if LIBM_SVID_COMPAT
|
#if LIBM_SVID_COMPAT
|
||||||
|
_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _POSIX_;
|
||||||
compat_symbol (libm, _LIB_VERSION_INTERNAL, _LIB_VERSION, GLIBC_2_0);
|
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
|
#endif
|
||||||
|
Reference in New Issue
Block a user