Patchwork [4/4] Use compat_symbol for _finite symbols

login
register
mail settings
Submitter Wilco Dijkstra
Date June 26, 2019, 2:02 p.m.
Message ID <VI1PR0801MB212721B4E319BCD582BF0BFD83E20@VI1PR0801MB2127.eurprd08.prod.outlook.com>
Download mbox | patch
Permalink /patch/33413/
State New
Headers show

Comments

Wilco Dijkstra - June 26, 2019, 2:02 p.m.
Use compat_symbol for all _finite symbols.  This is a basic search and
replace of:

strong_alias (__ieee754_exp10f, __exp10f_finite)

with:

#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
compat_symbol (libm, __ieee754_exp10f, __exp10f_finite, GLIBC_2_15);
#endif

The <fn>f128_finite symbols were introduced in GLIBC 2.26 and so need
special treatment in code that is shared between long double and float128.
Alpha also needs some tricky changes to ensure we still emit 2 compat
symbols for sqrt(f).

Passes buildmanyglibc.

ChangeLog:

2019-06-26  Wilco Dijkstra  <wdijkstr@arm.com>

	* math/e_exp10.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* math/e_exp10f.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* math/e_exp10l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* math/e_exp2_template.c (declare_mgen_finite_alias):
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* math/e_scalb.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* math/e_scalbf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* math/e_scalbl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/aarch64/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/aarch64/fpu/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/aarch64/fpu/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/alpha/alphaev6/fpu/e_sqrt.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/alpha/alphaev6/fpu/e_sqrtf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/alpha/e_sqrtl.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/alpha/fpu/e_sqrt.c (strong_alias): Remove.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	(SHLIB_COMPAT): Add test.
	* sysdeps/alpha/fpu/e_sqrtf.c (SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	(strong_alias): Remove.
	* sysdeps/arm/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/arm/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/generic/math-type-macros-float128.h (SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/generic/math-type-macros.h
	(declare_mgen_finite_alias_x): Remove.
	(declare_mgen_finite_alias_s): Remove.
	(declare_mgen_finite_alias): Remove.
	* sysdeps/i386/fpu/e_acos.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_acosf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_acosh.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_acoshf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_acoshl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_acosl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_asin.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_asinf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_atan2.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_atan2f.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_atan2l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_atanh.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_atanhf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_atanhl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_exp10.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_exp10f.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_exp2.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_exp2l.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_fmod.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_fmodf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_fmodl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_hypot.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_hypotf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_log10.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_log10f.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_log10l.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_log2.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_log2l.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_pow.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_powl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_remainder.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_remainderf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_remainderl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_scalb.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_scalbf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_scalbl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_sqrt.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_sqrtf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/fpu/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/i686/fpu/multiarch/e_exp2f.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/i686/fpu/multiarch/e_expf.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/i686/fpu/multiarch/e_log2f.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/i686/fpu/multiarch/e_logf.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/i386/i686/fpu/multiarch/e_powf.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_acosh.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_asin.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_atan2.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_atanh.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_cosh.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_exp.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	* sysdeps/ieee754/dbl-64/e_exp10.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_exp2.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	* sysdeps/ieee754/dbl-64/e_fmod.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_gamma_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_hypot.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_j0.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_j1.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_jn.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_lgamma_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_log.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	* sysdeps/ieee754/dbl-64/e_log10.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_log2.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	* sysdeps/ieee754/dbl-64/e_pow.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	(versioned_symbol): Remove.
	* sysdeps/ieee754/dbl-64/e_remainder.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_sinh.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/float128/float128_private.h (SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_acosf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_acoshf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_asinf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_atan2f.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_atanhf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_coshf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_exp2f.c (strong_alias): Remove.
	(versioned_symbol): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_expf.c (strong_alias): Remove.
	(versioned_symbol): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_fmodf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_hypotf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_j0f.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_j1f.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_jnf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_lgammaf_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_log10f.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_log2f.c (strong_alias): Remove.
	(versioned_symbol): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_logf.c (strong_alias): Remove.
	(versioned_symbol): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_powf.c (strong_alias): Remove.
	(versioned_symbol): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_remainderf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_sinhf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/flt-32/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_acoshl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_acosl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_asinl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_atan2l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_atanhl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_coshl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_exp10l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_expl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_fmodl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_gammal_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_hypotl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_j0l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_j1l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_jnl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_lgammal_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_log10l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_log2l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_logl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_powl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_remainderl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128/e_sinhl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_acosl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_asinl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_coshl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_exp10l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_j0l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_j1l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_log10l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_log2l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_logl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_powl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_acoshl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_asinl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_atanhl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_coshl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_gammal_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_hypotl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_j0l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_j1l.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_jnl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_lgammal_r.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/ieee754/ldbl-96/e_sinhl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/m68k/coldfire/fpu/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/m68k/coldfire/fpu/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/m68k/m680x0/fpu/e_atan2.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/m68k/m680x0/fpu/e_pow.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/m68k/m680x0/fpu/e_scalb.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/mips/fpu/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/mips/fpu/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/mips/mips64/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/fpu/e_hypot.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/fpu/e_hypotf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/fpu/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/fpu/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
	(strong_alias): Remove.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
	(strong_alias): Remove.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
	(strong_alias): Remove.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
	(strong_alias): Remove.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
	(strong_alias): Remove.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
	(strong_alias): Remove.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/riscv/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/riscv/rvd/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/riscv/rvf/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/s390/fpu/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/s390/fpu/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/s390/fpu/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/sparc/sparc32/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/sparc/sparc64/fpu/e_sqrtl.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86/fpu/e_sqrtf128.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_exp2l.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_fmodl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_powl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_remainderl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_scalbl.S (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_sqrt.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/e_sqrtf.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_asin.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_atan2.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_exp.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_exp2f.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_expf.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_log.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_log2f.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_logf.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_pow.c (strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.
	* sysdeps/x86_64/fpu/multiarch/e_powf.c (versioned_symbol): Remove.
	(strong_alias): Remove.
	(SHLIB_COMPAT): Add test.
	(compat_symbol): Add _finite compat_symbol.

--
Adhemerval Zanella Netto - July 17, 2019, 5:39 p.m.
On 26/06/2019 11:02, Wilco Dijkstra wrote:
> Use compat_symbol for all _finite symbols.  This is a basic search and
> replace of:
> 
> strong_alias (__ieee754_exp10f, __exp10f_finite)
> 
> with:
> 
> #if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> compat_symbol (libm, __ieee754_exp10f, __exp10f_finite, GLIBC_2_15);
> #endif
> 
> The <fn>f128_finite symbols were introduced in GLIBC 2.26 and so need
> special treatment in code that is shared between long double and float128.
> Alpha also needs some tricky changes to ensure we still emit 2 compat
> symbols for sqrt(f).
> 
> Passes buildmanyglibc.
> 
> ChangeLog:
> 
> 2019-06-26  Wilco Dijkstra  <wdijkstr@arm.com>
> 
> 	* math/e_exp10.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* math/e_exp10f.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* math/e_exp10l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* math/e_exp2_template.c (declare_mgen_finite_alias):
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* math/e_scalb.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* math/e_scalbf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* math/e_scalbl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/aarch64/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/aarch64/fpu/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/aarch64/fpu/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/alpha/alphaev6/fpu/e_sqrt.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/alpha/alphaev6/fpu/e_sqrtf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/alpha/e_sqrtl.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/alpha/fpu/e_sqrt.c (strong_alias): Remove.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	* sysdeps/alpha/fpu/e_sqrtf.c (SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	* sysdeps/arm/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/arm/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/generic/math-type-macros-float128.h (SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/generic/math-type-macros.h
> 	(declare_mgen_finite_alias_x): Remove.
> 	(declare_mgen_finite_alias_s): Remove.
> 	(declare_mgen_finite_alias): Remove.
> 	* sysdeps/i386/fpu/e_acos.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_acosf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_acosh.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_acoshf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_acoshl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_acosl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_asin.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_asinf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_atan2.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_atan2f.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_atan2l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_atanh.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_atanhf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_atanhl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_exp10.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_exp10f.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_exp2.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_exp2l.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_fmod.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_fmodf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_fmodl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_hypot.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_hypotf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_log10.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_log10f.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_log10l.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_log2.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_log2l.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_pow.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_powl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_remainder.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_remainderf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_remainderl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_scalb.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_scalbf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_scalbl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_sqrt.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_sqrtf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/fpu/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/i686/fpu/multiarch/e_exp2f.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/i686/fpu/multiarch/e_expf.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/i686/fpu/multiarch/e_log2f.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/i686/fpu/multiarch/e_logf.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/i386/i686/fpu/multiarch/e_powf.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_acosh.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_asin.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_atan2.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_atanh.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_cosh.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_exp.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	* sysdeps/ieee754/dbl-64/e_exp10.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_exp2.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	* sysdeps/ieee754/dbl-64/e_fmod.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_gamma_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_hypot.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_j0.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_j1.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_jn.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_lgamma_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_log.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	* sysdeps/ieee754/dbl-64/e_log10.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_log2.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	* sysdeps/ieee754/dbl-64/e_pow.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	(versioned_symbol): Remove.
> 	* sysdeps/ieee754/dbl-64/e_remainder.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_sinh.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/float128/float128_private.h (SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_acosf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_acoshf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_asinf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_atan2f.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_atanhf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_coshf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_exp2f.c (strong_alias): Remove.
> 	(versioned_symbol): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_expf.c (strong_alias): Remove.
> 	(versioned_symbol): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_fmodf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_gammaf_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_hypotf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_j0f.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_j1f.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_jnf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_lgammaf_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_log10f.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_log2f.c (strong_alias): Remove.
> 	(versioned_symbol): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_logf.c (strong_alias): Remove.
> 	(versioned_symbol): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_powf.c (strong_alias): Remove.
> 	(versioned_symbol): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_remainderf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_sinhf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/flt-32/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_acoshl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_acosl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_asinl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_atan2l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_atanhl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_coshl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_exp10l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_expl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_fmodl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_gammal_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_hypotl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_j0l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_j1l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_jnl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_lgammal_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_log10l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_log2l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_logl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_powl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_remainderl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128/e_sinhl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_acosl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_asinl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_coshl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_exp10l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_j0l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_j1l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_log10l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_log2l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_logl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_powl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_acoshl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_asinl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_atanhl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_coshl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_gammal_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_hypotl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_j0l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_j1l.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_jnl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_lgammal_r.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/ieee754/ldbl-96/e_sinhl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/m68k/coldfire/fpu/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/m68k/coldfire/fpu/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/m68k/m680x0/fpu/e_atan2.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/m68k/m680x0/fpu/e_pow.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/m68k/m680x0/fpu/e_scalb.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/mips/fpu/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/mips/fpu/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/mips/mips64/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/fpu/e_hypot.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/fpu/e_hypotf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/fpu/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/fpu/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
> 	(strong_alias): Remove.
> 	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
> 	(strong_alias): Remove.
> 	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
> 	(strong_alias): Remove.
> 	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
> 	(strong_alias): Remove.
> 	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
> 	(strong_alias): Remove.
> 	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
> 	(strong_alias): Remove.
> 	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/riscv/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/riscv/rvd/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/riscv/rvf/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/s390/fpu/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/s390/fpu/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/s390/fpu/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/sparc/sparc32/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/sparc/sparc64/fpu/e_sqrtl.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86/fpu/e_sqrtf128.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_exp2l.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_fmodl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_powl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_remainderl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_scalbl.S (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_sqrt.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/e_sqrtf.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_asin.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_atan2.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_exp.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_exp2f.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_expf.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_log.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_log2f.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_logf.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_pow.c (strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.
> 	* sysdeps/x86_64/fpu/multiarch/e_powf.c (versioned_symbol): Remove.
> 	(strong_alias): Remove.
> 	(SHLIB_COMPAT): Add test.
> 	(compat_symbol): Add _finite compat_symbol.

Unfortunatelly scripts/abilist.awk does not differentiate between default version
and compat version from objdump (line 52 removes the parentesis around it), so it does
not check if all the finite symbol indeed has been converted to compat ones. Maybe it 
is something we might enhance in the future, although it would require some additional 
metadata to parse what from the exported ABI is compatibility symbols.

So from checking the resulting binary I am seeing the patch does not address i386/x86_64 
__exp10l_finite, __expl_finite, __log_finite, __exp_finite, and __logl_finite.

Neither m68k __exp10l_finite, __expl_finite, __log_finite, __coshl_finite,
__asinl_finite, __coshf_finite, __atanhl_finite, __expf_finite,__fmod_finite,
__log2l_finite, __log2f_finite, __sinhf_finite, __sinh_finite, __exp_finite,
__exp2f_finite, __acosf_finite, __exp10f_finite, __log10l_finite, __asin_finite,
__log2_finite, __logf_finite, __acos_finite, __acosl_finite, __remainderf_finite,
__exp10_finite, __fmodl_finite, __exp2_finite, __cosh_finite, __exp2l_finite,
__atanhf_finite, __atanh_finite, __log10_finite, __remainder_finite, __logl_finite,
__log10f_finite, __sinhl_finite, __sqrtl_finite, __fmodf_finite, __asinf_finite,
__sqrt_inline, and __sqrtf_inline.

So I have create a personal branch with reviewing suggestion below along with the
fixes for the aforement mentioned symbols [1].  What do you think.

[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/ffinite-math-compat

> 
> --
> 
> diff --git a/math/e_exp10.c b/math/e_exp10.c
> index d578005d8a36b6ad550c90c03802b9872c2eb3c2..10b6152623e132418c941e8e946ae4d4b52b7215 100644
> --- a/math/e_exp10.c
> +++ b/math/e_exp10.c
> @@ -19,6 +19,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  double
>  __ieee754_exp10 (double arg)
> @@ -30,4 +31,6 @@ __ieee754_exp10 (double arg)
>         replaced sometime (soon?).  */
>      return __ieee754_exp (M_LN10 * arg);
>  }
> -strong_alias (__ieee754_exp10, __exp10_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10, __exp10_finite, GLIBC_2_15);
> +#endif
> diff --git a/math/e_exp10f.c b/math/e_exp10f.c

I think it would be better to move the logic to whether create the finite
to its own headers, as we do for ldbl-opt. Something like:

--
$ cat sysdeps/ieee754/libm-alias-finite.h
#ifndef _LIBM_ALIAS_FINITE_H
#define _LIBM_ALIAS_FINITE_H

#include <first-versions.h>
#include <shlib-compat.h>

/* The -ffinite-math symbols were added on GLIBC 2.15 and moved to compat
   symbol so newer architectures do not require to support it.  */
#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
# define libm_alias_finite(from, to)                            \
  libm_alias_finite1(from, to)
# define libm_alias_finite1(from, to)                           \
compat_symbol (libm,                                            \
               from,                                            \
               to ## _finite,                                   \
               FIRST_VERSION_libm_ ## to ## _finite);
#else
# define libm_alias_finite(from, to)
#endif

#endif
--

And then on required implementation we do:

--
#include <libm-alias-finite.h>

type
__ieee754_symbol (...)
{
  [...]
}
libm_alias_finite (__ieee754_symbol, __symbol)
---

> index 24408f7007a85200e4dd58f7a4dccd908c802c41..21318528010bcfbede22249705c8d65740be9204 100644
> --- a/math/e_exp10f.c
> +++ b/math/e_exp10f.c
> @@ -18,7 +18,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> -
> +#include <shlib-compat.h>
>  
>  float
>  __ieee754_exp10f (float arg)
> @@ -29,4 +29,6 @@ __ieee754_exp10f (float arg)
>       this.  */
>    return __ieee754_exp (M_LN10 * arg);
>  }
> -strong_alias (__ieee754_exp10f, __exp10f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10f, __exp10f_finite, GLIBC_2_15);
> +#endif
> diff --git a/math/e_exp10l.c b/math/e_exp10l.c
> index 775a01406371f0293bec0d10458d5b8bf6bc0551..0ae5a7db28bd6ef54cfa170f175ac1319130957d 100644
> --- a/math/e_exp10l.c
> +++ b/math/e_exp10l.c
> @@ -19,6 +19,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_exp10l (long double arg)
> @@ -30,4 +31,6 @@ __ieee754_exp10l (long double arg)
>         replaced sometime (soon?).  */
>      return __ieee754_expl (M_LN10l * arg);
>  }
> -strong_alias (__ieee754_exp10l, __exp10l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10l, __exp10l_finite, GLIBC_2_15);
> +#endif
> diff --git a/math/e_exp2_template.c b/math/e_exp2_template.c
> index 3f69dc9006834a93d67348af6268c7d00b5333d6..80e51480555352bcfe09e4aaa7a24042a0fbfdbb 100644
> --- a/math/e_exp2_template.c
> +++ b/math/e_exp2_template.c
> @@ -20,6 +20,7 @@
>  #include <math_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  FLOAT
>  M_DECL_FUNC (__ieee754_exp2) (FLOAT x)
> @@ -52,4 +53,6 @@ M_DECL_FUNC (__ieee754_exp2) (FLOAT x)
>      /* Infinity, NaN or overflow.  */
>      return M_MAX * x;
>  }
> -declare_mgen_finite_alias (__ieee754_exp2, __exp2)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, M_SUF (__ieee754_exp2), __M_CONCATX (M_SUF (__exp2), _finite), GLIBC_2_15);
> +#endif

Same as before we can rather define declare_mgen_finite_alias as:

--
#ifndef declare_mgen_finite_alias_x
#define declare_mgen_finite_alias_x(from, to)   \
  libm_alias_finite (from, to)
#endif
--

> diff --git a/math/e_scalb.c b/math/e_scalb.c
> index e332800854cd509679f3c2013eff82d4444b63db..8ece70d57fea8ea93811cea0e66e8c59e0cafb7d 100644
> --- a/math/e_scalb.c
> +++ b/math/e_scalb.c
> @@ -18,7 +18,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> -
> +#include <shlib-compat.h>
>  
>  static double
>  __attribute__ ((noinline))
> @@ -51,4 +51,6 @@ __ieee754_scalb (double x, double fn)
>  
>    return __scalbn (x, (int) fn);
>  }
> -strong_alias (__ieee754_scalb, __scalb_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalb, __scalb_finite, GLIBC_2_15);
> +#endif
> diff --git a/math/e_scalbf.c b/math/e_scalbf.c
> index 5782fc9db62576e51861214bc7e3f24ae11fd220..298d6791659ff8ae03fab82625a118fc4293dbe4 100644
> --- a/math/e_scalbf.c
> +++ b/math/e_scalbf.c
> @@ -18,7 +18,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> -
> +#include <shlib-compat.h>
>  
>  static float
>  __attribute__ ((noinline))
> @@ -51,4 +51,6 @@ __ieee754_scalbf (float x, float fn)
>  
>    return __scalbnf (x, (int) fn);
>  }
> -strong_alias (__ieee754_scalbf, __scalbf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalbf, __scalbf_finite, GLIBC_2_15);
> +#endif
> diff --git a/math/e_scalbl.c b/math/e_scalbl.c
> index 00ad3f9f55cb30e64e33cb0e8312f62c7a5393e5..70ccdb40498b3b0b2a92820a6e336f212e5a1b1d 100644
> --- a/math/e_scalbl.c
> +++ b/math/e_scalbl.c
> @@ -18,7 +18,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> -
> +#include <shlib-compat.h>
>  
>  static long double
>  __attribute__ ((noinline))
> @@ -51,4 +51,6 @@ __ieee754_scalbl (long double x, long double fn)
>  
>    return __scalbnl (x, (int) fn);
>  }
> -strong_alias (__ieee754_scalbl, __scalbl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalbl, __scalbl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/aarch64/e_sqrtl.c b/sysdeps/aarch64/e_sqrtl.c
> index ca24323c9aa8d903f43e9e5bf18cb26836567af2..58c6a36a0ae79020aaa2cd42ceab84bcac10e6f2 100644
> --- a/sysdeps/aarch64/e_sqrtl.c
> +++ b/sysdeps/aarch64/e_sqrtl.c
> @@ -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)
> @@ -36,4 +37,6 @@ __ieee754_sqrtl (const long double a)
>    FP_HANDLE_EXCEPTIONS;
>    return c;
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/aarch64/fpu/e_sqrt.c b/sysdeps/aarch64/fpu/e_sqrt.c
> index 7ff5a3f407da7fa2abc3f1095fda7857a98e8d98..975be53c628344e9f99248fb3f8f50a4aa35ec24 100644
> --- a/sysdeps/aarch64/fpu/e_sqrt.c
> +++ b/sysdeps/aarch64/fpu/e_sqrt.c
> @@ -17,10 +17,13 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  double
>  __ieee754_sqrt (double d)
>  {
>    return __builtin_sqrt (d);
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/aarch64/fpu/e_sqrtf.c b/sysdeps/aarch64/fpu/e_sqrtf.c
> index aa624aac9a8895076185271b2498fabf794b4edb..97e9f4e09367c0c80a7f2f0dce53de4db626d2e4 100644
> --- a/sysdeps/aarch64/fpu/e_sqrtf.c
> +++ b/sysdeps/aarch64/fpu/e_sqrtf.c
> @@ -17,10 +17,13 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  float
>  __ieee754_sqrtf (float s)
>  {
>    return __builtin_sqrtf (s);
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S b/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
> index 74dc47ec19a6e76b91844a7f7b09f25866b0c446..7b2f2c26c47df9f4e3b57116c2a8f582808ad163 100644
> --- a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
> +++ b/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
> @@ -45,9 +45,9 @@ ENTRY(__ieee754_sqrt)
>  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)
> +strong_alias(__ieee754_sqrt, __sqrt_dummy)
> +compat_symbol(libm, __sqrt_dummy, __sqrt_finite, GLIBC_2_15)
> +#endif
> +#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
> +compat_symbol(libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_18)
>  #endif

Ok.

(alpha abi mess strikes again...)

> diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S b/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
> index 0f0281da8f32fd4793a39496bc903b7768f66de6..af2b5ad96c4d465b578da7cd51ecba2c1f63f446 100644
> --- a/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
> +++ b/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
> @@ -45,9 +45,9 @@ ENTRY(__ieee754_sqrtf)
>  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)
> +strong_alias(__ieee754_sqrtf, __sqrtf_dummy)
> +compat_symbol(libm, __sqrtf_dummy, __sqrtf_finite, GLIBC_2_15)
> +#endif
> +#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
> +compat_symbol(libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_18)
>  #endif

Ok.

> diff --git a/sysdeps/alpha/e_sqrtl.c b/sysdeps/alpha/e_sqrtl.c
> index 6629bbede8c5ddeb0840084143fcfa4febd748c6..0922b4ebacb93c31576255d3c099ecc430dc0eee 100644
> --- a/sysdeps/alpha/e_sqrtl.c
> +++ b/sysdeps/alpha/e_sqrtl.c
> @@ -43,7 +43,5 @@ __ieee754_sqrtl (const long double a)
>     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)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_18);
>  #endif

Ok.

> diff --git a/sysdeps/alpha/fpu/e_sqrt.c b/sysdeps/alpha/fpu/e_sqrt.c
> index 3a07331fb35bf143058192e32cf4ad835da4b18b..723a5a0a25052c7d4ff2ff8ca68bd7698131366b 100644
> --- a/sysdeps/alpha/fpu/e_sqrt.c
> +++ b/sysdeps/alpha/fpu/e_sqrt.c
> @@ -158,30 +158,29 @@ $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");
> +asm (".global  __sqrt_dummy; __sqrt_dummy = __ieee754_sqrt");
>  #else
> -asm (".global	__sqrt_finite; __sqrt_finite = __ieee754_sqrt");
> +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
> +
> +strong_alias (__ieee754_sqrt, __sqrt_dummy)
> +#define __ieee754_sqrt __ieee754_sqrt
> +
>  #endif /* _IEEE_FP_INEXACT */
>  
>  #include <sysdeps/ieee754/dbl-64/e_sqrt.c>
> +#undef __ieee754_sqrt
>  
>  /* 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);
> +compat_symbol (libm, __sqrt_dummy, __sqrt_finite, GLIBC_2_15);
> +#endif
> +#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_18);
>  #endif

Ok.

> diff --git a/sysdeps/alpha/fpu/e_sqrtf.c b/sysdeps/alpha/fpu/e_sqrtf.c
> index ad523f5cf256eb0de78616ea1207995b75c84afb..102d9efa049e1ef18a6366020d656c462fd2ebf8 100644
> --- a/sysdeps/alpha/fpu/e_sqrtf.c
> +++ b/sysdeps/alpha/fpu/e_sqrtf.c
> @@ -1,14 +1,13 @@
>  #include <shlib-compat.h>
>  
> -#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
> -# define __sqrtf_finite __sqrtf_finite1
> -#endif
> -
> +#define __ieee754_sqrtf __ieee754_sqrtf
>  #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);
> +strong_alias(__ieee754_sqrtf, __sqrtf_dummy)
> +compat_symbol (libm, __sqrtf_dummy, __sqrtf_finite, GLIBC_2_15);
> +#endif
> +#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_18);
>  #endif

Ok.

> diff --git a/sysdeps/arm/e_sqrt.c b/sysdeps/arm/e_sqrt.c
> index e710b2b6c4415cf5c34cca7eb8fcbb17273dbec4..02e49d59b4d653df5e308e7df2cfc02694142674 100644
> --- a/sysdeps/arm/e_sqrt.c
> +++ b/sysdeps/arm/e_sqrt.c
> @@ -26,6 +26,7 @@
>  /* Use VFP square root instruction.  */
>  # include <math.h>
>  # include <sysdep.h>
> +# include <shlib-compat.h>
>  
>  double
>  __ieee754_sqrt (double x)
> @@ -40,6 +41,8 @@ __ieee754_sqrt (double x)
>  # endif
>    return ret;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +# endif
>  
>  #endif
> diff --git a/sysdeps/arm/e_sqrtf.c b/sysdeps/arm/e_sqrtf.c
> index 501aa470a7076a2a4f5ab5611c7033a3ee1de84b..5296308103d63d378d821e2aca6122a1fa1dc0f9 100644
> --- a/sysdeps/arm/e_sqrtf.c
> +++ b/sysdeps/arm/e_sqrtf.c
> @@ -26,6 +26,7 @@
>  /* Use VFP square root instruction.  */
>  # include <math.h>
>  # include <sysdep.h>
> +# include <shlib-compat.h>
>  
>  float
>  __ieee754_sqrtf (float x)
> @@ -40,6 +41,8 @@ __ieee754_sqrtf (float x)
>  # endif
>    return ret;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +# endif
>  
>  #endif
> diff --git a/sysdeps/generic/math-type-macros-float128.h b/sysdeps/generic/math-type-macros-float128.h
> index adea637eebb7339f4a9b634735e6fde971f11fb8..dc48e8176525a2afe27dade3105f887581a01aa2 100644
> --- a/sysdeps/generic/math-type-macros-float128.h
> +++ b/sysdeps/generic/math-type-macros-float128.h
> @@ -46,4 +46,13 @@
>  /* Use the type-generic wrapper templates.  */
>  #define __USE_WRAPPER_TEMPLATE 1
>  
> +/* Ensure compat_symbol uses GLIBC_2_26 since that was when the
> +   __<fn>f128_finite symbols were introduced.  */
> +#include <shlib-compat.h>
> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
> +# undef compat_symbol
> +# define compat_symbol(lib, local, symbol, version) \
> +  compat_symbol_reference (lib, local, symbol, GLIBC_2_26)
> +#endif
> +
>  #endif

Another advantage of using the libm_alias_finite defined above is there is no
need to define to override the compat_symbol macro (the first-versions.h take
care of it).  We just need to add the internal symbol on float128_private.h 
so libm_alias_finite second argument can parse the minimal version based on
first-versions.h.

> diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h
> index 998ab2e023a899fd9f09a862f524a057118c9bcc..e0682172573d8704910a721fbdd63ca4a34c978e 100644
> --- a/sysdeps/generic/math-type-macros.h
> +++ b/sysdeps/generic/math-type-macros.h
> @@ -74,21 +74,6 @@
>  # error "SET_NAN_PAYLOAD must be defined."
>  #endif
>  
> -#ifndef declare_mgen_finite_alias_x
> -#define declare_mgen_finite_alias_x(from, to)	\
> -  strong_alias (from, to ## _finite)
> -#endif
> -
> -#ifndef declare_mgen_finite_alias_s
> -# define declare_mgen_finite_alias_s(from,to)	\
> -  declare_mgen_finite_alias_x (from, to)
> -#endif
> -
> -#ifndef declare_mgen_finite_alias
> -# define declare_mgen_finite_alias(from, to)	\
> -  declare_mgen_finite_alias_s (M_SUF (from), M_SUF (to))
> -#endif
> -
>  #define __M_CONCAT(a,b) a ## b
>  #define __M_CONCATX(a,b) __M_CONCAT(a,b)
>  

Same as before, you just need to redefine declare_mgen_finite_alias_x to call
libm_alias_finite.

> diff --git a/sysdeps/i386/fpu/e_acos.S b/sysdeps/i386/fpu/e_acos.S
> index 586c7fc406b1867f62379d25c748bb206606aba0..63f377ffe9c5b567b04f549b03377b69bd15412b 100644
> --- a/sysdeps/i386/fpu/e_acos.S
> +++ b/sysdeps/i386/fpu/e_acos.S
> @@ -4,6 +4,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: e_acos.S,v 1.4 1995/05/08 23:44:37 jtc Exp $")
>  
> @@ -22,4 +23,6 @@ ENTRY(__ieee754_acos)
>  	fpatan				/* atan (sqrt(1 - x^2) / x) */
>  	ret
>  END (__ieee754_acos)
> -strong_alias (__ieee754_acos, __acos_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acos, __acos_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_acosf.S b/sysdeps/i386/fpu/e_acosf.S
> index 54930af8b2a66e3df87a0c936dafb8c179fef71a..603522771ac51ee98ba8fabc970d7b20829df185 100644
> --- a/sysdeps/i386/fpu/e_acosf.S
> +++ b/sysdeps/i386/fpu/e_acosf.S
> @@ -5,6 +5,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: $")
>  
> @@ -21,4 +22,6 @@ ENTRY(__ieee754_acosf)
>  	fpatan
>  	ret
>  END (__ieee754_acosf)
> -strong_alias (__ieee754_acosf, __acosf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosf, __acosf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
> index 40066a6b07375bc11fee8d451c805927025f1548..940cb1cd3551a046c5212f575e3c2f09d17040fd 100644
> --- a/sysdeps/i386/fpu/e_acosh.S
> +++ b/sysdeps/i386/fpu/e_acosh.S
> @@ -18,6 +18,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -98,4 +99,6 @@ ENTRY(__ieee754_acosh)
>  	fdiv	%st, %st(0)
>  	ret
>  END(__ieee754_acosh)
> -strong_alias (__ieee754_acosh, __acosh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosh, __acosh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
> index adb7c240a590c5f9cb7eb4a4766b07fc81b2753b..e44210858273441f822eff1e3edbe929590d7dfd 100644
> --- a/sysdeps/i386/fpu/e_acoshf.S
> +++ b/sysdeps/i386/fpu/e_acoshf.S
> @@ -18,6 +18,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -98,4 +99,6 @@ ENTRY(__ieee754_acoshf)
>  	fdiv	%st, %st(0)
>  	ret
>  END(__ieee754_acoshf)
> -strong_alias (__ieee754_acoshf, __acoshf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acoshf, __acoshf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
> index 489d7905efd951c3ac26a8139f7ee7af30c6a613..fa3a3338e3301d035b55798bacba09071ae22874 100644
> --- a/sysdeps/i386/fpu/e_acoshl.S
> +++ b/sysdeps/i386/fpu/e_acoshl.S
> @@ -18,6 +18,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -104,4 +105,6 @@ ENTRY(__ieee754_acoshl)
>  	fdiv	%st, %st(0)
>  	ret
>  END(__ieee754_acoshl)
> -strong_alias (__ieee754_acoshl, __acoshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_acosl.c b/sysdeps/i386/fpu/e_acosl.c
> index ab0893192490923b471a83733474b2f89c5ee323..e64a772b7f2135a4cd84b48d9a05325c8e2242bf 100644
> --- a/sysdeps/i386/fpu/e_acosl.c
> +++ b/sysdeps/i386/fpu/e_acosl.c
> @@ -6,6 +6,7 @@
>   */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_acosl (long double x)
> @@ -26,4 +27,6 @@ __ieee754_acosl (long double x)
>  	: "=t" (res) : "0" (x) : "st(1)");
>    return res;
>  }
> -strong_alias (__ieee754_acosl, __acosl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosl, __acosl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_asin.S b/sysdeps/i386/fpu/e_asin.S
> index 39c8b47da4dc81dfd7fbdec1f090fb12b5e2a2f9..ea012032740f68b7aef46fdbd59399d7e37b4a11 100644
> --- a/sysdeps/i386/fpu/e_asin.S
> +++ b/sysdeps/i386/fpu/e_asin.S
> @@ -5,6 +5,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $")
>  
> @@ -35,4 +36,6 @@ ENTRY(__ieee754_asin)
>  	DBL_CHECK_FORCE_UFLOW
>  	ret
>  END (__ieee754_asin)
> -strong_alias (__ieee754_asin, __asin_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asin, __asin_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_asinf.S b/sysdeps/i386/fpu/e_asinf.S
> index 1102bdedfd327d3b31b8dcdb0974789a9a55cb99..d0bd4aac7ebbf6535085affd3cdf5366810e8f04 100644
> --- a/sysdeps/i386/fpu/e_asinf.S
> +++ b/sysdeps/i386/fpu/e_asinf.S
> @@ -6,6 +6,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: $")
>  
> @@ -36,4 +37,6 @@ ENTRY(__ieee754_asinf)
>  	FLT_CHECK_FORCE_UFLOW
>  	ret
>  END (__ieee754_asinf)
> -strong_alias (__ieee754_asinf, __asinf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asinf, __asinf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_atan2.S b/sysdeps/i386/fpu/e_atan2.S
> index 25f43bb5a12a5a20514eb5b4b07bb690c2e758da..df624d59fdd80a031af55237a3af87b533371d50 100644
> --- a/sysdeps/i386/fpu/e_atan2.S
> +++ b/sysdeps/i386/fpu/e_atan2.S
> @@ -5,6 +5,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: e_atan2.S,v 1.4 1995/05/08 23:46:28 jtc Exp $")
>  
> @@ -27,4 +28,6 @@ ENTRY(__ieee754_atan2)
>  	DBL_CHECK_FORCE_UFLOW_NARROW
>  	ret
>  END (__ieee754_atan2)
> -strong_alias (__ieee754_atan2, __atan2_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2, __atan2_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_atan2f.S b/sysdeps/i386/fpu/e_atan2f.S
> index 2bc909a76288a412bd30492cea5cccd1e0e72941..fc4ab19cbd0fdbecf4c82b31d7f915c2f3f14c2f 100644
> --- a/sysdeps/i386/fpu/e_atan2f.S
> +++ b/sysdeps/i386/fpu/e_atan2f.S
> @@ -5,6 +5,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: e_atan2f.S,v 1.1 1995/05/08 23:35:10 jtc Exp $")
>  
> @@ -27,4 +28,6 @@ ENTRY(__ieee754_atan2f)
>  	FLT_CHECK_FORCE_UFLOW_NARROW
>  	ret
>  END (__ieee754_atan2f)
> -strong_alias (__ieee754_atan2f, __atan2f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2f, __atan2f_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_atan2l.c b/sysdeps/i386/fpu/e_atan2l.c
> index 9f88bfcc08f1cf62674a20cf3322b38264fbeb61..f9dd31d95396cdbe7dda119e63a1805c4179341f 100644
> --- a/sysdeps/i386/fpu/e_atan2l.c
> +++ b/sysdeps/i386/fpu/e_atan2l.c
> @@ -6,6 +6,7 @@
>   */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_atan2l (long double y, long double x)
> @@ -16,4 +17,6 @@ __ieee754_atan2l (long double y, long double x)
>  
>    return res;
>  }
> -strong_alias (__ieee754_atan2l, __atan2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2l, __atan2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
> index 590545a3a72fbaf0d4fe71478de4dc5ca8c69f90..6409ad9272fb5c0967b6e30e88a842d9c402f263 100644
> --- a/sysdeps/i386/fpu/e_atanh.S
> +++ b/sysdeps/i386/fpu/e_atanh.S
> @@ -19,6 +19,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -109,4 +110,6 @@ ENTRY(__ieee754_atanh)
>  6:	fldl	4(%esp)
>  	ret
>  END(__ieee754_atanh)
> -strong_alias (__ieee754_atanh, __atanh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanh, __atanh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
> index c18adceb0d819d2ae14a6e3d0a18bbc045bf3120..f6f282d773ebed2a327c2c159524d888cdb420dd 100644
> --- a/sysdeps/i386/fpu/e_atanhf.S
> +++ b/sysdeps/i386/fpu/e_atanhf.S
> @@ -19,6 +19,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -106,4 +107,6 @@ ENTRY(__ieee754_atanhf)
>  5:	flds	4(%esp)
>  	ret
>  END(__ieee754_atanhf)
> -strong_alias (__ieee754_atanhf, __atanhf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanhf, __atanhf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
> index 00c3e6f904585c02be72b90b1c92a19002da0e5e..3e02c83d9074bd91ada5aa5d0ddc4df5e8f21b40 100644
> --- a/sysdeps/i386/fpu/e_atanhl.S
> +++ b/sysdeps/i386/fpu/e_atanhl.S
> @@ -18,6 +18,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -124,4 +125,6 @@ ENTRY(__ieee754_atanhl)
>  	fadd	%st(0)
>  	ret
>  END(__ieee754_atanhl)
> -strong_alias (__ieee754_atanhl, __atanhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_exp10.S b/sysdeps/i386/fpu/e_exp10.S
> index acb5160a3ff9b1544399d17a83e97be1a6c50850..dd937201352cce072c0dc9378734b1cef51b7cf7 100644
> --- a/sysdeps/i386/fpu/e_exp10.S
> +++ b/sysdeps/i386/fpu/e_exp10.S
> @@ -4,6 +4,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  DEFINE_DBL_MIN
>  
> @@ -50,4 +51,6 @@ ENTRY(__ieee754_exp10)
>  	fldz				/* Set result to 0.  */
>  2:	ret
>  END (__ieee754_exp10)
> -strong_alias (__ieee754_exp10, __exp10_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10, __exp10_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_exp10f.S b/sysdeps/i386/fpu/e_exp10f.S
> index 1812b34398fa4d48e51ef059c5348f455514407c..b4d713da07d98a58003b07a6ccffd03895f2ff12 100644
> --- a/sysdeps/i386/fpu/e_exp10f.S
> +++ b/sysdeps/i386/fpu/e_exp10f.S
> @@ -4,6 +4,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  DEFINE_FLT_MIN
>  
> @@ -50,4 +51,6 @@ ENTRY(__ieee754_exp10f)
>  	fldz				/* Set result to 0.  */
>  2:	ret
>  END (__ieee754_exp10f)
> -strong_alias (__ieee754_exp10f, __exp10f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10f, __exp10f_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_exp2.S b/sysdeps/i386/fpu/e_exp2.S
> index fc16a9605389555c5397de1b2994845b8d0a1263..c879eaf8c13703c881d00c4a08a645e13f7309b4 100644
> --- a/sysdeps/i386/fpu/e_exp2.S
> +++ b/sysdeps/i386/fpu/e_exp2.S
> @@ -6,6 +6,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  DEFINE_DBL_MIN
>  
> @@ -49,4 +50,6 @@ ENTRY(__ieee754_exp2)
>  	fldz				/* Set result to 0.  */
>  2:	ret
>  END (__ieee754_exp2)
> -strong_alias (__ieee754_exp2, __exp2_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp2, __exp2_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_exp2l.S b/sysdeps/i386/fpu/e_exp2l.S
> index c4cb73d589b09627c718e989e37db57194311ceb..7f987ca2aae90345e9c00501d97b9b8d28c13218 100644
> --- a/sysdeps/i386/fpu/e_exp2l.S
> +++ b/sysdeps/i386/fpu/e_exp2l.S
> @@ -6,6 +6,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  DEFINE_LDBL_MIN
>  
> @@ -57,4 +58,6 @@ ENTRY(__ieee754_exp2l)
>  	fldz				/* Set result to 0.  */
>  2:	ret
>  END (__ieee754_exp2l)
> -strong_alias (__ieee754_exp2l, __exp2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp2l, __exp2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_fmod.S b/sysdeps/i386/fpu/e_fmod.S
> index 26b3acc392e8c2896c8fc353de4be26ebb7551e1..10a9a05ac92e1eff0fe63dbd769c53fc1db1cc88 100644
> --- a/sysdeps/i386/fpu/e_fmod.S
> +++ b/sysdeps/i386/fpu/e_fmod.S
> @@ -4,6 +4,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_fmod)
>  	fldl	12(%esp)
> @@ -15,4 +16,6 @@ ENTRY(__ieee754_fmod)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_fmod)
> -strong_alias (__ieee754_fmod, __fmod_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmod, __fmod_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_fmodf.S b/sysdeps/i386/fpu/e_fmodf.S
> index ece4d984273011dbdfaac1b40e02813a2afe37c2..7ce93cfc697bf8d847f546cf044f2ccd0f60f26e 100644
> --- a/sysdeps/i386/fpu/e_fmodf.S
> +++ b/sysdeps/i386/fpu/e_fmodf.S
> @@ -5,6 +5,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_fmodf)
>  	flds	8(%esp)
> @@ -16,4 +17,6 @@ ENTRY(__ieee754_fmodf)
>  	fstp	%st(1)
>  	ret
>  END(__ieee754_fmodf)
> -strong_alias (__ieee754_fmodf, __fmodf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmodf, __fmodf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_fmodl.c b/sysdeps/i386/fpu/e_fmodl.c
> index 49700ae8f648c7dd29cb120f64dffdc59b92a900..48361eb3fc599188423210d6cc59cb4404c47c5d 100644
> --- a/sysdeps/i386/fpu/e_fmodl.c
> +++ b/sysdeps/i386/fpu/e_fmodl.c
> @@ -6,6 +6,7 @@
>   */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_fmodl (long double x, long double y)
> @@ -20,4 +21,6 @@ __ieee754_fmodl (long double x, long double y)
>         : "=t" (res) : "0" (x), "u" (y) : "ax", "st(1)");
>    return res;
>  }
> -strong_alias (__ieee754_fmodl, __fmodl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_hypot.S b/sysdeps/i386/fpu/e_hypot.S
> index affd3e56331eea7098548b5ba8426c7c09eb640f..0dac8a54074a680b1d89cd430a4a8375e57f15bd 100644
> --- a/sysdeps/i386/fpu/e_hypot.S
> +++ b/sysdeps/i386/fpu/e_hypot.S
> @@ -19,6 +19,7 @@
>  
>  #include <sysdep.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  DEFINE_DBL_MIN
>  
> @@ -72,4 +73,6 @@ ENTRY(__ieee754_hypot)
>  	jmp	2b
>  
>  END(__ieee754_hypot)
> -strong_alias (__ieee754_hypot, __hypot_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_hypotf.S b/sysdeps/i386/fpu/e_hypotf.S
> index 63495350fcd9380970f193b5fb9f03ed7175f590..69782bb6568b8f526d7adcd27984525269a0319b 100644
> --- a/sysdeps/i386/fpu/e_hypotf.S
> +++ b/sysdeps/i386/fpu/e_hypotf.S
> @@ -19,6 +19,7 @@
>  
>  #include <sysdep.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.text
>  ENTRY(__ieee754_hypotf)
> @@ -61,4 +62,6 @@ ENTRY(__ieee754_hypotf)
>  	jmp	2b
>  
>  END(__ieee754_hypotf)
> -strong_alias (__ieee754_hypotf, __hypotf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_log10.S b/sysdeps/i386/fpu/e_log10.S
> index 17277084ca9858cd4868ca0342b6b64d078ebc02..8520d02a9b92c16abb0970600e126933eff94bb9 100644
> --- a/sysdeps/i386/fpu/e_log10.S
> +++ b/sysdeps/i386/fpu/e_log10.S
> @@ -6,6 +6,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -65,4 +66,6 @@ ENTRY(__ieee754_log10)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_log10)
> -strong_alias (__ieee754_log10, __log10_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10, __log10_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
> index 72a3b882518dcc48aa90d0d8f8dc92d3f90434d9..b9776a1f275f7477cc1cd5806a13102486d31a01 100644
> --- a/sysdeps/i386/fpu/e_log10f.S
> +++ b/sysdeps/i386/fpu/e_log10f.S
> @@ -7,6 +7,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -66,4 +67,6 @@ ENTRY(__ieee754_log10f)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_log10f)
> -strong_alias (__ieee754_log10f, __log10f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10f, __log10f_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
> index 9326b197961abcfb1fbc995d74e07ee05ee43f0b..2bcb49b31b8b1ec2a794dcb6026ea1733a7b3995 100644
> --- a/sysdeps/i386/fpu/e_log10l.S
> +++ b/sysdeps/i386/fpu/e_log10l.S
> @@ -8,6 +8,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -68,4 +69,6 @@ ENTRY(__ieee754_log10l)
>  	fadd	%st(0)
>  	ret
>  END(__ieee754_log10l)
> -strong_alias (__ieee754_log10l, __log10l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10l, __log10l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_log2.S b/sysdeps/i386/fpu/e_log2.S
> index 73ff0fffd386e6fb0714b63a7fd2885db51dbf5a..185b83ee796af0c9b9297dab608f9a2741129a6f 100644
> --- a/sysdeps/i386/fpu/e_log2.S
> +++ b/sysdeps/i386/fpu/e_log2.S
> @@ -7,6 +7,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -66,4 +67,6 @@ ENTRY(__ieee754_log2)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_log2)
> -strong_alias (__ieee754_log2, __log2_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log2, __log2_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_log2l.S b/sysdeps/i386/fpu/e_log2l.S
> index 73e62ea908e316aa279531faf632ca8f62543a5a..5edce67330f59b6bd5b030d6dcf1252babf30e27 100644
> --- a/sysdeps/i386/fpu/e_log2l.S
> +++ b/sysdeps/i386/fpu/e_log2l.S
> @@ -7,6 +7,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -67,4 +68,6 @@ ENTRY(__ieee754_log2l)
>  	fadd	%st(0)
>  	ret
>  END (__ieee754_log2l)
> -strong_alias (__ieee754_log2l, __log2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log2l, __log2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_pow.S b/sysdeps/i386/fpu/e_pow.S
> index bfab8e1eb31f3a091a76841f306f0f5d38c08e9b..5dc4a1562a5d3eb894739552114aa07fe3d0cc64 100644
> --- a/sysdeps/i386/fpu/e_pow.S
> +++ b/sysdeps/i386/fpu/e_pow.S
> @@ -19,6 +19,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -453,4 +454,6 @@ ENTRY(__ieee754_pow)
>  	ret
>  
>  END(__ieee754_pow)
> -strong_alias (__ieee754_pow, __pow_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_pow, __pow_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S
> index fdd5c01af33ddf03fe216094a3f7435e36886fa1..48fbe7a7f525c9efd2e38c0cfc2435aacc847c9d 100644
> --- a/sysdeps/i386/fpu/e_powl.S
> +++ b/sysdeps/i386/fpu/e_powl.S
> @@ -19,6 +19,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -456,4 +457,6 @@ ENTRY(__ieee754_powl)
>  	ret
>  
>  END(__ieee754_powl)
> -strong_alias (__ieee754_powl, __powl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_remainder.S b/sysdeps/i386/fpu/e_remainder.S
> index f7867aa90b26f5547bb89d399c23bbfc7c7d32d5..3e00a7ee409f3a101105f80e58c02e8bdc7c7051 100644
> --- a/sysdeps/i386/fpu/e_remainder.S
> +++ b/sysdeps/i386/fpu/e_remainder.S
> @@ -4,6 +4,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_remainder)
>  	fldl	12(%esp)
> @@ -15,4 +16,6 @@ ENTRY(__ieee754_remainder)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_remainder)
> -strong_alias (__ieee754_remainder, __remainder_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainder, __remainder_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_remainderf.S b/sysdeps/i386/fpu/e_remainderf.S
> index cfd390bc69c84d61b32e09891ce51161f1277072..4b6c31e583e2e4c70940fcd67f2111fd2603468e 100644
> --- a/sysdeps/i386/fpu/e_remainderf.S
> +++ b/sysdeps/i386/fpu/e_remainderf.S
> @@ -4,6 +4,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_remainderf)
>  	flds	8(%esp)
> @@ -15,4 +16,6 @@ ENTRY(__ieee754_remainderf)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_remainderf)
> -strong_alias (__ieee754_remainderf, __remainderf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainderf, __remainderf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_remainderl.S b/sysdeps/i386/fpu/e_remainderl.S
> index 5ec23a37a36783274fa503a4b1c32d6f46d87774..daf715963104f6b4aa8337796ab8f53a61d97d0a 100644
> --- a/sysdeps/i386/fpu/e_remainderl.S
> +++ b/sysdeps/i386/fpu/e_remainderl.S
> @@ -6,6 +6,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_remainderl)
>  	fldt	16(%esp)
> @@ -17,4 +18,6 @@ ENTRY(__ieee754_remainderl)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_remainderl)
> -strong_alias (__ieee754_remainderl, __remainderl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
> index 370924c29fb98dffe46fc60afa0d37607f88a4e8..4df4c5881c598def90ec29256d89332b9077d40a 100644
> --- a/sysdeps/i386/fpu/e_scalb.S
> +++ b/sysdeps/i386/fpu/e_scalb.S
> @@ -7,6 +7,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -97,4 +98,6 @@ ENTRY(__ieee754_scalb)
>  	fdiv	%st
>  	ret
>  END(__ieee754_scalb)
> -strong_alias (__ieee754_scalb, __scalb_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalb, __scalb_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
> index 4f2dfa3acf7287dafcf8a1f7c41be6609c5e1754..61c14a5ab4d35bb72e9327de6c9f07e256eac1e7 100644
> --- a/sysdeps/i386/fpu/e_scalbf.S
> +++ b/sysdeps/i386/fpu/e_scalbf.S
> @@ -8,6 +8,7 @@
>  
>  #include <machine/asm.h>
>  #include <i386-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -99,4 +100,6 @@ ENTRY(__ieee754_scalbf)
>  	fdiv	%st
>  	ret
>  END(__ieee754_scalbf)
> -strong_alias (__ieee754_scalbf, __scalbf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalbf, __scalbf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
> index 896f599cb061e2cb513b7fd729a2e9cc1000f88a..7a8b14c8ee779c41275807b601117499e7dd582d 100644
> --- a/sysdeps/i386/fpu/e_scalbl.S
> +++ b/sysdeps/i386/fpu/e_scalbl.S
> @@ -8,6 +8,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -87,4 +88,6 @@ ENTRY(__ieee754_scalbl)
>  	fdiv	%st
>  	ret
>  END(__ieee754_scalbl)
> -strong_alias (__ieee754_scalbl, __scalbl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalbl, __scalbl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_sqrt.S b/sysdeps/i386/fpu/e_sqrt.S
> index fba5833a9a46c2babde9596bd11a4b027dabd5bc..eb0089b6cc4e1d11cb93c0db961c47693a9304da 100644
> --- a/sysdeps/i386/fpu/e_sqrt.S
> +++ b/sysdeps/i386/fpu/e_sqrt.S
> @@ -4,6 +4,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_sqrt)
>  	fldl	4(%esp)
> @@ -20,4 +21,6 @@ ENTRY(__ieee754_sqrt)
>  	cfi_adjust_cfa_offset (-8)
>  	ret
>  END (__ieee754_sqrt)
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_sqrtf.S b/sysdeps/i386/fpu/e_sqrtf.S
> index 6f7e4b015fd9fbe685598f5dde8cd104e892df3f..b86c7fcb7fbf9f08d882cfcfb6345073fabbd469 100644
> --- a/sysdeps/i386/fpu/e_sqrtf.S
> +++ b/sysdeps/i386/fpu/e_sqrtf.S
> @@ -4,10 +4,13 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_sqrtf)
>  	flds	4(%esp)
>  	fsqrt
>  	ret
>  END (__ieee754_sqrtf)
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/fpu/e_sqrtl.c b/sysdeps/i386/fpu/e_sqrtl.c
> index 41bcd7eeb70b5748648840a7803425497711beb8..69e29cc266fd6db4cda2b320ed08b957d00884de 100644
> --- a/sysdeps/i386/fpu/e_sqrtl.c
> +++ b/sysdeps/i386/fpu/e_sqrtl.c
> @@ -6,6 +6,7 @@
>   */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  #undef __ieee754_sqrtl
>  long double
> @@ -17,4 +18,6 @@ __ieee754_sqrtl (long double x)
>  
>    return res;
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
> index ed9dedec9167564b99c9fea3fc102601df6a999f..529a00ba7b925835703f7c620fa37f1814cda909 100644
> --- a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
> +++ b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
> @@ -20,20 +20,22 @@ extern float __redirect_exp2f (float);
>  
>  #define SYMBOL_NAME exp2f
>  #include "ifunc-sse2.h"
> +#include <shlib-compat.h>
>  
>  libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
>  
>  #include <libm-alias-float.h>
>  #ifdef SHARED
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
>  libm_alias_float_other (__exp2, exp2)
>  #else
>  libm_alias_float (__exp2, exp2)
>  #endif
>  
>  strong_alias (__exp2f, __ieee754_exp2f)
> -strong_alias (__exp2f, __exp2f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __exp2f, __exp2f_finite, GLIBC_2_15);
> +#endif
>  
>  #define __exp2f __exp2f_ia32
>  #include <sysdeps/ieee754/flt-32/e_exp2f.c>

As before, there is no need to change the versioned_symbol definition. Just change
the strong_alias (__exp2f, __exp2f_finite) to libm_alias_finite (__ieee754_exp2f, __exp2f).


> diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf.c b/sysdeps/i386/i686/fpu/multiarch/e_expf.c
> index 500be0e59a6ed47f7e3c50997f15718fbda4ddce..d2ef615c559d707f52903904266100636b51d1ce 100644
> --- a/sysdeps/i386/i686/fpu/multiarch/e_expf.c
> +++ b/sysdeps/i386/i686/fpu/multiarch/e_expf.c
> @@ -20,6 +20,7 @@ extern float __redirect_expf (float);
>  
>  #define SYMBOL_NAME expf
>  #include "ifunc-sse2.h"
> +#include <shlib-compat.h>
>  
>  libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
>  
> @@ -28,15 +29,16 @@ libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
>  __hidden_ver1 (__expf_ia32, __GI___expf, __redirect_expf)
>    __attribute__ ((visibility ("hidden"))) __THROW;
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __expf, expf, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
>  libm_alias_float_other (__exp, exp)
>  #else
>  libm_alias_float (__exp, exp)
>  #endif
>  
>  strong_alias (__expf, __ieee754_expf)
> -strong_alias (__expf, __expf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __expf, __expf_finite, GLIBC_2_15);
> +#endif
>  
>  #define __expf __expf_ia32
>  #include <sysdeps/ieee754/flt-32/e_expf.c>
> diff --git a/sysdeps/i386/i686/fpu/multiarch/e_log2f.c b/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
> index 7afccf730fd35715307224ff2c289f5d96b575a2..c5a8e36dd6675e6476c5825be81490ae4c06e7dd 100644
> --- a/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
> +++ b/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
> @@ -20,6 +20,7 @@ extern float __redirect_log2f (float);
>  
>  #define SYMBOL_NAME log2f
>  #include "ifunc-sse2.h"
> +#include <shlib-compat.h>
>  
>  libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
>  
> @@ -28,15 +29,16 @@ libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
>  __hidden_ver1 (__log2f_ia32, __GI___log2f, __redirect_log2f)
>    __attribute__ ((visibility ("hidden"))) __THROW;
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
>  libm_alias_float_other (__log2, log2)
>  #else
>  libm_alias_float (__log2, log2)
>  #endif
>  
>  strong_alias (__log2f, __ieee754_log2f)
> -strong_alias (__log2f, __log2f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __log2f, __log2f_finite, GLIBC_2_15);
> +#endif
>  
>  #define __log2f __log2f_ia32
>  #include <sysdeps/ieee754/flt-32/e_log2f.c>
> diff --git a/sysdeps/i386/i686/fpu/multiarch/e_logf.c b/sysdeps/i386/i686/fpu/multiarch/e_logf.c
> index 0584a53c787fc20b52922e9a0dfd0b26ffd5b8b7..32b3e6a494d7511ade4b8added950e0ff26b1681 100644
> --- a/sysdeps/i386/i686/fpu/multiarch/e_logf.c
> +++ b/sysdeps/i386/i686/fpu/multiarch/e_logf.c
> @@ -20,6 +20,7 @@ extern float __redirect_logf (float);
>  
>  #define SYMBOL_NAME logf
>  #include "ifunc-sse2.h"
> +#include <shlib-compat.h>
>  
>  libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
>  
> @@ -28,15 +29,16 @@ libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
>  __hidden_ver1 (__logf_ia32, __GI___logf, __redirect_logf)
>    __attribute__ ((visibility ("hidden"))) __THROW;
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __logf, logf, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
>  libm_alias_float_other (__log, log)
>  #else
>  libm_alias_float (__log, log)
>  #endif
>  
>  strong_alias (__logf, __ieee754_logf)
> -strong_alias (__logf, __logf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __logf, __logf_finite, GLIBC_2_15);
> +#endif
>  
>  #define __logf __logf_ia32
>  #include <sysdeps/ieee754/flt-32/e_logf.c>
> diff --git a/sysdeps/i386/i686/fpu/multiarch/e_powf.c b/sysdeps/i386/i686/fpu/multiarch/e_powf.c
> index 1d36d3a6e5c3a976b5409295cddc995d78eff077..8ad4370c57dc0af1c283d63e647263070f95b19c 100644
> --- a/sysdeps/i386/i686/fpu/multiarch/e_powf.c
> +++ b/sysdeps/i386/i686/fpu/multiarch/e_powf.c
> @@ -23,6 +23,7 @@
>  
>  #define SYMBOL_NAME powf
>  #include "ifunc-sse2.h"
> +#include <shlib-compat.h>
>  
>  libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
>  
> @@ -31,15 +32,16 @@ libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
>  __hidden_ver1 (__powf_ia32, __GI___powf, __redirect_powf)
>    __attribute__ ((visibility ("hidden")));
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __powf, powf, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
>  libm_alias_float_other (__pow, pow)
>  #else
>  libm_alias_float (__pow, pow)
>  #endif
>  
>  strong_alias (__powf, __ieee754_powf)
> -strong_alias (__powf, __powf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __powf, __powf_finite, GLIBC_2_15);
> +#endif
>  
>  #define __powf __powf_ia32
>  #include <sysdeps/ieee754/flt-32/e_powf.c>
> diff --git a/sysdeps/ieee754/dbl-64/e_acosh.c b/sysdeps/ieee754/dbl-64/e_acosh.c
> index fe0c375f00428db93abd5db02be3b3be6940bda5..6931b0c757fe047356e03bd300fa134b82981c60 100644
> --- a/sysdeps/ieee754/dbl-64/e_acosh.c
> +++ b/sysdeps/ieee754/dbl-64/e_acosh.c
> @@ -26,6 +26,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const double
>    one = 1.0,
> @@ -66,4 +67,6 @@ __ieee754_acosh (double x)
>        return __log1p (t + sqrt (2.0 * t + t * t));
>      }
>  }
> -strong_alias (__ieee754_acosh, __acosh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosh, __acosh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_asin.c b/sysdeps/ieee754/dbl-64/e_asin.c
> index 06934a4c06f0fed6d2d5ce8aa5ec73c84a7a9eb4..f96dfb39d9b0fdcb48b16bb533318cb704ce9737 100644
> --- a/sysdeps/ieee754/dbl-64/e_asin.c
> +++ b/sysdeps/ieee754/dbl-64/e_asin.c
> @@ -43,6 +43,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  #ifndef SECTION
>  # define SECTION
> @@ -334,7 +335,9 @@ __ieee754_asin(double x){
>   }
>  }
>  #ifndef __ieee754_asin
> -strong_alias (__ieee754_asin, __asin_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asin, __asin_finite, GLIBC_2_15);
> +# endif
>  #endif
>  
>  /*******************************************************************/
> @@ -644,5 +647,7 @@ __ieee754_acos(double x)
>    }
>  }
>  #ifndef __ieee754_acos
> -strong_alias (__ieee754_acos, __acos_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acos, __acos_finite, GLIBC_2_15);
> +# endif
>  #endif
> diff --git a/sysdeps/ieee754/dbl-64/e_atan2.c b/sysdeps/ieee754/dbl-64/e_atan2.c
> index fad794313a28f23e5f4890b306082a4fa03d9b67..498e02c5167b9aeee16e415b9b871360ded7da1e 100644
> --- a/sysdeps/ieee754/dbl-64/e_atan2.c
> +++ b/sysdeps/ieee754/dbl-64/e_atan2.c
> @@ -48,6 +48,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <stap-probe.h>
> +#include <shlib-compat.h>
>  
>  #ifndef SECTION
>  # define SECTION
> @@ -570,7 +571,9 @@ __ieee754_atan2 (double y, double x)
>  }
>  
>  #ifndef __ieee754_atan2
> -strong_alias (__ieee754_atan2, __atan2_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2, __atan2_finite, GLIBC_2_15);
> +# endif
>  #endif
>  
>  /* Treat the Denormalized case */
> diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c
> index cb3c4c804666daebef061e20921e015be08e5c67..3b72de1f586da445187c36ead732404f45314332 100644
> --- a/sysdeps/ieee754/dbl-64/e_atanh.c
> +++ b/sysdeps/ieee754/dbl-64/e_atanh.c
> @@ -41,6 +41,7 @@
>  #include <math-barriers.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const double huge = 1e300;
>  
> @@ -73,4 +74,6 @@ __ieee754_atanh (double x)
>  
>    return copysign (t, x);
>  }
> -strong_alias (__ieee754_atanh, __atanh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanh, __atanh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_cosh.c b/sysdeps/ieee754/dbl-64/e_cosh.c
> index ae2180aa89d50341cb7554ae314d1f7805b52493..bc939d67c30afcf62db483fc8d0cee04478fa2a1 100644
> --- a/sysdeps/ieee754/dbl-64/e_cosh.c
> +++ b/sysdeps/ieee754/dbl-64/e_cosh.c
> @@ -34,6 +34,7 @@
>  #include <math.h>
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const double one = 1.0, half = 0.5, huge = 1.0e300;
>  
> @@ -86,4 +87,6 @@ __ieee754_cosh (double x)
>    /* |x| > overflowthresold, cosh(x) overflow */
>    return math_narrow_eval (huge * huge);
>  }
> -strong_alias (__ieee754_cosh, __cosh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_cosh, __cosh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c
> index 853d6ca7618e9dc8bbc777286a3b8a7144465288..2a41835efaf0de367fdeb0ceee2550fc119b667c 100644
> --- a/sysdeps/ieee754/dbl-64/e_exp.c
> +++ b/sysdeps/ieee754/dbl-64/e_exp.c
> @@ -159,9 +159,11 @@ __exp (double x)
>  #ifndef __exp
>  hidden_def (__exp)
>  strong_alias (__exp, __ieee754_exp)
> -strong_alias (__exp, __exp_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __exp, __exp_finite, GLIBC_2_15);
> +# endif
>  # if LIBM_SVID_COMPAT
> -versioned_symbol (libm, __exp, exp, GLIBC_2_29);
> +versioned_symbol (libm, __ieee754_exp, exp, GLIBC_2_29);
>  libm_alias_double_other (__exp, exp)
>  # else
>  libm_alias_double (__exp, exp)
> diff --git a/sysdeps/ieee754/dbl-64/e_exp10.c b/sysdeps/ieee754/dbl-64/e_exp10.c
> index 34d12493bd7288f88eb53f1f6922e45438c32168..ef71655ab5b5205c6b4deaf72a6aeb6ffc2e3862 100644
> --- a/sysdeps/ieee754/dbl-64/e_exp10.c
> +++ b/sysdeps/ieee754/dbl-64/e_exp10.c
> @@ -18,6 +18,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  static const double log10_high = 0x2.4d7637p0;
>  static const double log10_low = 0x7.6aaa2b05ba95cp-28;
> @@ -47,4 +48,6 @@ __ieee754_exp10 (double arg)
>    exp_low = arg_high * log10_low + arg_low * M_LN10;
>    return __ieee754_exp (exp_high) * __ieee754_exp (exp_low);
>  }
> -strong_alias (__ieee754_exp10, __exp10_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10, __exp10_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c
> index 22cade8b297985695960215ee9bca8262dc98ef0..028b318a83daa49a02c2762da46a1d4a132be027 100644
> --- a/sysdeps/ieee754/dbl-64/e_exp2.c
> +++ b/sysdeps/ieee754/dbl-64/e_exp2.c
> @@ -145,9 +145,11 @@ __exp2 (double x)
>  }
>  #ifndef __exp2
>  strong_alias (__exp2, __ieee754_exp2)
> -strong_alias (__exp2, __exp2_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __exp2, __exp2_finite, GLIBC_2_15);
> +# endif
>  # if LIBM_SVID_COMPAT
> -versioned_symbol (libm, __exp2, exp2, GLIBC_2_29);
> +versioned_symbol (libm, __ieee754_exp2, exp2, GLIBC_2_29);
>  libm_alias_double_other (__exp2, exp2)
>  # else
>  libm_alias_double (__exp2, exp2)
> diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
> index 1a8c14dc2a2736c97bf16f54a6a7de28e01f3854..5523911700698dafdad8e7606274ddb3972d3975 100644
> --- a/sysdeps/ieee754/dbl-64/e_fmod.c
> +++ b/sysdeps/ieee754/dbl-64/e_fmod.c
> @@ -17,6 +17,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const double one = 1.0, Zero[] = { 0.0, -0.0, };
>  
> @@ -170,4 +171,6 @@ __ieee754_fmod (double x, double y)
>      }
>    return x;                     /* exact output */
>  }
> -strong_alias (__ieee754_fmod, __fmod_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmod, __fmod_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c
> index 57b09e558d685ef4d4ebbbdf21071962ea048364..552d5998f9f84bca6ac8338ecddd10dfe2cc3b55 100644
> --- a/sysdeps/ieee754/dbl-64/e_gamma_r.c
> +++ b/sysdeps/ieee754/dbl-64/e_gamma_r.c
> @@ -23,6 +23,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
>     approximation to gamma function.  */
> @@ -220,4 +221,6 @@ __ieee754_gamma_r (double x, int *signgamp)
>    else
>      return ret;
>  }
> -strong_alias (__ieee754_gamma_r, __gamma_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_gamma_r, __gamma_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c
> index a2c33cc4edb2df3e99bd233821ec0d9fa79412d2..622cda3af9edc32e0ec30c2b86ce85496d84b48d 100644
> --- a/sysdeps/ieee754/dbl-64/e_hypot.c
> +++ b/sysdeps/ieee754/dbl-64/e_hypot.c
> @@ -45,6 +45,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  double
>  __ieee754_hypot (double x, double y)
> @@ -159,4 +160,8 @@ __ieee754_hypot (double x, double y)
>    else
>      return w;
>  }
> -strong_alias (__ieee754_hypot, __hypot_finite)
> +#ifndef __ieee754_hypot
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
> +# endif
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_j0.c b/sysdeps/ieee754/dbl-64/e_j0.c
> index 7f5919910d2d012d4f60ab7861f57cb637ed18ea..85235e2f1099204e83f5d1d407860096911bdba8 100644
> --- a/sysdeps/ieee754/dbl-64/e_j0.c
> +++ b/sysdeps/ieee754/dbl-64/e_j0.c
> @@ -61,6 +61,7 @@
>  #include <math.h>
>  #include <math-barriers.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static double pzero (double), qzero (double);
>  
> @@ -143,7 +144,9 @@ __ieee754_j0 (double x)
>        return ((one + u) * (one - u) + z * (r / s));
>      }
>  }
> -strong_alias (__ieee754_j0, __j0_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm,__ieee754_j0, __j0_finite, GLIBC_2_15);
> +#endif
>  
>  static const double
>  U[] = { -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
> @@ -223,7 +226,9 @@ __ieee754_y0 (double x)
>    v = v1 + z2 * v2 + z4 * V[3];
>    return (u / v + tpi * (__ieee754_j0 (x) * __ieee754_log (x)));
>  }
> -strong_alias (__ieee754_y0, __y0_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm,__ieee754_y0, __y0_finite, GLIBC_2_15);
> +#endif
>  
>  /* The asymptotic expansions of pzero is
>   *	1 - 9/128 s^2 + 11025/98304 s^4 - ...,	where s = 1/x.
> diff --git a/sysdeps/ieee754/dbl-64/e_j1.c b/sysdeps/ieee754/dbl-64/e_j1.c
> index 734f3ca64a5d983c2dc277db5ad799d055167f48..3368a5897bb9d5f149e3cc67d62e5e7c2063e950 100644
> --- a/sysdeps/ieee754/dbl-64/e_j1.c
> +++ b/sysdeps/ieee754/dbl-64/e_j1.c
> @@ -64,6 +64,7 @@
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static double pone (double), qone (double);
>  
> @@ -147,7 +148,9 @@ __ieee754_j1 (double x)
>    s = s1 + z2 * s2 + z4 * s3;
>    return (x * 0.5 + r / s);
>  }
> -strong_alias (__ieee754_j1, __j1_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j1, __j1_finite, GLIBC_2_15);
> +#endif
>  
>  static const double U0[5] = {
>   -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
> @@ -230,7 +233,9 @@ __ieee754_y1 (double x)
>    v = v1 + z2 * v2 + z4 * v3;
>    return (x * (u / v) + tpi * (__ieee754_j1 (x) * __ieee754_log (x) - one / x));
>  }
> -strong_alias (__ieee754_y1, __y1_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y1, __y1_finite, GLIBC_2_15);
> +#endif
>  
>  /* For x >= 8, the asymptotic expansions of pone is
>   *	1 + 15/128 s^2 - 4725/2^15 s^4 - ...,	where s = 1/x.
> diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c
> index 90a7e772709491411f2722d314d2aaff85f48ca9..a2c1c5b5cd1d26a43905fade5295c4b9c2e89a88 100644
> --- a/sysdeps/ieee754/dbl-64/e_jn.c
> +++ b/sysdeps/ieee754/dbl-64/e_jn.c
> @@ -43,6 +43,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const double
>    invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
> @@ -258,7 +259,9 @@ __ieee754_jn (int n, double x)
>      math_check_force_underflow (ret);
>    return ret;
>  }
> -strong_alias (__ieee754_jn, __jn_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_jn, __jn_finite, GLIBC_2_15);
> +#endif
>  
>  double
>  __ieee754_yn (int n, double x)
> @@ -349,4 +352,6 @@ __ieee754_yn (int n, double x)
>      ret = copysign (DBL_MAX, ret) * DBL_MAX;
>    return ret;
>  }
> -strong_alias (__ieee754_yn, __yn_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_yn, __yn_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
> index 88051bc75bc44cd23e3efabf7ad17dbb17264816..a4b2c23369dcedd341d439989f38a5a26b71c937 100644
> --- a/sysdeps/ieee754/dbl-64/e_lgamma_r.c
> +++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
> @@ -81,6 +81,7 @@
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
>  #include <libc-diag.h>
> +#include <shlib-compat.h>
>  
>  static const double
>  two52=  4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
> @@ -308,4 +309,6 @@ __ieee754_lgamma_r(double x, int *signgamp)
>  	DIAG_POP_NEEDS_COMMENT;
>  	return r;
>  }
> -strong_alias (__ieee754_lgamma_r, __lgamma_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_lgamma_r, __lgamma_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c
> index a04d73bd8895b74611ebf7d5a7d14151547fd673..ef674c7f175d4221563ddfb0fe2b5c4a8da8ad7b 100644
> --- a/sysdeps/ieee754/dbl-64/e_log.c
> +++ b/sysdeps/ieee754/dbl-64/e_log.c
> @@ -132,9 +132,11 @@ __log (double x)
>  }
>  #ifndef __log
>  strong_alias (__log, __ieee754_log)
> -strong_alias (__log, __log_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __log, __log_finite, GLIBC_2_15);
> +# endif
>  # if LIBM_SVID_COMPAT
> -versioned_symbol (libm, __log, log, GLIBC_2_29);
> +versioned_symbol (libm, __ieee754_log, log, GLIBC_2_29);
>  libm_alias_double_other (__log, log)
>  # else
>  libm_alias_double (__log, log)
> diff --git a/sysdeps/ieee754/dbl-64/e_log10.c b/sysdeps/ieee754/dbl-64/e_log10.c
> index 677cbc4df8739521c50a72d5ab657f438c74c129..c294ea8abeec844d44a546d46772d925ab71e1ed 100644
> --- a/sysdeps/ieee754/dbl-64/e_log10.c
> +++ b/sysdeps/ieee754/dbl-64/e_log10.c
> @@ -46,6 +46,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <fix-int-fp-convert-zero.h>
> +#include <shlib-compat.h>
>  
>  static const double two54 = 1.80143985094819840000e+16;         /* 0x43500000, 0x00000000 */
>  static const double ivln10 = 4.34294481903251816668e-01;        /* 0x3FDBCB7B, 0x1526E50E */
> @@ -84,5 +85,6 @@ __ieee754_log10 (double x)
>    z = y * log10_2lo + ivln10 * __ieee754_log (x);
>    return z + y * log10_2hi;
>  }
> -
> -strong_alias (__ieee754_log10, __log10_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10, __log10_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_log2.c b/sysdeps/ieee754/dbl-64/e_log2.c
> index c89c2ecb1cbeffc5ae007b71bb8a34dde670d84f..a6f64ca5c8753c6b7a30eb6cbb54595c3d703101 100644
> --- a/sysdeps/ieee754/dbl-64/e_log2.c
> +++ b/sysdeps/ieee754/dbl-64/e_log2.c
> @@ -141,9 +141,11 @@ __log2 (double x)
>  }
>  #ifndef __log2
>  strong_alias (__log2, __ieee754_log2)
> -strong_alias (__log2, __log2_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __log2, __log2_finite, GLIBC_2_15);
> +# endif
>  # if LIBM_SVID_COMPAT
> -versioned_symbol (libm, __log2, log2, GLIBC_2_29);
> +versioned_symbol (libm, __ieee754_log2, log2, GLIBC_2_29);
>  libm_alias_double_other (__log2, log2)
>  # else
>  libm_alias_double (__log2, log2)
> diff --git a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c
> index d4b9378fe382d9e237aa0b59466283452dc18bdb..6b47c17c0df50f98f655f188e986947726e7dbf1 100644
> --- a/sysdeps/ieee754/dbl-64/e_pow.c
> +++ b/sysdeps/ieee754/dbl-64/e_pow.c
> @@ -380,9 +380,11 @@ __pow (double x, double y)
>  }
>  #ifndef __pow
>  strong_alias (__pow, __ieee754_pow)
> -strong_alias (__pow, __pow_finite)
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __pow, __pow_finite, GLIBC_2_15);
> +# endif
>  # if LIBM_SVID_COMPAT
> -versioned_symbol (libm, __pow, pow, GLIBC_2_29);
> +versioned_symbol (libm, __ieee754_pow, pow, GLIBC_2_29);
>  libm_alias_double_other (__pow, pow)
>  # else
>  libm_alias_double (__pow, pow)
> diff --git a/sysdeps/ieee754/dbl-64/e_remainder.c b/sysdeps/ieee754/dbl-64/e_remainder.c
> index 33cb48b8e3083eef0c06a82829807416c38bdcf9..88c21fdfbd9520b3d5e693a6b14308fa204dc376 100644
> --- a/sysdeps/ieee754/dbl-64/e_remainder.c
> +++ b/sysdeps/ieee754/dbl-64/e_remainder.c
> @@ -36,6 +36,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <fenv_private.h>
> +#include <shlib-compat.h>
>  
>  /**************************************************************************/
>  /* An ultimate remainder routine. Given two IEEE double machine numbers x */
> @@ -150,4 +151,6 @@ __ieee754_remainder (double x, double y)
>  	}
>      }
>  }
> -strong_alias (__ieee754_remainder, __remainder_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainder, __remainder_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_sinh.c b/sysdeps/ieee754/dbl-64/e_sinh.c
> index c4e34211ac0e166cc89a567cb3a5ace9e8f888d9..53b6a815e0e09caa234e3738f2d4772acb4aa3df 100644
> --- a/sysdeps/ieee754/dbl-64/e_sinh.c
> +++ b/sysdeps/ieee754/dbl-64/e_sinh.c
> @@ -37,6 +37,7 @@ static char rcsid[] = "$NetBSD: e_sinh.c,v 1.7 1995/05/10 20:46:13 jtc Exp $";
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const double one = 1.0, shuge = 1.0e307;
>  
> @@ -89,4 +90,6 @@ __ieee754_sinh (double x)
>    /* |x| > overflowthresold, sinh(x) overflow */
>    return math_narrow_eval (x * shuge);
>  }
> -strong_alias (__ieee754_sinh, __sinh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sinh, __sinh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/e_sqrt.c b/sysdeps/ieee754/dbl-64/e_sqrt.c
> index ea1f05e69a07e76c8f72cf7367adfa857756f02e..98f89ff5b99f6a6851bfddd73966a93b34ec6d15 100644
> --- a/sysdeps/ieee754/dbl-64/e_sqrt.c
> +++ b/sysdeps/ieee754/dbl-64/e_sqrt.c
> @@ -40,6 +40,7 @@
>  #include <math-barriers.h>
>  #include <math_private.h>
>  #include <fenv_private.h>
> +#include <shlib-compat.h>
>  
>  /*********************************************************************/
>  /* An ultimate sqrt routine. Given an IEEE double machine number x   */
> @@ -138,4 +139,8 @@ __ieee754_sqrt (double x)
>        return 0x1p-256 * __ieee754_sqrt (x * 0x1p512);
>      }
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#ifndef __ieee754_sqrt
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +# endif
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
> index 0af05a02221f8a86cc91265b1edda70b59b7bb30..298a88f56c6ee221fb99bbd6dd8264c332550b20 100644
> --- a/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
> +++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
> @@ -26,6 +26,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const double
>  one	= 1.0,
> @@ -64,4 +65,6 @@ __ieee754_acosh (double x)
>    else					/* x < 1 */
>      return (x - x) / (x - x);
>  }
> -strong_alias (__ieee754_acosh, __acosh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosh, __acosh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
> index fca80b13f975bf32c93c0fffa63dab732621bb35..2b6e35f3725839ac096c7f7623a36e9379ea8a6e 100644
> --- a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
> +++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
> @@ -33,6 +33,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const double one = 1.0, half=0.5, huge = 1.0e300;
>  
> @@ -81,4 +82,6 @@ __ieee754_cosh (double x)
>      /* |x| > overflowthresold, cosh(x) overflow */
>  	return huge*huge;
>  }
> -strong_alias (__ieee754_cosh, __cosh_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_cosh, __cosh_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
> index f686bb670681dd63f73f44ab355368d8e426c135..02ff49d7fddf2939f4efe7e7695c1977415462cf 100644
> --- a/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
> +++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
> @@ -19,6 +19,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <stdint.h>
> +#include <shlib-compat.h>
>  
>  static const double one = 1.0, Zero[] = {0.0, -0.0,};
>  
> @@ -102,4 +103,6 @@ __ieee754_fmod (double x, double y)
>  	}
>  	return x;		/* exact output */
>  }
> -strong_alias (__ieee754_fmod, __fmod_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmod, __fmod_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
> index cd5567182fda17d74ad53d46b0e67d97ea6c52a4..be26ee848638fb53a9277d657abf9431730ea56e 100644
> --- a/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
> +++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
> @@ -46,6 +46,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <stdint.h>
> +#include <shlib-compat.h>
>  
>  static const double two54 = 1.80143985094819840000e+16;		/* 0x4350000000000000 */
>  static const double ivln10 = 4.34294481903251816668e-01;	/* 0x3FDBCB7B1526E50E */
> @@ -83,5 +84,6 @@ __ieee754_log10 (double x)
>    z = y * log10_2lo + ivln10 * __ieee754_log (x);
>    return z + y * log10_2hi;
>  }
> -
> -strong_alias (__ieee754_log10, __log10_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10, __log10_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
> index f3917b463837e9eb19d18c62ba232d9bb077e9a1..c7bb208efb024030f0ae7cc71a01dab1d42c4fa1 100644
> --- a/sysdeps/ieee754/float128/float128_private.h
> +++ b/sysdeps/ieee754/float128/float128_private.h
> @@ -365,3 +365,12 @@ mul_splitf128 (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y)
>    *lo = (((x1 * y1 - *hi) + x1 * y2) + x2 * y1) + x2 * y2;
>  #endif
>  }
> +
> +/* Ensure compat_symbol uses GLIBC_2_26 since that was when the
> +   __<fn>f128_finite symbols were introduced.  */
> +#include <shlib-compat.h>
> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
> +# undef compat_symbol
> +# define compat_symbol(lib, local, symbol, version) \
> +  compat_symbol_reference (lib, local, symbol, GLIBC_2_26)
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_acosf.c b/sysdeps/ieee754/flt-32/e_acosf.c
> index 3b2e4f1bde9906e483d31081ba794790f0eed05b..1aab50c548be9690d9d58773904c2af606169ad6 100644
> --- a/sysdeps/ieee754/flt-32/e_acosf.c
> +++ b/sysdeps/ieee754/flt-32/e_acosf.c
> @@ -15,6 +15,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  one =  1.0000000000e+00, /* 0x3F800000 */
> @@ -75,4 +76,6 @@ __ieee754_acosf(float x)
>  	    return (float)2.0*(df+w);
>  	}
>  }
> -strong_alias (__ieee754_acosf, __acosf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosf, __acosf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_acoshf.c b/sysdeps/ieee754/flt-32/e_acoshf.c
> index 49e64f3c43f0e5e37232dbcf8a38e7ab0c357453..2d0878c8cdf03ee0f5b25dfb919fb8d70ae26ac7 100644
> --- a/sysdeps/ieee754/flt-32/e_acoshf.c
> +++ b/sysdeps/ieee754/flt-32/e_acoshf.c
> @@ -19,6 +19,7 @@ static char rcsid[] = "$NetBSD: e_acoshf.c,v 1.5 1995/05/12 04:57:20 jtc Exp $";
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  one	= 1.0,
> @@ -46,4 +47,6 @@ float __ieee754_acoshf(float x)
>  	    return __log1pf(t+sqrtf((float)2.0*t+t*t));
>  	}
>  }
> -strong_alias (__ieee754_acoshf, __acoshf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acoshf, __acoshf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_asinf.c b/sysdeps/ieee754/flt-32/e_asinf.c
> index e03073b8bd6998e5649ba50923b1a43767c969ba..6ddce18994153c6f79062dbf181d98d29df3fb4d 100644
> --- a/sysdeps/ieee754/flt-32/e_asinf.c
> +++ b/sysdeps/ieee754/flt-32/e_asinf.c
> @@ -43,6 +43,7 @@ static char rcsid[] = "$NetBSD: e_asinf.c,v 1.5 1995/05/12 04:57:25 jtc Exp $";
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  one =  1.0000000000e+00, /* 0x3F800000 */
> @@ -102,4 +103,6 @@ float __ieee754_asinf(float x)
>  	}
>  	if(hx>0) return t; else return -t;
>  }
> -strong_alias (__ieee754_asinf, __asinf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asinf, __asinf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_atan2f.c b/sysdeps/ieee754/flt-32/e_atan2f.c
> index ddc5873ade50f9c7d717fea6a5afcc465d573904..9b97f003d269b89fe7056d72427d940f7c84d21a 100644
> --- a/sysdeps/ieee754/flt-32/e_atan2f.c
> +++ b/sysdeps/ieee754/flt-32/e_atan2f.c
> @@ -15,6 +15,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  tiny  = 1.0e-30,
> @@ -91,4 +92,6 @@ __ieee754_atan2f (float y, float x)
>  		    return  (z-pi_lo)-pi;/* atan(-,-) */
>  	}
>  }
> -strong_alias (__ieee754_atan2f, __atan2f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2f, __atan2f_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c
> index cda75b23c77fb820b6aaa61ae8be73e8c9ab1523..67ea5c2096a80c50dab3bfba93bfbb8fa0f3923a 100644
> --- a/sysdeps/ieee754/flt-32/e_atanhf.c
> +++ b/sysdeps/ieee754/flt-32/e_atanhf.c
> @@ -41,6 +41,7 @@
>  #include <math-barriers.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const float huge = 1e30;
>  
> @@ -73,4 +74,6 @@ __ieee754_atanhf (float x)
>  
>    return copysignf (t, x);
>  }
> -strong_alias (__ieee754_atanhf, __atanhf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanhf, __atanhf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_coshf.c b/sysdeps/ieee754/flt-32/e_coshf.c
> index a2aa83876d9364b18fe348c1cf2a424db3dd9cfe..655b3c39c49738910ed87eec49b1a19694627be9 100644
> --- a/sysdeps/ieee754/flt-32/e_coshf.c
> +++ b/sysdeps/ieee754/flt-32/e_coshf.c
> @@ -17,6 +17,7 @@
>  #include <math.h>
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const float huge = 1.0e30;
>  static const float one = 1.0, half=0.5;
> @@ -61,4 +62,6 @@ __ieee754_coshf (float x)
>      /* |x| > overflowthresold, cosh(x) overflow */
>  	return math_narrow_eval (huge*huge);
>  }
> -strong_alias (__ieee754_coshf, __coshf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_coshf, __coshf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c
> index b6877d179479a9b0ede6c56dea2c362b0498d2fd..e4a328f4c64798e79a3fefc29cc2ef471af8c606 100644
> --- a/sysdeps/ieee754/flt-32/e_exp2f.c
> +++ b/sysdeps/ieee754/flt-32/e_exp2f.c
> @@ -90,7 +90,9 @@ __exp2f (float x)
>  }
>  #ifndef __exp2f
>  strong_alias (__exp2f, __ieee754_exp2f)
> -strong_alias (__exp2f, __exp2f_finite)
> -versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __exp2f, __exp2f_finite, GLIBC_2_15);
> +# endif
> +versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
>  libm_alias_float_other (__exp2, exp2)
>  #endif
> diff --git a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c
> index 811bbddd4026aa21f29961d96f2fa142031fad82..0519dbda7a7864139d9adb2aee0fb45b9147570c 100644
> --- a/sysdeps/ieee754/flt-32/e_expf.c
> +++ b/sysdeps/ieee754/flt-32/e_expf.c
> @@ -108,7 +108,9 @@ __expf (float x)
>  #ifndef __expf
>  hidden_def (__expf)
>  strong_alias (__expf, __ieee754_expf)
> -strong_alias (__expf, __expf_finite)
> -versioned_symbol (libm, __expf, expf, GLIBC_2_27);
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __expf, __expf_finite, GLIBC_2_15);
> +# endif
> +versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
>  libm_alias_float_other (__exp, exp)
>  #endif
> diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
> index 1a9407b517c01b7cf144d9d5732543b74c462b0d..71ca9a1a5b88be4b91b502f3d8b0d268fe94f9ef 100644
> --- a/sysdeps/ieee754/flt-32/e_fmodf.c
> +++ b/sysdeps/ieee754/flt-32/e_fmodf.c
> @@ -21,6 +21,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const float one = 1.0, Zero[] = {0.0, -0.0,};
>  
> @@ -99,4 +100,6 @@ __ieee754_fmodf (float x, float y)
>  	}
>  	return x;		/* exact output */
>  }
> -strong_alias (__ieee754_fmodf, __fmodf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmodf, __fmodf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
> index 897e3935d0b4d1e5d5d13534533afd1e6d49ac7f..4bc61c1271924f0bc7c8e5418e51eb345986607d 100644
> --- a/sysdeps/ieee754/flt-32/e_gammaf_r.c
> +++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c
> @@ -23,6 +23,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
>     approximation to gamma function.  */
> @@ -212,4 +213,6 @@ __ieee754_gammaf_r (float x, int *signgamp)
>    else
>      return ret;
>  }
> -strong_alias (__ieee754_gammaf_r, __gammaf_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_gammaf_r, __gammaf_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c
> index 5336876cf4cbb8d684dcd3510b7e8585aef7524a..afbe49c4e37b6c6279d9288776e1844a77e4b45f 100644
> --- a/sysdeps/ieee754/flt-32/e_hypotf.c
> +++ b/sysdeps/ieee754/flt-32/e_hypotf.c
> @@ -15,6 +15,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  float
>  __ieee754_hypotf(float x, float y)
> @@ -42,4 +43,8 @@ __ieee754_hypotf(float x, float y)
>  
>  	return (float) sqrt(d_x * d_x + d_y * d_y);
>  }
> -strong_alias (__ieee754_hypotf, __hypotf_finite)
> +#ifndef __ieee754_hypotf
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
> +# endif
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_j0f.c b/sysdeps/ieee754/flt-32/e_j0f.c
> index 0efc646a125df4d4407b49799a0fc6ce073b5862..f39b0005e17a93f3d1ed2027b8d1f3ebde5bed14 100644
> --- a/sysdeps/ieee754/flt-32/e_j0f.c
> +++ b/sysdeps/ieee754/flt-32/e_j0f.c
> @@ -16,6 +16,7 @@
>  #include <math.h>
>  #include <math-barriers.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static float pzerof(float), qzerof(float);
>  
> @@ -81,7 +82,9 @@ __ieee754_j0f(float x)
>  	    return((one+u)*(one-u)+z*(r/s));
>  	}
>  }
> -strong_alias (__ieee754_j0f, __j0f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm,__ieee754_j0f, __j0f_finite, GLIBC_2_15);
> +#endif
>  
>  static const float
>  u00  = -7.3804296553e-02, /* 0xbd9726b5 */
> @@ -147,7 +150,9 @@ __ieee754_y0f(float x)
>  	v = one+z*(v01+z*(v02+z*(v03+z*v04)));
>  	return(u/v + tpi*(__ieee754_j0f(x)*__ieee754_logf(x)));
>  }
> -strong_alias (__ieee754_y0f, __y0f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y0f, __y0f_finite, GLIBC_2_15);
> +#endif
>  
>  /* The asymptotic expansions of pzero is
>   *	1 - 9/128 s^2 + 11025/98304 s^4 - ...,	where s = 1/x.
> diff --git a/sysdeps/ieee754/flt-32/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
> index 09b2296483a0e194cdc694527d91367c356eb7f6..f023bde153fb770aff6c932a0aef667d13b38122 100644
> --- a/sysdeps/ieee754/flt-32/e_j1f.c
> +++ b/sysdeps/ieee754/flt-32/e_j1f.c
> @@ -20,6 +20,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static float ponef(float), qonef(float);
>  
> @@ -87,7 +88,9 @@ __ieee754_j1f(float x)
>  	r *= x;
>  	return(x*(float)0.5+r/s);
>  }
> -strong_alias (__ieee754_j1f, __j1f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm,__ieee754_j1f, __j1f_finite, GLIBC_2_15);
> +#endif
>  
>  static const float U0[5] = {
>   -1.9605709612e-01, /* 0xbe48c331 */
> @@ -156,7 +159,9 @@ __ieee754_y1f(float x)
>  	v = one+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
>  	return(x*(u/v) + tpi*(__ieee754_j1f(x)*__ieee754_logf(x)-one/x));
>  }
> -strong_alias (__ieee754_y1f, __y1f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y1f, __y1f_finite, GLIBC_2_15);
> +#endif
>  
>  /* For x >= 8, the asymptotic expansions of pone is
>   *	1 + 15/128 s^2 - 4725/2^15 s^4 - ...,	where s = 1/x.
> diff --git a/sysdeps/ieee754/flt-32/e_jnf.c b/sysdeps/ieee754/flt-32/e_jnf.c
> index ae290154243a3c657b9d01e1577a797b138b1df1..6162c7e6c135fdad20ea31ffaeac8469133b9a5d 100644
> --- a/sysdeps/ieee754/flt-32/e_jnf.c
> +++ b/sysdeps/ieee754/flt-32/e_jnf.c
> @@ -20,6 +20,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  two   =  2.0000000000e+00, /* 0x40000000 */
> @@ -181,7 +182,9 @@ __ieee754_jnf(int n, float x)
>  	math_check_force_underflow (ret);
>      return ret;
>  }
> -strong_alias (__ieee754_jnf, __jnf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_jnf, __jnf_finite, GLIBC_2_15);
> +#endif
>  
>  float
>  __ieee754_ynf(int n, float x)
> @@ -233,4 +236,6 @@ __ieee754_ynf(int n, float x)
>  	ret = copysignf (FLT_MAX, ret) * FLT_MAX;
>      return ret;
>  }
> -strong_alias (__ieee754_ynf, __ynf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_ynf, __ynf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
> index a7f9b9fbadc49c353b5e65851a432966ed2b0ab1..234766974797b8a520909a9cf6cafcc7ca3a3621 100644
> --- a/sysdeps/ieee754/flt-32/e_lgammaf_r.c
> +++ b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
> @@ -17,6 +17,7 @@
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
>  #include <libc-diag.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  two23=  8.3886080000e+06, /* 0x4b000000 */
> @@ -244,4 +245,6 @@ __ieee754_lgammaf_r(float x, int *signgamp)
>  	DIAG_POP_NEEDS_COMMENT;
>  	return r;
>  }
> -strong_alias (__ieee754_lgammaf_r, __lgammaf_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_lgammaf_r, __lgammaf_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_log10f.c b/sysdeps/ieee754/flt-32/e_log10f.c
> index 7f1ffdad771a642d9df9d245ac5062ea11aaeefb..07b1a5bbb37d4bd174d37ac9c37b03cd6060f7e6 100644
> --- a/sysdeps/ieee754/flt-32/e_log10f.c
> +++ b/sysdeps/ieee754/flt-32/e_log10f.c
> @@ -16,6 +16,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <fix-int-fp-convert-zero.h>
> +#include <shlib-compat.h>
>  
>  static const float
>  two25      =  3.3554432000e+07, /* 0x4c000000 */
> @@ -51,4 +52,6 @@ __ieee754_log10f(float x)
>  	z  = y*log10_2lo + ivln10*__ieee754_logf(x);
>  	return  z+y*log10_2hi;
>  }
> -strong_alias (__ieee754_log10f, __log10f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10f, __log10f_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_log2f.c b/sysdeps/ieee754/flt-32/e_log2f.c
> index f9364bb0f93d2aca38a0947c49a7843a5fc5b58f..a55125bb4663c3c44e0fdea03c1bff9cc7b72de7 100644
> --- a/sysdeps/ieee754/flt-32/e_log2f.c
> +++ b/sysdeps/ieee754/flt-32/e_log2f.c
> @@ -89,7 +89,9 @@ __log2f (float x)
>  }
>  #ifndef __log2f
>  strong_alias (__log2f, __ieee754_log2f)
> -strong_alias (__log2f, __log2f_finite)
> -versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __log2f, __log2f_finite, GLIBC_2_15);
> +# endif
> +versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
>  libm_alias_float_other (__log2, log2)
>  #endif
> diff --git a/sysdeps/ieee754/flt-32/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c
> index 58b068189f2424a0304357e1ee2afc67f87ca3dc..8d7ec9d90cea3551433c2bbfa2d8c3c989147883 100644
> --- a/sysdeps/ieee754/flt-32/e_logf.c
> +++ b/sysdeps/ieee754/flt-32/e_logf.c
> @@ -88,7 +88,9 @@ __logf (float x)
>  }
>  #ifndef __logf
>  strong_alias (__logf, __ieee754_logf)
> -strong_alias (__logf, __logf_finite)
> -versioned_symbol (libm, __logf, logf, GLIBC_2_27);
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __logf, __logf_finite, GLIBC_2_15);
> +# endif
> +versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
>  libm_alias_float_other (__log, log)
>  #endif
> diff --git a/sysdeps/ieee754/flt-32/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c
> index d94d4222cc21e8d9bdd16e485697584e1507e6f8..ef4f8bf2f4536bf1ddaca793929e44f2767474fb 100644
> --- a/sysdeps/ieee754/flt-32/e_powf.c
> +++ b/sysdeps/ieee754/flt-32/e_powf.c
> @@ -231,7 +231,9 @@ __powf (float x, float y)
>  }
>  #ifndef __powf
>  strong_alias (__powf, __ieee754_powf)
> -strong_alias (__powf, __powf_finite)
> -versioned_symbol (libm, __powf, powf, GLIBC_2_27);
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __powf, __powf_finite, GLIBC_2_15);
> +# endif
> +versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
>  libm_alias_float_other (__pow, pow)
>  #endif
> diff --git a/sysdeps/ieee754/flt-32/e_remainderf.c b/sysdeps/ieee754/flt-32/e_remainderf.c
> index 8e78784e0f43002124690f839d0f768453c7bd4f..897e1b946678fb2689efc0a15bfa0c22759c177b 100644
> --- a/sysdeps/ieee754/flt-32/e_remainderf.c
> +++ b/sysdeps/ieee754/flt-32/e_remainderf.c
> @@ -15,6 +15,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const float zero = 0.0;
>  
> @@ -59,4 +60,6 @@ __ieee754_remainderf(float x, float p)
>  	SET_FLOAT_WORD(x,hx^sx);
>  	return x;
>  }
> -strong_alias (__ieee754_remainderf, __remainderf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainderf, __remainderf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_sinhf.c b/sysdeps/ieee754/flt-32/e_sinhf.c
> index 20f7db81ea72db9dbf5f5350b2602d28bc7e339c..7dda97898b87e17ab3eba3c394edd058c3cc318f 100644
> --- a/sysdeps/ieee754/flt-32/e_sinhf.c
> +++ b/sysdeps/ieee754/flt-32/e_sinhf.c
> @@ -18,6 +18,7 @@
>  #include <math-narrow-eval.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const float one = 1.0, shuge = 1.0e37;
>  
> @@ -59,4 +60,6 @@ __ieee754_sinhf(float x)
>      /* |x| > overflowthresold, sinh(x) overflow */
>  	return math_narrow_eval (x*shuge);
>  }
> -strong_alias (__ieee754_sinhf, __sinhf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sinhf, __sinhf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/flt-32/e_sqrtf.c b/sysdeps/ieee754/flt-32/e_sqrtf.c
> index 6025da19cfe74a52f08bf8c8e0b38e6df6a2ac7f..435bd2dec99ed8c330445e16d63b080a3ba8d644 100644
> --- a/sysdeps/ieee754/flt-32/e_sqrtf.c
> +++ b/sysdeps/ieee754/flt-32/e_sqrtf.c
> @@ -15,6 +15,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static	const float	one	= 1.0, tiny=1.0e-30;
>  
> @@ -83,4 +84,8 @@ __ieee754_sqrtf(float x)
>  	SET_FLOAT_WORD(z,ix);
>  	return z;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#ifndef __ieee754_sqrtf
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +# endif
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_acoshl.c b/sysdeps/ieee754/ldbl-128/e_acoshl.c
> index c292759ac6f163ac0d739a5ae682331b507ab3d2..24d603db34019c1b980a66539b4b721a41701e7d 100644
> --- a/sysdeps/ieee754/ldbl-128/e_acoshl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_acoshl.c
> @@ -29,6 +29,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128
>  one	= 1.0,
> @@ -58,4 +59,6 @@ __ieee754_acoshl(_Float128 x)
>  	    return __log1pl(t+sqrtl(2*t+t*t));
>  	}
>  }
> -strong_alias (__ieee754_acoshl, __acoshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_acosl.c b/sysdeps/ieee754/ldbl-128/e_acosl.c
> index 0dc23dee2beb2d9fa1a1f67da421e9559b97340a..82489de241e5d46c5367ab72901444db169260ce 100644
> --- a/sysdeps/ieee754/ldbl-128/e_acosl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_acosl.c
> @@ -56,6 +56,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128
>    one = 1,
> @@ -316,4 +317,6 @@ __ieee754_acosl (_Float128 x)
>        return 2.0 * w;
>      }
>  }
> -strong_alias (__ieee754_acosl, __acosl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosl, __acosl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_asinl.c b/sysdeps/ieee754/ldbl-128/e_asinl.c
> index 4835962db48aee56dcf699a1c677b984b1ea593f..026fe963636eee6c7ad171ae8a2687ea8958da9f 100644
> --- a/sysdeps/ieee754/ldbl-128/e_asinl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_asinl.c
> @@ -64,6 +64,7 @@
>  #include <math-barriers.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128
>    one = 1,
> @@ -257,4 +258,6 @@ __ieee754_asinl (_Float128 x)
>    else
>      return -t;
>  }
> -strong_alias (__ieee754_asinl, __asinl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asinl, __asinl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_atan2l.c b/sysdeps/ieee754/ldbl-128/e_atan2l.c
> index 8b4afa4bd567a54545150925b38247b7116f5b40..60117ddb97cff557037db908e171d72c7a5866c9 100644
> --- a/sysdeps/ieee754/ldbl-128/e_atan2l.c
> +++ b/sysdeps/ieee754/ldbl-128/e_atan2l.c
> @@ -42,6 +42,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128
>  tiny  = L(1.0e-4900),
> @@ -119,4 +120,6 @@ __ieee754_atan2l(_Float128 y, _Float128 x)
>  		    return  (z-pi_lo)-pi;/* atan(-,-) */
>  	}
>  }
> -strong_alias (__ieee754_atan2l, __atan2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2l, __atan2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_atanhl.c b/sysdeps/ieee754/ldbl-128/e_atanhl.c
> index 13b7683e1796ee5a24b3c69fbc1ce2c1e3da55cd..a0838dc5aad83372dad7e7f8ab0bcbf15aadf3ed 100644
> --- a/sysdeps/ieee754/ldbl-128/e_atanhl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_atanhl.c
> @@ -36,6 +36,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 one = 1, huge = L(1e4900);
>  
> @@ -72,4 +73,6 @@ __ieee754_atanhl(_Float128 x)
>  	    t = 0.5*__log1pl((u.value+u.value)/(one-u.value));
>  	if(jx & 0x80000000) return -t; else return t;
>  }
> -strong_alias (__ieee754_atanhl, __atanhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_coshl.c b/sysdeps/ieee754/ldbl-128/e_coshl.c
> index 70a2fe3e84ac6ffd754d87b16a0fbd8b8c7d2303..22ed8b49939fc8a3bb14fcd33a617bd77e664d14 100644
> --- a/sysdeps/ieee754/ldbl-128/e_coshl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_coshl.c
> @@ -53,6 +53,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 one = 1.0, half = 0.5, huge = L(1.0e4900),
>  ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
> @@ -107,4 +108,6 @@ __ieee754_coshl (_Float128 x)
>    /* |x| > overflowthresold, cosh(x) overflow */
>    return huge * huge;
>  }
> -strong_alias (__ieee754_coshl, __coshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_coshl, __coshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_exp10l.c b/sysdeps/ieee754/ldbl-128/e_exp10l.c
> index 3d3d762ef02a6d7fb1227d872076ddc88d96aede..2a632bf798fc585118bc42315c140bc6ad739aac 100644
> --- a/sysdeps/ieee754/ldbl-128/e_exp10l.c
> +++ b/sysdeps/ieee754/ldbl-128/e_exp10l.c
> @@ -18,6 +18,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 log10_high = L(0x2.4d763776aaa2bp0);
>  static const _Float128 log10_low = L(0x5.ba95b58ae0b4c28a38a3fb3e7698p-60);
> @@ -46,4 +47,6 @@ __ieee754_exp10l (_Float128 arg)
>    exp_low = arg_high * log10_low + arg_low * M_LN10l;
>    return __ieee754_expl (exp_high) * __ieee754_expl (exp_low);
>  }
> -strong_alias (__ieee754_exp10l, __exp10l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10l, __exp10l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_expl.c b/sysdeps/ieee754/ldbl-128/e_expl.c
> index 7b6ec0b347ae2469a544903d66fe6d10762c02a7..098c6a2b069b2ed67f1a9c60303404a27e5a4b69 100644
> --- a/sysdeps/ieee754/ldbl-128/e_expl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_expl.c
> @@ -69,6 +69,7 @@
>  #include <math-underflow.h>
>  #include <stdlib.h>
>  #include "t_expl.h"
> +#include <shlib-compat.h>
>  
>  static const _Float128 C[] = {
>  /* Smallest integer x for which e^x overflows.  */
> @@ -253,4 +254,6 @@ __ieee754_expl (_Float128 x)
>      /* Return x, if x is a NaN or Inf; or overflow, otherwise.  */
>      return TWO16383*x;
>  }
> -strong_alias (__ieee754_expl, __expl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_expl, __expl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_fmodl.c b/sysdeps/ieee754/ldbl-128/e_fmodl.c
> index 73465126b43ff1c975389ff86172b645f18172a0..87a234ce74e2d5ef4a5382b6ad59e08bf348420f 100644
> --- a/sysdeps/ieee754/ldbl-128/e_fmodl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_fmodl.c
> @@ -20,6 +20,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 one = 1.0, Zero[] = {0.0, -0.0,};
>  
> @@ -128,4 +129,6 @@ __ieee754_fmodl (_Float128 x, _Float128 y)
>  	}
>  	return x;		/* exact output */
>  }
> -strong_alias (__ieee754_fmodl, __fmodl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
> index 268d7faf6dc1441159e9818960e8d270cb5a039c..04d6b80acd4a3f7389783b4b020c061a0670d5b5 100644
> --- a/sysdeps/ieee754/ldbl-128/e_gammal_r.c
> +++ b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
> @@ -23,6 +23,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
>     approximation to gamma function.  */
> @@ -217,4 +218,6 @@ __ieee754_gammal_r (_Float128 x, int *signgamp)
>    else
>      return ret;
>  }
> -strong_alias (__ieee754_gammal_r, __gammal_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_gammal_r, __gammal_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c
> index 7bafd4ae296318a1a3edf0eb366925ab029aed73..98a844d45d331976a6f71ea10f9ad8e162ee037f 100644
> --- a/sysdeps/ieee754/ldbl-128/e_hypotl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_hypotl.c
> @@ -48,6 +48,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  _Float128
>  __ieee754_hypotl(_Float128 x, _Float128 y)
> @@ -138,4 +139,6 @@ __ieee754_hypotl(_Float128 x, _Float128 y)
>  	    return w;
>  	} else return w;
>  }
> -strong_alias (__ieee754_hypotl, __hypotl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotl, __hypotl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c
> index 5c699956b69a3e87e5a9436757aceffb25936718..c0287806baca0265aafbc71588632a8b3e2d12af 100644
> --- a/sysdeps/ieee754/ldbl-128/e_j0l.c
> +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c
> @@ -94,6 +94,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* 1 / sqrt(pi) */
>  static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
> @@ -789,7 +790,9 @@ __ieee754_j0l (_Float128 x)
>    z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
>    return z;
>  }
> -strong_alias (__ieee754_j0l, __j0l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j0l, __j0l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
> @@ -934,4 +937,6 @@ _Float128
>    z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
>    return z;
>  }
> -strong_alias (__ieee754_y0l, __y0l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y0l, __y0l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c
> index 0ef3611473ea505fbd2ed1b5ad32a17331378053..1481ab729ade2a274ae6e480685402de560f3adb 100644
> --- a/sysdeps/ieee754/ldbl-128/e_j1l.c
> +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c
> @@ -101,6 +101,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* 1 / sqrt(pi) */
>  static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
> @@ -810,7 +811,9 @@ __ieee754_j1l (_Float128 x)
>      z = -z;
>    return z;
>  }
> -strong_alias (__ieee754_j1l, __j1l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j1l, __j1l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
> @@ -960,4 +963,6 @@ __ieee754_y1l (_Float128 x)
>    z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
>    return z;
>  }
> -strong_alias (__ieee754_y1l, __y1l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y1l, __y1l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c
> index 3c90072a22b98ed7c4ef8fde7a06c8e0a27ea105..1679510934b4aba6872932fa8772cc2138ae3ed9 100644
> --- a/sysdeps/ieee754/ldbl-128/e_jnl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_jnl.c
> @@ -62,6 +62,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128
>    invsqrtpi = L(5.6418958354775628694807945156077258584405E-1),
> @@ -308,7 +309,9 @@ __ieee754_jnl (int n, _Float128 x)
>      math_check_force_underflow (ret);
>    return ret;
>  }
> -strong_alias (__ieee754_jnl, __jnl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_jnl, __jnl_finite, GLIBC_2_15);
> +#endif
>  
>  _Float128
>  __ieee754_ynl (int n, _Float128 x)
> @@ -422,4 +425,6 @@ __ieee754_ynl (int n, _Float128 x)
>      ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
>    return ret;
>  }
> -strong_alias (__ieee754_ynl, __ynl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_ynl, __ynl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
> index f470034f9c6b91a6e444d08094750c0ad092024d..b1b099133b2c81c68be84ac71c6056f8ba3c812e 100644
> --- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
> +++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
> @@ -71,6 +71,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 PIL = L(3.1415926535897932384626433832795028841972E0);
>  static const _Float128 MAXLGM = L(1.0485738685148938358098967157129705071571E4928);
> @@ -1039,4 +1040,6 @@ __ieee754_lgammal_r (_Float128 x, int *signgamp)
>    q += neval (p, RASY, NRASY) / x;
>    return (q);
>  }
> -strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_lgammal_r, __lgammal_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_log10l.c b/sysdeps/ieee754/ldbl-128/e_log10l.c
> index e8f33984f2ceec4dfcbe51696b25595e31385c00..9c9de8ecd5bbdfea00dd552d233de0f8c70876cf 100644
> --- a/sysdeps/ieee754/ldbl-128/e_log10l.c
> +++ b/sysdeps/ieee754/ldbl-128/e_log10l.c
> @@ -62,6 +62,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
>   * 1/sqrt(2) <= x < sqrt(2)
> @@ -256,4 +257,6 @@ done:
>    z += e * L102A;
>    return (z);
>  }
> -strong_alias (__ieee754_log10l, __log10l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10l, __log10l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_log2l.c b/sysdeps/ieee754/ldbl-128/e_log2l.c
> index 06bf04f5e3f7d30a1ae7ebfb3b88f01398f11f65..bce1dd9547d288ba37fad9a458032712bc811ffc 100644
> --- a/sysdeps/ieee754/ldbl-128/e_log2l.c
> +++ b/sysdeps/ieee754/ldbl-128/e_log2l.c
> @@ -61,6 +61,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
>   * 1/sqrt(2) <= x < sqrt(2)
> @@ -249,4 +250,6 @@ done:
>    z += e;
>    return (z);
>  }
> -strong_alias (__ieee754_log2l, __log2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log2l, __log2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_logl.c b/sysdeps/ieee754/ldbl-128/e_logl.c
> index 8672047e4312d72be6be8c4e1c7aeae3ecbca7db..b3388d4a85ca7fe6d27fa042f587dc893e551f91 100644
> --- a/sysdeps/ieee754/ldbl-128/e_logl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_logl.c
> @@ -60,6 +60,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  /* log(1+x) = x - .5 x^2 + x^3 l(x)
>     -.0078125 <= x <= +.0078125
> @@ -279,4 +280,6 @@ __ieee754_logl(_Float128 x)
>    y += e * ln2a;
>    return y;
>  }
> -strong_alias (__ieee754_logl, __logl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_logl, __logl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c
> index 47226f8688477491f4bd985718a2a44eb34cd0eb..496fbbf57f37ab60d6f14af937710db7d7d4359d 100644
> --- a/sysdeps/ieee754/ldbl-128/e_powl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_powl.c
> @@ -67,6 +67,7 @@
>  #include <math.h>
>  #include <math-barriers.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 bp[] = {
>    1,
> @@ -449,4 +450,6 @@ __ieee754_powl (_Float128 x, _Float128 y)
>      }
>    return sgn * z;
>  }
> -strong_alias (__ieee754_powl, __powl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_remainderl.c b/sysdeps/ieee754/ldbl-128/e_remainderl.c
> index 09b8640b78528371e6a23ad68670d56c3faa91a2..f8f43c4a0d9c34b07530ad5ba41b7b649e3ce337 100644
> --- a/sysdeps/ieee754/ldbl-128/e_remainderl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_remainderl.c
> @@ -23,6 +23,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 zero = 0;
>  
> @@ -68,4 +69,6 @@ __ieee754_remainderl(_Float128 x, _Float128 p)
>  	SET_LDOUBLE_MSW64(x,hx^sx);
>  	return x;
>  }
> -strong_alias (__ieee754_remainderl, __remainderl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/e_sinhl.c b/sysdeps/ieee754/ldbl-128/e_sinhl.c
> index 39e7cf3084a635a1b0c285cac75317e5094e8894..4fbab7ab5c49d8aed3c5c652f3b0ba849cb64e3b 100644
> --- a/sysdeps/ieee754/ldbl-128/e_sinhl.c
> +++ b/sysdeps/ieee754/ldbl-128/e_sinhl.c
> @@ -57,6 +57,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const _Float128 one = 1.0, shuge = L(1.0e4931),
>  ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
> @@ -115,4 +116,6 @@ __ieee754_sinhl (_Float128 x)
>    /* |x| > overflowthreshold, sinhl(x) overflow */
>    return x * shuge;
>  }
> -strong_alias (__ieee754_sinhl, __sinhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sinhl, __sinhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
> index f85fe678ba27828ac109a9e427c9d15d8aa820e0..8bc999d22ce681dba3e89a1e56caa13fa4a6c53c 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
> @@ -26,6 +26,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>  one	= 1.0L,
> @@ -59,4 +60,6 @@ __ieee754_acoshl(long double x)
>  	    return __log1pl(t+sqrtl(2.0*t+t*t));
>  	}
>  }
> -strong_alias (__ieee754_acoshl, __acoshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
> index 1f8e405c9b0797bcf64a2e833bf86af204275a26..f0304d1a15dd529a81f684a9ba00ac7508a349c8 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
> @@ -56,6 +56,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>    one = 1.0L,
> @@ -313,4 +314,6 @@ __ieee754_acosl (long double x)
>        return 2.0 * w;
>      }
>  }
> -strong_alias (__ieee754_acosl, __acosl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acosl, __acosl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
> index e8b0221a921d18aec7cf5b688e3d2e1ce7f1b913..f542622bceb09a9650e36283c74eca060fb492bc 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
> @@ -64,6 +64,7 @@
>  #include <math-barriers.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>    one = 1.0L,
> @@ -248,4 +249,6 @@ __ieee754_asinl (long double x)
>    else
>      return -t;
>  }
> -strong_alias (__ieee754_asinl, __asinl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asinl, __asinl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
> index b625323df3827f4ed132d8c8bd1557799c157df0..f348e7e52c63aa55ef493b208c87980c3c53e457 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
> @@ -42,6 +42,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>  tiny  = 1.0e-300L,
> @@ -119,4 +120,6 @@ __ieee754_atan2l(long double y, long double x)
>  		    return  (z-pi_lo)-pi;/* atan(-,-) */
>  	}
>  }
> -strong_alias (__ieee754_atan2l, __atan2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2l, __atan2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
> index 25c286b8ff7c31225a84dbdc90479e08c22ae43e..742fffb11f653d6810db74187dc633897577e49c 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
> @@ -32,6 +32,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0L, huge = 1e300L;
>  
> @@ -69,4 +70,6 @@ __ieee754_atanhl(long double x)
>  	    t = 0.5*__log1pl((x+x)/(one-x));
>  	if(hx>=0) return t; else return -t;
>  }
> -strong_alias (__ieee754_atanhl, __atanhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
> index 327b2ab9600028f6c22b45e86440a7104d8964b0..745a05f06439017cbd9f37ef346634d94851d4ca 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
> @@ -33,6 +33,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0L, half=0.5L, huge = 1.0e300L;
>  
> @@ -78,4 +79,6 @@ __ieee754_coshl (long double x)
>      /* |x| > overflowthresold, cosh(x) overflow */
>  	return huge*huge;
>  }
> -strong_alias (__ieee754_coshl, __coshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_coshl, __coshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
> index 5cc2818cddd3fd356181d85e6fdfdcf58754f80a..50e0d8ca24b6aa23f16d88f615b38e5b93668a61 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
> @@ -18,6 +18,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  static const long double log10_high = 0x2.4d763776aaap+0L;
>  static const long double log10_low = 0x2.b05ba95b58ae0b4c28a38a3fb4p-48L;
> @@ -45,4 +46,6 @@ __ieee754_exp10l (long double arg)
>    exp_low = arg_high * log10_low + arg_low * M_LN10l;
>    return __ieee754_expl (exp_high) * __ieee754_expl (exp_low);
>  }
> -strong_alias (__ieee754_exp10l, __exp10l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp10l, __exp10l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
> index 69faad2afdac39cfce6aa2867cf0c0a144181ba7..20674d379cc80eba90c5e7bc1c1795808aa10f3b 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
> @@ -66,7 +66,7 @@
>  #include <inttypes.h>
>  #include <math_private.h>
>  #include <fenv_private.h>
> -
> +#include <shlib-compat.h>
>  
>  #include "t_expl.h"
>  
> @@ -257,4 +257,6 @@ __ieee754_expl (long double x)
>      return result;
>    return result * scale_u.ld;
>  }
> -strong_alias (__ieee754_expl, __expl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_expl, __expl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
> index fae7dbe888b0e2418e94e0ac43b4ac218e9e001a..b4e9ed5516fc809838cd9ba091340e2a6f60e038 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
> @@ -21,6 +21,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <ieee754.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0, Zero[] = {0.0, -0.0,};
>  
> @@ -146,4 +147,6 @@ __ieee754_fmodl (long double x, long double y)
>  	}
>  	return x;		/* exact output */
>  }
> -strong_alias (__ieee754_fmodl, __fmodl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
> index 470c87d41012386c7ba25c40952498ea12420f40..d2a4668dece7690098a485f85a8572038e7dfa65 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
> @@ -23,6 +23,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
>     approximation to gamma function.  */
> @@ -217,4 +218,6 @@ __ieee754_gammal_r (long double x, int *signgamp)
>    else
>      return ret;
>  }
> -strong_alias (__ieee754_gammal_r, __gammal_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_gammal_r, __gammal_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
> index 842f77b7ed709732fe02b4c8db11f45fda122fdd..a6789a0be331ff116a430eed8617bb8d59232377 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
> @@ -45,6 +45,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_hypotl(long double x, long double y)
> @@ -136,4 +137,6 @@ __ieee754_hypotl(long double x, long double y)
>  	else
>  	    return w;
>  }
> -strong_alias (__ieee754_hypotl, __hypotl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotl, __hypotl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
> index 448cfb63fe4a3f58ec7ebd74980915486b363a1b..322b17e0831a509c13953355760c5cab454afaee 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
> @@ -21,6 +21,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* 1 / sqrt(pi) */
>  static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
> @@ -716,7 +717,9 @@ __ieee754_j0l (long double x)
>    z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
>    return z;
>  }
> -strong_alias (__ieee754_j0l, __j0l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j0l, __j0l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
> @@ -861,4 +864,6 @@ long double
>    z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
>    return z;
>  }
> -strong_alias (__ieee754_y0l, __y0l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y0l, __y0l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
> index fada0c226e1d5559417c203aca5e80631a07e17d..d2ce14c50982b29fa02398509bed06c42bbe81ab 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
> @@ -24,6 +24,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* 1 / sqrt(pi) */
>  static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
> @@ -733,7 +734,9 @@ __ieee754_j1l (long double x)
>      z = -z;
>    return z;
>  }
> -strong_alias (__ieee754_j1l, __j1l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j1l, __j1l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
> @@ -883,4 +886,6 @@ __ieee754_y1l (long double x)
>    z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
>    return z;
>  }
> -strong_alias (__ieee754_y1l, __y1l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm,__ieee754_y1l, __y1l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
> index 478824c8fad5964466ff0874e8b671d262b7225c..7636776f9f019b16a082fde342c3e079774639b3 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
> @@ -62,6 +62,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>    invsqrtpi = 5.6418958354775628694807945156077258584405E-1L,
> @@ -308,7 +309,9 @@ __ieee754_jnl (int n, long double x)
>      math_check_force_underflow (ret);
>    return ret;
>  }
> -strong_alias (__ieee754_jnl, __jnl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_jnl, __jnl_finite, GLIBC_2_15);
> +#endif
>  
>  long double
>  __ieee754_ynl (int n, long double x)
> @@ -424,4 +427,6 @@ __ieee754_ynl (int n, long double x)
>      ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
>    return ret;
>  }
> -strong_alias (__ieee754_ynl, __ynl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_ynl, __ynl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
> index ae2e6559b02149f823dc37265c014356ca435b1b..509ddfd2ddfb4ac1a3413c37356d7d6891b857a1 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
> @@ -21,6 +21,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  static const long double PIL = 3.1415926535897932384626433832795028841972E0L;
>  static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L;
> @@ -989,4 +990,6 @@ __ieee754_lgammal_r (long double x, int *signgamp)
>    q += neval (p, RASY, NRASY) / x;
>    return (q);
>  }
> -strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_lgammal_r, __lgammal_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
> index 62e3214ca436f768e07035512dde5019ce184515..0412b4f5047ec06dcfb121885a6bf59c2529a189 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
> @@ -62,6 +62,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
>   * 1/sqrt(2) <= x < sqrt(2)
> @@ -258,4 +259,6 @@ done:
>    z += e * L102A;
>    return (z);
>  }
> -strong_alias (__ieee754_log10l, __log10l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log10l, __log10l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
> index 1f8b6e9d7f1c8d32ff954e3d63d2710bab28112d..5b4e9f1dbb441199a00cdf47f37578b00a579846 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
> @@ -61,6 +61,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
>   * 1/sqrt(2) <= x < sqrt(2)
> @@ -251,4 +252,6 @@ done:
>    z += e;
>    return (z);
>  }
> -strong_alias (__ieee754_log2l, __log2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log2l, __log2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
> index c44feca65bc993d3a7a1c7fc065352550687ca77..80fb721c0d42c6d20e0d46d0259b8139d6eff023 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_logl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
> @@ -60,6 +60,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  /* log(1+x) = x - .5 x^2 + x^3 l(x)
>     -.0078125 <= x <= +.0078125
> @@ -297,4 +298,6 @@ __ieee754_logl(long double x)
>    y += e * ln2a;
>    return y;
>  }
> -strong_alias (__ieee754_logl, __logl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_logl, __logl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
> index 1f0f2b4c0418971e2e04e13aa7932ac5a3bdb196..ed7fa01c9983d8fd22fa87017cfd90572e47daa3 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_powl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
> @@ -67,6 +67,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double bp[] = {
>    1.0L,
> @@ -413,4 +414,6 @@ __ieee754_powl (long double x, long double y)
>    math_check_force_underflow (z);
>    return z;
>  }
> -strong_alias (__ieee754_powl, __powl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
> index efa83bdab7d761d6255fba1a21c3523861366397..9b212e947751ac0fc2520541bd9f621bbf78b8b9 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
> @@ -23,6 +23,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double zero = 0.0L;
>  
> @@ -78,4 +79,6 @@ __ieee754_remainderl(long double x, long double p)
>  	  x = -x;
>  	return x;
>  }
> -strong_alias (__ieee754_remainderl, __remainderl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
> index f869fb068cfdf4a88d090b3f0bad5c914d515297..3a777046e99f8256f3df1e280565fa0b54d38ccc 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
> @@ -32,6 +32,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0, shuge = 1.0e307;
>  
> @@ -77,4 +78,6 @@ __ieee754_sinhl(long double x)
>      /* |x| > overflowthresold, sinh(x) overflow */
>  	return x*shuge;
>  }
> -strong_alias (__ieee754_sinhl, __sinhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sinhl, __sinhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
> index cd9d43339fa4844c4b70de2cf9a5051cc68f5d51..bcad9cd1f1bc1129bea5a1061f4652a96815eb83 100644
> --- a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
> +++ b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
> @@ -33,6 +33,7 @@
>  /*********************************************************************/
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  typedef union {int64_t i[2]; long double x; double d[2]; } mynumber;
>  
> @@ -99,4 +100,6 @@ long double __ieee754_sqrtl(long double x)
>      return tm256*__ieee754_sqrtl(x*t512);
>    }
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_acoshl.c b/sysdeps/ieee754/ldbl-96/e_acoshl.c
> index 56b04d4cc43122e4e40f5d7c036932cfb050ba9c..079f21fb6d72a14ab2277a11ed88fdee8524b062 100644
> --- a/sysdeps/ieee754/ldbl-96/e_acoshl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_acoshl.c
> @@ -30,6 +30,7 @@
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>  one	= 1.0,
> @@ -58,4 +59,6 @@ __ieee754_acoshl(long double x)
>  	    return __log1pl(t+sqrtl(2.0*t+t*t));
>  	}
>  }
> -strong_alias (__ieee754_acoshl, __acoshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_asinl.c b/sysdeps/ieee754/ldbl-96/e_asinl.c
> index 806906a58a411bcb246c49cef4d6ce72ee1dab51..728990b07734a7bc3eb4ebfff458a3a415c7d16f 100644
> --- a/sysdeps/ieee754/ldbl-96/e_asinl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_asinl.c
> @@ -62,6 +62,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>    one = 1.0L,
> @@ -155,4 +156,6 @@ __ieee754_asinl (long double x)
>    else
>      return -t;
>  }
> -strong_alias (__ieee754_asinl, __asinl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asinl, __asinl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_atanhl.c b/sysdeps/ieee754/ldbl-96/e_atanhl.c
> index 7312f84329db49c4787826b22f42fca72550e4cf..fa4a1c31fdc1806bb265d7b1490202e3c5bff362 100644
> --- a/sysdeps/ieee754/ldbl-96/e_atanhl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_atanhl.c
> @@ -37,6 +37,7 @@
>  #include <math-barriers.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0, huge = 1e4900L;
>  
> @@ -68,4 +69,6 @@ __ieee754_atanhl(long double x)
>  	    t = 0.5*__log1pl((x+x)/(one-x));
>  	if(se<=0x7fff) return t; else return -t;
>  }
> -strong_alias (__ieee754_atanhl, __atanhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_coshl.c b/sysdeps/ieee754/ldbl-96/e_coshl.c
> index 1edf2c154254f98ec97895458c55b3d6c16024a8..6e9e49d239f9bed8f960a439737ecf5bb2fe5a8a 100644
> --- a/sysdeps/ieee754/ldbl-96/e_coshl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_coshl.c
> @@ -36,6 +36,7 @@ static char rcsid[] = "$NetBSD: e_cosh.c,v 1.7 1995/05/10 20:44:58 jtc Exp $";
>  
>  #include <math.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0, half=0.5, huge = 1.0e4900L;
>  
> @@ -84,4 +85,6 @@ __ieee754_coshl (long double x)
>      /* |x| >= log(2*maxdouble), cosh(x) overflow */
>  	return huge*huge;
>  }
> -strong_alias (__ieee754_coshl, __coshl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_coshl, __coshl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_gammal_r.c b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
> index fceb193a415cf4b5ba11ef36b9d1375320e2fc5e..4c29eaafe0689a6593b0f1c6c6bd4bdb51d356bd 100644
> --- a/sysdeps/ieee754/ldbl-96/e_gammal_r.c
> +++ b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
> @@ -22,6 +22,7 @@
>  #include <fenv_private.h>
>  #include <math-underflow.h>
>  #include <float.h>
> +#include <shlib-compat.h>
>  
>  /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
>     approximation to gamma function.  */
> @@ -209,4 +210,6 @@ __ieee754_gammal_r (long double x, int *signgamp)
>    else
>      return ret;
>  }
> -strong_alias (__ieee754_gammal_r, __gammal_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_gammal_r, __gammal_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c
> index f664e30c987a3c18000ec1c34b1d3e7e7a20ac33..f54b50f97e215d44bd6f1035a7cc7a2049b21b0f 100644
> --- a/sysdeps/ieee754/ldbl-96/e_hypotl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_hypotl.c
> @@ -49,6 +49,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  long double __ieee754_hypotl(long double x, long double y)
>  {
> @@ -140,4 +141,6 @@ long double __ieee754_hypotl(long double x, long double y)
>  	    return w;
>  	} else return w;
>  }
> -strong_alias (__ieee754_hypotl, __hypotl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotl, __hypotl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_j0l.c b/sysdeps/ieee754/ldbl-96/e_j0l.c
> index e720ae955801616424395aa54b91df72ee1ecd5e..6f08df46a32d7c6e7e2cffe5b23962709540b939 100644
> --- a/sysdeps/ieee754/ldbl-96/e_j0l.c
> +++ b/sysdeps/ieee754/ldbl-96/e_j0l.c
> @@ -74,6 +74,7 @@
>  #include <math.h>
>  #include <math-barriers.h>
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  static long double pzero (long double), qzero (long double);
>  
> @@ -165,7 +166,9 @@ __ieee754_j0l (long double x)
>        return ((one + u) * (one - u) + z * (r / s));
>      }
>  }
> -strong_alias (__ieee754_j0l, __j0l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j0l, __j0l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* y0(x) = 2/pi ln(x) J0(x) + U(x^2)/V(x^2)
> @@ -256,7 +259,9 @@ __ieee754_y0l (long double x)
>    v = V[0] + z * (V[1] + z * (V[2] + z * (V[3] + z * (V[4] + z))));
>    return (u / v + tpi * (__ieee754_j0l (x) * __ieee754_logl (x)));
>  }
> -strong_alias (__ieee754_y0l, __y0l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y0l, __y0l_finite, GLIBC_2_15);
> +#endif
>  
>  /* The asymptotic expansions of pzero is
>   *	1 - 9/128 s^2 + 11025/98304 s^4 - ...,	where s = 1/x.
> diff --git a/sysdeps/ieee754/ldbl-96/e_j1l.c b/sysdeps/ieee754/ldbl-96/e_j1l.c
> index 581615d563fce9b79cf23e5af15628fa61205398..9f4c58dcc706de68ad5a737c8961be511fe2e675 100644
> --- a/sysdeps/ieee754/ldbl-96/e_j1l.c
> +++ b/sysdeps/ieee754/ldbl-96/e_j1l.c
> @@ -76,6 +76,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static long double pone (long double), qone (long double);
>  
> @@ -167,7 +168,9 @@ __ieee754_j1l (long double x)
>    r *= x;
>    return (x * 0.5 + r / s);
>  }
> -strong_alias (__ieee754_j1l, __j1l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_j1l, __j1l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* Y1(x) = 2/pi * (log(x) * j1(x) - 1/x) + x R(x^2)
> @@ -254,7 +257,9 @@ __ieee754_y1l (long double x)
>    return (x * (u / v) +
>  	  tpi * (__ieee754_j1l (x) * __ieee754_logl (x) - one / x));
>  }
> -strong_alias (__ieee754_y1l, __y1l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_y1l, __y1l_finite, GLIBC_2_15);
> +#endif
>  
>  
>  /* For x >= 8, the asymptotic expansions of pone is
> diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
> index 6c1c4b4653eb6195dd0f762c868fd82e7f2b830f..1808542a1e21387bb34f9382d15bbaa942e40e8b 100644
> --- a/sysdeps/ieee754/ldbl-96/e_jnl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
> @@ -62,6 +62,7 @@
>  #include <math_private.h>
>  #include <fenv_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>    invsqrtpi = 5.64189583547756286948079e-1L, two = 2.0e0L, one = 1.0e0L;
> @@ -301,7 +302,9 @@ __ieee754_jnl (int n, long double x)
>      math_check_force_underflow (ret);
>    return ret;
>  }
> -strong_alias (__ieee754_jnl, __jnl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_jnl, __jnl_finite, GLIBC_2_15);
> +#endif
>  
>  long double
>  __ieee754_ynl (int n, long double x)
> @@ -407,4 +410,6 @@ __ieee754_ynl (int n, long double x)
>      ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
>    return ret;
>  }
> -strong_alias (__ieee754_ynl, __ynl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_ynl, __ynl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
> index a5d6d0dea5e5d86be675ce163cd5a7328082ed64..0a62c512bc16b3fec245b1a16a5d6f52579719c6 100644
> --- a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
> +++ b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
> @@ -94,6 +94,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <libc-diag.h>
> +#include <shlib-compat.h>
>  
>  static const long double
>    half = 0.5L,
> @@ -436,4 +437,6 @@ __ieee754_lgammal_r (long double x, int *signgamp)
>    DIAG_POP_NEEDS_COMMENT;
>    return r;
>  }
> -strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_lgammal_r, __lgammal_r_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-96/e_sinhl.c b/sysdeps/ieee754/ldbl-96/e_sinhl.c
> index a4b39783bcca7d8aef10a52cbb407f929fed8a13..106101de29d27cda1d20fa69f9bc7cb148b9716a 100644
> --- a/sysdeps/ieee754/ldbl-96/e_sinhl.c
> +++ b/sysdeps/ieee754/ldbl-96/e_sinhl.c
> @@ -40,6 +40,7 @@ static char rcsid[] = "$NetBSD: $";
>  #include <math.h>
>  #include <math_private.h>
>  #include <math-underflow.h>
> +#include <shlib-compat.h>
>  
>  static const long double one = 1.0, shuge = 1.0e4931L;
>  
> @@ -85,4 +86,6 @@ __ieee754_sinhl(long double x)
>      /* |x| > overflowthreshold, sinhl(x) overflow */
>  	return x*shuge;
>  }
> -strong_alias (__ieee754_sinhl, __sinhl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sinhl, __sinhl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrt.c b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
> index f9cf280fd6d7ac3a7064dd595b2fd9ff4c265310..ca3cca15a51e315559ae0c6e2a132f692cf2a9e4 100644
> --- a/sysdeps/m68k/coldfire/fpu/e_sqrt.c
> +++ b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
> @@ -15,10 +15,14 @@
>     License along with the GNU C Library.  If not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> +#include <shlib-compat.h>
> +
>  double
>  __ieee754_sqrt (double x)
>  {
>    asm ("fdsqrt.d %1,%0" : "=f" (x) : "fm" (x));
>    return x;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrtf.c b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
> index 61d94ee6ec55ff1a52980557242b50314ddbaf2f..4d97d01fa5e9f8aa6d77eccc7bd8c671b01a4692 100644
> --- a/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
> +++ b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
> @@ -15,6 +15,8 @@
>     License along with the GNU C Library.  If not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> +#include <shlib-compat.h>
> +
>  float
>  __ieee754_sqrtf (float x)
>  {
> @@ -22,4 +24,6 @@ __ieee754_sqrtf (float x)
>    asm ("fssqrt.s %1,%0" : "=f" (result) : "dm" (x));
>    return result;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/m68k/m680x0/fpu/e_atan2.c b/sysdeps/m68k/m680x0/fpu/e_atan2.c
> index 8f41c4765741602ba4912be0ceefe7d28a615f3f..5bd03006b94f0b9f81fe7077770108dbbb8e94b4 100644
> --- a/sysdeps/m68k/m680x0/fpu/e_atan2.c
> +++ b/sysdeps/m68k/m680x0/fpu/e_atan2.c
> @@ -18,6 +18,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include "mathimpl.h"
> +#include <shlib-compat.h>
>  
>  #ifndef SUFF
>  #define SUFF
> @@ -101,4 +102,6 @@ s(__ieee754_atan2) (float_type y, float_type x)
>      }
>    return z;
>  }
> -strong_alias (s(__ieee754_atan2), CONCATX (s (__atan2), _finite))
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, s(__ieee754_atan2), CONCATX (s (__atan2), _finite), GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/m68k/m680x0/fpu/e_pow.c b/sysdeps/m68k/m680x0/fpu/e_pow.c
> index 010e127c257996557460148dd8d2e0ec0b4fd5df..71d0c5d9550aafb670135ebea50a669da6cfce09 100644
> --- a/sysdeps/m68k/m680x0/fpu/e_pow.c
> +++ b/sysdeps/m68k/m680x0/fpu/e_pow.c
> @@ -18,6 +18,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include "mathimpl.h"
> +#include <shlib-compat.h>
>  
>  #ifndef SUFF
>  #define SUFF
> @@ -123,4 +124,6 @@ s(__ieee754_pow) (float_type x, float_type y)
>      z = m81(__ieee754_exp) (y * m81(__ieee754_log) (x));
>    return z;
>  }
> -strong_alias (s(__ieee754_pow), CONCATX (s(__pow), _finite))
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, s(__ieee754_pow), CONCATX (s(__pow), _finite), GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/m68k/m680x0/fpu/e_scalb.c b/sysdeps/m68k/m680x0/fpu/e_scalb.c
> index dae8b9aa70a87e4036847dc774b4656b155c126e..80de704e9df4ac953c9dec1ebf8720692c0fc8b0 100644
> --- a/sysdeps/m68k/m680x0/fpu/e_scalb.c
> +++ b/sysdeps/m68k/m680x0/fpu/e_scalb.c
> @@ -19,6 +19,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include "mathimpl.h"
> +#include <shlib-compat.h>
>  
>  #ifndef SUFF
>  #define SUFF
> @@ -57,4 +58,6 @@ s(__ieee754_scalb) (float_type x, float_type fn)
>    __asm ("fscale%.x %1, %0" : "=f" (retval) : "f" (fn), "0" (x));
>    return retval;
>  }
> -strong_alias (s(__ieee754_scalb), CONCATX (s(__scalb), _finite))
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, s(__ieee754_scalb), CONCATX (s(__scalb), _finite), GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/mips/fpu/e_sqrt.c b/sysdeps/mips/fpu/e_sqrt.c
> index 1a120fda91db5e08bac812e659b0e5a856c1a0d4..d45bdf93b8fc1f09f1caa9f26b134f3b96d66baa 100644
> --- a/sysdeps/mips/fpu/e_sqrt.c
> +++ b/sysdeps/mips/fpu/e_sqrt.c
> @@ -18,7 +18,7 @@
>  
>  
>  #include <sgidefs.h>
> -
> +#include <shlib-compat.h>
>  
>  #if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
>  
> @@ -29,7 +29,9 @@ __ieee754_sqrt (double x)
>    __asm__ ("sqrt.d %0,%1" : "=f" (z) : "f" (x));
>    return z;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
>  
>  #else
>  
> diff --git a/sysdeps/mips/fpu/e_sqrtf.c b/sysdeps/mips/fpu/e_sqrtf.c
> index 62ea79f581ba5ebd1a0082481b1f657fdf6d1c5b..61b3fcd9acd41c1f879e6ee2a8c5af9d1ee64502 100644
> --- a/sysdeps/mips/fpu/e_sqrtf.c
> +++ b/sysdeps/mips/fpu/e_sqrtf.c
> @@ -18,7 +18,7 @@
>  
>  
>  #include <sgidefs.h>
> -
> +#include <shlib-compat.h>
>  
>  #if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
>  
> @@ -29,7 +29,9 @@ __ieee754_sqrtf (float x)
>    __asm__ ("sqrt.s %0,%1" : "=f" (z) : "f" (x));
>    return z;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
>  
>  #else
>  
> diff --git a/sysdeps/mips/mips64/e_sqrtl.c b/sysdeps/mips/mips64/e_sqrtl.c
> index 0cd27441549d4c783147fd1d3a159170c60cdea7..4370a2a8b035a594f1ec9a10a5abd2956e368be1 100644
> --- a/sysdeps/mips/mips64/e_sqrtl.c
> +++ b/sysdeps/mips/mips64/e_sqrtl.c
> @@ -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)
> @@ -36,4 +37,6 @@ __ieee754_sqrtl (const long double a)
>    FP_HANDLE_EXCEPTIONS;
>    return c;
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c
> index 039e5be4303f70e5afd3f1fd3d5900866249438c..93108737d7a9cb5fe4b9b60a38ab5ed2778de826 100644
> --- a/sysdeps/powerpc/fpu/e_hypot.c
> +++ b/sysdeps/powerpc/fpu/e_hypot.c
> @@ -21,6 +21,7 @@
>  #include <math_private.h>
>  #include <math-underflow.h>
>  #include <stdint.h>
> +#include <shlib-compat.h>
>  
>  static const double two60   = 1.152921504606847e+18;
>  static const double two500  = 3.2733906078961419e+150;
> @@ -132,4 +133,8 @@ __ieee754_hypot (double x, double y)
>      }
>    return sqrt (x * x + y * y);
>  }
> -strong_alias (__ieee754_hypot, __hypot_finite)
> +#ifndef __ieee754_hypot
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
> +# endif
> +#endif
> diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c
> index 0738b2d9a2946fc15f25ad311ff461cce15b18b9..7d5fe5dd85405ba680f29d9bbc312ee073c7e6d5 100644
> --- a/sysdeps/powerpc/fpu/e_hypotf.c
> +++ b/sysdeps/powerpc/fpu/e_hypotf.c
> @@ -20,6 +20,7 @@
>  #include <math.h>
>  #include <math_private.h>
>  #include <stdint.h>
> +#include <shlib-compat.h>
>  
>  /* __ieee754_hypotf(x,y)
>  
> @@ -73,4 +74,8 @@ __ieee754_hypotf (float x, float y)
>  
>    return sqrt ((double) x * x + (double) y * y);
>  }
> -strong_alias (__ieee754_hypotf, __hypotf_finite)
> +#ifndef __ieee754_hypotf
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
> +# endif
> +#endif
> diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
> index 04381e69549b1653fd0f7fe1e3a77397931c2ac6..bb9692ee3a34eedec93581c33bb8d7e431765539 100644
> --- a/sysdeps/powerpc/fpu/e_sqrt.c
> +++ b/sysdeps/powerpc/fpu/e_sqrt.c
> @@ -24,6 +24,7 @@
>  #include <stdint.h>
>  #include <sysdep.h>
>  #include <ldsodefs.h>
> +#include <shlib-compat.h>
>  
>  #ifndef _ARCH_PPCSQ
>  static const double almost_half = 0.5000000000000001;	/* 0.5 + 2^-53 */
> @@ -173,4 +174,6 @@ __ieee754_sqrt (double x)
>  
>    return z;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
> index 5d9e900005a18e278814964ac38bb60b30e88e63..67d21e70261c144ef0fbe8be31e03c13e2dfa688 100644
> --- a/sysdeps/powerpc/fpu/e_sqrtf.c
> +++ b/sysdeps/powerpc/fpu/e_sqrtf.c
> @@ -24,6 +24,7 @@
>  #include <stdint.h>
>  #include <sysdep.h>
>  #include <ldsodefs.h>
> +#include <shlib-compat.h>
>  
>  #ifndef _ARCH_PPCSQ
>  static const float almost_half = 0.50000006;	/* 0.5 + 2^-24 */
> @@ -148,4 +149,6 @@ __ieee754_sqrtf (float x)
>  
>    return z;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
> index 92312a8a7c14af5a3bab4cc24d150f5e0b7aec9c..1548b35f619b0c9c78c4156e30a22df131fa496e 100644
> --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
> +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
> @@ -18,9 +18,6 @@
>  
>  #include <math.h>
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_hypot __ieee754_hypot_power7
>  
>  #include <sysdeps/powerpc/fpu/e_hypot.c>

Ok.

> diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
> index 32b008d06feaede68b31907374f53366c870ba4d..c831a8087debbf1fbfdef61c300064c58f4d2238 100644
> --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
> +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
> @@ -18,9 +18,6 @@
>  
>  #include <math.h>
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_hypot __ieee754_hypot_ppc32
>  
>  #include <sysdeps/powerpc/fpu/e_hypot.c>

Ok.

> diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
> index f49fda8cb1dba6f0878e685826d9670bb6f0230e..84144d7fcc48faadd6151b70daba506301e2f775 100644
> --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
> +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
> @@ -30,4 +30,6 @@ libc_ifunc (__ieee754_hypot,
>  	    ? __ieee754_hypot_power7
>              : __ieee754_hypot_ppc32);
>  
> -strong_alias (__ieee754_hypot, __hypot_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
> index 5b47501739f3ec2a205612f438a3338c98657c9a..ca160fc9f749bc9b0e74d2e50421b063384bccac 100644
> --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
> +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
> @@ -18,9 +18,6 @@
>  
>  #include <math.h>
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_hypotf __ieee754_hypotf_power7
>  
>  #include <sysdeps/powerpc/fpu/e_hypotf.c>

Ok.

> diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
> index 153e3bcb574433866a52900eb3100fd91f2f36f2..453e19307f213cde2bbdab60b144be4975a4f465 100644
> --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
> +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
> @@ -18,9 +18,6 @@
>  
>  #include <math.h>
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_hypotf __ieee754_hypotf_ppc32
>  
>  #include <sysdeps/ieee754/flt-32/e_hypotf.c>

Ok.

> diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
> index f637632b1759e26cb0218c934f160ce4a7575ceb..490060d0f0d998118058179c097144d82daeda1d 100644
> --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
> +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
> @@ -30,4 +30,6 @@ libc_ifunc (__ieee754_hypotf,
>  	    ? __ieee754_hypotf_power7
>              : __ieee754_hypotf_ppc32);
>  
> -strong_alias (__ieee754_hypotf, __hypotf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
> index e0e14c2a470d80fc21611fd1ca4c3dde907c3111..069516e0841c688d39f2bb4c16e2b2bbcc17f0bd 100644
> --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
> +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
> @@ -16,9 +16,6 @@
>     License along with the GNU C Library; if not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_expf __ieee754_expf_power8
>  
>  #include <sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S>

This file does not exist anymore.

> diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
> index dc0023c244f8f81df965d4ccfd3e739bab5c71a9..679cb70b27e2aa33880d1f7ed82394f3034cb159 100644
> --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
> +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
> @@ -29,4 +29,6 @@ libc_ifunc (__ieee754_expf,
>  	    ? __ieee754_expf_power8
>  	    : __ieee754_expf_ppc64);
>  
> -strong_alias (__ieee754_expf, __expf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_expf, __expf_finite, GLIBC_2_15);
> +#endif

Ditto.

> diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
> index da1e80f0d6d81ab02ed832de3d2cb0fbafde202b..a399b021296d186a79cc815830e7141af3c389b8 100644
> --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
> +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
> @@ -18,9 +18,6 @@
>  
>  #include <math.h>
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_hypot __ieee754_hypot_ppc64
>  
>  #include <sysdeps/powerpc/fpu/e_hypot.c>

Ok.

> diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
> index 3bd04e95177ed30ee1b06e61c5ed4d5c9b167a0e..14bfd41baef21da51bf5deb4746e761a10551e5e 100644
> --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
> +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
> @@ -30,4 +30,6 @@ libc_ifunc (__ieee754_hypot,
>  	    ? __ieee754_hypot_power7
>              : __ieee754_hypot_ppc64);
>  
> -strong_alias (__ieee754_hypot, __hypot_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
> index 6d5d54bb79652102198572a779cac50a52bf2e30..c20d418c01a65c718d2e8c1f1ad577829c1dd7f6 100644
> --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
> +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
> @@ -18,9 +18,6 @@
>  
>  #include <math.h>
>  
> -#undef strong_alias
> -#define strong_alias(a, b)
> -
>  #define __ieee754_hypotf __ieee754_hypotf_ppc64
>  
>  #include <sysdeps/powerpc/fpu/e_hypotf.c>

Ok.

> diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
> index 02c0ab497f70039e9de1b35690079bd75ded24bf..307f7c91d2e20ea74137d868e871e7309ac6b401 100644
> --- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
> +++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
> @@ -30,4 +30,6 @@ libc_ifunc (__ieee754_hypotf,
>  	    ? __ieee754_hypotf_power7
>              : __ieee754_hypotf_ppc64);
>  
> -strong_alias (__ieee754_hypotf, __hypotf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c b/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
> index b5a841570ec0a24d19f7831efb742dc31a717f26..8985116c91af67938ef7edc5fddba7c6269d8ea3 100644
> --- a/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
> +++ b/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
> @@ -27,6 +27,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  /* Unavoidable hacks since TFmode is assumed to be binary128 when
>     -mabi=ibmlongdouble is used.  */
> @@ -53,4 +54,6 @@ __ieee754_sqrtf128 (__float128 a)
>    FP_HANDLE_EXCEPTIONS;
>    return r;
>  }
> -strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf128, __sqrtf128_finite, GLIBC_2_26);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c b/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
> index a36ccf1925bc77a64e6db1716c684152cc5165ea..c613ba6479288862d7b25d122e8a077a0267691c 100644
> --- a/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
> +++ b/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
> @@ -26,6 +26,8 @@
>     License along with the GNU C Library; if not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> +#include <shlib-compat.h>
> +
>  __float128
>  __ieee754_sqrtf128 (__float128 a)
>  {
> @@ -33,4 +35,6 @@ __ieee754_sqrtf128 (__float128 a)
>    asm ("xssqrtqp %0,%1" : "=v" (z) : "v" (a));
>    return z;
>  }
> -strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf128, __sqrtf128_finite, GLIBC_2_26);
> +#endif
> diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S b/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
> index 7469a728733d4f46b2615441ea163f44741dcc66..7931e6079954f2ccda8db9a10079722568e7d172 100644
> --- a/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
> +++ b/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <sysdep.h>
> +#include <shlib-compat.h>
>  
>  /* Short algorithm description:
>   *
> @@ -300,4 +301,8 @@ END(__ieee754_expf)
>  	.4byte	0x7f800000	/* Single precision Inf.  */
>  	.4byte	0		/* Single precision zero.  */
>  
> -strong_alias (__ieee754_expf, __expf_finite)
> +#ifndef __ieee754_expf
> +# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_expf, __expf_finite, GLIBC_2_15);
> +# endif
> +#endif

This file does not exist anymore.

> diff --git a/sysdeps/riscv/e_sqrtl.c b/sysdeps/riscv/e_sqrtl.c
> index 2ac35c603763236bf8383b11ab1cf64391f41d4e..cab624bd874682b7086ab644ae52f651990ca6a3 100644
> --- a/sysdeps/riscv/e_sqrtl.c
> +++ b/sysdeps/riscv/e_sqrtl.c
> @@ -19,6 +19,7 @@
>  #include <stdlib.h>
>  #include <soft-fp/soft-fp.h>
>  #include <soft-fp/quad.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_sqrtl (const long double a)
> @@ -34,4 +35,6 @@ __ieee754_sqrtl (const long double a)
>    FP_HANDLE_EXCEPTIONS;
>    return c;
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/riscv/rvd/e_sqrt.c b/sysdeps/riscv/rvd/e_sqrt.c
> index 4cd354ce94c4163c6d7adf0d008e0a5a975e3a28..98e06596afcb66ef932edf32a13b8008e087ad3d 100644
> --- a/sysdeps/riscv/rvd/e_sqrt.c
> +++ b/sysdeps/riscv/rvd/e_sqrt.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  double
>  __ieee754_sqrt (double x)
> @@ -24,4 +25,6 @@ __ieee754_sqrt (double x)
>    asm ("fsqrt.d %0, %1" : "=f" (x) : "f" (x));
>    return x;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/riscv/rvf/e_sqrtf.c b/sysdeps/riscv/rvf/e_sqrtf.c
> index e7576784020dc4b4f6066ec2a682690c9440a20c..b73ea68be3052c673a9dbc1d57131fa0436cedae 100644
> --- a/sysdeps/riscv/rvf/e_sqrtf.c
> +++ b/sysdeps/riscv/rvf/e_sqrtf.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  float
>  __ieee754_sqrtf (float x)
> @@ -24,4 +25,6 @@ __ieee754_sqrtf (float x)
>    asm ("fsqrt.s %0, %1" : "=f" (x) : "f" (x));
>    return x;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/s390/fpu/e_sqrt.c b/sysdeps/s390/fpu/e_sqrt.c
> index 13d096d7a2607009c0581aaeca99f3c96905a5c3..d82eecdca4055e8d4590684337785d63c4733207 100644
> --- a/sysdeps/s390/fpu/e_sqrt.c
> +++ b/sysdeps/s390/fpu/e_sqrt.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  double
>  __ieee754_sqrt (double x)
> @@ -26,4 +27,6 @@ __ieee754_sqrt (double x)
>    __asm__ ( "sqdbr %0,%1" : "=f" (res) : "f" (x) );
>    return res;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/s390/fpu/e_sqrtf.c b/sysdeps/s390/fpu/e_sqrtf.c
> index fbb939c2717ff625e830e5cdb1a54a3e5538a2ce..95cb4347e1c41e14279998d3f54d4635f05af229 100644
> --- a/sysdeps/s390/fpu/e_sqrtf.c
> +++ b/sysdeps/s390/fpu/e_sqrtf.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  float
>  __ieee754_sqrtf (float x)
> @@ -26,4 +27,6 @@ __ieee754_sqrtf (float x)
>    __asm__ ( "sqebr %0,%1" : "=f" (res) : "f" (x) );
>    return res;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/s390/fpu/e_sqrtl.c b/sysdeps/s390/fpu/e_sqrtl.c
> index 3f453be1fc53772b7c2fa90dfeb52a3568abbf61..5cf9b2a2702bd4cdeb1af61e237f8a35d672227b 100644
> --- a/sysdeps/s390/fpu/e_sqrtl.c
> +++ b/sysdeps/s390/fpu/e_sqrtl.c
> @@ -18,6 +18,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  long double
>  __ieee754_sqrtl (long double x)
> @@ -27,4 +28,6 @@ __ieee754_sqrtl (long double x)
>    __asm__ ( "sqxbr %0,%1" : "=f" (res) : "f" (x) );
>    return res;
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/sparc/sparc32/e_sqrt.c b/sysdeps/sparc/sparc32/e_sqrt.c
> index 00369dcb61a969aa25c8fa7aff5ba09b1184547c..eaeed0926e9a3c622b3307a6a119f5ce664c9f79 100644
> --- a/sysdeps/sparc/sparc32/e_sqrt.c
> +++ b/sysdeps/sparc/sparc32/e_sqrt.c
> @@ -17,6 +17,7 @@
>  
>  #include <errno.h>
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  #ifndef	__GNUC__
>    #error This file uses GNU C extensions; you must compile with GCC.
> @@ -30,4 +31,6 @@ __ieee754_sqrt (double x)
>    asm ("fsqrtd %1, %0" : "=f" (result) : "f" (x));
>    return result;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/sparc/sparc64/fpu/e_sqrtl.c b/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
> index 7742770148a5d255dcc75beda183d466d0641a57..1917402cd1b0bf9ca6f1649ca6514ae1d1d719e1 100644
> --- a/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
> +++ b/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
> @@ -18,6 +18,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  extern void _Qp_sqrt(long double *, const long double *);
>  
> @@ -28,4 +29,6 @@ __ieee754_sqrtl (long double x)
>    _Qp_sqrt (&ret, &x);
>    return ret;
>  }
> -strong_alias (__ieee754_sqrtl, __sqrtl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86/fpu/e_sqrtf128.c b/sysdeps/x86/fpu/e_sqrtf128.c
> index d5aa9d03674879ffa4c82a4b69665510efc4b227..a581ddd0dfc66123ceb4a23df197d9b4be70ef8d 100644
> --- a/sysdeps/x86/fpu/e_sqrtf128.c
> +++ b/sysdeps/x86/fpu/e_sqrtf128.c
> @@ -28,6 +28,7 @@
>  
>  #include <soft-fp.h>
>  #include <quad.h>
> +#include <shlib-compat.h>
>  
>  __float128
>  __ieee754_sqrtf128 (__float128 a)
> @@ -44,4 +45,7 @@ __ieee754_sqrtf128 (__float128 a)
>    FP_HANDLE_EXCEPTIONS;
>    return r;
>  }
> -strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf128, __sqrtf128_finite, GLIBC_2_26);
> +#endif
> +
> diff --git a/sysdeps/x86_64/fpu/e_exp2l.S b/sysdeps/x86_64/fpu/e_exp2l.S
> index 0e059b7565ad964104b48c8b518c7fa3553bf960..119fa9b0fef5cb9cd653ea4f6ddd14c861400073 100644
> --- a/sysdeps/x86_64/fpu/e_exp2l.S
> +++ b/sysdeps/x86_64/fpu/e_exp2l.S
> @@ -7,6 +7,7 @@
>  
>  #include <machine/asm.h>
>  #include <x86_64-math-asm.h>
> +#include <shlib-compat.h>
>  
>  DEFINE_LDBL_MIN
>  
> @@ -55,4 +56,6 @@ ENTRY(__ieee754_exp2l)
>  	fldz				/* Set result to 0.  */
>  2:	ret
>  END (__ieee754_exp2l)
> -strong_alias (__ieee754_exp2l, __exp2l_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp2l, __exp2l_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/e_fmodl.S b/sysdeps/x86_64/fpu/e_fmodl.S
> index 07c50df8d12678eeea168ac7ae12f56d5067fdb1..1df1f924ec876a33b1a6f0f8971b76257939e02a 100644
> --- a/sysdeps/x86_64/fpu/e_fmodl.S
> +++ b/sysdeps/x86_64/fpu/e_fmodl.S
> @@ -7,6 +7,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  RCSID("$NetBSD: $")
>  
> @@ -20,4 +21,6 @@ ENTRY(__ieee754_fmodl)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_fmodl)
> -strong_alias (__ieee754_fmodl, __fmodl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/e_powl.S b/sysdeps/x86_64/fpu/e_powl.S
> index 5a527316be521c0992513adb238b6ffdb248c2c8..7a4f700e1a58123174092eb6ce1a76e7719fd981 100644
> --- a/sysdeps/x86_64/fpu/e_powl.S
> +++ b/sysdeps/x86_64/fpu/e_powl.S
> @@ -19,6 +19,7 @@
>  
>  #include <machine/asm.h>
>  #include <x86_64-math-asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata.cst8,"aM",@progbits,8
>  
> @@ -430,4 +431,6 @@ ENTRY(__ieee754_powl)
>  	ret
>  
>  END(__ieee754_powl)
> -strong_alias (__ieee754_powl, __powl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/e_remainderl.S b/sysdeps/x86_64/fpu/e_remainderl.S
> index 4ee0910912fc65f5fab52a16c3f7d3c9aafdbd25..b4f148d48ea578e16d9ffc366418366dc4ea2a8d 100644
> --- a/sysdeps/x86_64/fpu/e_remainderl.S
> +++ b/sysdeps/x86_64/fpu/e_remainderl.S
> @@ -7,6 +7,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  ENTRY(__ieee754_remainderl)
>  	fldt	24(%rsp)
> @@ -18,4 +19,6 @@ ENTRY(__ieee754_remainderl)
>  	fstp	%st(1)
>  	ret
>  END (__ieee754_remainderl)
> -strong_alias (__ieee754_remainderl, __remainderl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/e_scalbl.S b/sysdeps/x86_64/fpu/e_scalbl.S
> index 2982dc3b9e7cb0d9b2bffaf6744eed42b8213738..4ca50c528abbc23a2a1c1c93faa694a7bfb1bb14 100644
> --- a/sysdeps/x86_64/fpu/e_scalbl.S
> +++ b/sysdeps/x86_64/fpu/e_scalbl.S
> @@ -9,6 +9,7 @@
>   */
>  
>  #include <machine/asm.h>
> +#include <shlib-compat.h>
>  
>  	.section .rodata
>  
> @@ -86,4 +87,6 @@ ENTRY(__ieee754_scalbl)
>  	fdiv	%st
>  	ret
>  END(__ieee754_scalbl)
> -strong_alias (__ieee754_scalbl, __scalbl_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_scalbl, __scalbl_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/e_sqrt.c b/sysdeps/x86_64/fpu/e_sqrt.c
> index fa0d39d34b9e79fab93952a977c205e320fd34a0..b6d8939c03429d74c17f948205b22b5471d478c1 100644
> --- a/sysdeps/x86_64/fpu/e_sqrt.c
> +++ b/sysdeps/x86_64/fpu/e_sqrt.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  #undef __ieee754_sqrt
>  double
> @@ -28,4 +29,6 @@ __ieee754_sqrt (double x)
>  
>    return res;
>  }
> -strong_alias (__ieee754_sqrt, __sqrt_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/e_sqrtf.c b/sysdeps/x86_64/fpu/e_sqrtf.c
> index 57d0dc72704179e5112575d82942778eb4bc9242..94f98a25df6aaffc15ed30d4caa6a0f94777f6c5 100644
> --- a/sysdeps/x86_64/fpu/e_sqrtf.c
> +++ b/sysdeps/x86_64/fpu/e_sqrtf.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math_private.h>
> +#include <shlib-compat.h>
>  
>  #undef __ieee754_sqrtf
>  float
> @@ -28,4 +29,6 @@ __ieee754_sqrtf (float x)
>  
>    return res;
>  }
> -strong_alias (__ieee754_sqrtf, __sqrtf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
> +#endif
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_asin.c b/sysdeps/x86_64/fpu/multiarch/e_asin.c
> index bc533f80b288f7a06145489999fa55eb018ac70b..838d5f38003b105d476d9901f5b55143c39f1f9b 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_asin.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_asin.c
> @@ -16,6 +16,8 @@
>     License along with the GNU C Library; if not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> +#include <shlib-compat.h>
> +
>  extern double __redirect_ieee754_asin (double);
>  extern double __redirect_ieee754_acos (double);
>  
> @@ -24,7 +26,9 @@ extern double __redirect_ieee754_acos (double);
>  
>  libc_ifunc_redirected (__redirect_ieee754_asin, __ieee754_asin,
>  		       IFUNC_SELECTOR ());
> -strong_alias (__ieee754_asin, __asin_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_asin, __asin_finite, GLIBC_2_15);
> +#endif
>  
>  #undef SYMBOL_NAME
>  #define SYMBOL_NAME ieee754_acos
> @@ -32,8 +36,9 @@ strong_alias (__ieee754_asin, __asin_finite)
>  
>  libc_ifunc_redirected (__redirect_ieee754_acos, __ieee754_acos,
>  		       IFUNC_SELECTOR ());
> -strong_alias (__ieee754_acos, __acos_finite)
> -
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_acos, __acos_finite, GLIBC_2_15);
> +#endif
>  
>  #define __ieee754_acos __ieee754_acos_sse2
>  #define __ieee754_asin __ieee754_asin_sse2
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_atan2.c b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
> index d75aecbfbc4ef6c22f16d93d43e2f6a5e71ed889..5d5dca0592448631469e20c8f4a5ab7cf0fde2e4 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_atan2.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
> @@ -16,6 +16,8 @@
>     License along with the GNU C Library; if not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> +#include <shlib-compat.h>
> +
>  extern double __redirect_ieee754_atan2 (double, double);
>  
>  #define SYMBOL_NAME ieee754_atan2
> @@ -23,7 +25,9 @@ extern double __redirect_ieee754_atan2 (double, double);
>  
>  libc_ifunc_redirected (__redirect_ieee754_atan2,
>  		       __ieee754_atan2, IFUNC_SELECTOR ());
> -strong_alias (__ieee754_atan2, __atan2_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_atan2, __atan2_finite, GLIBC_2_15);
> +#endif
>  
>  #define __ieee754_atan2 __ieee754_atan2_sse2
>  #include <sysdeps/ieee754/dbl-64/e_atan2.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c
> index e9e05069ca9c25ef4eb92fcc0b33923e0747e662..4791c695864128ca4fa8c987a05793c9ad897a21 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_exp.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  extern double __redirect_ieee754_exp (double);
>  
> @@ -25,7 +26,9 @@ extern double __redirect_ieee754_exp (double);
>  
>  libc_ifunc_redirected (__redirect_ieee754_exp, __ieee754_exp,
>  		       IFUNC_SELECTOR ());
> -strong_alias (__ieee754_exp, __exp_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_exp, __exp_finite, GLIBC_2_15);
> +#endif
>  
>  #define __exp __ieee754_exp_sse2
>  #include <sysdeps/ieee754/dbl-64/e_exp.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
> index 777afdc33b44d238a542d8bf58cf20428096fae0..cc8ec2ecedac37e789e47e5dea0359400c9ba0b3 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <libm-alias-float.h>
> +#include <shlib-compat.h>
>  
>  extern float __redirect_exp2f (float);
>  
> @@ -26,15 +27,16 @@ extern float __redirect_exp2f (float);
>  libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
>  
>  #ifdef SHARED
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
>  libm_alias_float_other (__exp2, exp2)
>  #else
>  libm_alias_float (__exp2, exp2)
>  #endif
>  
>  strong_alias (__exp2f, __ieee754_exp2f)
> -strong_alias (__exp2f, __exp2f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __exp2f, __exp2f_finite, GLIBC_2_15);
> +#endif
>  
>  #define __exp2f __exp2f_sse2
>  #include <sysdeps/ieee754/flt-32/e_exp2f.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_expf.c b/sysdeps/x86_64/fpu/multiarch/e_expf.c
> index ba38154fd7be7f63949a48803ba0b4a18cf5a1f9..3d2715bc27fbde055395ca4a3570346a0d9ac420 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_expf.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_expf.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <libm-alias-float.h>
> +#include <shlib-compat.h>
>  
>  extern float __redirect_expf (float);
>  
> @@ -29,15 +30,16 @@ libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
>  __hidden_ver1 (__expf, __GI___expf, __redirect_expf)
>    __attribute__ ((visibility ("hidden")));
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __expf, expf, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
>  libm_alias_float_other (__exp, exp)
>  #else
>  libm_alias_float (__exp, exp)
>  #endif
>  
>  strong_alias (__expf, __ieee754_expf)
> -strong_alias (__expf, __expf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __expf, __expf_finite, GLIBC_2_15);
> +#endif
>  
>  #define __expf __expf_sse2
>  #include <sysdeps/ieee754/flt-32/e_expf.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_log.c b/sysdeps/x86_64/fpu/multiarch/e_log.c
> index 80aa764e272ead9ac81f699f04c4204f5abf7739..435fb03edfdb55f7a6a993f8dd363a6deef6c8ef 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_log.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_log.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  extern double __redirect_ieee754_log (double);
>  
> @@ -25,7 +26,9 @@ extern double __redirect_ieee754_log (double);
>  
>  libc_ifunc_redirected (__redirect_ieee754_log, __ieee754_log,
>  		       IFUNC_SELECTOR ());
> -strong_alias (__ieee754_log, __log_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_log, __log_finite, GLIBC_2_15);
> +#endif
>  
>  #define __log __ieee754_log_sse2
>  #include <sysdeps/ieee754/dbl-64/e_log.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_log2f.c b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
> index fcf09271368d4f0184415fde9d3ee612d343d60c..b878b6c54ffa24ea17303df4957ae490af507443 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_log2f.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <libm-alias-float.h>
> +#include <shlib-compat.h>
>  
>  extern float __redirect_log2f (float);
>  
> @@ -29,15 +30,16 @@ libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
>  __hidden_ver1 (__log2f, __GI___log2f, __redirect_log2f)
>    __attribute__ ((visibility ("hidden")));
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
>  libm_alias_float_other (__log2, log2)
>  #else
>  libm_alias_float (__log2, log2)
>  #endif
>  
>  strong_alias (__log2f, __ieee754_log2f)
> -strong_alias (__log2f, __log2f_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __log2f, __log2f_finite, GLIBC_2_15);
> +#endif
>  
>  #define __log2f __log2f_sse2
>  #include <sysdeps/ieee754/flt-32/e_log2f.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_logf.c b/sysdeps/x86_64/fpu/multiarch/e_logf.c
> index 374d9b33fb3ac5119ce2188b10497d6cae007ea9..03b64c6d72355d75a378fdb21425b5072e0f94fe 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_logf.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_logf.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <libm-alias-float.h>
> +# include <shlib-compat.h>
>  
>  extern float __redirect_logf (float);
>  
> @@ -29,15 +30,16 @@ libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
>  __hidden_ver1 (__logf, __GI___logf, __redirect_logf)
>    __attribute__ ((visibility ("hidden")));
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __logf, logf, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
>  libm_alias_float_other (__log, log)
>  #else
>  libm_alias_float (__log, log)
>  #endif
>  
>  strong_alias (__logf, __ieee754_logf)
> -strong_alias (__logf, __logf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __logf, __logf_finite, GLIBC_2_15);
> +#endif
>  
>  #define __logf __logf_sse2
>  #include <sysdeps/ieee754/flt-32/e_logf.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_pow.c b/sysdeps/x86_64/fpu/multiarch/e_pow.c
> index 897607a79059918ed501dbe5a14bf34b1b4eefd9..7a9758572edb575d618b988a738fb940cde7baa8 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_pow.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_pow.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <math.h>
> +#include <shlib-compat.h>
>  
>  extern double __redirect_ieee754_pow (double, double);
>  
> @@ -25,7 +26,9 @@ extern double __redirect_ieee754_pow (double, double);
>  
>  libc_ifunc_redirected (__redirect_ieee754_pow,
>  		       __ieee754_pow, IFUNC_SELECTOR ());
> -strong_alias (__ieee754_pow, __pow_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __ieee754_pow, __pow_finite, GLIBC_2_15);
> +#endif
>  
>  #define __pow __ieee754_pow_sse2
>  #include <sysdeps/ieee754/dbl-64/e_pow.c>
> diff --git a/sysdeps/x86_64/fpu/multiarch/e_powf.c b/sysdeps/x86_64/fpu/multiarch/e_powf.c
> index 3cde6db382bc12698f2dc2b3f9f97edd37ef4688..20f015e8228bbcc3326950dedce834b26da672a7 100644
> --- a/sysdeps/x86_64/fpu/multiarch/e_powf.c
> +++ b/sysdeps/x86_64/fpu/multiarch/e_powf.c
> @@ -17,6 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #include <libm-alias-float.h>
> +#include <shlib-compat.h>
>  
>  #define powf __redirect_powf
>  #define __DECL_SIMD___redirect_powf
> @@ -32,15 +33,16 @@ libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
>  __hidden_ver1 (__powf, __GI___powf, __redirect_powf)
>    __attribute__ ((visibility ("hidden")));
>  
> -# include <shlib-compat.h>
> -versioned_symbol (libm, __powf, powf, GLIBC_2_27);
> +versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
>  libm_alias_float_other (__pow, pow)
>  #else
>  libm_alias_float (__pow, pow)
>  #endif
>  
>  strong_alias (__powf, __ieee754_powf)
> -strong_alias (__powf, __powf_finite)
> +#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
> +compat_symbol (libm, __powf, __powf_finite, GLIBC_2_15);
> +#endif
>  
>  #define __powf __powf_sse2
>  #include <sysdeps/ieee754/flt-32/e_powf.c>
>
Joseph Myers - July 24, 2019, 9:02 p.m.
On Wed, 26 Jun 2019, Wilco Dijkstra wrote:

> diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
> index f3917b463837e9eb19d18c62ba232d9bb077e9a1..c7bb208efb024030f0ae7cc71a01dab1d42c4fa1 100644
> --- a/sysdeps/ieee754/float128/float128_private.h
> +++ b/sysdeps/ieee754/float128/float128_private.h
> @@ -365,3 +365,12 @@ mul_splitf128 (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y)
>    *lo = (((x1 * y1 - *hi) + x1 * y2) + x2 * y1) + x2 * y2;
>  #endif
>  }
> +
> +/* Ensure compat_symbol uses GLIBC_2_26 since that was when the
> +   __<fn>f128_finite symbols were introduced.  */
> +#include <shlib-compat.h>
> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
> +# undef compat_symbol
> +# define compat_symbol(lib, local, symbol, version) \
> +  compat_symbol_reference (lib, local, symbol, GLIBC_2_26)
> +#endif

This is implicitly embedding an action-at-a-distance assumption that the 
only case for using compat_symbol in float128 code is for functions added 
in 2.26 and obsoleted in 2.30.  That seems excessively fragile to me.

How about having

#define FINITE_VERSION GLIBC_2_15

somewhere, with float128_private.h overriding that to GLIBC_2_26, and then 
all the relevant SHLIB_COMPAT and compat_symbol calls using FINITE_VERSION 
instead of GLIBC_2_15?  That way you avoid causing nonobvious problems for 
any post-2.26 *f128 symbols that might get obsoleted in future.
Adhemerval Zanella Netto - July 30, 2019, 9:24 p.m.
On 24/07/2019 18:02, Joseph Myers wrote:
> On Wed, 26 Jun 2019, Wilco Dijkstra wrote:
> 
>> diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
>> index f3917b463837e9eb19d18c62ba232d9bb077e9a1..c7bb208efb024030f0ae7cc71a01dab1d42c4fa1 100644
>> --- a/sysdeps/ieee754/float128/float128_private.h
>> +++ b/sysdeps/ieee754/float128/float128_private.h
>> @@ -365,3 +365,12 @@ mul_splitf128 (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y)
>>    *lo = (((x1 * y1 - *hi) + x1 * y2) + x2 * y1) + x2 * y2;
>>  #endif
>>  }
>> +
>> +/* Ensure compat_symbol uses GLIBC_2_26 since that was when the
>> +   __<fn>f128_finite symbols were introduced.  */
>> +#include <shlib-compat.h>
>> +#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
>> +# undef compat_symbol
>> +# define compat_symbol(lib, local, symbol, version) \
>> +  compat_symbol_reference (lib, local, symbol, GLIBC_2_26)
>> +#endif
> 
> This is implicitly embedding an action-at-a-distance assumption that the 
> only case for using compat_symbol in float128 code is for functions added 
> in 2.26 and obsoleted in 2.30.  That seems excessively fragile to me.
> 
> How about having
> 
> #define FINITE_VERSION GLIBC_2_15
> 
> somewhere, with float128_private.h overriding that to GLIBC_2_26, and then 
> all the relevant SHLIB_COMPAT and compat_symbol calls using FINITE_VERSION 
> instead of GLIBC_2_15?  That way you avoid causing nonobvious problems for 
> any post-2.26 *f128 symbols that might get obsoleted in future.
> 

My suggestion [1] was to use a new macro, libm_alias_finite, which uses the
FIRST_VERSION_libm_* macro from first-version.h under the hood; plus some
extra macros on float128_private.h to redirect the symbols names the 
internal '__name128'.

https://sourceware.org/git/?p=glibc.git;a=commit;h=148de5f248d5f6fe58300e231e3033c12d8646ca

Patch

diff --git a/math/e_exp10.c b/math/e_exp10.c
index d578005d8a36b6ad550c90c03802b9872c2eb3c2..10b6152623e132418c941e8e946ae4d4b52b7215 100644
--- a/math/e_exp10.c
+++ b/math/e_exp10.c
@@ -19,6 +19,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 double
 __ieee754_exp10 (double arg)
@@ -30,4 +31,6 @@  __ieee754_exp10 (double arg)
        replaced sometime (soon?).  */
     return __ieee754_exp (M_LN10 * arg);
 }
-strong_alias (__ieee754_exp10, __exp10_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10, __exp10_finite, GLIBC_2_15);
+#endif
diff --git a/math/e_exp10f.c b/math/e_exp10f.c
index 24408f7007a85200e4dd58f7a4dccd908c802c41..21318528010bcfbede22249705c8d65740be9204 100644
--- a/math/e_exp10f.c
+++ b/math/e_exp10f.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <shlib-compat.h>
 
 float
 __ieee754_exp10f (float arg)
@@ -29,4 +29,6 @@  __ieee754_exp10f (float arg)
      this.  */
   return __ieee754_exp (M_LN10 * arg);
 }
-strong_alias (__ieee754_exp10f, __exp10f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10f, __exp10f_finite, GLIBC_2_15);
+#endif
diff --git a/math/e_exp10l.c b/math/e_exp10l.c
index 775a01406371f0293bec0d10458d5b8bf6bc0551..0ae5a7db28bd6ef54cfa170f175ac1319130957d 100644
--- a/math/e_exp10l.c
+++ b/math/e_exp10l.c
@@ -19,6 +19,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_exp10l (long double arg)
@@ -30,4 +31,6 @@  __ieee754_exp10l (long double arg)
        replaced sometime (soon?).  */
     return __ieee754_expl (M_LN10l * arg);
 }
-strong_alias (__ieee754_exp10l, __exp10l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10l, __exp10l_finite, GLIBC_2_15);
+#endif
diff --git a/math/e_exp2_template.c b/math/e_exp2_template.c
index 3f69dc9006834a93d67348af6268c7d00b5333d6..80e51480555352bcfe09e4aaa7a24042a0fbfdbb 100644
--- a/math/e_exp2_template.c
+++ b/math/e_exp2_template.c
@@ -20,6 +20,7 @@ 
 #include <math_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 FLOAT
 M_DECL_FUNC (__ieee754_exp2) (FLOAT x)
@@ -52,4 +53,6 @@  M_DECL_FUNC (__ieee754_exp2) (FLOAT x)
     /* Infinity, NaN or overflow.  */
     return M_MAX * x;
 }
-declare_mgen_finite_alias (__ieee754_exp2, __exp2)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, M_SUF (__ieee754_exp2), __M_CONCATX (M_SUF (__exp2), _finite), GLIBC_2_15);
+#endif
diff --git a/math/e_scalb.c b/math/e_scalb.c
index e332800854cd509679f3c2013eff82d4444b63db..8ece70d57fea8ea93811cea0e66e8c59e0cafb7d 100644
--- a/math/e_scalb.c
+++ b/math/e_scalb.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <shlib-compat.h>
 
 static double
 __attribute__ ((noinline))
@@ -51,4 +51,6 @@  __ieee754_scalb (double x, double fn)
 
   return __scalbn (x, (int) fn);
 }
-strong_alias (__ieee754_scalb, __scalb_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalb, __scalb_finite, GLIBC_2_15);
+#endif
diff --git a/math/e_scalbf.c b/math/e_scalbf.c
index 5782fc9db62576e51861214bc7e3f24ae11fd220..298d6791659ff8ae03fab82625a118fc4293dbe4 100644
--- a/math/e_scalbf.c
+++ b/math/e_scalbf.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <shlib-compat.h>
 
 static float
 __attribute__ ((noinline))
@@ -51,4 +51,6 @@  __ieee754_scalbf (float x, float fn)
 
   return __scalbnf (x, (int) fn);
 }
-strong_alias (__ieee754_scalbf, __scalbf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalbf, __scalbf_finite, GLIBC_2_15);
+#endif
diff --git a/math/e_scalbl.c b/math/e_scalbl.c
index 00ad3f9f55cb30e64e33cb0e8312f62c7a5393e5..70ccdb40498b3b0b2a92820a6e336f212e5a1b1d 100644
--- a/math/e_scalbl.c
+++ b/math/e_scalbl.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <shlib-compat.h>
 
 static long double
 __attribute__ ((noinline))
@@ -51,4 +51,6 @@  __ieee754_scalbl (long double x, long double fn)
 
   return __scalbnl (x, (int) fn);
 }
-strong_alias (__ieee754_scalbl, __scalbl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalbl, __scalbl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/aarch64/e_sqrtl.c b/sysdeps/aarch64/e_sqrtl.c
index ca24323c9aa8d903f43e9e5bf18cb26836567af2..58c6a36a0ae79020aaa2cd42ceab84bcac10e6f2 100644
--- a/sysdeps/aarch64/e_sqrtl.c
+++ b/sysdeps/aarch64/e_sqrtl.c
@@ -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)
@@ -36,4 +37,6 @@  __ieee754_sqrtl (const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/aarch64/fpu/e_sqrt.c b/sysdeps/aarch64/fpu/e_sqrt.c
index 7ff5a3f407da7fa2abc3f1095fda7857a98e8d98..975be53c628344e9f99248fb3f8f50a4aa35ec24 100644
--- a/sysdeps/aarch64/fpu/e_sqrt.c
+++ b/sysdeps/aarch64/fpu/e_sqrt.c
@@ -17,10 +17,13 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 double
 __ieee754_sqrt (double d)
 {
   return __builtin_sqrt (d);
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/aarch64/fpu/e_sqrtf.c b/sysdeps/aarch64/fpu/e_sqrtf.c
index aa624aac9a8895076185271b2498fabf794b4edb..97e9f4e09367c0c80a7f2f0dce53de4db626d2e4 100644
--- a/sysdeps/aarch64/fpu/e_sqrtf.c
+++ b/sysdeps/aarch64/fpu/e_sqrtf.c
@@ -17,10 +17,13 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 float
 __ieee754_sqrtf (float s)
 {
   return __builtin_sqrtf (s);
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S b/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
index 74dc47ec19a6e76b91844a7f7b09f25866b0c446..7b2f2c26c47df9f4e3b57116c2a8f582808ad163 100644
--- a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
+++ b/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
@@ -45,9 +45,9 @@  ENTRY(__ieee754_sqrt)
 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)
+strong_alias(__ieee754_sqrt, __sqrt_dummy)
+compat_symbol(libm, __sqrt_dummy, __sqrt_finite, GLIBC_2_15)
+#endif
+#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
+compat_symbol(libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_18)
 #endif
diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S b/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
index 0f0281da8f32fd4793a39496bc903b7768f66de6..af2b5ad96c4d465b578da7cd51ecba2c1f63f446 100644
--- a/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
+++ b/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S
@@ -45,9 +45,9 @@  ENTRY(__ieee754_sqrtf)
 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)
+strong_alias(__ieee754_sqrtf, __sqrtf_dummy)
+compat_symbol(libm, __sqrtf_dummy, __sqrtf_finite, GLIBC_2_15)
+#endif
+#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
+compat_symbol(libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_18)
 #endif
diff --git a/sysdeps/alpha/e_sqrtl.c b/sysdeps/alpha/e_sqrtl.c
index 6629bbede8c5ddeb0840084143fcfa4febd748c6..0922b4ebacb93c31576255d3c099ecc430dc0eee 100644
--- a/sysdeps/alpha/e_sqrtl.c
+++ b/sysdeps/alpha/e_sqrtl.c
@@ -43,7 +43,5 @@  __ieee754_sqrtl (const long double a)
    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)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_18);
 #endif
diff --git a/sysdeps/alpha/fpu/e_sqrt.c b/sysdeps/alpha/fpu/e_sqrt.c
index 3a07331fb35bf143058192e32cf4ad835da4b18b..723a5a0a25052c7d4ff2ff8ca68bd7698131366b 100644
--- a/sysdeps/alpha/fpu/e_sqrt.c
+++ b/sysdeps/alpha/fpu/e_sqrt.c
@@ -158,30 +158,29 @@  $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");
+asm (".global  __sqrt_dummy; __sqrt_dummy = __ieee754_sqrt");
 #else
-asm (".global	__sqrt_finite; __sqrt_finite = __ieee754_sqrt");
+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
+
+strong_alias (__ieee754_sqrt, __sqrt_dummy)
+#define __ieee754_sqrt __ieee754_sqrt
+
 #endif /* _IEEE_FP_INEXACT */
 
 #include <sysdeps/ieee754/dbl-64/e_sqrt.c>
+#undef __ieee754_sqrt
 
 /* 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);
+compat_symbol (libm, __sqrt_dummy, __sqrt_finite, GLIBC_2_15);
+#endif
+#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_18);
 #endif
diff --git a/sysdeps/alpha/fpu/e_sqrtf.c b/sysdeps/alpha/fpu/e_sqrtf.c
index ad523f5cf256eb0de78616ea1207995b75c84afb..102d9efa049e1ef18a6366020d656c462fd2ebf8 100644
--- a/sysdeps/alpha/fpu/e_sqrtf.c
+++ b/sysdeps/alpha/fpu/e_sqrtf.c
@@ -1,14 +1,13 @@ 
 #include <shlib-compat.h>
 
-#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_18)
-# define __sqrtf_finite __sqrtf_finite1
-#endif
-
+#define __ieee754_sqrtf __ieee754_sqrtf
 #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);
+strong_alias(__ieee754_sqrtf, __sqrtf_dummy)
+compat_symbol (libm, __sqrtf_dummy, __sqrtf_finite, GLIBC_2_15);
+#endif
+#if SHLIB_COMPAT (libm, GLIBC_2_18, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_18);
 #endif
diff --git a/sysdeps/arm/e_sqrt.c b/sysdeps/arm/e_sqrt.c
index e710b2b6c4415cf5c34cca7eb8fcbb17273dbec4..02e49d59b4d653df5e308e7df2cfc02694142674 100644
--- a/sysdeps/arm/e_sqrt.c
+++ b/sysdeps/arm/e_sqrt.c
@@ -26,6 +26,7 @@ 
 /* Use VFP square root instruction.  */
 # include <math.h>
 # include <sysdep.h>
+# include <shlib-compat.h>
 
 double
 __ieee754_sqrt (double x)
@@ -40,6 +41,8 @@  __ieee754_sqrt (double x)
 # endif
   return ret;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+# endif
 
 #endif
diff --git a/sysdeps/arm/e_sqrtf.c b/sysdeps/arm/e_sqrtf.c
index 501aa470a7076a2a4f5ab5611c7033a3ee1de84b..5296308103d63d378d821e2aca6122a1fa1dc0f9 100644
--- a/sysdeps/arm/e_sqrtf.c
+++ b/sysdeps/arm/e_sqrtf.c
@@ -26,6 +26,7 @@ 
 /* Use VFP square root instruction.  */
 # include <math.h>
 # include <sysdep.h>
+# include <shlib-compat.h>
 
 float
 __ieee754_sqrtf (float x)
@@ -40,6 +41,8 @@  __ieee754_sqrtf (float x)
 # endif
   return ret;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+# endif
 
 #endif
diff --git a/sysdeps/generic/math-type-macros-float128.h b/sysdeps/generic/math-type-macros-float128.h
index adea637eebb7339f4a9b634735e6fde971f11fb8..dc48e8176525a2afe27dade3105f887581a01aa2 100644
--- a/sysdeps/generic/math-type-macros-float128.h
+++ b/sysdeps/generic/math-type-macros-float128.h
@@ -46,4 +46,13 @@ 
 /* Use the type-generic wrapper templates.  */
 #define __USE_WRAPPER_TEMPLATE 1
 
+/* Ensure compat_symbol uses GLIBC_2_26 since that was when the
+   __<fn>f128_finite symbols were introduced.  */
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
+# undef compat_symbol
+# define compat_symbol(lib, local, symbol, version) \
+  compat_symbol_reference (lib, local, symbol, GLIBC_2_26)
+#endif
+
 #endif
diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h
index 998ab2e023a899fd9f09a862f524a057118c9bcc..e0682172573d8704910a721fbdd63ca4a34c978e 100644
--- a/sysdeps/generic/math-type-macros.h
+++ b/sysdeps/generic/math-type-macros.h
@@ -74,21 +74,6 @@ 
 # error "SET_NAN_PAYLOAD must be defined."
 #endif
 
-#ifndef declare_mgen_finite_alias_x
-#define declare_mgen_finite_alias_x(from, to)	\
-  strong_alias (from, to ## _finite)
-#endif
-
-#ifndef declare_mgen_finite_alias_s
-# define declare_mgen_finite_alias_s(from,to)	\
-  declare_mgen_finite_alias_x (from, to)
-#endif
-
-#ifndef declare_mgen_finite_alias
-# define declare_mgen_finite_alias(from, to)	\
-  declare_mgen_finite_alias_s (M_SUF (from), M_SUF (to))
-#endif
-
 #define __M_CONCAT(a,b) a ## b
 #define __M_CONCATX(a,b) __M_CONCAT(a,b)
 
diff --git a/sysdeps/i386/fpu/e_acos.S b/sysdeps/i386/fpu/e_acos.S
index 586c7fc406b1867f62379d25c748bb206606aba0..63f377ffe9c5b567b04f549b03377b69bd15412b 100644
--- a/sysdeps/i386/fpu/e_acos.S
+++ b/sysdeps/i386/fpu/e_acos.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: e_acos.S,v 1.4 1995/05/08 23:44:37 jtc Exp $")
 
@@ -22,4 +23,6 @@  ENTRY(__ieee754_acos)
 	fpatan				/* atan (sqrt(1 - x^2) / x) */
 	ret
 END (__ieee754_acos)
-strong_alias (__ieee754_acos, __acos_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acos, __acos_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_acosf.S b/sysdeps/i386/fpu/e_acosf.S
index 54930af8b2a66e3df87a0c936dafb8c179fef71a..603522771ac51ee98ba8fabc970d7b20829df185 100644
--- a/sysdeps/i386/fpu/e_acosf.S
+++ b/sysdeps/i386/fpu/e_acosf.S
@@ -5,6 +5,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: $")
 
@@ -21,4 +22,6 @@  ENTRY(__ieee754_acosf)
 	fpatan
 	ret
 END (__ieee754_acosf)
-strong_alias (__ieee754_acosf, __acosf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosf, __acosf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
index 40066a6b07375bc11fee8d451c805927025f1548..940cb1cd3551a046c5212f575e3c2f09d17040fd 100644
--- a/sysdeps/i386/fpu/e_acosh.S
+++ b/sysdeps/i386/fpu/e_acosh.S
@@ -18,6 +18,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -98,4 +99,6 @@  ENTRY(__ieee754_acosh)
 	fdiv	%st, %st(0)
 	ret
 END(__ieee754_acosh)
-strong_alias (__ieee754_acosh, __acosh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosh, __acosh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
index adb7c240a590c5f9cb7eb4a4766b07fc81b2753b..e44210858273441f822eff1e3edbe929590d7dfd 100644
--- a/sysdeps/i386/fpu/e_acoshf.S
+++ b/sysdeps/i386/fpu/e_acoshf.S
@@ -18,6 +18,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -98,4 +99,6 @@  ENTRY(__ieee754_acoshf)
 	fdiv	%st, %st(0)
 	ret
 END(__ieee754_acoshf)
-strong_alias (__ieee754_acoshf, __acoshf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acoshf, __acoshf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
index 489d7905efd951c3ac26a8139f7ee7af30c6a613..fa3a3338e3301d035b55798bacba09071ae22874 100644
--- a/sysdeps/i386/fpu/e_acoshl.S
+++ b/sysdeps/i386/fpu/e_acoshl.S
@@ -18,6 +18,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -104,4 +105,6 @@  ENTRY(__ieee754_acoshl)
 	fdiv	%st, %st(0)
 	ret
 END(__ieee754_acoshl)
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_acosl.c b/sysdeps/i386/fpu/e_acosl.c
index ab0893192490923b471a83733474b2f89c5ee323..e64a772b7f2135a4cd84b48d9a05325c8e2242bf 100644
--- a/sysdeps/i386/fpu/e_acosl.c
+++ b/sysdeps/i386/fpu/e_acosl.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_acosl (long double x)
@@ -26,4 +27,6 @@  __ieee754_acosl (long double x)
 	: "=t" (res) : "0" (x) : "st(1)");
   return res;
 }
-strong_alias (__ieee754_acosl, __acosl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosl, __acosl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_asin.S b/sysdeps/i386/fpu/e_asin.S
index 39c8b47da4dc81dfd7fbdec1f090fb12b5e2a2f9..ea012032740f68b7aef46fdbd59399d7e37b4a11 100644
--- a/sysdeps/i386/fpu/e_asin.S
+++ b/sysdeps/i386/fpu/e_asin.S
@@ -5,6 +5,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $")
 
@@ -35,4 +36,6 @@  ENTRY(__ieee754_asin)
 	DBL_CHECK_FORCE_UFLOW
 	ret
 END (__ieee754_asin)
-strong_alias (__ieee754_asin, __asin_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asin, __asin_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_asinf.S b/sysdeps/i386/fpu/e_asinf.S
index 1102bdedfd327d3b31b8dcdb0974789a9a55cb99..d0bd4aac7ebbf6535085affd3cdf5366810e8f04 100644
--- a/sysdeps/i386/fpu/e_asinf.S
+++ b/sysdeps/i386/fpu/e_asinf.S
@@ -6,6 +6,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: $")
 
@@ -36,4 +37,6 @@  ENTRY(__ieee754_asinf)
 	FLT_CHECK_FORCE_UFLOW
 	ret
 END (__ieee754_asinf)
-strong_alias (__ieee754_asinf, __asinf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asinf, __asinf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_atan2.S b/sysdeps/i386/fpu/e_atan2.S
index 25f43bb5a12a5a20514eb5b4b07bb690c2e758da..df624d59fdd80a031af55237a3af87b533371d50 100644
--- a/sysdeps/i386/fpu/e_atan2.S
+++ b/sysdeps/i386/fpu/e_atan2.S
@@ -5,6 +5,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: e_atan2.S,v 1.4 1995/05/08 23:46:28 jtc Exp $")
 
@@ -27,4 +28,6 @@  ENTRY(__ieee754_atan2)
 	DBL_CHECK_FORCE_UFLOW_NARROW
 	ret
 END (__ieee754_atan2)
-strong_alias (__ieee754_atan2, __atan2_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2, __atan2_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_atan2f.S b/sysdeps/i386/fpu/e_atan2f.S
index 2bc909a76288a412bd30492cea5cccd1e0e72941..fc4ab19cbd0fdbecf4c82b31d7f915c2f3f14c2f 100644
--- a/sysdeps/i386/fpu/e_atan2f.S
+++ b/sysdeps/i386/fpu/e_atan2f.S
@@ -5,6 +5,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: e_atan2f.S,v 1.1 1995/05/08 23:35:10 jtc Exp $")
 
@@ -27,4 +28,6 @@  ENTRY(__ieee754_atan2f)
 	FLT_CHECK_FORCE_UFLOW_NARROW
 	ret
 END (__ieee754_atan2f)
-strong_alias (__ieee754_atan2f, __atan2f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2f, __atan2f_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_atan2l.c b/sysdeps/i386/fpu/e_atan2l.c
index 9f88bfcc08f1cf62674a20cf3322b38264fbeb61..f9dd31d95396cdbe7dda119e63a1805c4179341f 100644
--- a/sysdeps/i386/fpu/e_atan2l.c
+++ b/sysdeps/i386/fpu/e_atan2l.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_atan2l (long double y, long double x)
@@ -16,4 +17,6 @@  __ieee754_atan2l (long double y, long double x)
 
   return res;
 }
-strong_alias (__ieee754_atan2l, __atan2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2l, __atan2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
index 590545a3a72fbaf0d4fe71478de4dc5ca8c69f90..6409ad9272fb5c0967b6e30e88a842d9c402f263 100644
--- a/sysdeps/i386/fpu/e_atanh.S
+++ b/sysdeps/i386/fpu/e_atanh.S
@@ -19,6 +19,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -109,4 +110,6 @@  ENTRY(__ieee754_atanh)
 6:	fldl	4(%esp)
 	ret
 END(__ieee754_atanh)
-strong_alias (__ieee754_atanh, __atanh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanh, __atanh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
index c18adceb0d819d2ae14a6e3d0a18bbc045bf3120..f6f282d773ebed2a327c2c159524d888cdb420dd 100644
--- a/sysdeps/i386/fpu/e_atanhf.S
+++ b/sysdeps/i386/fpu/e_atanhf.S
@@ -19,6 +19,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -106,4 +107,6 @@  ENTRY(__ieee754_atanhf)
 5:	flds	4(%esp)
 	ret
 END(__ieee754_atanhf)
-strong_alias (__ieee754_atanhf, __atanhf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanhf, __atanhf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index 00c3e6f904585c02be72b90b1c92a19002da0e5e..3e02c83d9074bd91ada5aa5d0ddc4df5e8f21b40 100644
--- a/sysdeps/i386/fpu/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
@@ -18,6 +18,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -124,4 +125,6 @@  ENTRY(__ieee754_atanhl)
 	fadd	%st(0)
 	ret
 END(__ieee754_atanhl)
-strong_alias (__ieee754_atanhl, __atanhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_exp10.S b/sysdeps/i386/fpu/e_exp10.S
index acb5160a3ff9b1544399d17a83e97be1a6c50850..dd937201352cce072c0dc9378734b1cef51b7cf7 100644
--- a/sysdeps/i386/fpu/e_exp10.S
+++ b/sysdeps/i386/fpu/e_exp10.S
@@ -4,6 +4,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 DEFINE_DBL_MIN
 
@@ -50,4 +51,6 @@  ENTRY(__ieee754_exp10)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp10)
-strong_alias (__ieee754_exp10, __exp10_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10, __exp10_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_exp10f.S b/sysdeps/i386/fpu/e_exp10f.S
index 1812b34398fa4d48e51ef059c5348f455514407c..b4d713da07d98a58003b07a6ccffd03895f2ff12 100644
--- a/sysdeps/i386/fpu/e_exp10f.S
+++ b/sysdeps/i386/fpu/e_exp10f.S
@@ -4,6 +4,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 DEFINE_FLT_MIN
 
@@ -50,4 +51,6 @@  ENTRY(__ieee754_exp10f)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp10f)
-strong_alias (__ieee754_exp10f, __exp10f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10f, __exp10f_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_exp2.S b/sysdeps/i386/fpu/e_exp2.S
index fc16a9605389555c5397de1b2994845b8d0a1263..c879eaf8c13703c881d00c4a08a645e13f7309b4 100644
--- a/sysdeps/i386/fpu/e_exp2.S
+++ b/sysdeps/i386/fpu/e_exp2.S
@@ -6,6 +6,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 DEFINE_DBL_MIN
 
@@ -49,4 +50,6 @@  ENTRY(__ieee754_exp2)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp2)
-strong_alias (__ieee754_exp2, __exp2_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp2, __exp2_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_exp2l.S b/sysdeps/i386/fpu/e_exp2l.S
index c4cb73d589b09627c718e989e37db57194311ceb..7f987ca2aae90345e9c00501d97b9b8d28c13218 100644
--- a/sysdeps/i386/fpu/e_exp2l.S
+++ b/sysdeps/i386/fpu/e_exp2l.S
@@ -6,6 +6,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 DEFINE_LDBL_MIN
 
@@ -57,4 +58,6 @@  ENTRY(__ieee754_exp2l)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp2l)
-strong_alias (__ieee754_exp2l, __exp2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp2l, __exp2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_fmod.S b/sysdeps/i386/fpu/e_fmod.S
index 26b3acc392e8c2896c8fc353de4be26ebb7551e1..10a9a05ac92e1eff0fe63dbd769c53fc1db1cc88 100644
--- a/sysdeps/i386/fpu/e_fmod.S
+++ b/sysdeps/i386/fpu/e_fmod.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_fmod)
 	fldl	12(%esp)
@@ -15,4 +16,6 @@  ENTRY(__ieee754_fmod)
 	fstp	%st(1)
 	ret
 END (__ieee754_fmod)
-strong_alias (__ieee754_fmod, __fmod_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmod, __fmod_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_fmodf.S b/sysdeps/i386/fpu/e_fmodf.S
index ece4d984273011dbdfaac1b40e02813a2afe37c2..7ce93cfc697bf8d847f546cf044f2ccd0f60f26e 100644
--- a/sysdeps/i386/fpu/e_fmodf.S
+++ b/sysdeps/i386/fpu/e_fmodf.S
@@ -5,6 +5,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_fmodf)
 	flds	8(%esp)
@@ -16,4 +17,6 @@  ENTRY(__ieee754_fmodf)
 	fstp	%st(1)
 	ret
 END(__ieee754_fmodf)
-strong_alias (__ieee754_fmodf, __fmodf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmodf, __fmodf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_fmodl.c b/sysdeps/i386/fpu/e_fmodl.c
index 49700ae8f648c7dd29cb120f64dffdc59b92a900..48361eb3fc599188423210d6cc59cb4404c47c5d 100644
--- a/sysdeps/i386/fpu/e_fmodl.c
+++ b/sysdeps/i386/fpu/e_fmodl.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_fmodl (long double x, long double y)
@@ -20,4 +21,6 @@  __ieee754_fmodl (long double x, long double y)
        : "=t" (res) : "0" (x), "u" (y) : "ax", "st(1)");
   return res;
 }
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_hypot.S b/sysdeps/i386/fpu/e_hypot.S
index affd3e56331eea7098548b5ba8426c7c09eb640f..0dac8a54074a680b1d89cd430a4a8375e57f15bd 100644
--- a/sysdeps/i386/fpu/e_hypot.S
+++ b/sysdeps/i386/fpu/e_hypot.S
@@ -19,6 +19,7 @@ 
 
 #include <sysdep.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 DEFINE_DBL_MIN
 
@@ -72,4 +73,6 @@  ENTRY(__ieee754_hypot)
 	jmp	2b
 
 END(__ieee754_hypot)
-strong_alias (__ieee754_hypot, __hypot_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_hypotf.S b/sysdeps/i386/fpu/e_hypotf.S
index 63495350fcd9380970f193b5fb9f03ed7175f590..69782bb6568b8f526d7adcd27984525269a0319b 100644
--- a/sysdeps/i386/fpu/e_hypotf.S
+++ b/sysdeps/i386/fpu/e_hypotf.S
@@ -19,6 +19,7 @@ 
 
 #include <sysdep.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.text
 ENTRY(__ieee754_hypotf)
@@ -61,4 +62,6 @@  ENTRY(__ieee754_hypotf)
 	jmp	2b
 
 END(__ieee754_hypotf)
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_log10.S b/sysdeps/i386/fpu/e_log10.S
index 17277084ca9858cd4868ca0342b6b64d078ebc02..8520d02a9b92c16abb0970600e126933eff94bb9 100644
--- a/sysdeps/i386/fpu/e_log10.S
+++ b/sysdeps/i386/fpu/e_log10.S
@@ -6,6 +6,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -65,4 +66,6 @@  ENTRY(__ieee754_log10)
 	fstp	%st(1)
 	ret
 END (__ieee754_log10)
-strong_alias (__ieee754_log10, __log10_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10, __log10_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
index 72a3b882518dcc48aa90d0d8f8dc92d3f90434d9..b9776a1f275f7477cc1cd5806a13102486d31a01 100644
--- a/sysdeps/i386/fpu/e_log10f.S
+++ b/sysdeps/i386/fpu/e_log10f.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -66,4 +67,6 @@  ENTRY(__ieee754_log10f)
 	fstp	%st(1)
 	ret
 END (__ieee754_log10f)
-strong_alias (__ieee754_log10f, __log10f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10f, __log10f_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
index 9326b197961abcfb1fbc995d74e07ee05ee43f0b..2bcb49b31b8b1ec2a794dcb6026ea1733a7b3995 100644
--- a/sysdeps/i386/fpu/e_log10l.S
+++ b/sysdeps/i386/fpu/e_log10l.S
@@ -8,6 +8,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -68,4 +69,6 @@  ENTRY(__ieee754_log10l)
 	fadd	%st(0)
 	ret
 END(__ieee754_log10l)
-strong_alias (__ieee754_log10l, __log10l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10l, __log10l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_log2.S b/sysdeps/i386/fpu/e_log2.S
index 73ff0fffd386e6fb0714b63a7fd2885db51dbf5a..185b83ee796af0c9b9297dab608f9a2741129a6f 100644
--- a/sysdeps/i386/fpu/e_log2.S
+++ b/sysdeps/i386/fpu/e_log2.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -66,4 +67,6 @@  ENTRY(__ieee754_log2)
 	fstp	%st(1)
 	ret
 END (__ieee754_log2)
-strong_alias (__ieee754_log2, __log2_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log2, __log2_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_log2l.S b/sysdeps/i386/fpu/e_log2l.S
index 73e62ea908e316aa279531faf632ca8f62543a5a..5edce67330f59b6bd5b030d6dcf1252babf30e27 100644
--- a/sysdeps/i386/fpu/e_log2l.S
+++ b/sysdeps/i386/fpu/e_log2l.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -67,4 +68,6 @@  ENTRY(__ieee754_log2l)
 	fadd	%st(0)
 	ret
 END (__ieee754_log2l)
-strong_alias (__ieee754_log2l, __log2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log2l, __log2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_pow.S b/sysdeps/i386/fpu/e_pow.S
index bfab8e1eb31f3a091a76841f306f0f5d38c08e9b..5dc4a1562a5d3eb894739552114aa07fe3d0cc64 100644
--- a/sysdeps/i386/fpu/e_pow.S
+++ b/sysdeps/i386/fpu/e_pow.S
@@ -19,6 +19,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -453,4 +454,6 @@  ENTRY(__ieee754_pow)
 	ret
 
 END(__ieee754_pow)
-strong_alias (__ieee754_pow, __pow_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_pow, __pow_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S
index fdd5c01af33ddf03fe216094a3f7435e36886fa1..48fbe7a7f525c9efd2e38c0cfc2435aacc847c9d 100644
--- a/sysdeps/i386/fpu/e_powl.S
+++ b/sysdeps/i386/fpu/e_powl.S
@@ -19,6 +19,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -456,4 +457,6 @@  ENTRY(__ieee754_powl)
 	ret
 
 END(__ieee754_powl)
-strong_alias (__ieee754_powl, __powl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_remainder.S b/sysdeps/i386/fpu/e_remainder.S
index f7867aa90b26f5547bb89d399c23bbfc7c7d32d5..3e00a7ee409f3a101105f80e58c02e8bdc7c7051 100644
--- a/sysdeps/i386/fpu/e_remainder.S
+++ b/sysdeps/i386/fpu/e_remainder.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_remainder)
 	fldl	12(%esp)
@@ -15,4 +16,6 @@  ENTRY(__ieee754_remainder)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainder)
-strong_alias (__ieee754_remainder, __remainder_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainder, __remainder_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_remainderf.S b/sysdeps/i386/fpu/e_remainderf.S
index cfd390bc69c84d61b32e09891ce51161f1277072..4b6c31e583e2e4c70940fcd67f2111fd2603468e 100644
--- a/sysdeps/i386/fpu/e_remainderf.S
+++ b/sysdeps/i386/fpu/e_remainderf.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_remainderf)
 	flds	8(%esp)
@@ -15,4 +16,6 @@  ENTRY(__ieee754_remainderf)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainderf)
-strong_alias (__ieee754_remainderf, __remainderf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainderf, __remainderf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_remainderl.S b/sysdeps/i386/fpu/e_remainderl.S
index 5ec23a37a36783274fa503a4b1c32d6f46d87774..daf715963104f6b4aa8337796ab8f53a61d97d0a 100644
--- a/sysdeps/i386/fpu/e_remainderl.S
+++ b/sysdeps/i386/fpu/e_remainderl.S
@@ -6,6 +6,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_remainderl)
 	fldt	16(%esp)
@@ -17,4 +18,6 @@  ENTRY(__ieee754_remainderl)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainderl)
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 370924c29fb98dffe46fc60afa0d37607f88a4e8..4df4c5881c598def90ec29256d89332b9077d40a 100644
--- a/sysdeps/i386/fpu/e_scalb.S
+++ b/sysdeps/i386/fpu/e_scalb.S
@@ -7,6 +7,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -97,4 +98,6 @@  ENTRY(__ieee754_scalb)
 	fdiv	%st
 	ret
 END(__ieee754_scalb)
-strong_alias (__ieee754_scalb, __scalb_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalb, __scalb_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index 4f2dfa3acf7287dafcf8a1f7c41be6609c5e1754..61c14a5ab4d35bb72e9327de6c9f07e256eac1e7 100644
--- a/sysdeps/i386/fpu/e_scalbf.S
+++ b/sysdeps/i386/fpu/e_scalbf.S
@@ -8,6 +8,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -99,4 +100,6 @@  ENTRY(__ieee754_scalbf)
 	fdiv	%st
 	ret
 END(__ieee754_scalbf)
-strong_alias (__ieee754_scalbf, __scalbf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalbf, __scalbf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 896f599cb061e2cb513b7fd729a2e9cc1000f88a..7a8b14c8ee779c41275807b601117499e7dd582d 100644
--- a/sysdeps/i386/fpu/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
@@ -8,6 +8,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -87,4 +88,6 @@  ENTRY(__ieee754_scalbl)
 	fdiv	%st
 	ret
 END(__ieee754_scalbl)
-strong_alias (__ieee754_scalbl, __scalbl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalbl, __scalbl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_sqrt.S b/sysdeps/i386/fpu/e_sqrt.S
index fba5833a9a46c2babde9596bd11a4b027dabd5bc..eb0089b6cc4e1d11cb93c0db961c47693a9304da 100644
--- a/sysdeps/i386/fpu/e_sqrt.S
+++ b/sysdeps/i386/fpu/e_sqrt.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_sqrt)
 	fldl	4(%esp)
@@ -20,4 +21,6 @@  ENTRY(__ieee754_sqrt)
 	cfi_adjust_cfa_offset (-8)
 	ret
 END (__ieee754_sqrt)
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_sqrtf.S b/sysdeps/i386/fpu/e_sqrtf.S
index 6f7e4b015fd9fbe685598f5dde8cd104e892df3f..b86c7fcb7fbf9f08d882cfcfb6345073fabbd469 100644
--- a/sysdeps/i386/fpu/e_sqrtf.S
+++ b/sysdeps/i386/fpu/e_sqrtf.S
@@ -4,10 +4,13 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_sqrtf)
 	flds	4(%esp)
 	fsqrt
 	ret
 END (__ieee754_sqrtf)
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/fpu/e_sqrtl.c b/sysdeps/i386/fpu/e_sqrtl.c
index 41bcd7eeb70b5748648840a7803425497711beb8..69e29cc266fd6db4cda2b320ed08b957d00884de 100644
--- a/sysdeps/i386/fpu/e_sqrtl.c
+++ b/sysdeps/i386/fpu/e_sqrtl.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 #undef __ieee754_sqrtl
 long double
@@ -17,4 +18,6 @@  __ieee754_sqrtl (long double x)
 
   return res;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
index ed9dedec9167564b99c9fea3fc102601df6a999f..529a00ba7b925835703f7c620fa37f1814cda909 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
@@ -20,20 +20,22 @@  extern float __redirect_exp2f (float);
 
 #define SYMBOL_NAME exp2f
 #include "ifunc-sse2.h"
+#include <shlib-compat.h>
 
 libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
 
 #include <libm-alias-float.h>
 #ifdef SHARED
-# include <shlib-compat.h>
-versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
 libm_alias_float_other (__exp2, exp2)
 #else
 libm_alias_float (__exp2, exp2)
 #endif
 
 strong_alias (__exp2f, __ieee754_exp2f)
-strong_alias (__exp2f, __exp2f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __exp2f, __exp2f_finite, GLIBC_2_15);
+#endif
 
 #define __exp2f __exp2f_ia32
 #include <sysdeps/ieee754/flt-32/e_exp2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf.c b/sysdeps/i386/i686/fpu/multiarch/e_expf.c
index 500be0e59a6ed47f7e3c50997f15718fbda4ddce..d2ef615c559d707f52903904266100636b51d1ce 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_expf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_expf.c
@@ -20,6 +20,7 @@  extern float __redirect_expf (float);
 
 #define SYMBOL_NAME expf
 #include "ifunc-sse2.h"
+#include <shlib-compat.h>
 
 libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
 
@@ -28,15 +29,16 @@  libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
 __hidden_ver1 (__expf_ia32, __GI___expf, __redirect_expf)
   __attribute__ ((visibility ("hidden"))) __THROW;
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __expf, expf, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
 libm_alias_float_other (__exp, exp)
 #else
 libm_alias_float (__exp, exp)
 #endif
 
 strong_alias (__expf, __ieee754_expf)
-strong_alias (__expf, __expf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __expf, __expf_finite, GLIBC_2_15);
+#endif
 
 #define __expf __expf_ia32
 #include <sysdeps/ieee754/flt-32/e_expf.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_log2f.c b/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
index 7afccf730fd35715307224ff2c289f5d96b575a2..c5a8e36dd6675e6476c5825be81490ae4c06e7dd 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_log2f.c
@@ -20,6 +20,7 @@  extern float __redirect_log2f (float);
 
 #define SYMBOL_NAME log2f
 #include "ifunc-sse2.h"
+#include <shlib-compat.h>
 
 libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
 
@@ -28,15 +29,16 @@  libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
 __hidden_ver1 (__log2f_ia32, __GI___log2f, __redirect_log2f)
   __attribute__ ((visibility ("hidden"))) __THROW;
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
 libm_alias_float_other (__log2, log2)
 #else
 libm_alias_float (__log2, log2)
 #endif
 
 strong_alias (__log2f, __ieee754_log2f)
-strong_alias (__log2f, __log2f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __log2f, __log2f_finite, GLIBC_2_15);
+#endif
 
 #define __log2f __log2f_ia32
 #include <sysdeps/ieee754/flt-32/e_log2f.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_logf.c b/sysdeps/i386/i686/fpu/multiarch/e_logf.c
index 0584a53c787fc20b52922e9a0dfd0b26ffd5b8b7..32b3e6a494d7511ade4b8added950e0ff26b1681 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_logf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_logf.c
@@ -20,6 +20,7 @@  extern float __redirect_logf (float);
 
 #define SYMBOL_NAME logf
 #include "ifunc-sse2.h"
+#include <shlib-compat.h>
 
 libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
 
@@ -28,15 +29,16 @@  libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
 __hidden_ver1 (__logf_ia32, __GI___logf, __redirect_logf)
   __attribute__ ((visibility ("hidden"))) __THROW;
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __logf, logf, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
 libm_alias_float_other (__log, log)
 #else
 libm_alias_float (__log, log)
 #endif
 
 strong_alias (__logf, __ieee754_logf)
-strong_alias (__logf, __logf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __logf, __logf_finite, GLIBC_2_15);
+#endif
 
 #define __logf __logf_ia32
 #include <sysdeps/ieee754/flt-32/e_logf.c>
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_powf.c b/sysdeps/i386/i686/fpu/multiarch/e_powf.c
index 1d36d3a6e5c3a976b5409295cddc995d78eff077..8ad4370c57dc0af1c283d63e647263070f95b19c 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_powf.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_powf.c
@@ -23,6 +23,7 @@ 
 
 #define SYMBOL_NAME powf
 #include "ifunc-sse2.h"
+#include <shlib-compat.h>
 
 libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
 
@@ -31,15 +32,16 @@  libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
 __hidden_ver1 (__powf_ia32, __GI___powf, __redirect_powf)
   __attribute__ ((visibility ("hidden")));
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __powf, powf, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
 libm_alias_float_other (__pow, pow)
 #else
 libm_alias_float (__pow, pow)
 #endif
 
 strong_alias (__powf, __ieee754_powf)
-strong_alias (__powf, __powf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __powf, __powf_finite, GLIBC_2_15);
+#endif
 
 #define __powf __powf_ia32
 #include <sysdeps/ieee754/flt-32/e_powf.c>
diff --git a/sysdeps/ieee754/dbl-64/e_acosh.c b/sysdeps/ieee754/dbl-64/e_acosh.c
index fe0c375f00428db93abd5db02be3b3be6940bda5..6931b0c757fe047356e03bd300fa134b82981c60 100644
--- a/sysdeps/ieee754/dbl-64/e_acosh.c
+++ b/sysdeps/ieee754/dbl-64/e_acosh.c
@@ -26,6 +26,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const double
   one = 1.0,
@@ -66,4 +67,6 @@  __ieee754_acosh (double x)
       return __log1p (t + sqrt (2.0 * t + t * t));
     }
 }
-strong_alias (__ieee754_acosh, __acosh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosh, __acosh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_asin.c b/sysdeps/ieee754/dbl-64/e_asin.c
index 06934a4c06f0fed6d2d5ce8aa5ec73c84a7a9eb4..f96dfb39d9b0fdcb48b16bb533318cb704ce9737 100644
--- a/sysdeps/ieee754/dbl-64/e_asin.c
+++ b/sysdeps/ieee754/dbl-64/e_asin.c
@@ -43,6 +43,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 #ifndef SECTION
 # define SECTION
@@ -334,7 +335,9 @@  __ieee754_asin(double x){
  }
 }
 #ifndef __ieee754_asin
-strong_alias (__ieee754_asin, __asin_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asin, __asin_finite, GLIBC_2_15);
+# endif
 #endif
 
 /*******************************************************************/
@@ -644,5 +647,7 @@  __ieee754_acos(double x)
   }
 }
 #ifndef __ieee754_acos
-strong_alias (__ieee754_acos, __acos_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acos, __acos_finite, GLIBC_2_15);
+# endif
 #endif
diff --git a/sysdeps/ieee754/dbl-64/e_atan2.c b/sysdeps/ieee754/dbl-64/e_atan2.c
index fad794313a28f23e5f4890b306082a4fa03d9b67..498e02c5167b9aeee16e415b9b871360ded7da1e 100644
--- a/sysdeps/ieee754/dbl-64/e_atan2.c
+++ b/sysdeps/ieee754/dbl-64/e_atan2.c
@@ -48,6 +48,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <stap-probe.h>
+#include <shlib-compat.h>
 
 #ifndef SECTION
 # define SECTION
@@ -570,7 +571,9 @@  __ieee754_atan2 (double y, double x)
 }
 
 #ifndef __ieee754_atan2
-strong_alias (__ieee754_atan2, __atan2_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2, __atan2_finite, GLIBC_2_15);
+# endif
 #endif
 
 /* Treat the Denormalized case */
diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c
index cb3c4c804666daebef061e20921e015be08e5c67..3b72de1f586da445187c36ead732404f45314332 100644
--- a/sysdeps/ieee754/dbl-64/e_atanh.c
+++ b/sysdeps/ieee754/dbl-64/e_atanh.c
@@ -41,6 +41,7 @@ 
 #include <math-barriers.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const double huge = 1e300;
 
@@ -73,4 +74,6 @@  __ieee754_atanh (double x)
 
   return copysign (t, x);
 }
-strong_alias (__ieee754_atanh, __atanh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanh, __atanh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_cosh.c b/sysdeps/ieee754/dbl-64/e_cosh.c
index ae2180aa89d50341cb7554ae314d1f7805b52493..bc939d67c30afcf62db483fc8d0cee04478fa2a1 100644
--- a/sysdeps/ieee754/dbl-64/e_cosh.c
+++ b/sysdeps/ieee754/dbl-64/e_cosh.c
@@ -34,6 +34,7 @@ 
 #include <math.h>
 #include <math-narrow-eval.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const double one = 1.0, half = 0.5, huge = 1.0e300;
 
@@ -86,4 +87,6 @@  __ieee754_cosh (double x)
   /* |x| > overflowthresold, cosh(x) overflow */
   return math_narrow_eval (huge * huge);
 }
-strong_alias (__ieee754_cosh, __cosh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_cosh, __cosh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c
index 853d6ca7618e9dc8bbc777286a3b8a7144465288..2a41835efaf0de367fdeb0ceee2550fc119b667c 100644
--- a/sysdeps/ieee754/dbl-64/e_exp.c
+++ b/sysdeps/ieee754/dbl-64/e_exp.c
@@ -159,9 +159,11 @@  __exp (double x)
 #ifndef __exp
 hidden_def (__exp)
 strong_alias (__exp, __ieee754_exp)
-strong_alias (__exp, __exp_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __exp, __exp_finite, GLIBC_2_15);
+# endif
 # if LIBM_SVID_COMPAT
-versioned_symbol (libm, __exp, exp, GLIBC_2_29);
+versioned_symbol (libm, __ieee754_exp, exp, GLIBC_2_29);
 libm_alias_double_other (__exp, exp)
 # else
 libm_alias_double (__exp, exp)
diff --git a/sysdeps/ieee754/dbl-64/e_exp10.c b/sysdeps/ieee754/dbl-64/e_exp10.c
index 34d12493bd7288f88eb53f1f6922e45438c32168..ef71655ab5b5205c6b4deaf72a6aeb6ffc2e3862 100644
--- a/sysdeps/ieee754/dbl-64/e_exp10.c
+++ b/sysdeps/ieee754/dbl-64/e_exp10.c
@@ -18,6 +18,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 static const double log10_high = 0x2.4d7637p0;
 static const double log10_low = 0x7.6aaa2b05ba95cp-28;
@@ -47,4 +48,6 @@  __ieee754_exp10 (double arg)
   exp_low = arg_high * log10_low + arg_low * M_LN10;
   return __ieee754_exp (exp_high) * __ieee754_exp (exp_low);
 }
-strong_alias (__ieee754_exp10, __exp10_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10, __exp10_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c
index 22cade8b297985695960215ee9bca8262dc98ef0..028b318a83daa49a02c2762da46a1d4a132be027 100644
--- a/sysdeps/ieee754/dbl-64/e_exp2.c
+++ b/sysdeps/ieee754/dbl-64/e_exp2.c
@@ -145,9 +145,11 @@  __exp2 (double x)
 }
 #ifndef __exp2
 strong_alias (__exp2, __ieee754_exp2)
-strong_alias (__exp2, __exp2_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __exp2, __exp2_finite, GLIBC_2_15);
+# endif
 # if LIBM_SVID_COMPAT
-versioned_symbol (libm, __exp2, exp2, GLIBC_2_29);
+versioned_symbol (libm, __ieee754_exp2, exp2, GLIBC_2_29);
 libm_alias_double_other (__exp2, exp2)
 # else
 libm_alias_double (__exp2, exp2)
diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index 1a8c14dc2a2736c97bf16f54a6a7de28e01f3854..5523911700698dafdad8e7606274ddb3972d3975 100644
--- a/sysdeps/ieee754/dbl-64/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/e_fmod.c
@@ -17,6 +17,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const double one = 1.0, Zero[] = { 0.0, -0.0, };
 
@@ -170,4 +171,6 @@  __ieee754_fmod (double x, double y)
     }
   return x;                     /* exact output */
 }
-strong_alias (__ieee754_fmod, __fmod_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmod, __fmod_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c
index 57b09e558d685ef4d4ebbbdf21071962ea048364..552d5998f9f84bca6ac8338ecddd10dfe2cc3b55 100644
--- a/sysdeps/ieee754/dbl-64/e_gamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_gamma_r.c
@@ -23,6 +23,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -220,4 +221,6 @@  __ieee754_gamma_r (double x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gamma_r, __gamma_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_gamma_r, __gamma_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c
index a2c33cc4edb2df3e99bd233821ec0d9fa79412d2..622cda3af9edc32e0ec30c2b86ce85496d84b48d 100644
--- a/sysdeps/ieee754/dbl-64/e_hypot.c
+++ b/sysdeps/ieee754/dbl-64/e_hypot.c
@@ -45,6 +45,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 double
 __ieee754_hypot (double x, double y)
@@ -159,4 +160,8 @@  __ieee754_hypot (double x, double y)
   else
     return w;
 }
-strong_alias (__ieee754_hypot, __hypot_finite)
+#ifndef __ieee754_hypot
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_j0.c b/sysdeps/ieee754/dbl-64/e_j0.c
index 7f5919910d2d012d4f60ab7861f57cb637ed18ea..85235e2f1099204e83f5d1d407860096911bdba8 100644
--- a/sysdeps/ieee754/dbl-64/e_j0.c
+++ b/sysdeps/ieee754/dbl-64/e_j0.c
@@ -61,6 +61,7 @@ 
 #include <math.h>
 #include <math-barriers.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static double pzero (double), qzero (double);
 
@@ -143,7 +144,9 @@  __ieee754_j0 (double x)
       return ((one + u) * (one - u) + z * (r / s));
     }
 }
-strong_alias (__ieee754_j0, __j0_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm,__ieee754_j0, __j0_finite, GLIBC_2_15);
+#endif
 
 static const double
 U[] = { -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
@@ -223,7 +226,9 @@  __ieee754_y0 (double x)
   v = v1 + z2 * v2 + z4 * V[3];
   return (u / v + tpi * (__ieee754_j0 (x) * __ieee754_log (x)));
 }
-strong_alias (__ieee754_y0, __y0_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm,__ieee754_y0, __y0_finite, GLIBC_2_15);
+#endif
 
 /* The asymptotic expansions of pzero is
  *	1 - 9/128 s^2 + 11025/98304 s^4 - ...,	where s = 1/x.
diff --git a/sysdeps/ieee754/dbl-64/e_j1.c b/sysdeps/ieee754/dbl-64/e_j1.c
index 734f3ca64a5d983c2dc277db5ad799d055167f48..3368a5897bb9d5f149e3cc67d62e5e7c2063e950 100644
--- a/sysdeps/ieee754/dbl-64/e_j1.c
+++ b/sysdeps/ieee754/dbl-64/e_j1.c
@@ -64,6 +64,7 @@ 
 #include <math-narrow-eval.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static double pone (double), qone (double);
 
@@ -147,7 +148,9 @@  __ieee754_j1 (double x)
   s = s1 + z2 * s2 + z4 * s3;
   return (x * 0.5 + r / s);
 }
-strong_alias (__ieee754_j1, __j1_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j1, __j1_finite, GLIBC_2_15);
+#endif
 
 static const double U0[5] = {
  -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
@@ -230,7 +233,9 @@  __ieee754_y1 (double x)
   v = v1 + z2 * v2 + z4 * v3;
   return (x * (u / v) + tpi * (__ieee754_j1 (x) * __ieee754_log (x) - one / x));
 }
-strong_alias (__ieee754_y1, __y1_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y1, __y1_finite, GLIBC_2_15);
+#endif
 
 /* For x >= 8, the asymptotic expansions of pone is
  *	1 + 15/128 s^2 - 4725/2^15 s^4 - ...,	where s = 1/x.
diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c
index 90a7e772709491411f2722d314d2aaff85f48ca9..a2c1c5b5cd1d26a43905fade5295c4b9c2e89a88 100644
--- a/sysdeps/ieee754/dbl-64/e_jn.c
+++ b/sysdeps/ieee754/dbl-64/e_jn.c
@@ -43,6 +43,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const double
   invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
@@ -258,7 +259,9 @@  __ieee754_jn (int n, double x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jn, __jn_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_jn, __jn_finite, GLIBC_2_15);
+#endif
 
 double
 __ieee754_yn (int n, double x)
@@ -349,4 +352,6 @@  __ieee754_yn (int n, double x)
     ret = copysign (DBL_MAX, ret) * DBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_yn, __yn_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_yn, __yn_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
index 88051bc75bc44cd23e3efabf7ad17dbb17264816..a4b2c23369dcedd341d439989f38a5a26b71c937 100644
--- a/sysdeps/ieee754/dbl-64/e_lgamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
@@ -81,6 +81,7 @@ 
 #include <math-narrow-eval.h>
 #include <math_private.h>
 #include <libc-diag.h>
+#include <shlib-compat.h>
 
 static const double
 two52=  4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
@@ -308,4 +309,6 @@  __ieee754_lgamma_r(double x, int *signgamp)
 	DIAG_POP_NEEDS_COMMENT;
 	return r;
 }
-strong_alias (__ieee754_lgamma_r, __lgamma_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_lgamma_r, __lgamma_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c
index a04d73bd8895b74611ebf7d5a7d14151547fd673..ef674c7f175d4221563ddfb0fe2b5c4a8da8ad7b 100644
--- a/sysdeps/ieee754/dbl-64/e_log.c
+++ b/sysdeps/ieee754/dbl-64/e_log.c
@@ -132,9 +132,11 @@  __log (double x)
 }
 #ifndef __log
 strong_alias (__log, __ieee754_log)
-strong_alias (__log, __log_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __log, __log_finite, GLIBC_2_15);
+# endif
 # if LIBM_SVID_COMPAT
-versioned_symbol (libm, __log, log, GLIBC_2_29);
+versioned_symbol (libm, __ieee754_log, log, GLIBC_2_29);
 libm_alias_double_other (__log, log)
 # else
 libm_alias_double (__log, log)
diff --git a/sysdeps/ieee754/dbl-64/e_log10.c b/sysdeps/ieee754/dbl-64/e_log10.c
index 677cbc4df8739521c50a72d5ab657f438c74c129..c294ea8abeec844d44a546d46772d925ab71e1ed 100644
--- a/sysdeps/ieee754/dbl-64/e_log10.c
+++ b/sysdeps/ieee754/dbl-64/e_log10.c
@@ -46,6 +46,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <fix-int-fp-convert-zero.h>
+#include <shlib-compat.h>
 
 static const double two54 = 1.80143985094819840000e+16;         /* 0x43500000, 0x00000000 */
 static const double ivln10 = 4.34294481903251816668e-01;        /* 0x3FDBCB7B, 0x1526E50E */
@@ -84,5 +85,6 @@  __ieee754_log10 (double x)
   z = y * log10_2lo + ivln10 * __ieee754_log (x);
   return z + y * log10_2hi;
 }
-
-strong_alias (__ieee754_log10, __log10_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10, __log10_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_log2.c b/sysdeps/ieee754/dbl-64/e_log2.c
index c89c2ecb1cbeffc5ae007b71bb8a34dde670d84f..a6f64ca5c8753c6b7a30eb6cbb54595c3d703101 100644
--- a/sysdeps/ieee754/dbl-64/e_log2.c
+++ b/sysdeps/ieee754/dbl-64/e_log2.c
@@ -141,9 +141,11 @@  __log2 (double x)
 }
 #ifndef __log2
 strong_alias (__log2, __ieee754_log2)
-strong_alias (__log2, __log2_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __log2, __log2_finite, GLIBC_2_15);
+# endif
 # if LIBM_SVID_COMPAT
-versioned_symbol (libm, __log2, log2, GLIBC_2_29);
+versioned_symbol (libm, __ieee754_log2, log2, GLIBC_2_29);
 libm_alias_double_other (__log2, log2)
 # else
 libm_alias_double (__log2, log2)
diff --git a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c
index d4b9378fe382d9e237aa0b59466283452dc18bdb..6b47c17c0df50f98f655f188e986947726e7dbf1 100644
--- a/sysdeps/ieee754/dbl-64/e_pow.c
+++ b/sysdeps/ieee754/dbl-64/e_pow.c
@@ -380,9 +380,11 @@  __pow (double x, double y)
 }
 #ifndef __pow
 strong_alias (__pow, __ieee754_pow)
-strong_alias (__pow, __pow_finite)
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __pow, __pow_finite, GLIBC_2_15);
+# endif
 # if LIBM_SVID_COMPAT
-versioned_symbol (libm, __pow, pow, GLIBC_2_29);
+versioned_symbol (libm, __ieee754_pow, pow, GLIBC_2_29);
 libm_alias_double_other (__pow, pow)
 # else
 libm_alias_double (__pow, pow)
diff --git a/sysdeps/ieee754/dbl-64/e_remainder.c b/sysdeps/ieee754/dbl-64/e_remainder.c
index 33cb48b8e3083eef0c06a82829807416c38bdcf9..88c21fdfbd9520b3d5e693a6b14308fa204dc376 100644
--- a/sysdeps/ieee754/dbl-64/e_remainder.c
+++ b/sysdeps/ieee754/dbl-64/e_remainder.c
@@ -36,6 +36,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <fenv_private.h>
+#include <shlib-compat.h>
 
 /**************************************************************************/
 /* An ultimate remainder routine. Given two IEEE double machine numbers x */
@@ -150,4 +151,6 @@  __ieee754_remainder (double x, double y)
 	}
     }
 }
-strong_alias (__ieee754_remainder, __remainder_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainder, __remainder_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_sinh.c b/sysdeps/ieee754/dbl-64/e_sinh.c
index c4e34211ac0e166cc89a567cb3a5ace9e8f888d9..53b6a815e0e09caa234e3738f2d4772acb4aa3df 100644
--- a/sysdeps/ieee754/dbl-64/e_sinh.c
+++ b/sysdeps/ieee754/dbl-64/e_sinh.c
@@ -37,6 +37,7 @@  static char rcsid[] = "$NetBSD: e_sinh.c,v 1.7 1995/05/10 20:46:13 jtc Exp $";
 #include <math-narrow-eval.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const double one = 1.0, shuge = 1.0e307;
 
@@ -89,4 +90,6 @@  __ieee754_sinh (double x)
   /* |x| > overflowthresold, sinh(x) overflow */
   return math_narrow_eval (x * shuge);
 }
-strong_alias (__ieee754_sinh, __sinh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sinh, __sinh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_sqrt.c b/sysdeps/ieee754/dbl-64/e_sqrt.c
index ea1f05e69a07e76c8f72cf7367adfa857756f02e..98f89ff5b99f6a6851bfddd73966a93b34ec6d15 100644
--- a/sysdeps/ieee754/dbl-64/e_sqrt.c
+++ b/sysdeps/ieee754/dbl-64/e_sqrt.c
@@ -40,6 +40,7 @@ 
 #include <math-barriers.h>
 #include <math_private.h>
 #include <fenv_private.h>
+#include <shlib-compat.h>
 
 /*********************************************************************/
 /* An ultimate sqrt routine. Given an IEEE double machine number x   */
@@ -138,4 +139,8 @@  __ieee754_sqrt (double x)
       return 0x1p-256 * __ieee754_sqrt (x * 0x1p512);
     }
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#ifndef __ieee754_sqrt
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
index 0af05a02221f8a86cc91265b1edda70b59b7bb30..298a88f56c6ee221fb99bbd6dd8264c332550b20 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
@@ -26,6 +26,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const double
 one	= 1.0,
@@ -64,4 +65,6 @@  __ieee754_acosh (double x)
   else					/* x < 1 */
     return (x - x) / (x - x);
 }
-strong_alias (__ieee754_acosh, __acosh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosh, __acosh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
index fca80b13f975bf32c93c0fffa63dab732621bb35..2b6e35f3725839ac096c7f7623a36e9379ea8a6e 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
@@ -33,6 +33,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const double one = 1.0, half=0.5, huge = 1.0e300;
 
@@ -81,4 +82,6 @@  __ieee754_cosh (double x)
     /* |x| > overflowthresold, cosh(x) overflow */
 	return huge*huge;
 }
-strong_alias (__ieee754_cosh, __cosh_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_cosh, __cosh_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
index f686bb670681dd63f73f44ab355368d8e426c135..02ff49d7fddf2939f4efe7e7695c1977415462cf 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
@@ -19,6 +19,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 
 static const double one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -102,4 +103,6 @@  __ieee754_fmod (double x, double y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmod, __fmod_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmod, __fmod_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
index cd5567182fda17d74ad53d46b0e67d97ea6c52a4..be26ee848638fb53a9277d657abf9431730ea56e 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
@@ -46,6 +46,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 
 static const double two54 = 1.80143985094819840000e+16;		/* 0x4350000000000000 */
 static const double ivln10 = 4.34294481903251816668e-01;	/* 0x3FDBCB7B1526E50E */
@@ -83,5 +84,6 @@  __ieee754_log10 (double x)
   z = y * log10_2lo + ivln10 * __ieee754_log (x);
   return z + y * log10_2hi;
 }
-
-strong_alias (__ieee754_log10, __log10_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10, __log10_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
index f3917b463837e9eb19d18c62ba232d9bb077e9a1..c7bb208efb024030f0ae7cc71a01dab1d42c4fa1 100644
--- a/sysdeps/ieee754/float128/float128_private.h
+++ b/sysdeps/ieee754/float128/float128_private.h
@@ -365,3 +365,12 @@  mul_splitf128 (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y)
   *lo = (((x1 * y1 - *hi) + x1 * y2) + x2 * y1) + x2 * y2;
 #endif
 }
+
+/* Ensure compat_symbol uses GLIBC_2_26 since that was when the
+   __<fn>f128_finite symbols were introduced.  */
+#include <shlib-compat.h>
+#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
+# undef compat_symbol
+# define compat_symbol(lib, local, symbol, version) \
+  compat_symbol_reference (lib, local, symbol, GLIBC_2_26)
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_acosf.c b/sysdeps/ieee754/flt-32/e_acosf.c
index 3b2e4f1bde9906e483d31081ba794790f0eed05b..1aab50c548be9690d9d58773904c2af606169ad6 100644
--- a/sysdeps/ieee754/flt-32/e_acosf.c
+++ b/sysdeps/ieee754/flt-32/e_acosf.c
@@ -15,6 +15,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const float
 one =  1.0000000000e+00, /* 0x3F800000 */
@@ -75,4 +76,6 @@  __ieee754_acosf(float x)
 	    return (float)2.0*(df+w);
 	}
 }
-strong_alias (__ieee754_acosf, __acosf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosf, __acosf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_acoshf.c b/sysdeps/ieee754/flt-32/e_acoshf.c
index 49e64f3c43f0e5e37232dbcf8a38e7ab0c357453..2d0878c8cdf03ee0f5b25dfb919fb8d70ae26ac7 100644
--- a/sysdeps/ieee754/flt-32/e_acoshf.c
+++ b/sysdeps/ieee754/flt-32/e_acoshf.c
@@ -19,6 +19,7 @@  static char rcsid[] = "$NetBSD: e_acoshf.c,v 1.5 1995/05/12 04:57:20 jtc Exp $";
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const float
 one	= 1.0,
@@ -46,4 +47,6 @@  float __ieee754_acoshf(float x)
 	    return __log1pf(t+sqrtf((float)2.0*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshf, __acoshf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acoshf, __acoshf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_asinf.c b/sysdeps/ieee754/flt-32/e_asinf.c
index e03073b8bd6998e5649ba50923b1a43767c969ba..6ddce18994153c6f79062dbf181d98d29df3fb4d 100644
--- a/sysdeps/ieee754/flt-32/e_asinf.c
+++ b/sysdeps/ieee754/flt-32/e_asinf.c
@@ -43,6 +43,7 @@  static char rcsid[] = "$NetBSD: e_asinf.c,v 1.5 1995/05/12 04:57:25 jtc Exp $";
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const float
 one =  1.0000000000e+00, /* 0x3F800000 */
@@ -102,4 +103,6 @@  float __ieee754_asinf(float x)
 	}
 	if(hx>0) return t; else return -t;
 }
-strong_alias (__ieee754_asinf, __asinf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asinf, __asinf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_atan2f.c b/sysdeps/ieee754/flt-32/e_atan2f.c
index ddc5873ade50f9c7d717fea6a5afcc465d573904..9b97f003d269b89fe7056d72427d940f7c84d21a 100644
--- a/sysdeps/ieee754/flt-32/e_atan2f.c
+++ b/sysdeps/ieee754/flt-32/e_atan2f.c
@@ -15,6 +15,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const float
 tiny  = 1.0e-30,
@@ -91,4 +92,6 @@  __ieee754_atan2f (float y, float x)
 		    return  (z-pi_lo)-pi;/* atan(-,-) */
 	}
 }
-strong_alias (__ieee754_atan2f, __atan2f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2f, __atan2f_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c
index cda75b23c77fb820b6aaa61ae8be73e8c9ab1523..67ea5c2096a80c50dab3bfba93bfbb8fa0f3923a 100644
--- a/sysdeps/ieee754/flt-32/e_atanhf.c
+++ b/sysdeps/ieee754/flt-32/e_atanhf.c
@@ -41,6 +41,7 @@ 
 #include <math-barriers.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const float huge = 1e30;
 
@@ -73,4 +74,6 @@  __ieee754_atanhf (float x)
 
   return copysignf (t, x);
 }
-strong_alias (__ieee754_atanhf, __atanhf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanhf, __atanhf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_coshf.c b/sysdeps/ieee754/flt-32/e_coshf.c
index a2aa83876d9364b18fe348c1cf2a424db3dd9cfe..655b3c39c49738910ed87eec49b1a19694627be9 100644
--- a/sysdeps/ieee754/flt-32/e_coshf.c
+++ b/sysdeps/ieee754/flt-32/e_coshf.c
@@ -17,6 +17,7 @@ 
 #include <math.h>
 #include <math-narrow-eval.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const float huge = 1.0e30;
 static const float one = 1.0, half=0.5;
@@ -61,4 +62,6 @@  __ieee754_coshf (float x)
     /* |x| > overflowthresold, cosh(x) overflow */
 	return math_narrow_eval (huge*huge);
 }
-strong_alias (__ieee754_coshf, __coshf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_coshf, __coshf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c
index b6877d179479a9b0ede6c56dea2c362b0498d2fd..e4a328f4c64798e79a3fefc29cc2ef471af8c606 100644
--- a/sysdeps/ieee754/flt-32/e_exp2f.c
+++ b/sysdeps/ieee754/flt-32/e_exp2f.c
@@ -90,7 +90,9 @@  __exp2f (float x)
 }
 #ifndef __exp2f
 strong_alias (__exp2f, __ieee754_exp2f)
-strong_alias (__exp2f, __exp2f_finite)
-versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __exp2f, __exp2f_finite, GLIBC_2_15);
+# endif
+versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
 libm_alias_float_other (__exp2, exp2)
 #endif
diff --git a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c
index 811bbddd4026aa21f29961d96f2fa142031fad82..0519dbda7a7864139d9adb2aee0fb45b9147570c 100644
--- a/sysdeps/ieee754/flt-32/e_expf.c
+++ b/sysdeps/ieee754/flt-32/e_expf.c
@@ -108,7 +108,9 @@  __expf (float x)
 #ifndef __expf
 hidden_def (__expf)
 strong_alias (__expf, __ieee754_expf)
-strong_alias (__expf, __expf_finite)
-versioned_symbol (libm, __expf, expf, GLIBC_2_27);
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __expf, __expf_finite, GLIBC_2_15);
+# endif
+versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
 libm_alias_float_other (__exp, exp)
 #endif
diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
index 1a9407b517c01b7cf144d9d5732543b74c462b0d..71ca9a1a5b88be4b91b502f3d8b0d268fe94f9ef 100644
--- a/sysdeps/ieee754/flt-32/e_fmodf.c
+++ b/sysdeps/ieee754/flt-32/e_fmodf.c
@@ -21,6 +21,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const float one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -99,4 +100,6 @@  __ieee754_fmodf (float x, float y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmodf, __fmodf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmodf, __fmodf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
index 897e3935d0b4d1e5d5d13534533afd1e6d49ac7f..4bc61c1271924f0bc7c8e5418e51eb345986607d 100644
--- a/sysdeps/ieee754/flt-32/e_gammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c
@@ -23,6 +23,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -212,4 +213,6 @@  __ieee754_gammaf_r (float x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammaf_r, __gammaf_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_gammaf_r, __gammaf_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c
index 5336876cf4cbb8d684dcd3510b7e8585aef7524a..afbe49c4e37b6c6279d9288776e1844a77e4b45f 100644
--- a/sysdeps/ieee754/flt-32/e_hypotf.c
+++ b/sysdeps/ieee754/flt-32/e_hypotf.c
@@ -15,6 +15,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 float
 __ieee754_hypotf(float x, float y)
@@ -42,4 +43,8 @@  __ieee754_hypotf(float x, float y)
 
 	return (float) sqrt(d_x * d_x + d_y * d_y);
 }
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+#ifndef __ieee754_hypotf
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_j0f.c b/sysdeps/ieee754/flt-32/e_j0f.c
index 0efc646a125df4d4407b49799a0fc6ce073b5862..f39b0005e17a93f3d1ed2027b8d1f3ebde5bed14 100644
--- a/sysdeps/ieee754/flt-32/e_j0f.c
+++ b/sysdeps/ieee754/flt-32/e_j0f.c
@@ -16,6 +16,7 @@ 
 #include <math.h>
 #include <math-barriers.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static float pzerof(float), qzerof(float);
 
@@ -81,7 +82,9 @@  __ieee754_j0f(float x)
 	    return((one+u)*(one-u)+z*(r/s));
 	}
 }
-strong_alias (__ieee754_j0f, __j0f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm,__ieee754_j0f, __j0f_finite, GLIBC_2_15);
+#endif
 
 static const float
 u00  = -7.3804296553e-02, /* 0xbd9726b5 */
@@ -147,7 +150,9 @@  __ieee754_y0f(float x)
 	v = one+z*(v01+z*(v02+z*(v03+z*v04)));
 	return(u/v + tpi*(__ieee754_j0f(x)*__ieee754_logf(x)));
 }
-strong_alias (__ieee754_y0f, __y0f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y0f, __y0f_finite, GLIBC_2_15);
+#endif
 
 /* The asymptotic expansions of pzero is
  *	1 - 9/128 s^2 + 11025/98304 s^4 - ...,	where s = 1/x.
diff --git a/sysdeps/ieee754/flt-32/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
index 09b2296483a0e194cdc694527d91367c356eb7f6..f023bde153fb770aff6c932a0aef667d13b38122 100644
--- a/sysdeps/ieee754/flt-32/e_j1f.c
+++ b/sysdeps/ieee754/flt-32/e_j1f.c
@@ -20,6 +20,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static float ponef(float), qonef(float);
 
@@ -87,7 +88,9 @@  __ieee754_j1f(float x)
 	r *= x;
 	return(x*(float)0.5+r/s);
 }
-strong_alias (__ieee754_j1f, __j1f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm,__ieee754_j1f, __j1f_finite, GLIBC_2_15);
+#endif
 
 static const float U0[5] = {
  -1.9605709612e-01, /* 0xbe48c331 */
@@ -156,7 +159,9 @@  __ieee754_y1f(float x)
 	v = one+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
 	return(x*(u/v) + tpi*(__ieee754_j1f(x)*__ieee754_logf(x)-one/x));
 }
-strong_alias (__ieee754_y1f, __y1f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y1f, __y1f_finite, GLIBC_2_15);
+#endif
 
 /* For x >= 8, the asymptotic expansions of pone is
  *	1 + 15/128 s^2 - 4725/2^15 s^4 - ...,	where s = 1/x.
diff --git a/sysdeps/ieee754/flt-32/e_jnf.c b/sysdeps/ieee754/flt-32/e_jnf.c
index ae290154243a3c657b9d01e1577a797b138b1df1..6162c7e6c135fdad20ea31ffaeac8469133b9a5d 100644
--- a/sysdeps/ieee754/flt-32/e_jnf.c
+++ b/sysdeps/ieee754/flt-32/e_jnf.c
@@ -20,6 +20,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const float
 two   =  2.0000000000e+00, /* 0x40000000 */
@@ -181,7 +182,9 @@  __ieee754_jnf(int n, float x)
 	math_check_force_underflow (ret);
     return ret;
 }
-strong_alias (__ieee754_jnf, __jnf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_jnf, __jnf_finite, GLIBC_2_15);
+#endif
 
 float
 __ieee754_ynf(int n, float x)
@@ -233,4 +236,6 @@  __ieee754_ynf(int n, float x)
 	ret = copysignf (FLT_MAX, ret) * FLT_MAX;
     return ret;
 }
-strong_alias (__ieee754_ynf, __ynf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_ynf, __ynf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
index a7f9b9fbadc49c353b5e65851a432966ed2b0ab1..234766974797b8a520909a9cf6cafcc7ca3a3621 100644
--- a/sysdeps/ieee754/flt-32/e_lgammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
@@ -17,6 +17,7 @@ 
 #include <math-narrow-eval.h>
 #include <math_private.h>
 #include <libc-diag.h>
+#include <shlib-compat.h>
 
 static const float
 two23=  8.3886080000e+06, /* 0x4b000000 */
@@ -244,4 +245,6 @@  __ieee754_lgammaf_r(float x, int *signgamp)
 	DIAG_POP_NEEDS_COMMENT;
 	return r;
 }
-strong_alias (__ieee754_lgammaf_r, __lgammaf_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_lgammaf_r, __lgammaf_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_log10f.c b/sysdeps/ieee754/flt-32/e_log10f.c
index 7f1ffdad771a642d9df9d245ac5062ea11aaeefb..07b1a5bbb37d4bd174d37ac9c37b03cd6060f7e6 100644
--- a/sysdeps/ieee754/flt-32/e_log10f.c
+++ b/sysdeps/ieee754/flt-32/e_log10f.c
@@ -16,6 +16,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <fix-int-fp-convert-zero.h>
+#include <shlib-compat.h>
 
 static const float
 two25      =  3.3554432000e+07, /* 0x4c000000 */
@@ -51,4 +52,6 @@  __ieee754_log10f(float x)
 	z  = y*log10_2lo + ivln10*__ieee754_logf(x);
 	return  z+y*log10_2hi;
 }
-strong_alias (__ieee754_log10f, __log10f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10f, __log10f_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_log2f.c b/sysdeps/ieee754/flt-32/e_log2f.c
index f9364bb0f93d2aca38a0947c49a7843a5fc5b58f..a55125bb4663c3c44e0fdea03c1bff9cc7b72de7 100644
--- a/sysdeps/ieee754/flt-32/e_log2f.c
+++ b/sysdeps/ieee754/flt-32/e_log2f.c
@@ -89,7 +89,9 @@  __log2f (float x)
 }
 #ifndef __log2f
 strong_alias (__log2f, __ieee754_log2f)
-strong_alias (__log2f, __log2f_finite)
-versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __log2f, __log2f_finite, GLIBC_2_15);
+# endif
+versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
 libm_alias_float_other (__log2, log2)
 #endif
diff --git a/sysdeps/ieee754/flt-32/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c
index 58b068189f2424a0304357e1ee2afc67f87ca3dc..8d7ec9d90cea3551433c2bbfa2d8c3c989147883 100644
--- a/sysdeps/ieee754/flt-32/e_logf.c
+++ b/sysdeps/ieee754/flt-32/e_logf.c
@@ -88,7 +88,9 @@  __logf (float x)
 }
 #ifndef __logf
 strong_alias (__logf, __ieee754_logf)
-strong_alias (__logf, __logf_finite)
-versioned_symbol (libm, __logf, logf, GLIBC_2_27);
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __logf, __logf_finite, GLIBC_2_15);
+# endif
+versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
 libm_alias_float_other (__log, log)
 #endif
diff --git a/sysdeps/ieee754/flt-32/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c
index d94d4222cc21e8d9bdd16e485697584e1507e6f8..ef4f8bf2f4536bf1ddaca793929e44f2767474fb 100644
--- a/sysdeps/ieee754/flt-32/e_powf.c
+++ b/sysdeps/ieee754/flt-32/e_powf.c
@@ -231,7 +231,9 @@  __powf (float x, float y)
 }
 #ifndef __powf
 strong_alias (__powf, __ieee754_powf)
-strong_alias (__powf, __powf_finite)
-versioned_symbol (libm, __powf, powf, GLIBC_2_27);
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __powf, __powf_finite, GLIBC_2_15);
+# endif
+versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
 libm_alias_float_other (__pow, pow)
 #endif
diff --git a/sysdeps/ieee754/flt-32/e_remainderf.c b/sysdeps/ieee754/flt-32/e_remainderf.c
index 8e78784e0f43002124690f839d0f768453c7bd4f..897e1b946678fb2689efc0a15bfa0c22759c177b 100644
--- a/sysdeps/ieee754/flt-32/e_remainderf.c
+++ b/sysdeps/ieee754/flt-32/e_remainderf.c
@@ -15,6 +15,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const float zero = 0.0;
 
@@ -59,4 +60,6 @@  __ieee754_remainderf(float x, float p)
 	SET_FLOAT_WORD(x,hx^sx);
 	return x;
 }
-strong_alias (__ieee754_remainderf, __remainderf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainderf, __remainderf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_sinhf.c b/sysdeps/ieee754/flt-32/e_sinhf.c
index 20f7db81ea72db9dbf5f5350b2602d28bc7e339c..7dda97898b87e17ab3eba3c394edd058c3cc318f 100644
--- a/sysdeps/ieee754/flt-32/e_sinhf.c
+++ b/sysdeps/ieee754/flt-32/e_sinhf.c
@@ -18,6 +18,7 @@ 
 #include <math-narrow-eval.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const float one = 1.0, shuge = 1.0e37;
 
@@ -59,4 +60,6 @@  __ieee754_sinhf(float x)
     /* |x| > overflowthresold, sinh(x) overflow */
 	return math_narrow_eval (x*shuge);
 }
-strong_alias (__ieee754_sinhf, __sinhf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sinhf, __sinhf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_sqrtf.c b/sysdeps/ieee754/flt-32/e_sqrtf.c
index 6025da19cfe74a52f08bf8c8e0b38e6df6a2ac7f..435bd2dec99ed8c330445e16d63b080a3ba8d644 100644
--- a/sysdeps/ieee754/flt-32/e_sqrtf.c
+++ b/sysdeps/ieee754/flt-32/e_sqrtf.c
@@ -15,6 +15,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static	const float	one	= 1.0, tiny=1.0e-30;
 
@@ -83,4 +84,8 @@  __ieee754_sqrtf(float x)
 	SET_FLOAT_WORD(z,ix);
 	return z;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#ifndef __ieee754_sqrtf
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_acoshl.c b/sysdeps/ieee754/ldbl-128/e_acoshl.c
index c292759ac6f163ac0d739a5ae682331b507ab3d2..24d603db34019c1b980a66539b4b721a41701e7d 100644
--- a/sysdeps/ieee754/ldbl-128/e_acoshl.c
+++ b/sysdeps/ieee754/ldbl-128/e_acoshl.c
@@ -29,6 +29,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128
 one	= 1.0,
@@ -58,4 +59,6 @@  __ieee754_acoshl(_Float128 x)
 	    return __log1pl(t+sqrtl(2*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_acosl.c b/sysdeps/ieee754/ldbl-128/e_acosl.c
index 0dc23dee2beb2d9fa1a1f67da421e9559b97340a..82489de241e5d46c5367ab72901444db169260ce 100644
--- a/sysdeps/ieee754/ldbl-128/e_acosl.c
+++ b/sysdeps/ieee754/ldbl-128/e_acosl.c
@@ -56,6 +56,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128
   one = 1,
@@ -316,4 +317,6 @@  __ieee754_acosl (_Float128 x)
       return 2.0 * w;
     }
 }
-strong_alias (__ieee754_acosl, __acosl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosl, __acosl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_asinl.c b/sysdeps/ieee754/ldbl-128/e_asinl.c
index 4835962db48aee56dcf699a1c677b984b1ea593f..026fe963636eee6c7ad171ae8a2687ea8958da9f 100644
--- a/sysdeps/ieee754/ldbl-128/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-128/e_asinl.c
@@ -64,6 +64,7 @@ 
 #include <math-barriers.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const _Float128
   one = 1,
@@ -257,4 +258,6 @@  __ieee754_asinl (_Float128 x)
   else
     return -t;
 }
-strong_alias (__ieee754_asinl, __asinl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asinl, __asinl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_atan2l.c b/sysdeps/ieee754/ldbl-128/e_atan2l.c
index 8b4afa4bd567a54545150925b38247b7116f5b40..60117ddb97cff557037db908e171d72c7a5866c9 100644
--- a/sysdeps/ieee754/ldbl-128/e_atan2l.c
+++ b/sysdeps/ieee754/ldbl-128/e_atan2l.c
@@ -42,6 +42,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128
 tiny  = L(1.0e-4900),
@@ -119,4 +120,6 @@  __ieee754_atan2l(_Float128 y, _Float128 x)
 		    return  (z-pi_lo)-pi;/* atan(-,-) */
 	}
 }
-strong_alias (__ieee754_atan2l, __atan2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2l, __atan2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_atanhl.c b/sysdeps/ieee754/ldbl-128/e_atanhl.c
index 13b7683e1796ee5a24b3c69fbc1ce2c1e3da55cd..a0838dc5aad83372dad7e7f8ab0bcbf15aadf3ed 100644
--- a/sysdeps/ieee754/ldbl-128/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-128/e_atanhl.c
@@ -36,6 +36,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const _Float128 one = 1, huge = L(1e4900);
 
@@ -72,4 +73,6 @@  __ieee754_atanhl(_Float128 x)
 	    t = 0.5*__log1pl((u.value+u.value)/(one-u.value));
 	if(jx & 0x80000000) return -t; else return t;
 }
-strong_alias (__ieee754_atanhl, __atanhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_coshl.c b/sysdeps/ieee754/ldbl-128/e_coshl.c
index 70a2fe3e84ac6ffd754d87b16a0fbd8b8c7d2303..22ed8b49939fc8a3bb14fcd33a617bd77e664d14 100644
--- a/sysdeps/ieee754/ldbl-128/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-128/e_coshl.c
@@ -53,6 +53,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128 one = 1.0, half = 0.5, huge = L(1.0e4900),
 ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
@@ -107,4 +108,6 @@  __ieee754_coshl (_Float128 x)
   /* |x| > overflowthresold, cosh(x) overflow */
   return huge * huge;
 }
-strong_alias (__ieee754_coshl, __coshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_coshl, __coshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_exp10l.c b/sysdeps/ieee754/ldbl-128/e_exp10l.c
index 3d3d762ef02a6d7fb1227d872076ddc88d96aede..2a632bf798fc585118bc42315c140bc6ad739aac 100644
--- a/sysdeps/ieee754/ldbl-128/e_exp10l.c
+++ b/sysdeps/ieee754/ldbl-128/e_exp10l.c
@@ -18,6 +18,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 static const _Float128 log10_high = L(0x2.4d763776aaa2bp0);
 static const _Float128 log10_low = L(0x5.ba95b58ae0b4c28a38a3fb3e7698p-60);
@@ -46,4 +47,6 @@  __ieee754_exp10l (_Float128 arg)
   exp_low = arg_high * log10_low + arg_low * M_LN10l;
   return __ieee754_expl (exp_high) * __ieee754_expl (exp_low);
 }
-strong_alias (__ieee754_exp10l, __exp10l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10l, __exp10l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_expl.c b/sysdeps/ieee754/ldbl-128/e_expl.c
index 7b6ec0b347ae2469a544903d66fe6d10762c02a7..098c6a2b069b2ed67f1a9c60303404a27e5a4b69 100644
--- a/sysdeps/ieee754/ldbl-128/e_expl.c
+++ b/sysdeps/ieee754/ldbl-128/e_expl.c
@@ -69,6 +69,7 @@ 
 #include <math-underflow.h>
 #include <stdlib.h>
 #include "t_expl.h"
+#include <shlib-compat.h>
 
 static const _Float128 C[] = {
 /* Smallest integer x for which e^x overflows.  */
@@ -253,4 +254,6 @@  __ieee754_expl (_Float128 x)
     /* Return x, if x is a NaN or Inf; or overflow, otherwise.  */
     return TWO16383*x;
 }
-strong_alias (__ieee754_expl, __expl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_expl, __expl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_fmodl.c b/sysdeps/ieee754/ldbl-128/e_fmodl.c
index 73465126b43ff1c975389ff86172b645f18172a0..87a234ce74e2d5ef4a5382b6ad59e08bf348420f 100644
--- a/sysdeps/ieee754/ldbl-128/e_fmodl.c
+++ b/sysdeps/ieee754/ldbl-128/e_fmodl.c
@@ -20,6 +20,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128 one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -128,4 +129,6 @@  __ieee754_fmodl (_Float128 x, _Float128 y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
index 268d7faf6dc1441159e9818960e8d270cb5a039c..04d6b80acd4a3f7389783b4b020c061a0670d5b5 100644
--- a/sysdeps/ieee754/ldbl-128/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
@@ -23,6 +23,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -217,4 +218,6 @@  __ieee754_gammal_r (_Float128 x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammal_r, __gammal_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_gammal_r, __gammal_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c
index 7bafd4ae296318a1a3edf0eb366925ab029aed73..98a844d45d331976a6f71ea10f9ad8e162ee037f 100644
--- a/sysdeps/ieee754/ldbl-128/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-128/e_hypotl.c
@@ -48,6 +48,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 _Float128
 __ieee754_hypotl(_Float128 x, _Float128 y)
@@ -138,4 +139,6 @@  __ieee754_hypotl(_Float128 x, _Float128 y)
 	    return w;
 	} else return w;
 }
-strong_alias (__ieee754_hypotl, __hypotl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotl, __hypotl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c
index 5c699956b69a3e87e5a9436757aceffb25936718..c0287806baca0265aafbc71588632a8b3e2d12af 100644
--- a/sysdeps/ieee754/ldbl-128/e_j0l.c
+++ b/sysdeps/ieee754/ldbl-128/e_j0l.c
@@ -94,6 +94,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* 1 / sqrt(pi) */
 static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
@@ -789,7 +790,9 @@  __ieee754_j0l (_Float128 x)
   z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_j0l, __j0l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j0l, __j0l_finite, GLIBC_2_15);
+#endif
 
 
 /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
@@ -934,4 +937,6 @@  _Float128
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
   return z;
 }
-strong_alias (__ieee754_y0l, __y0l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y0l, __y0l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c
index 0ef3611473ea505fbd2ed1b5ad32a17331378053..1481ab729ade2a274ae6e480685402de560f3adb 100644
--- a/sysdeps/ieee754/ldbl-128/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-128/e_j1l.c
@@ -101,6 +101,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* 1 / sqrt(pi) */
 static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
@@ -810,7 +811,9 @@  __ieee754_j1l (_Float128 x)
     z = -z;
   return z;
 }
-strong_alias (__ieee754_j1l, __j1l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j1l, __j1l_finite, GLIBC_2_15);
+#endif
 
 
 /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
@@ -960,4 +963,6 @@  __ieee754_y1l (_Float128 x)
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_y1l, __y1l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y1l, __y1l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c
index 3c90072a22b98ed7c4ef8fde7a06c8e0a27ea105..1679510934b4aba6872932fa8772cc2138ae3ed9 100644
--- a/sysdeps/ieee754/ldbl-128/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-128/e_jnl.c
@@ -62,6 +62,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const _Float128
   invsqrtpi = L(5.6418958354775628694807945156077258584405E-1),
@@ -308,7 +309,9 @@  __ieee754_jnl (int n, _Float128 x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jnl, __jnl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_jnl, __jnl_finite, GLIBC_2_15);
+#endif
 
 _Float128
 __ieee754_ynl (int n, _Float128 x)
@@ -422,4 +425,6 @@  __ieee754_ynl (int n, _Float128 x)
     ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_ynl, __ynl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_ynl, __ynl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
index f470034f9c6b91a6e444d08094750c0ad092024d..b1b099133b2c81c68be84ac71c6056f8ba3c812e 100644
--- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
@@ -71,6 +71,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 static const _Float128 PIL = L(3.1415926535897932384626433832795028841972E0);
 static const _Float128 MAXLGM = L(1.0485738685148938358098967157129705071571E4928);
@@ -1039,4 +1040,6 @@  __ieee754_lgammal_r (_Float128 x, int *signgamp)
   q += neval (p, RASY, NRASY) / x;
   return (q);
 }
-strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_lgammal_r, __lgammal_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_log10l.c b/sysdeps/ieee754/ldbl-128/e_log10l.c
index e8f33984f2ceec4dfcbe51696b25595e31385c00..9c9de8ecd5bbdfea00dd552d233de0f8c70876cf 100644
--- a/sysdeps/ieee754/ldbl-128/e_log10l.c
+++ b/sysdeps/ieee754/ldbl-128/e_log10l.c
@@ -62,6 +62,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
  * 1/sqrt(2) <= x < sqrt(2)
@@ -256,4 +257,6 @@  done:
   z += e * L102A;
   return (z);
 }
-strong_alias (__ieee754_log10l, __log10l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10l, __log10l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_log2l.c b/sysdeps/ieee754/ldbl-128/e_log2l.c
index 06bf04f5e3f7d30a1ae7ebfb3b88f01398f11f65..bce1dd9547d288ba37fad9a458032712bc811ffc 100644
--- a/sysdeps/ieee754/ldbl-128/e_log2l.c
+++ b/sysdeps/ieee754/ldbl-128/e_log2l.c
@@ -61,6 +61,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
  * 1/sqrt(2) <= x < sqrt(2)
@@ -249,4 +250,6 @@  done:
   z += e;
   return (z);
 }
-strong_alias (__ieee754_log2l, __log2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log2l, __log2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_logl.c b/sysdeps/ieee754/ldbl-128/e_logl.c
index 8672047e4312d72be6be8c4e1c7aeae3ecbca7db..b3388d4a85ca7fe6d27fa042f587dc893e551f91 100644
--- a/sysdeps/ieee754/ldbl-128/e_logl.c
+++ b/sysdeps/ieee754/ldbl-128/e_logl.c
@@ -60,6 +60,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 /* log(1+x) = x - .5 x^2 + x^3 l(x)
    -.0078125 <= x <= +.0078125
@@ -279,4 +280,6 @@  __ieee754_logl(_Float128 x)
   y += e * ln2a;
   return y;
 }
-strong_alias (__ieee754_logl, __logl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_logl, __logl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c
index 47226f8688477491f4bd985718a2a44eb34cd0eb..496fbbf57f37ab60d6f14af937710db7d7d4359d 100644
--- a/sysdeps/ieee754/ldbl-128/e_powl.c
+++ b/sysdeps/ieee754/ldbl-128/e_powl.c
@@ -67,6 +67,7 @@ 
 #include <math.h>
 #include <math-barriers.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128 bp[] = {
   1,
@@ -449,4 +450,6 @@  __ieee754_powl (_Float128 x, _Float128 y)
     }
   return sgn * z;
 }
-strong_alias (__ieee754_powl, __powl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_remainderl.c b/sysdeps/ieee754/ldbl-128/e_remainderl.c
index 09b8640b78528371e6a23ad68670d56c3faa91a2..f8f43c4a0d9c34b07530ad5ba41b7b649e3ce337 100644
--- a/sysdeps/ieee754/ldbl-128/e_remainderl.c
+++ b/sysdeps/ieee754/ldbl-128/e_remainderl.c
@@ -23,6 +23,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const _Float128 zero = 0;
 
@@ -68,4 +69,6 @@  __ieee754_remainderl(_Float128 x, _Float128 p)
 	SET_LDOUBLE_MSW64(x,hx^sx);
 	return x;
 }
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_sinhl.c b/sysdeps/ieee754/ldbl-128/e_sinhl.c
index 39e7cf3084a635a1b0c285cac75317e5094e8894..4fbab7ab5c49d8aed3c5c652f3b0ba849cb64e3b 100644
--- a/sysdeps/ieee754/ldbl-128/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-128/e_sinhl.c
@@ -57,6 +57,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const _Float128 one = 1.0, shuge = L(1.0e4931),
 ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
@@ -115,4 +116,6 @@  __ieee754_sinhl (_Float128 x)
   /* |x| > overflowthreshold, sinhl(x) overflow */
   return x * shuge;
 }
-strong_alias (__ieee754_sinhl, __sinhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sinhl, __sinhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
index f85fe678ba27828ac109a9e427c9d15d8aa820e0..8bc999d22ce681dba3e89a1e56caa13fa4a6c53c 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
@@ -26,6 +26,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double
 one	= 1.0L,
@@ -59,4 +60,6 @@  __ieee754_acoshl(long double x)
 	    return __log1pl(t+sqrtl(2.0*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
index 1f8e405c9b0797bcf64a2e833bf86af204275a26..f0304d1a15dd529a81f684a9ba00ac7508a349c8 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
@@ -56,6 +56,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double
   one = 1.0L,
@@ -313,4 +314,6 @@  __ieee754_acosl (long double x)
       return 2.0 * w;
     }
 }
-strong_alias (__ieee754_acosl, __acosl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acosl, __acosl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
index e8b0221a921d18aec7cf5b688e3d2e1ce7f1b913..f542622bceb09a9650e36283c74eca060fb492bc 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
@@ -64,6 +64,7 @@ 
 #include <math-barriers.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double
   one = 1.0L,
@@ -248,4 +249,6 @@  __ieee754_asinl (long double x)
   else
     return -t;
 }
-strong_alias (__ieee754_asinl, __asinl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asinl, __asinl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
index b625323df3827f4ed132d8c8bd1557799c157df0..f348e7e52c63aa55ef493b208c87980c3c53e457 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
@@ -42,6 +42,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double
 tiny  = 1.0e-300L,
@@ -119,4 +120,6 @@  __ieee754_atan2l(long double y, long double x)
 		    return  (z-pi_lo)-pi;/* atan(-,-) */
 	}
 }
-strong_alias (__ieee754_atan2l, __atan2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2l, __atan2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
index 25c286b8ff7c31225a84dbdc90479e08c22ae43e..742fffb11f653d6810db74187dc633897577e49c 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
@@ -32,6 +32,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0L, huge = 1e300L;
 
@@ -69,4 +70,6 @@  __ieee754_atanhl(long double x)
 	    t = 0.5*__log1pl((x+x)/(one-x));
 	if(hx>=0) return t; else return -t;
 }
-strong_alias (__ieee754_atanhl, __atanhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
index 327b2ab9600028f6c22b45e86440a7104d8964b0..745a05f06439017cbd9f37ef346634d94851d4ca 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
@@ -33,6 +33,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0L, half=0.5L, huge = 1.0e300L;
 
@@ -78,4 +79,6 @@  __ieee754_coshl (long double x)
     /* |x| > overflowthresold, cosh(x) overflow */
 	return huge*huge;
 }
-strong_alias (__ieee754_coshl, __coshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_coshl, __coshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
index 5cc2818cddd3fd356181d85e6fdfdcf58754f80a..50e0d8ca24b6aa23f16d88f615b38e5b93668a61 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
@@ -18,6 +18,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 static const long double log10_high = 0x2.4d763776aaap+0L;
 static const long double log10_low = 0x2.b05ba95b58ae0b4c28a38a3fb4p-48L;
@@ -45,4 +46,6 @@  __ieee754_exp10l (long double arg)
   exp_low = arg_high * log10_low + arg_low * M_LN10l;
   return __ieee754_expl (exp_high) * __ieee754_expl (exp_low);
 }
-strong_alias (__ieee754_exp10l, __exp10l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp10l, __exp10l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
index 69faad2afdac39cfce6aa2867cf0c0a144181ba7..20674d379cc80eba90c5e7bc1c1795808aa10f3b 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
@@ -66,7 +66,7 @@ 
 #include <inttypes.h>
 #include <math_private.h>
 #include <fenv_private.h>
-
+#include <shlib-compat.h>
 
 #include "t_expl.h"
 
@@ -257,4 +257,6 @@  __ieee754_expl (long double x)
     return result;
   return result * scale_u.ld;
 }
-strong_alias (__ieee754_expl, __expl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_expl, __expl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
index fae7dbe888b0e2418e94e0ac43b4ac218e9e001a..b4e9ed5516fc809838cd9ba091340e2a6f60e038 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
@@ -21,6 +21,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <ieee754.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -146,4 +147,6 @@  __ieee754_fmodl (long double x, long double y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
index 470c87d41012386c7ba25c40952498ea12420f40..d2a4668dece7690098a485f85a8572038e7dfa65 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
@@ -23,6 +23,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -217,4 +218,6 @@  __ieee754_gammal_r (long double x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammal_r, __gammal_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_gammal_r, __gammal_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
index 842f77b7ed709732fe02b4c8db11f45fda122fdd..a6789a0be331ff116a430eed8617bb8d59232377 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
@@ -45,6 +45,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_hypotl(long double x, long double y)
@@ -136,4 +137,6 @@  __ieee754_hypotl(long double x, long double y)
 	else
 	    return w;
 }
-strong_alias (__ieee754_hypotl, __hypotl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotl, __hypotl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
index 448cfb63fe4a3f58ec7ebd74980915486b363a1b..322b17e0831a509c13953355760c5cab454afaee 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
@@ -21,6 +21,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* 1 / sqrt(pi) */
 static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
@@ -716,7 +717,9 @@  __ieee754_j0l (long double x)
   z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_j0l, __j0l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j0l, __j0l_finite, GLIBC_2_15);
+#endif
 
 
 /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
@@ -861,4 +864,6 @@  long double
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
   return z;
 }
-strong_alias (__ieee754_y0l, __y0l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y0l, __y0l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
index fada0c226e1d5559417c203aca5e80631a07e17d..d2ce14c50982b29fa02398509bed06c42bbe81ab 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
@@ -24,6 +24,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* 1 / sqrt(pi) */
 static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
@@ -733,7 +734,9 @@  __ieee754_j1l (long double x)
     z = -z;
   return z;
 }
-strong_alias (__ieee754_j1l, __j1l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j1l, __j1l_finite, GLIBC_2_15);
+#endif
 
 
 /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
@@ -883,4 +886,6 @@  __ieee754_y1l (long double x)
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_y1l, __y1l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm,__ieee754_y1l, __y1l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
index 478824c8fad5964466ff0874e8b671d262b7225c..7636776f9f019b16a082fde342c3e079774639b3 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
@@ -62,6 +62,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double
   invsqrtpi = 5.6418958354775628694807945156077258584405E-1L,
@@ -308,7 +309,9 @@  __ieee754_jnl (int n, long double x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jnl, __jnl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_jnl, __jnl_finite, GLIBC_2_15);
+#endif
 
 long double
 __ieee754_ynl (int n, long double x)
@@ -424,4 +427,6 @@  __ieee754_ynl (int n, long double x)
     ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_ynl, __ynl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_ynl, __ynl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
index ae2e6559b02149f823dc37265c014356ca435b1b..509ddfd2ddfb4ac1a3413c37356d7d6891b857a1 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
@@ -21,6 +21,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 static const long double PIL = 3.1415926535897932384626433832795028841972E0L;
 static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L;
@@ -989,4 +990,6 @@  __ieee754_lgammal_r (long double x, int *signgamp)
   q += neval (p, RASY, NRASY) / x;
   return (q);
 }
-strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_lgammal_r, __lgammal_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
index 62e3214ca436f768e07035512dde5019ce184515..0412b4f5047ec06dcfb121885a6bf59c2529a189 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
@@ -62,6 +62,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
  * 1/sqrt(2) <= x < sqrt(2)
@@ -258,4 +259,6 @@  done:
   z += e * L102A;
   return (z);
 }
-strong_alias (__ieee754_log10l, __log10l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log10l, __log10l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
index 1f8b6e9d7f1c8d32ff954e3d63d2710bab28112d..5b4e9f1dbb441199a00cdf47f37578b00a579846 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
@@ -61,6 +61,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
  * 1/sqrt(2) <= x < sqrt(2)
@@ -251,4 +252,6 @@  done:
   z += e;
   return (z);
 }
-strong_alias (__ieee754_log2l, __log2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log2l, __log2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
index c44feca65bc993d3a7a1c7fc065352550687ca77..80fb721c0d42c6d20e0d46d0259b8139d6eff023 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_logl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
@@ -60,6 +60,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 /* log(1+x) = x - .5 x^2 + x^3 l(x)
    -.0078125 <= x <= +.0078125
@@ -297,4 +298,6 @@  __ieee754_logl(long double x)
   y += e * ln2a;
   return y;
 }
-strong_alias (__ieee754_logl, __logl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_logl, __logl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
index 1f0f2b4c0418971e2e04e13aa7932ac5a3bdb196..ed7fa01c9983d8fd22fa87017cfd90572e47daa3 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_powl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
@@ -67,6 +67,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double bp[] = {
   1.0L,
@@ -413,4 +414,6 @@  __ieee754_powl (long double x, long double y)
   math_check_force_underflow (z);
   return z;
 }
-strong_alias (__ieee754_powl, __powl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
index efa83bdab7d761d6255fba1a21c3523861366397..9b212e947751ac0fc2520541bd9f621bbf78b8b9 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
@@ -23,6 +23,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double zero = 0.0L;
 
@@ -78,4 +79,6 @@  __ieee754_remainderl(long double x, long double p)
 	  x = -x;
 	return x;
 }
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
index f869fb068cfdf4a88d090b3f0bad5c914d515297..3a777046e99f8256f3df1e280565fa0b54d38ccc 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
@@ -32,6 +32,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0, shuge = 1.0e307;
 
@@ -77,4 +78,6 @@  __ieee754_sinhl(long double x)
     /* |x| > overflowthresold, sinh(x) overflow */
 	return x*shuge;
 }
-strong_alias (__ieee754_sinhl, __sinhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sinhl, __sinhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
index cd9d43339fa4844c4b70de2cf9a5051cc68f5d51..bcad9cd1f1bc1129bea5a1061f4652a96815eb83 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
@@ -33,6 +33,7 @@ 
 /*********************************************************************/
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 typedef union {int64_t i[2]; long double x; double d[2]; } mynumber;
 
@@ -99,4 +100,6 @@  long double __ieee754_sqrtl(long double x)
     return tm256*__ieee754_sqrtl(x*t512);
   }
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_acoshl.c b/sysdeps/ieee754/ldbl-96/e_acoshl.c
index 56b04d4cc43122e4e40f5d7c036932cfb050ba9c..079f21fb6d72a14ab2277a11ed88fdee8524b062 100644
--- a/sysdeps/ieee754/ldbl-96/e_acoshl.c
+++ b/sysdeps/ieee754/ldbl-96/e_acoshl.c
@@ -30,6 +30,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double
 one	= 1.0,
@@ -58,4 +59,6 @@  __ieee754_acoshl(long double x)
 	    return __log1pl(t+sqrtl(2.0*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acoshl, __acoshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_asinl.c b/sysdeps/ieee754/ldbl-96/e_asinl.c
index 806906a58a411bcb246c49cef4d6ce72ee1dab51..728990b07734a7bc3eb4ebfff458a3a415c7d16f 100644
--- a/sysdeps/ieee754/ldbl-96/e_asinl.c
+++ b/sysdeps/ieee754/ldbl-96/e_asinl.c
@@ -62,6 +62,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double
   one = 1.0L,
@@ -155,4 +156,6 @@  __ieee754_asinl (long double x)
   else
     return -t;
 }
-strong_alias (__ieee754_asinl, __asinl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asinl, __asinl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_atanhl.c b/sysdeps/ieee754/ldbl-96/e_atanhl.c
index 7312f84329db49c4787826b22f42fca72550e4cf..fa4a1c31fdc1806bb265d7b1490202e3c5bff362 100644
--- a/sysdeps/ieee754/ldbl-96/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-96/e_atanhl.c
@@ -37,6 +37,7 @@ 
 #include <math-barriers.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0, huge = 1e4900L;
 
@@ -68,4 +69,6 @@  __ieee754_atanhl(long double x)
 	    t = 0.5*__log1pl((x+x)/(one-x));
 	if(se<=0x7fff) return t; else return -t;
 }
-strong_alias (__ieee754_atanhl, __atanhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atanhl, __atanhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_coshl.c b/sysdeps/ieee754/ldbl-96/e_coshl.c
index 1edf2c154254f98ec97895458c55b3d6c16024a8..6e9e49d239f9bed8f960a439737ecf5bb2fe5a8a 100644
--- a/sysdeps/ieee754/ldbl-96/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-96/e_coshl.c
@@ -36,6 +36,7 @@  static char rcsid[] = "$NetBSD: e_cosh.c,v 1.7 1995/05/10 20:44:58 jtc Exp $";
 
 #include <math.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0, half=0.5, huge = 1.0e4900L;
 
@@ -84,4 +85,6 @@  __ieee754_coshl (long double x)
     /* |x| >= log(2*maxdouble), cosh(x) overflow */
 	return huge*huge;
 }
-strong_alias (__ieee754_coshl, __coshl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_coshl, __coshl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_gammal_r.c b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
index fceb193a415cf4b5ba11ef36b9d1375320e2fc5e..4c29eaafe0689a6593b0f1c6c6bd4bdb51d356bd 100644
--- a/sysdeps/ieee754/ldbl-96/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
@@ -22,6 +22,7 @@ 
 #include <fenv_private.h>
 #include <math-underflow.h>
 #include <float.h>
+#include <shlib-compat.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -209,4 +210,6 @@  __ieee754_gammal_r (long double x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammal_r, __gammal_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_gammal_r, __gammal_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c
index f664e30c987a3c18000ec1c34b1d3e7e7a20ac33..f54b50f97e215d44bd6f1035a7cc7a2049b21b0f 100644
--- a/sysdeps/ieee754/ldbl-96/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-96/e_hypotl.c
@@ -49,6 +49,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 long double __ieee754_hypotl(long double x, long double y)
 {
@@ -140,4 +141,6 @@  long double __ieee754_hypotl(long double x, long double y)
 	    return w;
 	} else return w;
 }
-strong_alias (__ieee754_hypotl, __hypotl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotl, __hypotl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_j0l.c b/sysdeps/ieee754/ldbl-96/e_j0l.c
index e720ae955801616424395aa54b91df72ee1ecd5e..6f08df46a32d7c6e7e2cffe5b23962709540b939 100644
--- a/sysdeps/ieee754/ldbl-96/e_j0l.c
+++ b/sysdeps/ieee754/ldbl-96/e_j0l.c
@@ -74,6 +74,7 @@ 
 #include <math.h>
 #include <math-barriers.h>
 #include <math_private.h>
+#include <shlib-compat.h>
 
 static long double pzero (long double), qzero (long double);
 
@@ -165,7 +166,9 @@  __ieee754_j0l (long double x)
       return ((one + u) * (one - u) + z * (r / s));
     }
 }
-strong_alias (__ieee754_j0l, __j0l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j0l, __j0l_finite, GLIBC_2_15);
+#endif
 
 
 /* y0(x) = 2/pi ln(x) J0(x) + U(x^2)/V(x^2)
@@ -256,7 +259,9 @@  __ieee754_y0l (long double x)
   v = V[0] + z * (V[1] + z * (V[2] + z * (V[3] + z * (V[4] + z))));
   return (u / v + tpi * (__ieee754_j0l (x) * __ieee754_logl (x)));
 }
-strong_alias (__ieee754_y0l, __y0l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y0l, __y0l_finite, GLIBC_2_15);
+#endif
 
 /* The asymptotic expansions of pzero is
  *	1 - 9/128 s^2 + 11025/98304 s^4 - ...,	where s = 1/x.
diff --git a/sysdeps/ieee754/ldbl-96/e_j1l.c b/sysdeps/ieee754/ldbl-96/e_j1l.c
index 581615d563fce9b79cf23e5af15628fa61205398..9f4c58dcc706de68ad5a737c8961be511fe2e675 100644
--- a/sysdeps/ieee754/ldbl-96/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-96/e_j1l.c
@@ -76,6 +76,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static long double pone (long double), qone (long double);
 
@@ -167,7 +168,9 @@  __ieee754_j1l (long double x)
   r *= x;
   return (x * 0.5 + r / s);
 }
-strong_alias (__ieee754_j1l, __j1l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_j1l, __j1l_finite, GLIBC_2_15);
+#endif
 
 
 /* Y1(x) = 2/pi * (log(x) * j1(x) - 1/x) + x R(x^2)
@@ -254,7 +257,9 @@  __ieee754_y1l (long double x)
   return (x * (u / v) +
 	  tpi * (__ieee754_j1l (x) * __ieee754_logl (x) - one / x));
 }
-strong_alias (__ieee754_y1l, __y1l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_y1l, __y1l_finite, GLIBC_2_15);
+#endif
 
 
 /* For x >= 8, the asymptotic expansions of pone is
diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
index 6c1c4b4653eb6195dd0f762c868fd82e7f2b830f..1808542a1e21387bb34f9382d15bbaa942e40e8b 100644
--- a/sysdeps/ieee754/ldbl-96/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
@@ -62,6 +62,7 @@ 
 #include <math_private.h>
 #include <fenv_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double
   invsqrtpi = 5.64189583547756286948079e-1L, two = 2.0e0L, one = 1.0e0L;
@@ -301,7 +302,9 @@  __ieee754_jnl (int n, long double x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jnl, __jnl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_jnl, __jnl_finite, GLIBC_2_15);
+#endif
 
 long double
 __ieee754_ynl (int n, long double x)
@@ -407,4 +410,6 @@  __ieee754_ynl (int n, long double x)
     ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_ynl, __ynl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_ynl, __ynl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
index a5d6d0dea5e5d86be675ce163cd5a7328082ed64..0a62c512bc16b3fec245b1a16a5d6f52579719c6 100644
--- a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
@@ -94,6 +94,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <libc-diag.h>
+#include <shlib-compat.h>
 
 static const long double
   half = 0.5L,
@@ -436,4 +437,6 @@  __ieee754_lgammal_r (long double x, int *signgamp)
   DIAG_POP_NEEDS_COMMENT;
   return r;
 }
-strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_lgammal_r, __lgammal_r_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/ieee754/ldbl-96/e_sinhl.c b/sysdeps/ieee754/ldbl-96/e_sinhl.c
index a4b39783bcca7d8aef10a52cbb407f929fed8a13..106101de29d27cda1d20fa69f9bc7cb148b9716a 100644
--- a/sysdeps/ieee754/ldbl-96/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-96/e_sinhl.c
@@ -40,6 +40,7 @@  static char rcsid[] = "$NetBSD: $";
 #include <math.h>
 #include <math_private.h>
 #include <math-underflow.h>
+#include <shlib-compat.h>
 
 static const long double one = 1.0, shuge = 1.0e4931L;
 
@@ -85,4 +86,6 @@  __ieee754_sinhl(long double x)
     /* |x| > overflowthreshold, sinhl(x) overflow */
 	return x*shuge;
 }
-strong_alias (__ieee754_sinhl, __sinhl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sinhl, __sinhl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrt.c b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
index f9cf280fd6d7ac3a7064dd595b2fd9ff4c265310..ca3cca15a51e315559ae0c6e2a132f692cf2a9e4 100644
--- a/sysdeps/m68k/coldfire/fpu/e_sqrt.c
+++ b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
@@ -15,10 +15,14 @@ 
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <shlib-compat.h>
+
 double
 __ieee754_sqrt (double x)
 {
   asm ("fdsqrt.d %1,%0" : "=f" (x) : "fm" (x));
   return x;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrtf.c b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
index 61d94ee6ec55ff1a52980557242b50314ddbaf2f..4d97d01fa5e9f8aa6d77eccc7bd8c671b01a4692 100644
--- a/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
+++ b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
@@ -15,6 +15,8 @@ 
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <shlib-compat.h>
+
 float
 __ieee754_sqrtf (float x)
 {
@@ -22,4 +24,6 @@  __ieee754_sqrtf (float x)
   asm ("fssqrt.s %1,%0" : "=f" (result) : "dm" (x));
   return result;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_atan2.c b/sysdeps/m68k/m680x0/fpu/e_atan2.c
index 8f41c4765741602ba4912be0ceefe7d28a615f3f..5bd03006b94f0b9f81fe7077770108dbbb8e94b4 100644
--- a/sysdeps/m68k/m680x0/fpu/e_atan2.c
+++ b/sysdeps/m68k/m680x0/fpu/e_atan2.c
@@ -18,6 +18,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include "mathimpl.h"
+#include <shlib-compat.h>
 
 #ifndef SUFF
 #define SUFF
@@ -101,4 +102,6 @@  s(__ieee754_atan2) (float_type y, float_type x)
     }
   return z;
 }
-strong_alias (s(__ieee754_atan2), CONCATX (s (__atan2), _finite))
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, s(__ieee754_atan2), CONCATX (s (__atan2), _finite), GLIBC_2_15);
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_pow.c b/sysdeps/m68k/m680x0/fpu/e_pow.c
index 010e127c257996557460148dd8d2e0ec0b4fd5df..71d0c5d9550aafb670135ebea50a669da6cfce09 100644
--- a/sysdeps/m68k/m680x0/fpu/e_pow.c
+++ b/sysdeps/m68k/m680x0/fpu/e_pow.c
@@ -18,6 +18,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include "mathimpl.h"
+#include <shlib-compat.h>
 
 #ifndef SUFF
 #define SUFF
@@ -123,4 +124,6 @@  s(__ieee754_pow) (float_type x, float_type y)
     z = m81(__ieee754_exp) (y * m81(__ieee754_log) (x));
   return z;
 }
-strong_alias (s(__ieee754_pow), CONCATX (s(__pow), _finite))
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, s(__ieee754_pow), CONCATX (s(__pow), _finite), GLIBC_2_15);
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_scalb.c b/sysdeps/m68k/m680x0/fpu/e_scalb.c
index dae8b9aa70a87e4036847dc774b4656b155c126e..80de704e9df4ac953c9dec1ebf8720692c0fc8b0 100644
--- a/sysdeps/m68k/m680x0/fpu/e_scalb.c
+++ b/sysdeps/m68k/m680x0/fpu/e_scalb.c
@@ -19,6 +19,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include "mathimpl.h"
+#include <shlib-compat.h>
 
 #ifndef SUFF
 #define SUFF
@@ -57,4 +58,6 @@  s(__ieee754_scalb) (float_type x, float_type fn)
   __asm ("fscale%.x %1, %0" : "=f" (retval) : "f" (fn), "0" (x));
   return retval;
 }
-strong_alias (s(__ieee754_scalb), CONCATX (s(__scalb), _finite))
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, s(__ieee754_scalb), CONCATX (s(__scalb), _finite), GLIBC_2_15);
+#endif
diff --git a/sysdeps/mips/fpu/e_sqrt.c b/sysdeps/mips/fpu/e_sqrt.c
index 1a120fda91db5e08bac812e659b0e5a856c1a0d4..d45bdf93b8fc1f09f1caa9f26b134f3b96d66baa 100644
--- a/sysdeps/mips/fpu/e_sqrt.c
+++ b/sysdeps/mips/fpu/e_sqrt.c
@@ -18,7 +18,7 @@ 
 
 
 #include <sgidefs.h>
-
+#include <shlib-compat.h>
 
 #if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
 
@@ -29,7 +29,9 @@  __ieee754_sqrt (double x)
   __asm__ ("sqrt.d %0,%1" : "=f" (z) : "f" (x));
   return z;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
 
 #else
 
diff --git a/sysdeps/mips/fpu/e_sqrtf.c b/sysdeps/mips/fpu/e_sqrtf.c
index 62ea79f581ba5ebd1a0082481b1f657fdf6d1c5b..61b3fcd9acd41c1f879e6ee2a8c5af9d1ee64502 100644
--- a/sysdeps/mips/fpu/e_sqrtf.c
+++ b/sysdeps/mips/fpu/e_sqrtf.c
@@ -18,7 +18,7 @@ 
 
 
 #include <sgidefs.h>
-
+#include <shlib-compat.h>
 
 #if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
 
@@ -29,7 +29,9 @@  __ieee754_sqrtf (float x)
   __asm__ ("sqrt.s %0,%1" : "=f" (z) : "f" (x));
   return z;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
 
 #else
 
diff --git a/sysdeps/mips/mips64/e_sqrtl.c b/sysdeps/mips/mips64/e_sqrtl.c
index 0cd27441549d4c783147fd1d3a159170c60cdea7..4370a2a8b035a594f1ec9a10a5abd2956e368be1 100644
--- a/sysdeps/mips/mips64/e_sqrtl.c
+++ b/sysdeps/mips/mips64/e_sqrtl.c
@@ -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)
@@ -36,4 +37,6 @@  __ieee754_sqrtl (const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c
index 039e5be4303f70e5afd3f1fd3d5900866249438c..93108737d7a9cb5fe4b9b60a38ab5ed2778de826 100644
--- a/sysdeps/powerpc/fpu/e_hypot.c
+++ b/sysdeps/powerpc/fpu/e_hypot.c
@@ -21,6 +21,7 @@ 
 #include <math_private.h>
 #include <math-underflow.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 
 static const double two60   = 1.152921504606847e+18;
 static const double two500  = 3.2733906078961419e+150;
@@ -132,4 +133,8 @@  __ieee754_hypot (double x, double y)
     }
   return sqrt (x * x + y * y);
 }
-strong_alias (__ieee754_hypot, __hypot_finite)
+#ifndef __ieee754_hypot
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c
index 0738b2d9a2946fc15f25ad311ff461cce15b18b9..7d5fe5dd85405ba680f29d9bbc312ee073c7e6d5 100644
--- a/sysdeps/powerpc/fpu/e_hypotf.c
+++ b/sysdeps/powerpc/fpu/e_hypotf.c
@@ -20,6 +20,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <stdint.h>
+#include <shlib-compat.h>
 
 /* __ieee754_hypotf(x,y)
 
@@ -73,4 +74,8 @@  __ieee754_hypotf (float x, float y)
 
   return sqrt ((double) x * x + (double) y * y);
 }
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+#ifndef __ieee754_hypotf
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
index 04381e69549b1653fd0f7fe1e3a77397931c2ac6..bb9692ee3a34eedec93581c33bb8d7e431765539 100644
--- a/sysdeps/powerpc/fpu/e_sqrt.c
+++ b/sysdeps/powerpc/fpu/e_sqrt.c
@@ -24,6 +24,7 @@ 
 #include <stdint.h>
 #include <sysdep.h>
 #include <ldsodefs.h>
+#include <shlib-compat.h>
 
 #ifndef _ARCH_PPCSQ
 static const double almost_half = 0.5000000000000001;	/* 0.5 + 2^-53 */
@@ -173,4 +174,6 @@  __ieee754_sqrt (double x)
 
   return z;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
index 5d9e900005a18e278814964ac38bb60b30e88e63..67d21e70261c144ef0fbe8be31e03c13e2dfa688 100644
--- a/sysdeps/powerpc/fpu/e_sqrtf.c
+++ b/sysdeps/powerpc/fpu/e_sqrtf.c
@@ -24,6 +24,7 @@ 
 #include <stdint.h>
 #include <sysdep.h>
 #include <ldsodefs.h>
+#include <shlib-compat.h>
 
 #ifndef _ARCH_PPCSQ
 static const float almost_half = 0.50000006;	/* 0.5 + 2^-24 */
@@ -148,4 +149,6 @@  __ieee754_sqrtf (float x)
 
   return z;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
index 92312a8a7c14af5a3bab4cc24d150f5e0b7aec9c..1548b35f619b0c9c78c4156e30a22df131fa496e 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
@@ -18,9 +18,6 @@ 
 
 #include <math.h>
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_hypot __ieee754_hypot_power7
 
 #include <sysdeps/powerpc/fpu/e_hypot.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
index 32b008d06feaede68b31907374f53366c870ba4d..c831a8087debbf1fbfdef61c300064c58f4d2238 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
@@ -18,9 +18,6 @@ 
 
 #include <math.h>
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_hypot __ieee754_hypot_ppc32
 
 #include <sysdeps/powerpc/fpu/e_hypot.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
index f49fda8cb1dba6f0878e685826d9670bb6f0230e..84144d7fcc48faadd6151b70daba506301e2f775 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
@@ -30,4 +30,6 @@  libc_ifunc (__ieee754_hypot,
 	    ? __ieee754_hypot_power7
             : __ieee754_hypot_ppc32);
 
-strong_alias (__ieee754_hypot, __hypot_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
index 5b47501739f3ec2a205612f438a3338c98657c9a..ca160fc9f749bc9b0e74d2e50421b063384bccac 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
@@ -18,9 +18,6 @@ 
 
 #include <math.h>
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_hypotf __ieee754_hypotf_power7
 
 #include <sysdeps/powerpc/fpu/e_hypotf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
index 153e3bcb574433866a52900eb3100fd91f2f36f2..453e19307f213cde2bbdab60b144be4975a4f465 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
@@ -18,9 +18,6 @@ 
 
 #include <math.h>
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_hypotf __ieee754_hypotf_ppc32
 
 #include <sysdeps/ieee754/flt-32/e_hypotf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
index f637632b1759e26cb0218c934f160ce4a7575ceb..490060d0f0d998118058179c097144d82daeda1d 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
@@ -30,4 +30,6 @@  libc_ifunc (__ieee754_hypotf,
 	    ? __ieee754_hypotf_power7
             : __ieee754_hypotf_ppc32);
 
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
index e0e14c2a470d80fc21611fd1ca4c3dde907c3111..069516e0841c688d39f2bb4c16e2b2bbcc17f0bd 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
@@ -16,9 +16,6 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_expf __ieee754_expf_power8
 
 #include <sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
index dc0023c244f8f81df965d4ccfd3e739bab5c71a9..679cb70b27e2aa33880d1f7ed82394f3034cb159 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
@@ -29,4 +29,6 @@  libc_ifunc (__ieee754_expf,
 	    ? __ieee754_expf_power8
 	    : __ieee754_expf_ppc64);
 
-strong_alias (__ieee754_expf, __expf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_expf, __expf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
index da1e80f0d6d81ab02ed832de3d2cb0fbafde202b..a399b021296d186a79cc815830e7141af3c389b8 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
@@ -18,9 +18,6 @@ 
 
 #include <math.h>
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_hypot __ieee754_hypot_ppc64
 
 #include <sysdeps/powerpc/fpu/e_hypot.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
index 3bd04e95177ed30ee1b06e61c5ed4d5c9b167a0e..14bfd41baef21da51bf5deb4746e761a10551e5e 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
@@ -30,4 +30,6 @@  libc_ifunc (__ieee754_hypot,
 	    ? __ieee754_hypot_power7
             : __ieee754_hypot_ppc64);
 
-strong_alias (__ieee754_hypot, __hypot_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypot, __hypot_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
index 6d5d54bb79652102198572a779cac50a52bf2e30..c20d418c01a65c718d2e8c1f1ad577829c1dd7f6 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
@@ -18,9 +18,6 @@ 
 
 #include <math.h>
 
-#undef strong_alias
-#define strong_alias(a, b)
-
 #define __ieee754_hypotf __ieee754_hypotf_ppc64
 
 #include <sysdeps/powerpc/fpu/e_hypotf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
index 02c0ab497f70039e9de1b35690079bd75ded24bf..307f7c91d2e20ea74137d868e871e7309ac6b401 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
@@ -30,4 +30,6 @@  libc_ifunc (__ieee754_hypotf,
 	    ? __ieee754_hypotf_power7
             : __ieee754_hypotf_ppc64);
 
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_hypotf, __hypotf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c b/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
index b5a841570ec0a24d19f7831efb742dc31a717f26..8985116c91af67938ef7edc5fddba7c6269d8ea3 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
+++ b/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
@@ -27,6 +27,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 /* Unavoidable hacks since TFmode is assumed to be binary128 when
    -mabi=ibmlongdouble is used.  */
@@ -53,4 +54,6 @@  __ieee754_sqrtf128 (__float128 a)
   FP_HANDLE_EXCEPTIONS;
   return r;
 }
-strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf128, __sqrtf128_finite, GLIBC_2_26);
+#endif
diff --git a/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c b/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
index a36ccf1925bc77a64e6db1716c684152cc5165ea..c613ba6479288862d7b25d122e8a077a0267691c 100644
--- a/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
+++ b/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
@@ -26,6 +26,8 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <shlib-compat.h>
+
 __float128
 __ieee754_sqrtf128 (__float128 a)
 {
@@ -33,4 +35,6 @@  __ieee754_sqrtf128 (__float128 a)
   asm ("xssqrtqp %0,%1" : "=v" (z) : "v" (a));
   return z;
 }
-strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf128, __sqrtf128_finite, GLIBC_2_26);
+#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S b/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
index 7469a728733d4f46b2615441ea163f44741dcc66..7931e6079954f2ccda8db9a10079722568e7d172 100644
--- a/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
+++ b/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <shlib-compat.h>
 
 /* Short algorithm description:
  *
@@ -300,4 +301,8 @@  END(__ieee754_expf)
 	.4byte	0x7f800000	/* Single precision Inf.  */
 	.4byte	0		/* Single precision zero.  */
 
-strong_alias (__ieee754_expf, __expf_finite)
+#ifndef __ieee754_expf
+# if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_expf, __expf_finite, GLIBC_2_15);
+# endif
+#endif
diff --git a/sysdeps/riscv/e_sqrtl.c b/sysdeps/riscv/e_sqrtl.c
index 2ac35c603763236bf8383b11ab1cf64391f41d4e..cab624bd874682b7086ab644ae52f651990ca6a3 100644
--- a/sysdeps/riscv/e_sqrtl.c
+++ b/sysdeps/riscv/e_sqrtl.c
@@ -19,6 +19,7 @@ 
 #include <stdlib.h>
 #include <soft-fp/soft-fp.h>
 #include <soft-fp/quad.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_sqrtl (const long double a)
@@ -34,4 +35,6 @@  __ieee754_sqrtl (const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/riscv/rvd/e_sqrt.c b/sysdeps/riscv/rvd/e_sqrt.c
index 4cd354ce94c4163c6d7adf0d008e0a5a975e3a28..98e06596afcb66ef932edf32a13b8008e087ad3d 100644
--- a/sysdeps/riscv/rvd/e_sqrt.c
+++ b/sysdeps/riscv/rvd/e_sqrt.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 double
 __ieee754_sqrt (double x)
@@ -24,4 +25,6 @@  __ieee754_sqrt (double x)
   asm ("fsqrt.d %0, %1" : "=f" (x) : "f" (x));
   return x;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/riscv/rvf/e_sqrtf.c b/sysdeps/riscv/rvf/e_sqrtf.c
index e7576784020dc4b4f6066ec2a682690c9440a20c..b73ea68be3052c673a9dbc1d57131fa0436cedae 100644
--- a/sysdeps/riscv/rvf/e_sqrtf.c
+++ b/sysdeps/riscv/rvf/e_sqrtf.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 float
 __ieee754_sqrtf (float x)
@@ -24,4 +25,6 @@  __ieee754_sqrtf (float x)
   asm ("fsqrt.s %0, %1" : "=f" (x) : "f" (x));
   return x;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/s390/fpu/e_sqrt.c b/sysdeps/s390/fpu/e_sqrt.c
index 13d096d7a2607009c0581aaeca99f3c96905a5c3..d82eecdca4055e8d4590684337785d63c4733207 100644
--- a/sysdeps/s390/fpu/e_sqrt.c
+++ b/sysdeps/s390/fpu/e_sqrt.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 double
 __ieee754_sqrt (double x)
@@ -26,4 +27,6 @@  __ieee754_sqrt (double x)
   __asm__ ( "sqdbr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/s390/fpu/e_sqrtf.c b/sysdeps/s390/fpu/e_sqrtf.c
index fbb939c2717ff625e830e5cdb1a54a3e5538a2ce..95cb4347e1c41e14279998d3f54d4635f05af229 100644
--- a/sysdeps/s390/fpu/e_sqrtf.c
+++ b/sysdeps/s390/fpu/e_sqrtf.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 float
 __ieee754_sqrtf (float x)
@@ -26,4 +27,6 @@  __ieee754_sqrtf (float x)
   __asm__ ( "sqebr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/s390/fpu/e_sqrtl.c b/sysdeps/s390/fpu/e_sqrtl.c
index 3f453be1fc53772b7c2fa90dfeb52a3568abbf61..5cf9b2a2702bd4cdeb1af61e237f8a35d672227b 100644
--- a/sysdeps/s390/fpu/e_sqrtl.c
+++ b/sysdeps/s390/fpu/e_sqrtl.c
@@ -18,6 +18,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 long double
 __ieee754_sqrtl (long double x)
@@ -27,4 +28,6 @@  __ieee754_sqrtl (long double x)
   __asm__ ( "sqxbr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/sparc/sparc32/e_sqrt.c b/sysdeps/sparc/sparc32/e_sqrt.c
index 00369dcb61a969aa25c8fa7aff5ba09b1184547c..eaeed0926e9a3c622b3307a6a119f5ce664c9f79 100644
--- a/sysdeps/sparc/sparc32/e_sqrt.c
+++ b/sysdeps/sparc/sparc32/e_sqrt.c
@@ -17,6 +17,7 @@ 
 
 #include <errno.h>
 #include <math.h>
+#include <shlib-compat.h>
 
 #ifndef	__GNUC__
   #error This file uses GNU C extensions; you must compile with GCC.
@@ -30,4 +31,6 @@  __ieee754_sqrt (double x)
   asm ("fsqrtd %1, %0" : "=f" (result) : "f" (x));
   return result;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/sparc/sparc64/fpu/e_sqrtl.c b/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
index 7742770148a5d255dcc75beda183d466d0641a57..1917402cd1b0bf9ca6f1649ca6514ae1d1d719e1 100644
--- a/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
+++ b/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
@@ -18,6 +18,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 extern void _Qp_sqrt(long double *, const long double *);
 
@@ -28,4 +29,6 @@  __ieee754_sqrtl (long double x)
   _Qp_sqrt (&ret, &x);
   return ret;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtl, __sqrtl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86/fpu/e_sqrtf128.c b/sysdeps/x86/fpu/e_sqrtf128.c
index d5aa9d03674879ffa4c82a4b69665510efc4b227..a581ddd0dfc66123ceb4a23df197d9b4be70ef8d 100644
--- a/sysdeps/x86/fpu/e_sqrtf128.c
+++ b/sysdeps/x86/fpu/e_sqrtf128.c
@@ -28,6 +28,7 @@ 
 
 #include <soft-fp.h>
 #include <quad.h>
+#include <shlib-compat.h>
 
 __float128
 __ieee754_sqrtf128 (__float128 a)
@@ -44,4 +45,7 @@  __ieee754_sqrtf128 (__float128 a)
   FP_HANDLE_EXCEPTIONS;
   return r;
 }
-strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_26, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf128, __sqrtf128_finite, GLIBC_2_26);
+#endif
+
diff --git a/sysdeps/x86_64/fpu/e_exp2l.S b/sysdeps/x86_64/fpu/e_exp2l.S
index 0e059b7565ad964104b48c8b518c7fa3553bf960..119fa9b0fef5cb9cd653ea4f6ddd14c861400073 100644
--- a/sysdeps/x86_64/fpu/e_exp2l.S
+++ b/sysdeps/x86_64/fpu/e_exp2l.S
@@ -7,6 +7,7 @@ 
 
 #include <machine/asm.h>
 #include <x86_64-math-asm.h>
+#include <shlib-compat.h>
 
 DEFINE_LDBL_MIN
 
@@ -55,4 +56,6 @@  ENTRY(__ieee754_exp2l)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp2l)
-strong_alias (__ieee754_exp2l, __exp2l_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp2l, __exp2l_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/e_fmodl.S b/sysdeps/x86_64/fpu/e_fmodl.S
index 07c50df8d12678eeea168ac7ae12f56d5067fdb1..1df1f924ec876a33b1a6f0f8971b76257939e02a 100644
--- a/sysdeps/x86_64/fpu/e_fmodl.S
+++ b/sysdeps/x86_64/fpu/e_fmodl.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 RCSID("$NetBSD: $")
 
@@ -20,4 +21,6 @@  ENTRY(__ieee754_fmodl)
 	fstp	%st(1)
 	ret
 END (__ieee754_fmodl)
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_fmodl, __fmodl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/e_powl.S b/sysdeps/x86_64/fpu/e_powl.S
index 5a527316be521c0992513adb238b6ffdb248c2c8..7a4f700e1a58123174092eb6ce1a76e7719fd981 100644
--- a/sysdeps/x86_64/fpu/e_powl.S
+++ b/sysdeps/x86_64/fpu/e_powl.S
@@ -19,6 +19,7 @@ 
 
 #include <machine/asm.h>
 #include <x86_64-math-asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -430,4 +431,6 @@  ENTRY(__ieee754_powl)
 	ret
 
 END(__ieee754_powl)
-strong_alias (__ieee754_powl, __powl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_powl, __powl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/e_remainderl.S b/sysdeps/x86_64/fpu/e_remainderl.S
index 4ee0910912fc65f5fab52a16c3f7d3c9aafdbd25..b4f148d48ea578e16d9ffc366418366dc4ea2a8d 100644
--- a/sysdeps/x86_64/fpu/e_remainderl.S
+++ b/sysdeps/x86_64/fpu/e_remainderl.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 ENTRY(__ieee754_remainderl)
 	fldt	24(%rsp)
@@ -18,4 +19,6 @@  ENTRY(__ieee754_remainderl)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainderl)
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_remainderl, __remainderl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/e_scalbl.S b/sysdeps/x86_64/fpu/e_scalbl.S
index 2982dc3b9e7cb0d9b2bffaf6744eed42b8213738..4ca50c528abbc23a2a1c1c93faa694a7bfb1bb14 100644
--- a/sysdeps/x86_64/fpu/e_scalbl.S
+++ b/sysdeps/x86_64/fpu/e_scalbl.S
@@ -9,6 +9,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <shlib-compat.h>
 
 	.section .rodata
 
@@ -86,4 +87,6 @@  ENTRY(__ieee754_scalbl)
 	fdiv	%st
 	ret
 END(__ieee754_scalbl)
-strong_alias (__ieee754_scalbl, __scalbl_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_scalbl, __scalbl_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/e_sqrt.c b/sysdeps/x86_64/fpu/e_sqrt.c
index fa0d39d34b9e79fab93952a977c205e320fd34a0..b6d8939c03429d74c17f948205b22b5471d478c1 100644
--- a/sysdeps/x86_64/fpu/e_sqrt.c
+++ b/sysdeps/x86_64/fpu/e_sqrt.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 #undef __ieee754_sqrt
 double
@@ -28,4 +29,6 @@  __ieee754_sqrt (double x)
 
   return res;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrt, __sqrt_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/e_sqrtf.c b/sysdeps/x86_64/fpu/e_sqrtf.c
index 57d0dc72704179e5112575d82942778eb4bc9242..94f98a25df6aaffc15ed30d4caa6a0f94777f6c5 100644
--- a/sysdeps/x86_64/fpu/e_sqrtf.c
+++ b/sysdeps/x86_64/fpu/e_sqrtf.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <shlib-compat.h>
 
 #undef __ieee754_sqrtf
 float
@@ -28,4 +29,6 @@  __ieee754_sqrtf (float x)
 
   return res;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_sqrtf, __sqrtf_finite, GLIBC_2_15);
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/e_asin.c b/sysdeps/x86_64/fpu/multiarch/e_asin.c
index bc533f80b288f7a06145489999fa55eb018ac70b..838d5f38003b105d476d9901f5b55143c39f1f9b 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_asin.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_asin.c
@@ -16,6 +16,8 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <shlib-compat.h>
+
 extern double __redirect_ieee754_asin (double);
 extern double __redirect_ieee754_acos (double);
 
@@ -24,7 +26,9 @@  extern double __redirect_ieee754_acos (double);
 
 libc_ifunc_redirected (__redirect_ieee754_asin, __ieee754_asin,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_asin, __asin_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_asin, __asin_finite, GLIBC_2_15);
+#endif
 
 #undef SYMBOL_NAME
 #define SYMBOL_NAME ieee754_acos
@@ -32,8 +36,9 @@  strong_alias (__ieee754_asin, __asin_finite)
 
 libc_ifunc_redirected (__redirect_ieee754_acos, __ieee754_acos,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_acos, __acos_finite)
-
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_acos, __acos_finite, GLIBC_2_15);
+#endif
 
 #define __ieee754_acos __ieee754_acos_sse2
 #define __ieee754_asin __ieee754_asin_sse2
diff --git a/sysdeps/x86_64/fpu/multiarch/e_atan2.c b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
index d75aecbfbc4ef6c22f16d93d43e2f6a5e71ed889..5d5dca0592448631469e20c8f4a5ab7cf0fde2e4 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_atan2.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
@@ -16,6 +16,8 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <shlib-compat.h>
+
 extern double __redirect_ieee754_atan2 (double, double);
 
 #define SYMBOL_NAME ieee754_atan2
@@ -23,7 +25,9 @@  extern double __redirect_ieee754_atan2 (double, double);
 
 libc_ifunc_redirected (__redirect_ieee754_atan2,
 		       __ieee754_atan2, IFUNC_SELECTOR ());
-strong_alias (__ieee754_atan2, __atan2_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_atan2, __atan2_finite, GLIBC_2_15);
+#endif
 
 #define __ieee754_atan2 __ieee754_atan2_sse2
 #include <sysdeps/ieee754/dbl-64/e_atan2.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c
index e9e05069ca9c25ef4eb92fcc0b33923e0747e662..4791c695864128ca4fa8c987a05793c9ad897a21 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_exp.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 extern double __redirect_ieee754_exp (double);
 
@@ -25,7 +26,9 @@  extern double __redirect_ieee754_exp (double);
 
 libc_ifunc_redirected (__redirect_ieee754_exp, __ieee754_exp,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_exp, __exp_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_exp, __exp_finite, GLIBC_2_15);
+#endif
 
 #define __exp __ieee754_exp_sse2
 #include <sysdeps/ieee754/dbl-64/e_exp.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
index 777afdc33b44d238a542d8bf58cf20428096fae0..cc8ec2ecedac37e789e47e5dea0359400c9ba0b3 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <shlib-compat.h>
 
 extern float __redirect_exp2f (float);
 
@@ -26,15 +27,16 @@  extern float __redirect_exp2f (float);
 libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
 
 #ifdef SHARED
-# include <shlib-compat.h>
-versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
 libm_alias_float_other (__exp2, exp2)
 #else
 libm_alias_float (__exp2, exp2)
 #endif
 
 strong_alias (__exp2f, __ieee754_exp2f)
-strong_alias (__exp2f, __exp2f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __exp2f, __exp2f_finite, GLIBC_2_15);
+#endif
 
 #define __exp2f __exp2f_sse2
 #include <sysdeps/ieee754/flt-32/e_exp2f.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_expf.c b/sysdeps/x86_64/fpu/multiarch/e_expf.c
index ba38154fd7be7f63949a48803ba0b4a18cf5a1f9..3d2715bc27fbde055395ca4a3570346a0d9ac420 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_expf.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_expf.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <shlib-compat.h>
 
 extern float __redirect_expf (float);
 
@@ -29,15 +30,16 @@  libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
 __hidden_ver1 (__expf, __GI___expf, __redirect_expf)
   __attribute__ ((visibility ("hidden")));
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __expf, expf, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
 libm_alias_float_other (__exp, exp)
 #else
 libm_alias_float (__exp, exp)
 #endif
 
 strong_alias (__expf, __ieee754_expf)
-strong_alias (__expf, __expf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __expf, __expf_finite, GLIBC_2_15);
+#endif
 
 #define __expf __expf_sse2
 #include <sysdeps/ieee754/flt-32/e_expf.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log.c b/sysdeps/x86_64/fpu/multiarch/e_log.c
index 80aa764e272ead9ac81f699f04c4204f5abf7739..435fb03edfdb55f7a6a993f8dd363a6deef6c8ef 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 extern double __redirect_ieee754_log (double);
 
@@ -25,7 +26,9 @@  extern double __redirect_ieee754_log (double);
 
 libc_ifunc_redirected (__redirect_ieee754_log, __ieee754_log,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_log, __log_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_log, __log_finite, GLIBC_2_15);
+#endif
 
 #define __log __ieee754_log_sse2
 #include <sysdeps/ieee754/dbl-64/e_log.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log2f.c b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
index fcf09271368d4f0184415fde9d3ee612d343d60c..b878b6c54ffa24ea17303df4957ae490af507443 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log2f.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <shlib-compat.h>
 
 extern float __redirect_log2f (float);
 
@@ -29,15 +30,16 @@  libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
 __hidden_ver1 (__log2f, __GI___log2f, __redirect_log2f)
   __attribute__ ((visibility ("hidden")));
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
 libm_alias_float_other (__log2, log2)
 #else
 libm_alias_float (__log2, log2)
 #endif
 
 strong_alias (__log2f, __ieee754_log2f)
-strong_alias (__log2f, __log2f_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __log2f, __log2f_finite, GLIBC_2_15);
+#endif
 
 #define __log2f __log2f_sse2
 #include <sysdeps/ieee754/flt-32/e_log2f.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_logf.c b/sysdeps/x86_64/fpu/multiarch/e_logf.c
index 374d9b33fb3ac5119ce2188b10497d6cae007ea9..03b64c6d72355d75a378fdb21425b5072e0f94fe 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_logf.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_logf.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+# include <shlib-compat.h>
 
 extern float __redirect_logf (float);
 
@@ -29,15 +30,16 @@  libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
 __hidden_ver1 (__logf, __GI___logf, __redirect_logf)
   __attribute__ ((visibility ("hidden")));
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __logf, logf, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
 libm_alias_float_other (__log, log)
 #else
 libm_alias_float (__log, log)
 #endif
 
 strong_alias (__logf, __ieee754_logf)
-strong_alias (__logf, __logf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __logf, __logf_finite, GLIBC_2_15);
+#endif
 
 #define __logf __logf_sse2
 #include <sysdeps/ieee754/flt-32/e_logf.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_pow.c b/sysdeps/x86_64/fpu/multiarch/e_pow.c
index 897607a79059918ed501dbe5a14bf34b1b4eefd9..7a9758572edb575d618b988a738fb940cde7baa8 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_pow.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_pow.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <shlib-compat.h>
 
 extern double __redirect_ieee754_pow (double, double);
 
@@ -25,7 +26,9 @@  extern double __redirect_ieee754_pow (double, double);
 
 libc_ifunc_redirected (__redirect_ieee754_pow,
 		       __ieee754_pow, IFUNC_SELECTOR ());
-strong_alias (__ieee754_pow, __pow_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __ieee754_pow, __pow_finite, GLIBC_2_15);
+#endif
 
 #define __pow __ieee754_pow_sse2
 #include <sysdeps/ieee754/dbl-64/e_pow.c>
diff --git a/sysdeps/x86_64/fpu/multiarch/e_powf.c b/sysdeps/x86_64/fpu/multiarch/e_powf.c
index 3cde6db382bc12698f2dc2b3f9f97edd37ef4688..20f015e8228bbcc3326950dedce834b26da672a7 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_powf.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_powf.c
@@ -17,6 +17,7 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <shlib-compat.h>
 
 #define powf __redirect_powf
 #define __DECL_SIMD___redirect_powf
@@ -32,15 +33,16 @@  libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
 __hidden_ver1 (__powf, __GI___powf, __redirect_powf)
   __attribute__ ((visibility ("hidden")));
 
-# include <shlib-compat.h>
-versioned_symbol (libm, __powf, powf, GLIBC_2_27);
+versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
 libm_alias_float_other (__pow, pow)
 #else
 libm_alias_float (__pow, pow)
 #endif
 
 strong_alias (__powf, __ieee754_powf)
-strong_alias (__powf, __powf_finite)
+#if SHLIB_COMPAT (libm, GLIBC_2_15, GLIBC_2_30)
+compat_symbol (libm, __powf, __powf_finite, GLIBC_2_15);
+#endif
 
 #define __powf __powf_sse2
 #include <sysdeps/ieee754/flt-32/e_powf.c>