glibc/sysdeps/ieee754/ldbl-opt
Joseph Myers 9aa4965cdf Also create and use ldbl-compat-choose.h.
This patch makes the glibc build generate an additional header
ldbl-compat-choose.h that defines LONG_DOUBLE_COMPAT_CHOOSE_* macros
for each libc and libm symbol, which select one or the other of their
arguments based on whether the symbol was added before a change to
long double != double.

The effect of this is that it is then possible to define a macro
maybe_long_double_symbol that automatically acts as either
long_double_symbol or weak_alias depending on when the symbol being
defined was added.  This can be used when building long double
functions from type-generic templates.  Thus, with this patch ldbl-opt
no longer needs special long double implementations of each new libm
function added using such a template, and the existing such
implementations are removed.

This is a step towards being able more generally to use common macros
to create all the aliases needed for a libm function, so reducing the
amount of special-case code needed in ldbl-opt and ldbl-64-128, and
facilitating subsequently adding *f32 / *f64 / *f128 / *f32x / *f64x
aliases to existing functions (where the set of aliases that a
function should have may depend on the architecture in various ways).

Tested with build-many-glibcs.py.  Except for on
powerpc64le-linux-gnu, installed stripped shared libraries are
unchanged by the patch.  powerpc64le-linux-gnu is the unique
configuration which used ldbl-opt from the start rather than adding a
new long double choice after originally only having had long double =
double.  The effect of the patch there is that various cases that
previously used long_double_symbol unconditionally now use weak_alias
instead, so .os files contain e.g. a symbol cabsl instead of
cabsl@@GLIBC_2.17.  The final dynamic symbols and versions in the
resulting shared libraries are unchanged (ABI tests pass), as is the
disassembly of the shared libraries, but the differences in the .os
files still result in different .gnu_hash contents in libm.so; the
differences are of no significance and logically using weak_alias is
what's most appropriate in those cases.

	* scripts/versions.awk: Generate ldbl-compat-choose.h.
	* sysdeps/ieee754/ldbl-opt/math-type-macros-ldouble.h: Include
	<ldbl-compat-choose.h>.
	(maybe_long_double_symbol): New macro.
	[!declare_mgen_alias] (declare_mgen_alias): Use
	maybe_long_double_symbol.
	* sysdeps/ieee754/ldbl-opt/s_canonicalizel.c: Remove.
	* sysdeps/ieee754/ldbl-opt/s_fmaxmagl.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/s_fminmagl.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/s_nextdownl.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/w_llogbl.c: Likewise.
	* Makerules [$(build-shared) = yes && !avoid-generated]
	(before-compile): Add $(common-objpfx)ldbl-compat-choose.h.
	[$(build-shared) = yes && !avoid-generated]
	($(common-objpfx)ldbl-compat-choose.h): New target.
2017-05-19 11:30:26 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
configure rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
configure.ac rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
Makefile Add fromfp functions. 2016-12-31 00:40:59 +00:00
math_ldbl_opt.c
math_ldbl_opt.h Remove --disable-versioning. 2013-09-04 15:25:42 +00:00
math-type-macros-double.h Create and use first-versions.h with macros for function symbol versions. 2017-05-19 11:26:00 +00:00
math-type-macros-ldouble.h Also create and use ldbl-compat-choose.h. 2017-05-19 11:30:26 +00:00
nldbl-acos.c
nldbl-acosh.c
nldbl-asin.c
nldbl-asinh.c
nldbl-asprintf_chk.c
nldbl-asprintf.c
nldbl-atan2.c
nldbl-atan.c
nldbl-atanh.c
nldbl-cabs.c
nldbl-cacos.c
nldbl-cacosh.c
nldbl-canonicalize.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-carg.c
nldbl-casin.c
nldbl-casinh.c
nldbl-catan.c
nldbl-catanh.c
nldbl-cbrt.c
nldbl-ccos.c
nldbl-ccosh.c
nldbl-ceil.c
nldbl-cexp.c
nldbl-cimag.c
nldbl-clog10.c
nldbl-clog.c
nldbl-compat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-compat.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-conj.c
nldbl-copysign.c Use __copysign rather than copysign. 2015-04-22 12:07:56 +00:00
nldbl-cos.c
nldbl-cosh.c
nldbl-cpow.c
nldbl-cproj.c
nldbl-creal.c
nldbl-csin.c
nldbl-csinh.c
nldbl-csqrt.c
nldbl-ctan.c
nldbl-ctanh.c
nldbl-dprintf_chk.c
nldbl-dprintf.c
nldbl-erf.c
nldbl-erfc.c
nldbl-exp2.c
nldbl-exp10.c
nldbl-exp.c
nldbl-expm1.c
nldbl-fabs.c
nldbl-fdim.c
nldbl-finite.c Replace finite with isfinite. 2015-06-03 16:35:44 +01:00
nldbl-floor.c
nldbl-fma.c
nldbl-fmax.c
nldbl-fmaxmag.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-fmin.c
nldbl-fminmag.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-fmod.c
nldbl-fprintf_chk.c
nldbl-fprintf.c
nldbl-frexp.c
nldbl-fromfp.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-fromfpx.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-fscanf.c
nldbl-fwprintf_chk.c
nldbl-fwprintf.c
nldbl-fwscanf.c
nldbl-gamma.c
nldbl-getpayload.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-hypot.c
nldbl-ilogb.c
nldbl-iovfscanf.c
nldbl-isinf.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
nldbl-isnan.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
nldbl-isoc99_fscanf.c
nldbl-isoc99_fwscanf.c
nldbl-isoc99_scanf.c
nldbl-isoc99_sscanf.c
nldbl-isoc99_swscanf.c
nldbl-isoc99_vfscanf.c
nldbl-isoc99_vfwscanf.c
nldbl-isoc99_vscanf.c
nldbl-isoc99_vsscanf.c
nldbl-isoc99_vswscanf.c
nldbl-isoc99_vwscanf.c
nldbl-isoc99_wscanf.c
nldbl-j0.c
nldbl-j1.c
nldbl-jn.c
nldbl-ldexp.c
nldbl-lgamma_r.c
nldbl-lgamma.c
nldbl-llogb.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-llrint.c
nldbl-llround.c
nldbl-log1p.c
nldbl-log2.c
nldbl-log10.c
nldbl-log.c
nldbl-logb.c
nldbl-lrint.c
nldbl-lround.c
nldbl-modf.c
nldbl-nan.c
nldbl-nearbyint.c
nldbl-nextafter.c
nldbl-nextdown.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-nexttoward.c
nldbl-nexttowardf.c
nldbl-nextup.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-obstack_printf_chk.c
nldbl-obstack_printf.c
nldbl-obstack_vprintf_chk.c
nldbl-obstack_vprintf.c
nldbl-pow10.c
nldbl-pow.c
nldbl-printf_chk.c
nldbl-printf_fp.c
nldbl-printf_size.c
nldbl-printf.c
nldbl-qecvt_r.c
nldbl-qecvt.c
nldbl-qfcvt_r.c
nldbl-qfcvt.c
nldbl-qgcvt.c
nldbl-remainder.c Make drem an alias of remainder (bug 16171). 2015-10-29 22:29:21 +00:00
nldbl-remquo.c
nldbl-rint.c
nldbl-round.c
nldbl-roundeven.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-scalb.c
nldbl-scalbln.c
nldbl-scalbn.c
nldbl-scanf.c
nldbl-setpayload.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-setpayloadsig.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-signbit.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
nldbl-significand.c
nldbl-sin.c
nldbl-sincos.c
nldbl-sinh.c
nldbl-snprintf_chk.c
nldbl-snprintf.c
nldbl-sprintf_chk.c
nldbl-sprintf.c
nldbl-sqrt.c
nldbl-sscanf.c
nldbl-strfmon_l.c
nldbl-strfmon.c
nldbl-strfroml.c Add strfromd, strfromf, and strfroml functions 2016-10-25 17:03:54 -02:00
nldbl-strtold_l.c Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
nldbl-strtold.c
nldbl-strtoldint.c
nldbl-swprintf_chk.c
nldbl-swprintf.c
nldbl-swscanf.c
nldbl-syslog_chk.c
nldbl-syslog.c
nldbl-tan.c
nldbl-tanh.c
nldbl-tgamma.c
nldbl-totalorder.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-totalordermag.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-trunc.c
nldbl-ufromfp.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-ufromfpx.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nldbl-vasprintf_chk.c
nldbl-vasprintf.c
nldbl-vdprintf_chk.c
nldbl-vdprintf.c
nldbl-vfprintf_chk.c
nldbl-vfprintf.c
nldbl-vfscanf.c
nldbl-vfwprintf_chk.c
nldbl-vfwprintf.c
nldbl-vfwscanf.c
nldbl-vprintf_chk.c
nldbl-vprintf.c
nldbl-vscanf.c
nldbl-vsnprintf_chk.c
nldbl-vsnprintf.c
nldbl-vsprintf_chk.c
nldbl-vsprintf.c
nldbl-vsscanf.c
nldbl-vswprintf_chk.c
nldbl-vswprintf.c
nldbl-vswscanf.c
nldbl-vsyslog_chk.c
nldbl-vsyslog.c
nldbl-vwprintf_chk.c
nldbl-vwprintf.c
nldbl-vwscanf.c
nldbl-wcstold_l.c
nldbl-wcstold.c
nldbl-wcstoldint.c
nldbl-wprintf_chk.c
nldbl-wprintf.c
nldbl-wscanf.c
nldbl-y0.c
nldbl-y1.c
nldbl-yn.c
s_asinh.c
s_atan.c
s_cbrt.c
s_ceil.c
s_clog10l.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_copysign.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_erf.c
s_expm1.c
s_fabs.c
s_finite.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_floor.c
s_fma.c
s_fmal.c
s_frexp.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_isinf.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_isnan.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_ldexp.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_ldexpl.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_llrint.c
s_llround.c
s_log1p.c
s_logb.c
s_lrint.c
s_lround.c
s_modf.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_nearbyint.c
s_nextafter.c
s_nexttowardfd.c Make nextafter, nexttoward set errno (bug 6799). 2015-11-02 18:54:19 +00:00
s_remquo.c
s_rint.c
s_round.c
s_scalbln.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_scalbn.c Remove IS_IN_libm 2014-11-24 11:41:47 +05:30
s_significand.c
s_significandl.c
s_sin.c float128: Add private _Float128 declarations for libm. 2017-05-15 10:23:28 -03:00
s_sincos.c
s_tan.c
s_tanh.c
s_trunc.c
Versions
w_acos_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_acosh_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_acoshl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_acosl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_asin_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_asinl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_atan2_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_atan2l_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_atanh_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_atanhl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_cosh_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_coshl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_exp10_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_exp10l_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_exp_compat.c Move w_exp to libm-compat-call-auto 2017-02-08 17:44:20 -02:00
w_fmod_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_fmodl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_hypot_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_hypotl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_j0_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_j0l_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_j1_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_j1l_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_jn_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_jnl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_lgamma_compat.c Fix lgamma setting signgam for ISO C (bug 15421). 2015-11-20 22:49:59 +00:00
w_lgamma_compatl.c Fix lgamma setting signgam for ISO C (bug 15421). 2015-11-20 22:49:59 +00:00
w_lgamma_r_compat.c Move w_lgamma_r to libm-compat-calls-auto 2017-02-08 17:36:09 -02:00
w_lgammal_r_compat.c Move w_lgamma_r to libm-compat-calls-auto 2017-02-08 17:36:09 -02:00
w_log2_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_log2l_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_log10_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_log10l_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_log_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_logl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_pow_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_powl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_remainder_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_remainderl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_scalb_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_scalbl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_sinh_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_sinhl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_sqrt_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_sqrtl_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_tgamma_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00
w_tgammal_compat.c Move wrappers to libm-compat-calls-auto 2017-01-04 16:25:04 -02:00