diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/libm-alias-double.h | 42 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros-double.h | 12 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros.h | 17 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/libm-alias-double.h | 44 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/s_clog10.c (renamed from sysdeps/ieee754/ldbl-opt/math-type-macros-double.h) | 24 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/s_ldexp.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/w_log1p.c | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/w_scalbln.c | 3 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c | 1 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c | 5 |
10 files changed, 110 insertions, 43 deletions
diff --git a/sysdeps/generic/libm-alias-double.h b/sysdeps/generic/libm-alias-double.h new file mode 100644 index 0000000000..23b5990e36 --- /dev/null +++ b/sysdeps/generic/libm-alias-double.h @@ -0,0 +1,42 @@ +/* Define aliases for libm double functions. + Copyright (C) 2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LIBM_ALIAS_DOUBLE_H +#define _LIBM_ALIAS_DOUBLE_H + +/* Define aliases for a double libm function that has internal name + FROM ## R and public names TO ## suffix ## R for each suffix of a + supported floating-point type with the same format as double. This + should only be used for functions where such public names exist for + _FloatN types, not for implementation-namespace exported names + (where there is one name per format, not per type) or for + obsolescent functions not provided for _FloatN types. */ +#ifdef NO_LONG_DOUBLE +# define libm_alias_double_r(from, to, r) \ + weak_alias (from ## r, to ## r) \ + strong_alias (from ## r, from ## l ## r) \ + weak_alias (from ## r, to ## l ## r) +#else +# define libm_alias_double_r(from, to, r) \ + weak_alias (from ## r, to ## r) +#endif + +/* Likewise, but without the R suffix. */ +#define libm_alias_double(from, to) libm_alias_double_r (from, to, ) + +#endif diff --git a/sysdeps/generic/math-type-macros-double.h b/sysdeps/generic/math-type-macros-double.h index f2c1bb872b..e978f9090c 100644 --- a/sysdeps/generic/math-type-macros-double.h +++ b/sysdeps/generic/math-type-macros-double.h @@ -27,14 +27,10 @@ #define CFLOAT _Complex double #define M_STRTO_NAN __strtod_nan -/* Machines without a distinct long double type - alias long double functions to their double - equivalent. */ -#if defined NO_LONG_DOUBLE && !defined declare_mgen_alias -# define declare_mgen_alias(from, to) \ - weak_alias (from, to) \ - strong_alias (from, from ## l) \ - weak_alias (from, to ## l) +#include <libm-alias-double.h> + +#ifndef declare_mgen_alias +# define declare_mgen_alias(from, to) libm_alias_double (from, to) #endif /* Supply the generic macros. */ diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h index 5656724f40..6aaa2335b9 100644 --- a/sysdeps/generic/math-type-macros.h +++ b/sysdeps/generic/math-type-macros.h @@ -39,16 +39,7 @@ declare_mgen_alias(from,to) This exposes the appropriate symbol(s) for a - function f of type FLOAT. - - M_LIBM_NEED_COMPAT(func) - This is utilized in macro context to indicate - whether func should declare compat symbols. - - declare_mgen_libm_compat(from,to) - This is used in conjunction with the above macro - outside of macro context to paste whatever is - required to generate a compat symbol. */ + function f of type FLOAT. */ #ifndef M_PFX # error "M_PFX must be defined." @@ -116,10 +107,4 @@ # define declare_mgen_alias(from, to) weak_alias (M_SUF (from), M_SUF (to)) #endif -/* Do not generate anything for compat symbols by default. */ -#ifndef M_LIBM_NEED_COMPAT -# define M_LIBM_NEED_COMPAT(func) 0 -# define declare_mgen_libm_compat(from, to) -#endif - #endif /* _MATH_TYPE_MACROS */ diff --git a/sysdeps/ieee754/ldbl-opt/libm-alias-double.h b/sysdeps/ieee754/ldbl-opt/libm-alias-double.h new file mode 100644 index 0000000000..5ae4c8b338 --- /dev/null +++ b/sysdeps/ieee754/ldbl-opt/libm-alias-double.h @@ -0,0 +1,44 @@ +/* Define aliases for libm double functions. ldbl-opt version. + Copyright (C) 2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _LIBM_ALIAS_DOUBLE_H +#define _LIBM_ALIAS_DOUBLE_H + +#include <math_ldbl_opt.h> +#include <first-versions.h> +#include <ldbl-compat-choose.h> + +/* Define aliases for a double libm function that has internal name + FROM ## R and public names TO ## suffix ## R for each suffix of a + supported floating-point type with the same format as double. This + should only be used for functions where such public names exist for + _FloatN types, not for implementation-namespace exported names + (where there is one name per format, not per type) or for + obsolescent functions not provided for _FloatN types. */ +#define libm_alias_double_r(from, to, r) \ + weak_alias (from ## r, to ## r) \ + LONG_DOUBLE_COMPAT_CHOOSE_libm_ ## to ## l ## r \ + (compat_symbol (libm, \ + from ## r, \ + to ## l ## r, \ + FIRST_VERSION_libm_ ## to ## l ## r), ); + +/* Likewise, but without the R suffix. */ +#define libm_alias_double(from, to) libm_alias_double_r (from, to, ) + +#endif diff --git a/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h b/sysdeps/ieee754/ldbl-opt/s_clog10.c index 67b5268dc4..ec52218975 100644 --- a/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h +++ b/sysdeps/ieee754/ldbl-opt/s_clog10.c @@ -1,5 +1,5 @@ -/* Overrides for ldbl-opt versioning for double types. - Copyright (C) 2016-2017 Free Software Foundation, Inc. +/* Define __clog10l compat symbol for clog10 for ldbl-opt. + Copyright (C) 2017 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -16,23 +16,13 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#ifndef _MATH_TYPE_MACROS_DOUBLE - #include <math_ldbl_opt.h> #include <first-versions.h> +#include <math-type-macros-double.h> -/* Define compat symbols for long double on platforms - where it was not always a distinct type. */ -#if !defined M_LIBM_NEED_COMPAT -# define M_LIBM_NEED_COMPAT(f) \ - LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm_ ## f ## l) -#endif - -#if !defined declare_mgen_libm_compat -# define declare_mgen_libm_compat(from, to) \ - compat_symbol (libm, from, to ## l, \ - FIRST_VERSION_libm_ ## to ## l); -#endif +#include <s_clog10_template.c> -#include_next <math-type-macros-double.h> +#if LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm___clog10l) +strong_alias (__clog10, __clog10l_alias) +compat_symbol (libm, __clog10l_alias, __clog10l, FIRST_VERSION_libm___clog10l); #endif diff --git a/sysdeps/ieee754/ldbl-opt/s_ldexp.c b/sysdeps/ieee754/ldbl-opt/s_ldexp.c index 809080a149..5a875aeac1 100644 --- a/sysdeps/ieee754/ldbl-opt/s_ldexp.c +++ b/sysdeps/ieee754/ldbl-opt/s_ldexp.c @@ -17,7 +17,7 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#define M_LIBM_NEED_COMPAT(f) 0 +#define declare_mgen_alias(from, to) weak_alias (from, to) #include <math-type-macros-double.h> #include <s_ldexp_template.c> diff --git a/sysdeps/ieee754/ldbl-opt/w_log1p.c b/sysdeps/ieee754/ldbl-opt/w_log1p.c new file mode 100644 index 0000000000..ad0524708e --- /dev/null +++ b/sysdeps/ieee754/ldbl-opt/w_log1p.c @@ -0,0 +1,3 @@ +#define declare_mgen_alias(from, to) weak_alias (from, to) +#include <math-type-macros-double.h> +#include <w_log1p_template.c> diff --git a/sysdeps/ieee754/ldbl-opt/w_scalbln.c b/sysdeps/ieee754/ldbl-opt/w_scalbln.c new file mode 100644 index 0000000000..495169ff37 --- /dev/null +++ b/sysdeps/ieee754/ldbl-opt/w_scalbln.c @@ -0,0 +1,3 @@ +#define declare_mgen_alias(from, to) weak_alias (from, to) +#include <math-type-macros-double.h> +#include <w_scalbln_template.c> diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c index 8c3666da7a..daa477b87a 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c @@ -20,6 +20,5 @@ #define __fdim __fdim_vis3 #define declare_mgen_alias(t, f) -#define M_LIBM_NEED_COMPAT(f) 0 #include <math/s_fdim.c> diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c index 417b8690d6..ff3acd4086 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c @@ -17,6 +17,8 @@ <http://www.gnu.org/licenses/>. */ #ifdef HAVE_AS_VIS3_SUPPORT +# include <math_ldbl_opt.h> +# include <first-versions.h> # include <sparc-ifunc.h> # include <math.h> @@ -25,6 +27,9 @@ extern double __fdim_generic (double, double); sparc_libm_ifunc(__fdim, hwcap & HWCAP_SPARC_VIS3 ? __fdim_vis3 : __fdim_generic); weak_alias (__fdim, fdim) +# if LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm_fdiml) +compat_symbol (libm, __fdim, fdiml, FIRST_VERSION_libm_fdiml); +# endif # define __fdim __fdim_generic # define declare_mgen_alias(t, f) |