diff mbox series

[v2] Add libm_alias_finite for _finite symbols

Message ID 20191021174548.25467-1-adhemerval.zanella@linaro.org
State New
Headers show
Series [v2] Add libm_alias_finite for _finite symbols | expand

Commit Message

Adhemerval Zanella Netto Oct. 21, 2019, 5:45 p.m. UTC
From: Wilco Dijkstra <Wilco.Dijkstra@arm.com>


Sending on behalf of Wilco.  Changes from previous version:

 - Fixed various missing compat symbols for i386, x86_64 and m68k.

 - Created libm-alias-finite.h which defines the libm_alias_finite
   macro that wraps the logic required to define the compat finite
   symbol.

 - Redefine declare_mgen_finite_alias_x as libm_alias_finite.

 - Adjusted for some non-existent files (powerpc exp multiarch).

--

This patch adds a new macro, libm_alias_finite, to define all _finite
symbol.  It sets all _finite symbol as compat symbol based on its first
version (obtained from the definition at built generated first-versions.h).

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.
It is done by adding a list, similar to internal symbol redifinition,
on sysdeps/ieee754/float128/float128_private.h.

Alpha also needs some tricky changes to ensure we still emit 2 compat
symbols for sqrt(f).

Passes buildmanyglibc.

Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
 math/e_exp10.c                                |  3 +-
 math/e_exp10f.c                               |  4 +-
 math/e_exp10l.c                               |  3 +-
 math/e_scalb.c                                |  4 +-
 math/e_scalbf.c                               |  4 +-
 math/e_scalbl.c                               |  4 +-
 sysdeps/aarch64/e_sqrtl.c                     |  3 +-
 sysdeps/aarch64/fpu/e_sqrt.c                  |  3 +-
 sysdeps/aarch64/fpu/e_sqrtf.c                 |  3 +-
 sysdeps/alpha/alphaev6/fpu/e_sqrt.S           | 10 ++---
 sysdeps/alpha/alphaev6/fpu/e_sqrtf.S          | 10 ++---
 sysdeps/alpha/e_sqrtl.c                       |  4 +-
 sysdeps/alpha/fpu/e_sqrt.c                    | 23 ++++++-----
 sysdeps/alpha/fpu/e_sqrtf.c                   | 13 +++----
 sysdeps/arm/e_sqrt.c                          |  3 +-
 sysdeps/arm/e_sqrtf.c                         |  3 +-
 sysdeps/generic/math-type-macros.h            |  5 ++-
 sysdeps/i386/fpu/e_acos.S                     |  3 +-
 sysdeps/i386/fpu/e_acosf.S                    |  3 +-
 sysdeps/i386/fpu/e_acosh.S                    |  3 +-
 sysdeps/i386/fpu/e_acoshf.S                   |  3 +-
 sysdeps/i386/fpu/e_acoshl.S                   |  3 +-
 sysdeps/i386/fpu/e_acosl.c                    |  3 +-
 sysdeps/i386/fpu/e_asin.S                     |  3 +-
 sysdeps/i386/fpu/e_asinf.S                    |  3 +-
 sysdeps/i386/fpu/e_atan2.S                    |  3 +-
 sysdeps/i386/fpu/e_atan2f.S                   |  3 +-
 sysdeps/i386/fpu/e_atan2l.c                   |  3 +-
 sysdeps/i386/fpu/e_atanh.S                    |  3 +-
 sysdeps/i386/fpu/e_atanhf.S                   |  3 +-
 sysdeps/i386/fpu/e_atanhl.S                   |  3 +-
 sysdeps/i386/fpu/e_exp.S                      |  2 +
 sysdeps/i386/fpu/e_exp10.S                    |  3 +-
 sysdeps/i386/fpu/e_exp10f.S                   |  3 +-
 sysdeps/i386/fpu/e_exp2.S                     |  3 +-
 sysdeps/i386/fpu/e_exp2l.S                    |  3 +-
 sysdeps/i386/fpu/e_expl.S                     |  9 +++--
 sysdeps/i386/fpu/e_fmod.S                     |  3 +-
 sysdeps/i386/fpu/e_fmodf.S                    |  3 +-
 sysdeps/i386/fpu/e_fmodl.c                    |  3 +-
 sysdeps/i386/fpu/e_hypot.S                    |  3 +-
 sysdeps/i386/fpu/e_hypotf.S                   |  3 +-
 sysdeps/i386/fpu/e_log.S                      |  2 +
 sysdeps/i386/fpu/e_log10.S                    |  3 +-
 sysdeps/i386/fpu/e_log10f.S                   |  3 +-
 sysdeps/i386/fpu/e_log10l.S                   |  3 +-
 sysdeps/i386/fpu/e_log2.S                     |  3 +-
 sysdeps/i386/fpu/e_log2l.S                    |  3 +-
 sysdeps/i386/fpu/e_logl.S                     |  3 +-
 sysdeps/i386/fpu/e_pow.S                      |  3 +-
 sysdeps/i386/fpu/e_powl.S                     |  3 +-
 sysdeps/i386/fpu/e_remainder.S                |  3 +-
 sysdeps/i386/fpu/e_remainderf.S               |  3 +-
 sysdeps/i386/fpu/e_remainderl.S               |  3 +-
 sysdeps/i386/fpu/e_scalb.S                    |  3 +-
 sysdeps/i386/fpu/e_scalbf.S                   |  3 +-
 sysdeps/i386/fpu/e_scalbl.S                   |  3 +-
 sysdeps/i386/fpu/e_sqrt.S                     |  3 +-
 sysdeps/i386/fpu/e_sqrtf.S                    |  3 +-
 sysdeps/i386/fpu/e_sqrtl.c                    |  3 +-
 sysdeps/i386/i686/fpu/e_log.S                 |  3 +-
 sysdeps/i386/i686/fpu/e_logl.S                |  2 +
 sysdeps/i386/i686/fpu/multiarch/e_exp2f.c     |  4 +-
 sysdeps/i386/i686/fpu/multiarch/e_expf.c      |  4 +-
 sysdeps/i386/i686/fpu/multiarch/e_log2f.c     |  4 +-
 sysdeps/i386/i686/fpu/multiarch/e_logf.c      |  4 +-
 sysdeps/i386/i686/fpu/multiarch/e_powf.c      |  4 +-
 sysdeps/ieee754/dbl-64/e_acosh.c              |  3 +-
 sysdeps/ieee754/dbl-64/e_asin.c               |  5 ++-
 sysdeps/ieee754/dbl-64/e_atan2.c              |  3 +-
 sysdeps/ieee754/dbl-64/e_atanh.c              |  3 +-
 sysdeps/ieee754/dbl-64/e_cosh.c               |  3 +-
 sysdeps/ieee754/dbl-64/e_exp.c                |  4 +-
 sysdeps/ieee754/dbl-64/e_exp10.c              |  3 +-
 sysdeps/ieee754/dbl-64/e_exp2.c               |  4 +-
 sysdeps/ieee754/dbl-64/e_fmod.c               |  3 +-
 sysdeps/ieee754/dbl-64/e_gamma_r.c            |  3 +-
 sysdeps/ieee754/dbl-64/e_hypot.c              |  5 ++-
 sysdeps/ieee754/dbl-64/e_j0.c                 |  5 ++-
 sysdeps/ieee754/dbl-64/e_j1.c                 |  5 ++-
 sysdeps/ieee754/dbl-64/e_jn.c                 |  5 ++-
 sysdeps/ieee754/dbl-64/e_lgamma_r.c           |  3 +-
 sysdeps/ieee754/dbl-64/e_log.c                |  4 +-
 sysdeps/ieee754/dbl-64/e_log10.c              |  4 +-
 sysdeps/ieee754/dbl-64/e_log2.c               |  4 +-
 sysdeps/ieee754/dbl-64/e_pow.c                |  4 +-
 sysdeps/ieee754/dbl-64/e_remainder.c          |  3 +-
 sysdeps/ieee754/dbl-64/e_sinh.c               |  3 +-
 sysdeps/ieee754/dbl-64/e_sqrt.c               |  5 ++-
 sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c  |  3 +-
 sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c   |  3 +-
 sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c   |  3 +-
 sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c  |  4 +-
 sysdeps/ieee754/float128/float128_private.h   | 26 +++++++++++++
 sysdeps/ieee754/flt-32/e_acosf.c              |  3 +-
 sysdeps/ieee754/flt-32/e_acoshf.c             |  3 +-
 sysdeps/ieee754/flt-32/e_asinf.c              |  3 +-
 sysdeps/ieee754/flt-32/e_atan2f.c             |  3 +-
 sysdeps/ieee754/flt-32/e_atanhf.c             |  3 +-
 sysdeps/ieee754/flt-32/e_coshf.c              |  3 +-
 sysdeps/ieee754/flt-32/e_exp2f.c              |  4 +-
 sysdeps/ieee754/flt-32/e_expf.c               |  4 +-
 sysdeps/ieee754/flt-32/e_fmodf.c              |  3 +-
 sysdeps/ieee754/flt-32/e_gammaf_r.c           |  3 +-
 sysdeps/ieee754/flt-32/e_hypotf.c             |  5 ++-
 sysdeps/ieee754/flt-32/e_j0f.c                |  5 ++-
 sysdeps/ieee754/flt-32/e_j1f.c                |  5 ++-
 sysdeps/ieee754/flt-32/e_jnf.c                |  5 ++-
 sysdeps/ieee754/flt-32/e_lgammaf_r.c          |  3 +-
 sysdeps/ieee754/flt-32/e_log10f.c             |  3 +-
 sysdeps/ieee754/flt-32/e_log2f.c              |  4 +-
 sysdeps/ieee754/flt-32/e_logf.c               |  4 +-
 sysdeps/ieee754/flt-32/e_powf.c               |  4 +-
 sysdeps/ieee754/flt-32/e_remainderf.c         |  3 +-
 sysdeps/ieee754/flt-32/e_sinhf.c              |  3 +-
 sysdeps/ieee754/flt-32/e_sqrtf.c              |  5 ++-
 sysdeps/ieee754/ldbl-128/e_acoshl.c           |  3 +-
 sysdeps/ieee754/ldbl-128/e_acosl.c            |  3 +-
 sysdeps/ieee754/ldbl-128/e_asinl.c            |  3 +-
 sysdeps/ieee754/ldbl-128/e_atan2l.c           |  3 +-
 sysdeps/ieee754/ldbl-128/e_atanhl.c           |  3 +-
 sysdeps/ieee754/ldbl-128/e_coshl.c            |  3 +-
 sysdeps/ieee754/ldbl-128/e_exp10l.c           |  3 +-
 sysdeps/ieee754/ldbl-128/e_expl.c             |  3 +-
 sysdeps/ieee754/ldbl-128/e_fmodl.c            |  3 +-
 sysdeps/ieee754/ldbl-128/e_gammal_r.c         |  3 +-
 sysdeps/ieee754/ldbl-128/e_hypotl.c           |  3 +-
 sysdeps/ieee754/ldbl-128/e_j0l.c              |  5 ++-
 sysdeps/ieee754/ldbl-128/e_j1l.c              |  5 ++-
 sysdeps/ieee754/ldbl-128/e_jnl.c              |  5 ++-
 sysdeps/ieee754/ldbl-128/e_lgammal_r.c        |  3 +-
 sysdeps/ieee754/ldbl-128/e_log10l.c           |  3 +-
 sysdeps/ieee754/ldbl-128/e_log2l.c            |  3 +-
 sysdeps/ieee754/ldbl-128/e_logl.c             |  3 +-
 sysdeps/ieee754/ldbl-128/e_powl.c             |  3 +-
 sysdeps/ieee754/ldbl-128/e_remainderl.c       |  3 +-
 sysdeps/ieee754/ldbl-128/e_sinhl.c            |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_acoshl.c        |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_acosl.c         |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_asinl.c         |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_atan2l.c        |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_atanhl.c        |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_coshl.c         |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_exp10l.c        |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_expl.c          |  4 +-
 sysdeps/ieee754/ldbl-128ibm/e_fmodl.c         |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c      |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_hypotl.c        |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_j0l.c           |  5 ++-
 sysdeps/ieee754/ldbl-128ibm/e_j1l.c           |  5 ++-
 sysdeps/ieee754/ldbl-128ibm/e_jnl.c           |  5 ++-
 sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c     |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_log10l.c        |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_log2l.c         |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_logl.c          |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_powl.c          |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_remainderl.c    |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_sinhl.c         |  3 +-
 sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c         |  3 +-
 sysdeps/ieee754/ldbl-96/e_acoshl.c            |  3 +-
 sysdeps/ieee754/ldbl-96/e_asinl.c             |  3 +-
 sysdeps/ieee754/ldbl-96/e_atanhl.c            |  3 +-
 sysdeps/ieee754/ldbl-96/e_coshl.c             |  3 +-
 sysdeps/ieee754/ldbl-96/e_gammal_r.c          |  3 +-
 sysdeps/ieee754/ldbl-96/e_hypotl.c            |  3 +-
 sysdeps/ieee754/ldbl-96/e_j0l.c               |  5 ++-
 sysdeps/ieee754/ldbl-96/e_j1l.c               |  5 ++-
 sysdeps/ieee754/ldbl-96/e_jnl.c               |  5 ++-
 sysdeps/ieee754/ldbl-96/e_lgammal_r.c         |  3 +-
 sysdeps/ieee754/ldbl-96/e_sinhl.c             |  3 +-
 sysdeps/ieee754/libm-alias-finite.h           | 39 +++++++++++++++++++
 sysdeps/m68k/coldfire/fpu/e_sqrt.c            |  4 +-
 sysdeps/m68k/coldfire/fpu/e_sqrtf.c           |  4 +-
 sysdeps/m68k/m680x0/fpu/e_acos.c              |  5 ++-
 sysdeps/m68k/m680x0/fpu/e_acosf.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_acosl.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_asin.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_asinf.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_asinl.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_atan2.c             |  3 +-
 sysdeps/m68k/m680x0/fpu/e_atanh.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_atanhf.c            |  2 +-
 sysdeps/m68k/m680x0/fpu/e_atanhl.c            |  2 +-
 sysdeps/m68k/m680x0/fpu/e_cosh.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_coshf.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_coshl.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp.c               |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp10.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp10f.c            |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp10l.c            |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp2.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp2f.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_exp2l.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_expf.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_expl.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_fmod.c              |  5 ++-
 sysdeps/m68k/m680x0/fpu/e_fmodf.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_fmodl.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log.c               |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log10.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log10f.c            |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log10l.c            |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log2.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log2f.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_log2l.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_logf.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_logl.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_pow.c               |  3 +-
 sysdeps/m68k/m680x0/fpu/e_remainder.c         |  2 +-
 sysdeps/m68k/m680x0/fpu/e_remainderf.c        |  2 +-
 sysdeps/m68k/m680x0/fpu/e_remainderl.c        |  2 +-
 sysdeps/m68k/m680x0/fpu/e_scalb.c             |  3 +-
 sysdeps/m68k/m680x0/fpu/e_sinh.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_sinhf.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_sinhl.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_sqrt.c              |  2 +-
 sysdeps/m68k/m680x0/fpu/e_sqrtf.c             |  2 +-
 sysdeps/m68k/m680x0/fpu/e_sqrtl.c             |  2 +-
 sysdeps/mips/fpu/e_sqrt.c                     |  4 +-
 sysdeps/mips/fpu/e_sqrtf.c                    |  4 +-
 sysdeps/mips/mips64/e_sqrtl.c                 |  3 +-
 sysdeps/powerpc/fpu/e_hypot.c                 |  5 ++-
 sysdeps/powerpc/fpu/e_hypotf.c                |  5 ++-
 sysdeps/powerpc/fpu/e_sqrt.c                  |  3 +-
 sysdeps/powerpc/fpu/e_sqrtf.c                 |  3 +-
 .../power4/fpu/multiarch/e_hypot-power7.c     |  3 --
 .../power4/fpu/multiarch/e_hypot-ppc32.c      |  3 --
 .../powerpc32/power4/fpu/multiarch/e_hypot.c  |  4 +-
 .../power4/fpu/multiarch/e_hypotf-power7.c    |  3 --
 .../power4/fpu/multiarch/e_hypotf-ppc32.c     |  3 --
 .../powerpc32/power4/fpu/multiarch/e_hypotf.c |  4 +-
 sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c |  3 +-
 .../powerpc64/le/power9/fpu/e_sqrtf128.c      |  4 +-
 sysdeps/riscv/e_sqrtl.c                       |  3 +-
 sysdeps/riscv/rvd/e_sqrt.c                    |  3 +-
 sysdeps/riscv/rvf/e_sqrtf.c                   |  3 +-
 sysdeps/s390/fpu/e_sqrt.c                     |  3 +-
 sysdeps/s390/fpu/e_sqrtf.c                    |  3 +-
 sysdeps/s390/fpu/e_sqrtl.c                    |  3 +-
 sysdeps/sparc/sparc32/e_sqrt.c                |  3 +-
 sysdeps/sparc/sparc64/fpu/e_sqrtl.c           |  3 +-
 sysdeps/x86/fpu/e_sqrtf128.c                  |  3 +-
 sysdeps/x86_64/fpu/e_exp2l.S                  |  3 +-
 sysdeps/x86_64/fpu/e_expl.S                   |  6 ++-
 sysdeps/x86_64/fpu/e_fmodl.S                  |  3 +-
 sysdeps/x86_64/fpu/e_log10l.S                 |  2 +
 sysdeps/x86_64/fpu/e_log2l.S                  |  2 +
 sysdeps/x86_64/fpu/e_logl.S                   |  3 +-
 sysdeps/x86_64/fpu/e_powl.S                   |  3 +-
 sysdeps/x86_64/fpu/e_remainderl.S             |  3 +-
 sysdeps/x86_64/fpu/e_scalbl.S                 |  3 +-
 sysdeps/x86_64/fpu/e_sqrt.c                   |  3 +-
 sysdeps/x86_64/fpu/e_sqrtf.c                  |  3 +-
 sysdeps/x86_64/fpu/multiarch/e_asin.c         |  7 ++--
 sysdeps/x86_64/fpu/multiarch/e_atan2.c        |  4 +-
 sysdeps/x86_64/fpu/multiarch/e_exp.c          |  3 +-
 sysdeps/x86_64/fpu/multiarch/e_exp2f.c        |  6 +--
 sysdeps/x86_64/fpu/multiarch/e_expf.c         |  6 +--
 sysdeps/x86_64/fpu/multiarch/e_log.c          |  3 +-
 sysdeps/x86_64/fpu/multiarch/e_log2f.c        |  6 +--
 sysdeps/x86_64/fpu/multiarch/e_logf.c         |  6 +--
 sysdeps/x86_64/fpu/multiarch/e_pow.c          |  3 +-
 sysdeps/x86_64/fpu/multiarch/e_powf.c         |  6 +--
 263 files changed, 605 insertions(+), 351 deletions(-)
 create mode 100644 sysdeps/ieee754/libm-alias-finite.h

-- 
2.17.1

Comments

Joseph Myers Oct. 21, 2019, 10:47 p.m. UTC | #1
The SHLIB_COMPAT call now needs to use GLIBC_2_31.

This is not otherwise a review of the patch.

-- 
Joseph S. Myers
joseph@codesourcery.com
Adhemerval Zanella Netto Oct. 22, 2019, 12:44 p.m. UTC | #2
On 21/10/2019 19:47, Joseph Myers wrote:
> The SHLIB_COMPAT call now needs to use GLIBC_2_31.

> 

> This is not otherwise a review of the patch.

> 


Ack, fixed locally.
diff mbox series

Patch

diff --git a/math/e_exp10.c b/math/e_exp10.c
index 665c5d11fc..fa05ea3352 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 <libm-alias-finite.h>
 
 double
 __ieee754_exp10 (double arg)
@@ -30,4 +31,4 @@  __ieee754_exp10 (double arg)
        replaced sometime (soon?).  */
     return __ieee754_exp (M_LN10 * arg);
 }
-strong_alias (__ieee754_exp10, __exp10_finite)
+libm_alias_finite (__ieee754_exp10, __exp10)
diff --git a/math/e_exp10f.c b/math/e_exp10f.c
index 92a28824a6..0bc1300eb4 100644
--- a/math/e_exp10f.c
+++ b/math/e_exp10f.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <libm-alias-finite.h>
 
 float
 __ieee754_exp10f (float arg)
@@ -29,4 +29,4 @@  __ieee754_exp10f (float arg)
      this.  */
   return __ieee754_exp (M_LN10 * arg);
 }
-strong_alias (__ieee754_exp10f, __exp10f_finite)
+libm_alias_finite (__ieee754_exp10f, __exp10f)
diff --git a/math/e_exp10l.c b/math/e_exp10l.c
index cd0ec36622..a0f202d6e9 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 <libm-alias-finite.h>
 
 long double
 __ieee754_exp10l (long double arg)
@@ -30,4 +31,4 @@  __ieee754_exp10l (long double arg)
        replaced sometime (soon?).  */
     return __ieee754_expl (M_LN10l * arg);
 }
-strong_alias (__ieee754_exp10l, __exp10l_finite)
+libm_alias_finite (__ieee754_exp10, __exp10)
diff --git a/math/e_scalb.c b/math/e_scalb.c
index 66a8bf2f5a..5a4d2e28cd 100644
--- a/math/e_scalb.c
+++ b/math/e_scalb.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <libm-alias-finite.h>
 
 static double
 __attribute__ ((noinline))
@@ -51,4 +51,4 @@  __ieee754_scalb (double x, double fn)
 
   return __scalbn (x, (int) fn);
 }
-strong_alias (__ieee754_scalb, __scalb_finite)
+libm_alias_finite (__ieee754_scalb, __scalb)
diff --git a/math/e_scalbf.c b/math/e_scalbf.c
index 4c3194f18a..c68a96d956 100644
--- a/math/e_scalbf.c
+++ b/math/e_scalbf.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <libm-alias-finite.h>
 
 static float
 __attribute__ ((noinline))
@@ -51,4 +51,4 @@  __ieee754_scalbf (float x, float fn)
 
   return __scalbnf (x, (int) fn);
 }
-strong_alias (__ieee754_scalbf, __scalbf_finite)
+libm_alias_finite (__ieee754_scalbf, __scalbf)
diff --git a/math/e_scalbl.c b/math/e_scalbl.c
index 1f7119ca9b..4ac219b0b7 100644
--- a/math/e_scalbl.c
+++ b/math/e_scalbl.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <math_private.h>
-
+#include <libm-alias-finite.h>
 
 static long double
 __attribute__ ((noinline))
@@ -51,4 +51,4 @@  __ieee754_scalbl (long double x, long double fn)
 
   return __scalbnl (x, (int) fn);
 }
-strong_alias (__ieee754_scalbl, __scalbl_finite)
+libm_alias_finite (__ieee754_scalbl, __scalbl)
diff --git a/sysdeps/aarch64/e_sqrtl.c b/sysdeps/aarch64/e_sqrtl.c
index 00dfd3d973..b5a14da66f 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 <libm-alias-finite.h>
 
 long double
 __ieee754_sqrtl (const long double a)
@@ -36,4 +37,4 @@  __ieee754_sqrtl (const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/aarch64/fpu/e_sqrt.c b/sysdeps/aarch64/fpu/e_sqrt.c
index 6fc031f151..d830df7d7c 100644
--- a/sysdeps/aarch64/fpu/e_sqrt.c
+++ b/sysdeps/aarch64/fpu/e_sqrt.c
@@ -17,10 +17,11 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 double
 __ieee754_sqrt (double d)
 {
   return __builtin_sqrt (d);
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/aarch64/fpu/e_sqrtf.c b/sysdeps/aarch64/fpu/e_sqrtf.c
index 14484cab96..6f0311291c 100644
--- a/sysdeps/aarch64/fpu/e_sqrtf.c
+++ b/sysdeps/aarch64/fpu/e_sqrtf.c
@@ -17,10 +17,11 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 float
 __ieee754_sqrtf (float s)
 {
   return __builtin_sqrtf (s);
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
diff --git a/sysdeps/alpha/alphaev6/fpu/e_sqrt.S b/sysdeps/alpha/alphaev6/fpu/e_sqrt.S
index 8aa342b73c..595d62d165 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 609e509eb8..fc2b90260b 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 5b1b29c9a6..42aa6c2ec8 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 fc5b1abbe2..6f33f789e1 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 ad523f5cf2..102d9efa04 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 eeb9095455..917d83ad52 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 <libm-alias-finite.h>
 
 double
 __ieee754_sqrt (double x)
@@ -40,6 +41,6 @@  __ieee754_sqrt (double x)
 # endif
   return ret;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
 
 #endif
diff --git a/sysdeps/arm/e_sqrtf.c b/sysdeps/arm/e_sqrtf.c
index 36ae9fa705..fdcf335f9b 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 <libm-alias-finite.h>
 
 float
 __ieee754_sqrtf (float x)
@@ -40,6 +41,6 @@  __ieee754_sqrtf (float x)
 # endif
   return ret;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
 
 #endif
diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h
index 6cd88c8879..bd58794e54 100644
--- a/sysdeps/generic/math-type-macros.h
+++ b/sysdeps/generic/math-type-macros.h
@@ -75,8 +75,8 @@ 
 #endif
 
 #ifndef declare_mgen_finite_alias_x
-#define declare_mgen_finite_alias_x(from, to)	\
-  strong_alias (from, to ## _finite)
+#define declare_mgen_finite_alias_x(from, to)   \
+  libm_alias_finite (from, to)
 #endif
 
 #ifndef declare_mgen_finite_alias_s
@@ -117,6 +117,7 @@ 
 
 /* Needed to evaluate M_MANT_DIG below.  */
 #include <float.h>
+#include <libm-alias-finite.h>
 
 /* Use a special epsilon value for IBM long double
    to avoid spurious overflows/underflows.  */
diff --git a/sysdeps/i386/fpu/e_acos.S b/sysdeps/i386/fpu/e_acos.S
index 586c7fc406..9d9825da73 100644
--- a/sysdeps/i386/fpu/e_acos.S
+++ b/sysdeps/i386/fpu/e_acos.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 RCSID("$NetBSD: e_acos.S,v 1.4 1995/05/08 23:44:37 jtc Exp $")
 
@@ -22,4 +23,4 @@  ENTRY(__ieee754_acos)
 	fpatan				/* atan (sqrt(1 - x^2) / x) */
 	ret
 END (__ieee754_acos)
-strong_alias (__ieee754_acos, __acos_finite)
+libm_alias_finite (__ieee754_acos, __acos)
diff --git a/sysdeps/i386/fpu/e_acosf.S b/sysdeps/i386/fpu/e_acosf.S
index 54930af8b2..cf2b75daf1 100644
--- a/sysdeps/i386/fpu/e_acosf.S
+++ b/sysdeps/i386/fpu/e_acosf.S
@@ -5,6 +5,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 RCSID("$NetBSD: $")
 
@@ -21,4 +22,4 @@  ENTRY(__ieee754_acosf)
 	fpatan
 	ret
 END (__ieee754_acosf)
-strong_alias (__ieee754_acosf, __acosf_finite)
+libm_alias_finite (__ieee754_acosf, __acosf)
diff --git a/sysdeps/i386/fpu/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
index 58620f1bcd..082f02389e 100644
--- a/sysdeps/i386/fpu/e_acosh.S
+++ b/sysdeps/i386/fpu/e_acosh.S
@@ -18,6 +18,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -98,4 +99,4 @@  ENTRY(__ieee754_acosh)
 	fdiv	%st, %st(0)
 	ret
 END(__ieee754_acosh)
-strong_alias (__ieee754_acosh, __acosh_finite)
+libm_alias_finite (__ieee754_acosh, __acosh)
diff --git a/sysdeps/i386/fpu/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
index ae73ba3ae3..ac8749abf9 100644
--- a/sysdeps/i386/fpu/e_acoshf.S
+++ b/sysdeps/i386/fpu/e_acoshf.S
@@ -18,6 +18,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -98,4 +99,4 @@  ENTRY(__ieee754_acoshf)
 	fdiv	%st, %st(0)
 	ret
 END(__ieee754_acoshf)
-strong_alias (__ieee754_acoshf, __acoshf_finite)
+libm_alias_finite (__ieee754_acoshf, __acoshf)
diff --git a/sysdeps/i386/fpu/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
index c44d6334e0..1f4f9e5853 100644
--- a/sysdeps/i386/fpu/e_acoshl.S
+++ b/sysdeps/i386/fpu/e_acoshl.S
@@ -18,6 +18,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -104,4 +105,4 @@  ENTRY(__ieee754_acoshl)
 	fdiv	%st, %st(0)
 	ret
 END(__ieee754_acoshl)
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+libm_alias_finite (__ieee754_acoshl, __acoshl)
diff --git a/sysdeps/i386/fpu/e_acosl.c b/sysdeps/i386/fpu/e_acosl.c
index ab08931924..b99088ac04 100644
--- a/sysdeps/i386/fpu/e_acosl.c
+++ b/sysdeps/i386/fpu/e_acosl.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 long double
 __ieee754_acosl (long double x)
@@ -26,4 +27,4 @@  __ieee754_acosl (long double x)
 	: "=t" (res) : "0" (x) : "st(1)");
   return res;
 }
-strong_alias (__ieee754_acosl, __acosl_finite)
+libm_alias_finite (__ieee754_acosl, __acosl)
diff --git a/sysdeps/i386/fpu/e_asin.S b/sysdeps/i386/fpu/e_asin.S
index 39c8b47da4..74028c7c9a 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 <libm-alias-finite.h>
 
 RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $")
 
@@ -35,4 +36,4 @@  ENTRY(__ieee754_asin)
 	DBL_CHECK_FORCE_UFLOW
 	ret
 END (__ieee754_asin)
-strong_alias (__ieee754_asin, __asin_finite)
+libm_alias_finite (__ieee754_asin, __asin)
diff --git a/sysdeps/i386/fpu/e_asinf.S b/sysdeps/i386/fpu/e_asinf.S
index 1102bdedfd..7e378433d5 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 <libm-alias-finite.h>
 
 RCSID("$NetBSD: $")
 
@@ -36,4 +37,4 @@  ENTRY(__ieee754_asinf)
 	FLT_CHECK_FORCE_UFLOW
 	ret
 END (__ieee754_asinf)
-strong_alias (__ieee754_asinf, __asinf_finite)
+libm_alias_finite (__ieee754_asinf, __asinf)
diff --git a/sysdeps/i386/fpu/e_atan2.S b/sysdeps/i386/fpu/e_atan2.S
index 25f43bb5a1..d6b550f4a1 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 <libm-alias-finite.h>
 
 RCSID("$NetBSD: e_atan2.S,v 1.4 1995/05/08 23:46:28 jtc Exp $")
 
@@ -27,4 +28,4 @@  ENTRY(__ieee754_atan2)
 	DBL_CHECK_FORCE_UFLOW_NARROW
 	ret
 END (__ieee754_atan2)
-strong_alias (__ieee754_atan2, __atan2_finite)
+libm_alias_finite (__ieee754_atan2, __atan2)
diff --git a/sysdeps/i386/fpu/e_atan2f.S b/sysdeps/i386/fpu/e_atan2f.S
index 2bc909a762..d237fee077 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 <libm-alias-finite.h>
 
 RCSID("$NetBSD: e_atan2f.S,v 1.1 1995/05/08 23:35:10 jtc Exp $")
 
@@ -27,4 +28,4 @@  ENTRY(__ieee754_atan2f)
 	FLT_CHECK_FORCE_UFLOW_NARROW
 	ret
 END (__ieee754_atan2f)
-strong_alias (__ieee754_atan2f, __atan2f_finite)
+libm_alias_finite (__ieee754_atan2f, __atan2f)
diff --git a/sysdeps/i386/fpu/e_atan2l.c b/sysdeps/i386/fpu/e_atan2l.c
index 9f88bfcc08..531f9b2b69 100644
--- a/sysdeps/i386/fpu/e_atan2l.c
+++ b/sysdeps/i386/fpu/e_atan2l.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 long double
 __ieee754_atan2l (long double y, long double x)
@@ -16,4 +17,4 @@  __ieee754_atan2l (long double y, long double x)
 
   return res;
 }
-strong_alias (__ieee754_atan2l, __atan2l_finite)
+libm_alias_finite (__ieee754_atan2l, __atan2l)
diff --git a/sysdeps/i386/fpu/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
index 77208fa826..353d16a2bd 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 <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -109,4 +110,4 @@  ENTRY(__ieee754_atanh)
 6:	fldl	4(%esp)
 	ret
 END(__ieee754_atanh)
-strong_alias (__ieee754_atanh, __atanh_finite)
+libm_alias_finite (__ieee754_atanh, __atanh)
diff --git a/sysdeps/i386/fpu/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
index 169a7b2dea..62880aa02b 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 <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -106,4 +107,4 @@  ENTRY(__ieee754_atanhf)
 5:	flds	4(%esp)
 	ret
 END(__ieee754_atanhf)
-strong_alias (__ieee754_atanhf, __atanhf_finite)
+libm_alias_finite (__ieee754_atanhf, __atanhf)
diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index b85cd11bb7..19d8f1162b 100644
--- a/sysdeps/i386/fpu/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
@@ -18,6 +18,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -124,4 +125,4 @@  ENTRY(__ieee754_atanhl)
 	fadd	%st(0)
 	ret
 END(__ieee754_atanhl)
-strong_alias (__ieee754_atanhl, __atanhl_finite)
+libm_alias_finite (__ieee754_atanhl, __atanhl)
diff --git a/sysdeps/i386/fpu/e_exp.S b/sysdeps/i386/fpu/e_exp.S
index a7e7f13f6f..b9fd62f1ce 100644
--- a/sysdeps/i386/fpu/e_exp.S
+++ b/sysdeps/i386/fpu/e_exp.S
@@ -5,6 +5,7 @@ 
 
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <libm-alias-finite.h>
 
 DEFINE_DBL_MIN
 
@@ -71,3 +72,4 @@  ENTRY(__exp_finite)
 	DBL_NARROW_EVAL_UFLOW_NONNEG
 	ret
 END(__exp_finite)
+libm_alias_finite (__exp_finite, __exp)
diff --git a/sysdeps/i386/fpu/e_exp10.S b/sysdeps/i386/fpu/e_exp10.S
index acb5160a3f..2758a73184 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 <libm-alias-finite.h>
 
 DEFINE_DBL_MIN
 
@@ -50,4 +51,4 @@  ENTRY(__ieee754_exp10)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp10)
-strong_alias (__ieee754_exp10, __exp10_finite)
+libm_alias_finite (__ieee754_exp10, __exp10)
diff --git a/sysdeps/i386/fpu/e_exp10f.S b/sysdeps/i386/fpu/e_exp10f.S
index 1812b34398..196ce8744a 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 <libm-alias-finite.h>
 
 DEFINE_FLT_MIN
 
@@ -50,4 +51,4 @@  ENTRY(__ieee754_exp10f)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp10f)
-strong_alias (__ieee754_exp10f, __exp10f_finite)
+libm_alias_finite (__ieee754_exp10f, __exp10f)
diff --git a/sysdeps/i386/fpu/e_exp2.S b/sysdeps/i386/fpu/e_exp2.S
index fc16a96053..0939f7d071 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 <libm-alias-finite.h>
 
 DEFINE_DBL_MIN
 
@@ -49,4 +50,4 @@  ENTRY(__ieee754_exp2)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp2)
-strong_alias (__ieee754_exp2, __exp2_finite)
+libm_alias_finite (__ieee754_exp2, __exp2)
diff --git a/sysdeps/i386/fpu/e_exp2l.S b/sysdeps/i386/fpu/e_exp2l.S
index c4cb73d589..6cf28a793b 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 <libm-alias-finite.h>
 
 DEFINE_LDBL_MIN
 
@@ -57,4 +58,4 @@  ENTRY(__ieee754_exp2l)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp2l)
-strong_alias (__ieee754_exp2l, __exp2l_finite)
+libm_alias_finite (__ieee754_exp2l, __exp2l)
diff --git a/sysdeps/i386/fpu/e_expl.S b/sysdeps/i386/fpu/e_expl.S
index 18a627e9da..a7c459e2c0 100644
--- a/sysdeps/i386/fpu/e_expl.S
+++ b/sysdeps/i386/fpu/e_expl.S
@@ -25,18 +25,16 @@ 
 #include <libm-alias-ldouble.h>
 #include <machine/asm.h>
 #include <i386-math-asm.h>
+#include <libm-alias-finite.h>
 
 #ifdef USE_AS_EXP10L
 # define IEEE754_EXPL __ieee754_exp10l
-# define EXPL_FINITE __exp10l_finite
 # define FLDLOG fldl2t
 #elif defined USE_AS_EXPM1L
 # define IEEE754_EXPL __expm1l
-# undef EXPL_FINITE
 # define FLDLOG fldl2e
 #else
 # define IEEE754_EXPL __ieee754_expl
-# define EXPL_FINITE __expl_finite
 # define FLDLOG fldl2e
 #endif
 
@@ -219,9 +217,12 @@  ENTRY(IEEE754_EXPL)
 	fadd	%st
 	ret
 END(IEEE754_EXPL)
+
 #ifdef USE_AS_EXPM1L
 libm_hidden_def (__expm1l)
 libm_alias_ldouble (__expm1, expm1)
+#elif defined USE_AS_EXP10L
+libm_alias_finite (__ieee754_exp10l, __exp10l)
 #else
-strong_alias (IEEE754_EXPL, EXPL_FINITE)
+libm_alias_finite (__ieee754_expl, __expl)
 #endif
diff --git a/sysdeps/i386/fpu/e_fmod.S b/sysdeps/i386/fpu/e_fmod.S
index 26b3acc392..93f20e5c4d 100644
--- a/sysdeps/i386/fpu/e_fmod.S
+++ b/sysdeps/i386/fpu/e_fmod.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_fmod)
 	fldl	12(%esp)
@@ -15,4 +16,4 @@  ENTRY(__ieee754_fmod)
 	fstp	%st(1)
 	ret
 END (__ieee754_fmod)
-strong_alias (__ieee754_fmod, __fmod_finite)
+libm_alias_finite (__ieee754_fmod, __fmod)
diff --git a/sysdeps/i386/fpu/e_fmodf.S b/sysdeps/i386/fpu/e_fmodf.S
index ece4d98427..8adc8d5c03 100644
--- a/sysdeps/i386/fpu/e_fmodf.S
+++ b/sysdeps/i386/fpu/e_fmodf.S
@@ -5,6 +5,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_fmodf)
 	flds	8(%esp)
@@ -16,4 +17,4 @@  ENTRY(__ieee754_fmodf)
 	fstp	%st(1)
 	ret
 END(__ieee754_fmodf)
-strong_alias (__ieee754_fmodf, __fmodf_finite)
+libm_alias_finite (__ieee754_fmodf, __fmodf)
diff --git a/sysdeps/i386/fpu/e_fmodl.c b/sysdeps/i386/fpu/e_fmodl.c
index 49700ae8f6..44765398b7 100644
--- a/sysdeps/i386/fpu/e_fmodl.c
+++ b/sysdeps/i386/fpu/e_fmodl.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 long double
 __ieee754_fmodl (long double x, long double y)
@@ -20,4 +21,4 @@  __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)
+libm_alias_finite (__ieee754_fmodl, __fmodl)
diff --git a/sysdeps/i386/fpu/e_hypot.S b/sysdeps/i386/fpu/e_hypot.S
index 4c0f6d21ae..f4d1e79629 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 <libm-alias-finite.h>
 
 DEFINE_DBL_MIN
 
@@ -72,4 +73,4 @@  ENTRY(__ieee754_hypot)
 	jmp	2b
 
 END(__ieee754_hypot)
-strong_alias (__ieee754_hypot, __hypot_finite)
+libm_alias_finite (__ieee754_hypot, __hypot)
diff --git a/sysdeps/i386/fpu/e_hypotf.S b/sysdeps/i386/fpu/e_hypotf.S
index 34a1384c99..ffc2a34888 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 <libm-alias-finite.h>
 
 	.text
 ENTRY(__ieee754_hypotf)
@@ -61,4 +62,4 @@  ENTRY(__ieee754_hypotf)
 	jmp	2b
 
 END(__ieee754_hypotf)
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+libm_alias_finite (__ieee754_hypotf, __hypotf)
diff --git a/sysdeps/i386/fpu/e_log.S b/sysdeps/i386/fpu/e_log.S
index 335df22577..9d2195ecd4 100644
--- a/sysdeps/i386/fpu/e_log.S
+++ b/sysdeps/i386/fpu/e_log.S
@@ -6,6 +6,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -90,3 +91,4 @@  ENTRY(__log_finite)
 	fyl2xp1			// log(x)
 	ret
 END(__log_finite)
+libm_alias_finite (__log_finite, __log)
diff --git a/sysdeps/i386/fpu/e_log10.S b/sysdeps/i386/fpu/e_log10.S
index 17277084ca..ead30d8992 100644
--- a/sysdeps/i386/fpu/e_log10.S
+++ b/sysdeps/i386/fpu/e_log10.S
@@ -6,6 +6,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -65,4 +66,4 @@  ENTRY(__ieee754_log10)
 	fstp	%st(1)
 	ret
 END (__ieee754_log10)
-strong_alias (__ieee754_log10, __log10_finite)
+libm_alias_finite (__ieee754_log10, __log10)
diff --git a/sysdeps/i386/fpu/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
index 72a3b88251..54bc82d57f 100644
--- a/sysdeps/i386/fpu/e_log10f.S
+++ b/sysdeps/i386/fpu/e_log10f.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -66,4 +67,4 @@  ENTRY(__ieee754_log10f)
 	fstp	%st(1)
 	ret
 END (__ieee754_log10f)
-strong_alias (__ieee754_log10f, __log10f_finite)
+libm_alias_finite (__ieee754_log10f, __log10f)
diff --git a/sysdeps/i386/fpu/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
index 9326b19796..cd57a5d75f 100644
--- a/sysdeps/i386/fpu/e_log10l.S
+++ b/sysdeps/i386/fpu/e_log10l.S
@@ -8,6 +8,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -68,4 +69,4 @@  ENTRY(__ieee754_log10l)
 	fadd	%st(0)
 	ret
 END(__ieee754_log10l)
-strong_alias (__ieee754_log10l, __log10l_finite)
+libm_alias_finite (__ieee754_log10l, __log10l)
diff --git a/sysdeps/i386/fpu/e_log2.S b/sysdeps/i386/fpu/e_log2.S
index 73ff0fffd3..57725cdb60 100644
--- a/sysdeps/i386/fpu/e_log2.S
+++ b/sysdeps/i386/fpu/e_log2.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -66,4 +67,4 @@  ENTRY(__ieee754_log2)
 	fstp	%st(1)
 	ret
 END (__ieee754_log2)
-strong_alias (__ieee754_log2, __log2_finite)
+libm_alias_finite (__ieee754_log2, __log2)
diff --git a/sysdeps/i386/fpu/e_log2l.S b/sysdeps/i386/fpu/e_log2l.S
index 73e62ea908..82decffe8a 100644
--- a/sysdeps/i386/fpu/e_log2l.S
+++ b/sysdeps/i386/fpu/e_log2l.S
@@ -7,6 +7,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -67,4 +68,4 @@  ENTRY(__ieee754_log2l)
 	fadd	%st(0)
 	ret
 END (__ieee754_log2l)
-strong_alias (__ieee754_log2l, __log2l_finite)
+libm_alias_finite (__ieee754_log2l, __log2l)
diff --git a/sysdeps/i386/fpu/e_logl.S b/sysdeps/i386/fpu/e_logl.S
index 53127d704e..3e019cc911 100644
--- a/sysdeps/i386/fpu/e_logl.S
+++ b/sysdeps/i386/fpu/e_logl.S
@@ -6,7 +6,7 @@ 
  */
 
 #include <machine/asm.h>
-
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -95,3 +95,4 @@  ENTRY(__logl_finite)
 	fyl2xp1			// log(x)
 	ret
 END(__logl_finite)
+libm_alias_finite (__logl_finite, __logl)
diff --git a/sysdeps/i386/fpu/e_pow.S b/sysdeps/i386/fpu/e_pow.S
index 4c7ad09270..4ccf207942 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 <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -453,4 +454,4 @@  ENTRY(__ieee754_pow)
 	ret
 
 END(__ieee754_pow)
-strong_alias (__ieee754_pow, __pow_finite)
+libm_alias_finite (__ieee754_pow, __pow)
diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S
index f7ec0a1ea0..fff0fc188b 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 <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -456,4 +457,4 @@  ENTRY(__ieee754_powl)
 	ret
 
 END(__ieee754_powl)
-strong_alias (__ieee754_powl, __powl_finite)
+libm_alias_finite (__ieee754_powl, __powl)
diff --git a/sysdeps/i386/fpu/e_remainder.S b/sysdeps/i386/fpu/e_remainder.S
index f7867aa90b..5b71e9198d 100644
--- a/sysdeps/i386/fpu/e_remainder.S
+++ b/sysdeps/i386/fpu/e_remainder.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_remainder)
 	fldl	12(%esp)
@@ -15,4 +16,4 @@  ENTRY(__ieee754_remainder)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainder)
-strong_alias (__ieee754_remainder, __remainder_finite)
+libm_alias_finite (__ieee754_remainder, __remainder)
diff --git a/sysdeps/i386/fpu/e_remainderf.S b/sysdeps/i386/fpu/e_remainderf.S
index cfd390bc69..2257db3580 100644
--- a/sysdeps/i386/fpu/e_remainderf.S
+++ b/sysdeps/i386/fpu/e_remainderf.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_remainderf)
 	flds	8(%esp)
@@ -15,4 +16,4 @@  ENTRY(__ieee754_remainderf)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainderf)
-strong_alias (__ieee754_remainderf, __remainderf_finite)
+libm_alias_finite (__ieee754_remainderf, __remainderf)
diff --git a/sysdeps/i386/fpu/e_remainderl.S b/sysdeps/i386/fpu/e_remainderl.S
index 5ec23a37a3..551660c1e9 100644
--- a/sysdeps/i386/fpu/e_remainderl.S
+++ b/sysdeps/i386/fpu/e_remainderl.S
@@ -6,6 +6,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_remainderl)
 	fldt	16(%esp)
@@ -17,4 +18,4 @@  ENTRY(__ieee754_remainderl)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainderl)
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+libm_alias_finite (__ieee754_remainderl, __remainderl)
diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 370924c29f..5a2f566cdf 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 <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -97,4 +98,4 @@  ENTRY(__ieee754_scalb)
 	fdiv	%st
 	ret
 END(__ieee754_scalb)
-strong_alias (__ieee754_scalb, __scalb_finite)
+libm_alias_finite (__ieee754_scalb, __scalb)
diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index 4f2dfa3acf..ef7bd9748e 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 <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -99,4 +100,4 @@  ENTRY(__ieee754_scalbf)
 	fdiv	%st
 	ret
 END(__ieee754_scalbf)
-strong_alias (__ieee754_scalbf, __scalbf_finite)
+libm_alias_finite (__ieee754_scalbf, __scalbf)
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 896f599cb0..790f07a907 100644
--- a/sysdeps/i386/fpu/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
@@ -8,6 +8,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -87,4 +88,4 @@  ENTRY(__ieee754_scalbl)
 	fdiv	%st
 	ret
 END(__ieee754_scalbl)
-strong_alias (__ieee754_scalbl, __scalbl_finite)
+libm_alias_finite (__ieee754_scalbl, __scalbl)
diff --git a/sysdeps/i386/fpu/e_sqrt.S b/sysdeps/i386/fpu/e_sqrt.S
index fba5833a9a..191122b676 100644
--- a/sysdeps/i386/fpu/e_sqrt.S
+++ b/sysdeps/i386/fpu/e_sqrt.S
@@ -4,6 +4,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_sqrt)
 	fldl	4(%esp)
@@ -20,4 +21,4 @@  ENTRY(__ieee754_sqrt)
 	cfi_adjust_cfa_offset (-8)
 	ret
 END (__ieee754_sqrt)
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/i386/fpu/e_sqrtf.S b/sysdeps/i386/fpu/e_sqrtf.S
index 6f7e4b015f..9f34be71a8 100644
--- a/sysdeps/i386/fpu/e_sqrtf.S
+++ b/sysdeps/i386/fpu/e_sqrtf.S
@@ -4,10 +4,11 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 ENTRY(__ieee754_sqrtf)
 	flds	4(%esp)
 	fsqrt
 	ret
 END (__ieee754_sqrtf)
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
diff --git a/sysdeps/i386/fpu/e_sqrtl.c b/sysdeps/i386/fpu/e_sqrtl.c
index 41bcd7eeb7..8f284dd75c 100644
--- a/sysdeps/i386/fpu/e_sqrtl.c
+++ b/sysdeps/i386/fpu/e_sqrtl.c
@@ -6,6 +6,7 @@ 
  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 #undef __ieee754_sqrtl
 long double
@@ -17,4 +18,4 @@  __ieee754_sqrtl (long double x)
 
   return res;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/i386/i686/fpu/e_log.S b/sysdeps/i386/i686/fpu/e_log.S
index 73060b088c..3ac3dca208 100644
--- a/sysdeps/i386/i686/fpu/e_log.S
+++ b/sysdeps/i386/i686/fpu/e_log.S
@@ -6,7 +6,7 @@ 
  */
 
 #include <machine/asm.h>
-
+#include <libm-alias-finite.h>
 
 	.text
 ENTRY(__ieee754_log)
@@ -27,3 +27,4 @@  ENTRY(__log_finite)
 	fyl2x			// log(x)
 	ret
 END(__log_finite)
+libm_alias_finite (__log_finite, __log)
diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S
index 7e3bc8d817..77ec373abc 100644
--- a/sysdeps/i386/i686/fpu/e_logl.S
+++ b/sysdeps/i386/i686/fpu/e_logl.S
@@ -8,6 +8,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -92,3 +93,4 @@  ENTRY(__logl_finite)
 	fyl2xp1			// log(x)
 	ret
 END(__logl_finite)
+libm_alias_finite (__logl_finite, __logl)
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
index b002d22441..e8208ca4de 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
+++ b/sysdeps/i386/i686/fpu/multiarch/e_exp2f.c
@@ -20,12 +20,12 @@  extern float __redirect_exp2f (float);
 
 #define SYMBOL_NAME exp2f
 #include "ifunc-sse2.h"
+#include <libm-alias-finite.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);
 libm_alias_float_other (__exp2, exp2)
 #else
@@ -33,7 +33,7 @@  libm_alias_float (__exp2, exp2)
 #endif
 
 strong_alias (__exp2f, __ieee754_exp2f)
-strong_alias (__exp2f, __exp2f_finite)
+libm_alias_finite (__ieee754_exp2f, __exp2f)
 
 #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 b55071fa7e..a3baadf2ed 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 <libm-alias-finite.h>
 
 libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
 
@@ -28,7 +29,6 @@  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);
 libm_alias_float_other (__exp, exp)
 #else
@@ -36,7 +36,7 @@  libm_alias_float (__exp, exp)
 #endif
 
 strong_alias (__expf, __ieee754_expf)
-strong_alias (__expf, __expf_finite)
+libm_alias_finite (__ieee754_expf, __expf)
 
 #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 a33b337271..a2f00069a4 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 <libm-alias-finite.h>
 
 libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
 
@@ -28,7 +29,6 @@  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);
 libm_alias_float_other (__log2, log2)
 #else
@@ -36,7 +36,7 @@  libm_alias_float (__log2, log2)
 #endif
 
 strong_alias (__log2f, __ieee754_log2f)
-strong_alias (__log2f, __log2f_finite)
+libm_alias_finite (__ieee754_log2f, __log2f)
 
 #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 bfbd56626c..b3b5d3965b 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 <libm-alias-finite.h>
 
 libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
 
@@ -28,7 +29,6 @@  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);
 libm_alias_float_other (__log, log)
 #else
@@ -36,7 +36,7 @@  libm_alias_float (__log, log)
 #endif
 
 strong_alias (__logf, __ieee754_logf)
-strong_alias (__logf, __logf_finite)
+libm_alias_finite (__ieee754_logf, __logf)
 
 #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 a92229f58e..45398f72c1 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 <libm-alias-finite.h>
 
 libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
 
@@ -31,7 +32,6 @@  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);
 libm_alias_float_other (__pow, pow)
 #else
@@ -39,7 +39,7 @@  libm_alias_float (__pow, pow)
 #endif
 
 strong_alias (__powf, __ieee754_powf)
-strong_alias (__powf, __powf_finite)
+libm_alias_finite (__ieee754_powf, __powf)
 
 #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 fe0c375f00..75df0ab5ef 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 <libm-alias-finite.h>
 
 static const double
   one = 1.0,
@@ -66,4 +67,4 @@  __ieee754_acosh (double x)
       return __log1p (t + sqrt (2.0 * t + t * t));
     }
 }
-strong_alias (__ieee754_acosh, __acosh_finite)
+libm_alias_finite (__ieee754_acosh, __acosh)
diff --git a/sysdeps/ieee754/dbl-64/e_asin.c b/sysdeps/ieee754/dbl-64/e_asin.c
index 82419056bc..8db79e1b77 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 <libm-alias-finite.h>
 
 #ifndef SECTION
 # define SECTION
@@ -334,7 +335,7 @@  __ieee754_asin(double x){
  }
 }
 #ifndef __ieee754_asin
-strong_alias (__ieee754_asin, __asin_finite)
+libm_alias_finite (__ieee754_asin, __asin)
 #endif
 
 /*******************************************************************/
@@ -644,5 +645,5 @@  __ieee754_acos(double x)
   }
 }
 #ifndef __ieee754_acos
-strong_alias (__ieee754_acos, __acos_finite)
+libm_alias_finite (__ieee754_acos, __acos)
 #endif
diff --git a/sysdeps/ieee754/dbl-64/e_atan2.c b/sysdeps/ieee754/dbl-64/e_atan2.c
index 099a76ea56..41aa4027c1 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 <libm-alias-finite.h>
 
 #ifndef SECTION
 # define SECTION
@@ -570,7 +571,7 @@  __ieee754_atan2 (double y, double x)
 }
 
 #ifndef __ieee754_atan2
-strong_alias (__ieee754_atan2, __atan2_finite)
+libm_alias_finite (__ieee754_atan2, __atan2)
 #endif
 
 /* Treat the Denormalized case */
diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c
index 7a79527eb7..bf4a37f1ed 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 <libm-alias-finite.h>
 
 static const double huge = 1e300;
 
@@ -73,4 +74,4 @@  __ieee754_atanh (double x)
 
   return copysign (t, x);
 }
-strong_alias (__ieee754_atanh, __atanh_finite)
+libm_alias_finite (__ieee754_atanh, __atanh)
diff --git a/sysdeps/ieee754/dbl-64/e_cosh.c b/sysdeps/ieee754/dbl-64/e_cosh.c
index ae2180aa89..6c78a3a4e9 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 <libm-alias-finite.h>
 
 static const double one = 1.0, half = 0.5, huge = 1.0e300;
 
@@ -86,4 +87,4 @@  __ieee754_cosh (double x)
   /* |x| > overflowthresold, cosh(x) overflow */
   return math_narrow_eval (huge * huge);
 }
-strong_alias (__ieee754_cosh, __cosh_finite)
+libm_alias_finite (__ieee754_cosh, __cosh)
diff --git a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c
index d255e7ba1a..541a868a28 100644
--- a/sysdeps/ieee754/dbl-64/e_exp.c
+++ b/sysdeps/ieee754/dbl-64/e_exp.c
@@ -21,7 +21,7 @@ 
 #include <math-barriers.h>
 #include <math-narrow-eval.h>
 #include <math-svid-compat.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-double.h>
 #include "math_config.h"
 
@@ -159,7 +159,7 @@  __exp (double x)
 #ifndef __exp
 hidden_def (__exp)
 strong_alias (__exp, __ieee754_exp)
-strong_alias (__exp, __exp_finite)
+libm_alias_finite (__ieee754_exp, __exp)
 # if LIBM_SVID_COMPAT
 versioned_symbol (libm, __exp, exp, GLIBC_2_29);
 libm_alias_double_other (__exp, exp)
diff --git a/sysdeps/ieee754/dbl-64/e_exp10.c b/sysdeps/ieee754/dbl-64/e_exp10.c
index de457da9d2..2f971c23d0 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 <libm-alias-finite.h>
 
 static const double log10_high = 0x2.4d7637p0;
 static const double log10_low = 0x7.6aaa2b05ba95cp-28;
@@ -47,4 +48,4 @@  __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)
+libm_alias_finite (__ieee754_exp10, __exp10)
diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c
index 6db662ae8f..8005943e50 100644
--- a/sysdeps/ieee754/dbl-64/e_exp2.c
+++ b/sysdeps/ieee754/dbl-64/e_exp2.c
@@ -21,7 +21,7 @@ 
 #include <math-barriers.h>
 #include <math-narrow-eval.h>
 #include <math-svid-compat.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-double.h>
 #include "math_config.h"
 
@@ -145,7 +145,7 @@  __exp2 (double x)
 }
 #ifndef __exp2
 strong_alias (__exp2, __ieee754_exp2)
-strong_alias (__exp2, __exp2_finite)
+libm_alias_finite (__ieee754_exp2, __exp2)
 # if LIBM_SVID_COMPAT
 versioned_symbol (libm, __exp2, exp2, GLIBC_2_29);
 libm_alias_double_other (__exp2, exp2)
diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index 1a8c14dc2a..f6a095ba82 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 <libm-alias-finite.h>
 
 static const double one = 1.0, Zero[] = { 0.0, -0.0, };
 
@@ -170,4 +171,4 @@  __ieee754_fmod (double x, double y)
     }
   return x;                     /* exact output */
 }
-strong_alias (__ieee754_fmod, __fmod_finite)
+libm_alias_finite (__ieee754_fmod, __fmod)
diff --git a/sysdeps/ieee754/dbl-64/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c
index 5981f0d816..684d05d062 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 <libm-alias-finite.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -220,4 +221,4 @@  __ieee754_gamma_r (double x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gamma_r, __gamma_r_finite)
+libm_alias_finite (__ieee754_gamma_r, __gamma_r)
diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c
index a2c33cc4ed..9ec4c1ced0 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 <libm-alias-finite.h>
 
 double
 __ieee754_hypot (double x, double y)
@@ -159,4 +160,6 @@  __ieee754_hypot (double x, double y)
   else
     return w;
 }
-strong_alias (__ieee754_hypot, __hypot_finite)
+#ifndef __ieee754_hypot
+libm_alias_finite (__ieee754_hypot, __hypot)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_j0.c b/sysdeps/ieee754/dbl-64/e_j0.c
index 7f5919910d..d0e683637a 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 <libm-alias-finite.h>
 
 static double pzero (double), qzero (double);
 
@@ -143,7 +144,7 @@  __ieee754_j0 (double x)
       return ((one + u) * (one - u) + z * (r / s));
     }
 }
-strong_alias (__ieee754_j0, __j0_finite)
+libm_alias_finite (__ieee754_j0, __j0)
 
 static const double
 U[] = { -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
@@ -223,7 +224,7 @@  __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)
+libm_alias_finite (__ieee754_y0, __y0)
 
 /* 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 734f3ca64a..8757bd5750 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 <libm-alias-finite.h>
 
 static double pone (double), qone (double);
 
@@ -147,7 +148,7 @@  __ieee754_j1 (double x)
   s = s1 + z2 * s2 + z4 * s3;
   return (x * 0.5 + r / s);
 }
-strong_alias (__ieee754_j1, __j1_finite)
+libm_alias_finite (__ieee754_j1, __j1)
 
 static const double U0[5] = {
  -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
@@ -230,7 +231,7 @@  __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)
+libm_alias_finite (__ieee754_y1, __y1)
 
 /* 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 90a7e77270..f61d71fcd4 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 <libm-alias-finite.h>
 
 static const double
   invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
@@ -258,7 +259,7 @@  __ieee754_jn (int n, double x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jn, __jn_finite)
+libm_alias_finite (__ieee754_jn, __jn)
 
 double
 __ieee754_yn (int n, double x)
@@ -349,4 +350,4 @@  __ieee754_yn (int n, double x)
     ret = copysign (DBL_MAX, ret) * DBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_yn, __yn_finite)
+libm_alias_finite (__ieee754_yn, __yn)
diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
index 88051bc75b..5ef289e8e8 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 <libm-alias-finite.h>
 
 static const double
 two52=  4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
@@ -308,4 +309,4 @@  __ieee754_lgamma_r(double x, int *signgamp)
 	DIAG_POP_NEEDS_COMMENT;
 	return r;
 }
-strong_alias (__ieee754_lgamma_r, __lgamma_r_finite)
+libm_alias_finite (__ieee754_lgamma_r, __lgamma_r)
diff --git a/sysdeps/ieee754/dbl-64/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c
index 8030da605e..73f5042a64 100644
--- a/sysdeps/ieee754/dbl-64/e_log.c
+++ b/sysdeps/ieee754/dbl-64/e_log.c
@@ -19,7 +19,7 @@ 
 #include <math.h>
 #include <stdint.h>
 #include <math-svid-compat.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-double.h>
 #include "math_config.h"
 
@@ -132,7 +132,7 @@  __log (double x)
 }
 #ifndef __log
 strong_alias (__log, __ieee754_log)
-strong_alias (__log, __log_finite)
+libm_alias_finite (__ieee754_log, __log)
 # if LIBM_SVID_COMPAT
 versioned_symbol (libm, __log, log, GLIBC_2_29);
 libm_alias_double_other (__log, log)
diff --git a/sysdeps/ieee754/dbl-64/e_log10.c b/sysdeps/ieee754/dbl-64/e_log10.c
index 677cbc4df8..44a4bd2faa 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 <libm-alias-finite.h>
 
 static const double two54 = 1.80143985094819840000e+16;         /* 0x43500000, 0x00000000 */
 static const double ivln10 = 4.34294481903251816668e-01;        /* 0x3FDBCB7B, 0x1526E50E */
@@ -84,5 +85,4 @@  __ieee754_log10 (double x)
   z = y * log10_2lo + ivln10 * __ieee754_log (x);
   return z + y * log10_2hi;
 }
-
-strong_alias (__ieee754_log10, __log10_finite)
+libm_alias_finite (__ieee754_log10, __log10)
diff --git a/sysdeps/ieee754/dbl-64/e_log2.c b/sysdeps/ieee754/dbl-64/e_log2.c
index b999141ff9..841000730e 100644
--- a/sysdeps/ieee754/dbl-64/e_log2.c
+++ b/sysdeps/ieee754/dbl-64/e_log2.c
@@ -19,7 +19,7 @@ 
 #include <math.h>
 #include <stdint.h>
 #include <math-svid-compat.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-double.h>
 #include "math_config.h"
 
@@ -141,7 +141,7 @@  __log2 (double x)
 }
 #ifndef __log2
 strong_alias (__log2, __ieee754_log2)
-strong_alias (__log2, __log2_finite)
+libm_alias_finite (__ieee754_log2, __log2)
 # if LIBM_SVID_COMPAT
 versioned_symbol (libm, __log2, log2, GLIBC_2_29);
 libm_alias_double_other (__log2, log2)
diff --git a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c
index 79f3592e57..8087a96cd3 100644
--- a/sysdeps/ieee754/dbl-64/e_pow.c
+++ b/sysdeps/ieee754/dbl-64/e_pow.c
@@ -21,7 +21,7 @@ 
 #include <math-barriers.h>
 #include <math-narrow-eval.h>
 #include <math-svid-compat.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-double.h>
 #include "math_config.h"
 
@@ -380,7 +380,7 @@  __pow (double x, double y)
 }
 #ifndef __pow
 strong_alias (__pow, __ieee754_pow)
-strong_alias (__pow, __pow_finite)
+libm_alias_finite (__ieee754_pow, __pow)
 # if LIBM_SVID_COMPAT
 versioned_symbol (libm, __pow, pow, GLIBC_2_29);
 libm_alias_double_other (__pow, pow)
diff --git a/sysdeps/ieee754/dbl-64/e_remainder.c b/sysdeps/ieee754/dbl-64/e_remainder.c
index 868725d989..33d55d2f71 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 <libm-alias-finite.h>
 
 /**************************************************************************/
 /* An ultimate remainder routine. Given two IEEE double machine numbers x */
@@ -150,4 +151,4 @@  __ieee754_remainder (double x, double y)
 	}
     }
 }
-strong_alias (__ieee754_remainder, __remainder_finite)
+libm_alias_finite (__ieee754_remainder, __remainder)
diff --git a/sysdeps/ieee754/dbl-64/e_sinh.c b/sysdeps/ieee754/dbl-64/e_sinh.c
index c4e34211ac..b4b5857ddd 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 <libm-alias-finite.h>
 
 static const double one = 1.0, shuge = 1.0e307;
 
@@ -89,4 +90,4 @@  __ieee754_sinh (double x)
   /* |x| > overflowthresold, sinh(x) overflow */
   return math_narrow_eval (x * shuge);
 }
-strong_alias (__ieee754_sinh, __sinh_finite)
+libm_alias_finite (__ieee754_sinh, __sinh)
diff --git a/sysdeps/ieee754/dbl-64/e_sqrt.c b/sysdeps/ieee754/dbl-64/e_sqrt.c
index 20c72d5848..610c1d5822 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 <libm-alias-finite.h>
 
 /*********************************************************************/
 /* An ultimate sqrt routine. Given an IEEE double machine number x   */
@@ -138,4 +139,6 @@  __ieee754_sqrt (double x)
       return 0x1p-256 * __ieee754_sqrt (x * 0x1p512);
     }
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+#ifndef __ieee754_sqrt
+libm_alias_finite (__ieee754_sqrt, __sqrt)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
index 0af05a0222..a241366f30 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 <libm-alias-finite.h>
 
 static const double
 one	= 1.0,
@@ -64,4 +65,4 @@  __ieee754_acosh (double x)
   else					/* x < 1 */
     return (x - x) / (x - x);
 }
-strong_alias (__ieee754_acosh, __acosh_finite)
+libm_alias_finite (__ieee754_acosh, __acosh)
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
index fca80b13f9..4f41ca2c92 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 <libm-alias-finite.h>
 
 static const double one = 1.0, half=0.5, huge = 1.0e300;
 
@@ -81,4 +82,4 @@  __ieee754_cosh (double x)
     /* |x| > overflowthresold, cosh(x) overflow */
 	return huge*huge;
 }
-strong_alias (__ieee754_cosh, __cosh_finite)
+libm_alias_finite (__ieee754_cosh, __cosh)
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
index f686bb6706..52a8687448 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 <libm-alias-finite.h>
 
 static const double one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -102,4 +103,4 @@  __ieee754_fmod (double x, double y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmod, __fmod_finite)
+libm_alias_finite (__ieee754_fmod, __fmod)
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
index cd5567182f..0b4116e0a8 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 <libm-alias-finite.h>
 
 static const double two54 = 1.80143985094819840000e+16;		/* 0x4350000000000000 */
 static const double ivln10 = 4.34294481903251816668e-01;	/* 0x3FDBCB7B1526E50E */
@@ -83,5 +84,4 @@  __ieee754_log10 (double x)
   z = y * log10_2lo + ivln10 * __ieee754_log (x);
   return z + y * log10_2hi;
 }
-
-strong_alias (__ieee754_log10, __log10_finite)
+libm_alias_finite (__ieee754_log10, __log10)
diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
index 4e31ef365b..02633d6dc5 100644
--- a/sysdeps/ieee754/float128/float128_private.h
+++ b/sysdeps/ieee754/float128/float128_private.h
@@ -268,6 +268,32 @@ 
 #define __fsubl __f32subf128
 #define __dsubl __f64subf128
 
+/* Used on __finite compat alias.  */
+#define __acosl __acosf128
+#define __acoshl __acoshf128
+#define __asinl __asinf128
+#define __atan2l __atan2f128
+#define __atanhl __atanhf128
+#define __coshl __coshf128
+#define __exp10l __exp10f128
+#define __expl __expf128
+#define __fmodl __fmodf128
+#define __gammal_r __gammaf128_r
+#define __hypotl __hypotf128
+#define __j0l __j0f128
+#define __j1l __j1f128
+#define __jnl __jnf128
+#define __lgammal_r __lgammaf128_r
+#define __log10l __log10f128
+#define __log2l __log2f128
+#define __logl __logf128
+#define __powl __powf128
+#define __remainderl __remainderf128
+#define __sinhl __sinhf128
+#define __y0l __y0f128
+#define __y1l __y1f128
+#define __ynl __ynf128
+
 /* __nexttowardf128 is not _Float128 API. */
 #define __nexttowardl __nexttowardf128_do_not_use
 #define nexttowardl nexttowardf128_do_not_use
diff --git a/sysdeps/ieee754/flt-32/e_acosf.c b/sysdeps/ieee754/flt-32/e_acosf.c
index 3b2e4f1bde..ce688c9802 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 <libm-alias-finite.h>
 
 static const float
 one =  1.0000000000e+00, /* 0x3F800000 */
@@ -75,4 +76,4 @@  __ieee754_acosf(float x)
 	    return (float)2.0*(df+w);
 	}
 }
-strong_alias (__ieee754_acosf, __acosf_finite)
+libm_alias_finite (__ieee754_acosf, __acosf)
diff --git a/sysdeps/ieee754/flt-32/e_acoshf.c b/sysdeps/ieee754/flt-32/e_acoshf.c
index 49e64f3c43..5f573c3e98 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 <libm-alias-finite.h>
 
 static const float
 one	= 1.0,
@@ -46,4 +47,4 @@  float __ieee754_acoshf(float x)
 	    return __log1pf(t+sqrtf((float)2.0*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshf, __acoshf_finite)
+libm_alias_finite (__ieee754_acoshf, __acoshf)
diff --git a/sysdeps/ieee754/flt-32/e_asinf.c b/sysdeps/ieee754/flt-32/e_asinf.c
index 3328a8f296..720e95d64d 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 <libm-alias-finite.h>
 
 static const float
 one =  1.0000000000e+00, /* 0x3F800000 */
@@ -102,4 +103,4 @@  float __ieee754_asinf(float x)
 	}
 	if(hx>0) return t; else return -t;
 }
-strong_alias (__ieee754_asinf, __asinf_finite)
+libm_alias_finite (__ieee754_asinf, __asinf)
diff --git a/sysdeps/ieee754/flt-32/e_atan2f.c b/sysdeps/ieee754/flt-32/e_atan2f.c
index ddc5873ade..743b6fd43c 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 <libm-alias-finite.h>
 
 static const float
 tiny  = 1.0e-30,
@@ -91,4 +92,4 @@  __ieee754_atan2f (float y, float x)
 		    return  (z-pi_lo)-pi;/* atan(-,-) */
 	}
 }
-strong_alias (__ieee754_atan2f, __atan2f_finite)
+libm_alias_finite (__ieee754_atan2f, __atan2f)
diff --git a/sysdeps/ieee754/flt-32/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c
index 878e153ada..02953da895 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 <libm-alias-finite.h>
 
 static const float huge = 1e30;
 
@@ -73,4 +74,4 @@  __ieee754_atanhf (float x)
 
   return copysignf (t, x);
 }
-strong_alias (__ieee754_atanhf, __atanhf_finite)
+libm_alias_finite (__ieee754_atanhf, __atanhf)
diff --git a/sysdeps/ieee754/flt-32/e_coshf.c b/sysdeps/ieee754/flt-32/e_coshf.c
index a2aa83876d..742a68139e 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 <libm-alias-finite.h>
 
 static const float huge = 1.0e30;
 static const float one = 1.0, half=0.5;
@@ -61,4 +62,4 @@  __ieee754_coshf (float x)
     /* |x| > overflowthresold, cosh(x) overflow */
 	return math_narrow_eval (huge*huge);
 }
-strong_alias (__ieee754_coshf, __coshf_finite)
+libm_alias_finite (__ieee754_coshf, __coshf)
diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c
index ba62a4d5e0..18b6f12e94 100644
--- a/sysdeps/ieee754/flt-32/e_exp2f.c
+++ b/sysdeps/ieee754/flt-32/e_exp2f.c
@@ -19,7 +19,7 @@ 
 #include <math.h>
 #include <math-narrow-eval.h>
 #include <stdint.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-float.h>
 #include "math_config.h"
 
@@ -90,7 +90,7 @@  __exp2f (float x)
 }
 #ifndef __exp2f
 strong_alias (__exp2f, __ieee754_exp2f)
-strong_alias (__exp2f, __exp2f_finite)
+libm_alias_finite (__ieee754_exp2f, __exp2f)
 versioned_symbol (libm, __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 3a2ed22b0d..c4786b4664 100644
--- a/sysdeps/ieee754/flt-32/e_expf.c
+++ b/sysdeps/ieee754/flt-32/e_expf.c
@@ -24,7 +24,7 @@ 
 #include <math.h>
 #include <math-narrow-eval.h>
 #include <stdint.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-float.h>
 #include "math_config.h"
 
@@ -108,7 +108,7 @@  __expf (float x)
 #ifndef __expf
 hidden_def (__expf)
 strong_alias (__expf, __ieee754_expf)
-strong_alias (__expf, __expf_finite)
+libm_alias_finite (__ieee754_expf, __expf)
 versioned_symbol (libm, __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 1a9407b517..e641599221 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 <libm-alias-finite.h>
 
 static const float one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -99,4 +100,4 @@  __ieee754_fmodf (float x, float y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmodf, __fmodf_finite)
+libm_alias_finite (__ieee754_fmodf, __fmodf)
diff --git a/sysdeps/ieee754/flt-32/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
index 2a72d96005..e38c74c4f1 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 <libm-alias-finite.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -212,4 +213,4 @@  __ieee754_gammaf_r (float x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammaf_r, __gammaf_r_finite)
+libm_alias_finite (__ieee754_gammaf_r, __gammaf_r)
diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c
index 5336876cf4..dfffcf4988 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 <libm-alias-finite.h>
 
 float
 __ieee754_hypotf(float x, float y)
@@ -42,4 +43,6 @@  __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
+libm_alias_finite (__ieee754_hypotf, __hypotf)
+#endif
diff --git a/sysdeps/ieee754/flt-32/e_j0f.c b/sysdeps/ieee754/flt-32/e_j0f.c
index 0efc646a12..0ac7d8e636 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 <libm-alias-finite.h>
 
 static float pzerof(float), qzerof(float);
 
@@ -81,7 +82,7 @@  __ieee754_j0f(float x)
 	    return((one+u)*(one-u)+z*(r/s));
 	}
 }
-strong_alias (__ieee754_j0f, __j0f_finite)
+libm_alias_finite (__ieee754_j0f, __j0f)
 
 static const float
 u00  = -7.3804296553e-02, /* 0xbd9726b5 */
@@ -147,7 +148,7 @@  __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)
+libm_alias_finite (__ieee754_y0f, __y0f)
 
 /* 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 09b2296483..eafff4f4b5 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 <libm-alias-finite.h>
 
 static float ponef(float), qonef(float);
 
@@ -87,7 +88,7 @@  __ieee754_j1f(float x)
 	r *= x;
 	return(x*(float)0.5+r/s);
 }
-strong_alias (__ieee754_j1f, __j1f_finite)
+libm_alias_finite (__ieee754_j1f, __j1f)
 
 static const float U0[5] = {
  -1.9605709612e-01, /* 0xbe48c331 */
@@ -156,7 +157,7 @@  __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)
+libm_alias_finite (__ieee754_y1f, __y1f)
 
 /* 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 ae29015424..b2a015a48a 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 <libm-alias-finite.h>
 
 static const float
 two   =  2.0000000000e+00, /* 0x40000000 */
@@ -181,7 +182,7 @@  __ieee754_jnf(int n, float x)
 	math_check_force_underflow (ret);
     return ret;
 }
-strong_alias (__ieee754_jnf, __jnf_finite)
+libm_alias_finite (__ieee754_jnf, __jnf)
 
 float
 __ieee754_ynf(int n, float x)
@@ -233,4 +234,4 @@  __ieee754_ynf(int n, float x)
 	ret = copysignf (FLT_MAX, ret) * FLT_MAX;
     return ret;
 }
-strong_alias (__ieee754_ynf, __ynf_finite)
+libm_alias_finite (__ieee754_ynf, __ynf)
diff --git a/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
index a7f9b9fbad..0667b1bb3e 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 <libm-alias-finite.h>
 
 static const float
 two23=  8.3886080000e+06, /* 0x4b000000 */
@@ -244,4 +245,4 @@  __ieee754_lgammaf_r(float x, int *signgamp)
 	DIAG_POP_NEEDS_COMMENT;
 	return r;
 }
-strong_alias (__ieee754_lgammaf_r, __lgammaf_r_finite)
+libm_alias_finite (__ieee754_lgammaf_r, __lgammaf_r)
diff --git a/sysdeps/ieee754/flt-32/e_log10f.c b/sysdeps/ieee754/flt-32/e_log10f.c
index 7f1ffdad77..4e31e5cfdd 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 <libm-alias-finite.h>
 
 static const float
 two25      =  3.3554432000e+07, /* 0x4c000000 */
@@ -51,4 +52,4 @@  __ieee754_log10f(float x)
 	z  = y*log10_2lo + ivln10*__ieee754_logf(x);
 	return  z+y*log10_2hi;
 }
-strong_alias (__ieee754_log10f, __log10f_finite)
+libm_alias_finite (__ieee754_log10f, __log10f)
diff --git a/sysdeps/ieee754/flt-32/e_log2f.c b/sysdeps/ieee754/flt-32/e_log2f.c
index 57bdb541f1..22ff7e3b44 100644
--- a/sysdeps/ieee754/flt-32/e_log2f.c
+++ b/sysdeps/ieee754/flt-32/e_log2f.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <stdint.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-float.h>
 #include "math_config.h"
 
@@ -89,7 +89,7 @@  __log2f (float x)
 }
 #ifndef __log2f
 strong_alias (__log2f, __ieee754_log2f)
-strong_alias (__log2f, __log2f_finite)
+libm_alias_finite (__ieee754_log2f, __log2f)
 versioned_symbol (libm, __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 27b96129ac..c891ddc868 100644
--- a/sysdeps/ieee754/flt-32/e_logf.c
+++ b/sysdeps/ieee754/flt-32/e_logf.c
@@ -18,7 +18,7 @@ 
 
 #include <math.h>
 #include <stdint.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-float.h>
 #include "math_config.h"
 
@@ -88,7 +88,7 @@  __logf (float x)
 }
 #ifndef __logf
 strong_alias (__logf, __ieee754_logf)
-strong_alias (__logf, __logf_finite)
+libm_alias_finite (__ieee754_logf, __logf)
 versioned_symbol (libm, __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 4947ae2601..016687f72a 100644
--- a/sysdeps/ieee754/flt-32/e_powf.c
+++ b/sysdeps/ieee754/flt-32/e_powf.c
@@ -20,7 +20,7 @@ 
 #include <math-barriers.h>
 #include <math-narrow-eval.h>
 #include <stdint.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include <libm-alias-float.h>
 #include "math_config.h"
 
@@ -231,7 +231,7 @@  __powf (float x, float y)
 }
 #ifndef __powf
 strong_alias (__powf, __ieee754_powf)
-strong_alias (__powf, __powf_finite)
+libm_alias_finite (__ieee754_powf, __powf)
 versioned_symbol (libm, __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 8e78784e0f..946527c3f8 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 <libm-alias-finite.h>
 
 static const float zero = 0.0;
 
@@ -59,4 +60,4 @@  __ieee754_remainderf(float x, float p)
 	SET_FLOAT_WORD(x,hx^sx);
 	return x;
 }
-strong_alias (__ieee754_remainderf, __remainderf_finite)
+libm_alias_finite (__ieee754_remainderf, __remainderf)
diff --git a/sysdeps/ieee754/flt-32/e_sinhf.c b/sysdeps/ieee754/flt-32/e_sinhf.c
index 20f7db81ea..6fe74f3faf 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 <libm-alias-finite.h>
 
 static const float one = 1.0, shuge = 1.0e37;
 
@@ -59,4 +60,4 @@  __ieee754_sinhf(float x)
     /* |x| > overflowthresold, sinh(x) overflow */
 	return math_narrow_eval (x*shuge);
 }
-strong_alias (__ieee754_sinhf, __sinhf_finite)
+libm_alias_finite (__ieee754_sinhf, __sinhf)
diff --git a/sysdeps/ieee754/flt-32/e_sqrtf.c b/sysdeps/ieee754/flt-32/e_sqrtf.c
index 6025da19cf..b339444301 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 <libm-alias-finite.h>
 
 static	const float	one	= 1.0, tiny=1.0e-30;
 
@@ -83,4 +84,6 @@  __ieee754_sqrtf(float x)
 	SET_FLOAT_WORD(z,ix);
 	return z;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+#ifndef __ieee754_sqrtf
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/e_acoshl.c b/sysdeps/ieee754/ldbl-128/e_acoshl.c
index c292759ac6..c3cb73a2a4 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 <libm-alias-finite.h>
 
 static const _Float128
 one	= 1.0,
@@ -58,4 +59,4 @@  __ieee754_acoshl(_Float128 x)
 	    return __log1pl(t+sqrtl(2*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+libm_alias_finite (__ieee754_acoshl, __acoshl)
diff --git a/sysdeps/ieee754/ldbl-128/e_acosl.c b/sysdeps/ieee754/ldbl-128/e_acosl.c
index f698d0aa5c..6a6e5412e5 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 <libm-alias-finite.h>
 
 static const _Float128
   one = 1,
@@ -316,4 +317,4 @@  __ieee754_acosl (_Float128 x)
       return 2.0 * w;
     }
 }
-strong_alias (__ieee754_acosl, __acosl_finite)
+libm_alias_finite (__ieee754_acosl, __acosl)
diff --git a/sysdeps/ieee754/ldbl-128/e_asinl.c b/sysdeps/ieee754/ldbl-128/e_asinl.c
index aa240f1ff2..4825e0c15d 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 <libm-alias-finite.h>
 
 static const _Float128
   one = 1,
@@ -257,4 +258,4 @@  __ieee754_asinl (_Float128 x)
   else
     return -t;
 }
-strong_alias (__ieee754_asinl, __asinl_finite)
+libm_alias_finite (__ieee754_asinl, __asinl)
diff --git a/sysdeps/ieee754/ldbl-128/e_atan2l.c b/sysdeps/ieee754/ldbl-128/e_atan2l.c
index 8b4afa4bd5..142060de48 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 <libm-alias-finite.h>
 
 static const _Float128
 tiny  = L(1.0e-4900),
@@ -119,4 +120,4 @@  __ieee754_atan2l(_Float128 y, _Float128 x)
 		    return  (z-pi_lo)-pi;/* atan(-,-) */
 	}
 }
-strong_alias (__ieee754_atan2l, __atan2l_finite)
+libm_alias_finite (__ieee754_atan2l, __atan2l)
diff --git a/sysdeps/ieee754/ldbl-128/e_atanhl.c b/sysdeps/ieee754/ldbl-128/e_atanhl.c
index 13b7683e17..68a52201d2 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 <libm-alias-finite.h>
 
 static const _Float128 one = 1, huge = L(1e4900);
 
@@ -72,4 +73,4 @@  __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)
+libm_alias_finite (__ieee754_atanhl, __atanhl)
diff --git a/sysdeps/ieee754/ldbl-128/e_coshl.c b/sysdeps/ieee754/ldbl-128/e_coshl.c
index 2b8c1abfc2..dc9d376359 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 <libm-alias-finite.h>
 
 static const _Float128 one = 1.0, half = 0.5, huge = L(1.0e4900),
 ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
@@ -107,4 +108,4 @@  __ieee754_coshl (_Float128 x)
   /* |x| > overflowthresold, cosh(x) overflow */
   return huge * huge;
 }
-strong_alias (__ieee754_coshl, __coshl_finite)
+libm_alias_finite (__ieee754_coshl, __coshl)
diff --git a/sysdeps/ieee754/ldbl-128/e_exp10l.c b/sysdeps/ieee754/ldbl-128/e_exp10l.c
index 093ab09a53..d340f7255c 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 <libm-alias-finite.h>
 
 static const _Float128 log10_high = L(0x2.4d763776aaa2bp0);
 static const _Float128 log10_low = L(0x5.ba95b58ae0b4c28a38a3fb3e7698p-60);
@@ -46,4 +47,4 @@  __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)
+libm_alias_finite (__ieee754_exp10l, __exp10l)
diff --git a/sysdeps/ieee754/ldbl-128/e_expl.c b/sysdeps/ieee754/ldbl-128/e_expl.c
index a39f3d5c23..360c9f9bad 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 <libm-alias-finite.h>
 
 static const _Float128 C[] = {
 /* Smallest integer x for which e^x overflows.  */
@@ -253,4 +254,4 @@  __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)
+libm_alias_finite (__ieee754_expl, __expl)
diff --git a/sysdeps/ieee754/ldbl-128/e_fmodl.c b/sysdeps/ieee754/ldbl-128/e_fmodl.c
index 73465126b4..c927859cdf 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 <libm-alias-finite.h>
 
 static const _Float128 one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -128,4 +129,4 @@  __ieee754_fmodl (_Float128 x, _Float128 y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+libm_alias_finite (__ieee754_fmodl, __fmodl)
diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
index 8cef0f7a15..c459566470 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 <libm-alias-finite.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -217,4 +218,4 @@  __ieee754_gammal_r (_Float128 x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammal_r, __gammal_r_finite)
+libm_alias_finite (__ieee754_gammal_r, __gammal_r)
diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c
index 7bafd4ae29..cc3cc4a01c 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 <libm-alias-finite.h>
 
 _Float128
 __ieee754_hypotl(_Float128 x, _Float128 y)
@@ -138,4 +139,4 @@  __ieee754_hypotl(_Float128 x, _Float128 y)
 	    return w;
 	} else return w;
 }
-strong_alias (__ieee754_hypotl, __hypotl_finite)
+libm_alias_finite (__ieee754_hypotl, __hypotl)
diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c
index 631d67b92c..c424acc0bf 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 <libm-alias-finite.h>
 
 /* 1 / sqrt(pi) */
 static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
@@ -789,7 +790,7 @@  __ieee754_j0l (_Float128 x)
   z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_j0l, __j0l_finite)
+libm_alias_finite (__ieee754_j0l, __j0l)
 
 
 /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
@@ -934,4 +935,4 @@  _Float128
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
   return z;
 }
-strong_alias (__ieee754_y0l, __y0l_finite)
+libm_alias_finite (__ieee754_y0l, __y0l)
diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c
index 174f35df07..54c457681a 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 <libm-alias-finite.h>
 
 /* 1 / sqrt(pi) */
 static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
@@ -810,7 +811,7 @@  __ieee754_j1l (_Float128 x)
     z = -z;
   return z;
 }
-strong_alias (__ieee754_j1l, __j1l_finite)
+libm_alias_finite (__ieee754_j1l, __j1l)
 
 
 /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
@@ -960,4 +961,4 @@  __ieee754_y1l (_Float128 x)
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_y1l, __y1l_finite)
+libm_alias_finite (__ieee754_y1l, __y1l)
diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c
index 9066e934f1..2abd32adfe 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 <libm-alias-finite.h>
 
 static const _Float128
   invsqrtpi = L(5.6418958354775628694807945156077258584405E-1),
@@ -308,7 +309,7 @@  __ieee754_jnl (int n, _Float128 x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jnl, __jnl_finite)
+libm_alias_finite (__ieee754_jnl, __jnl)
 
 _Float128
 __ieee754_ynl (int n, _Float128 x)
@@ -422,4 +423,4 @@  __ieee754_ynl (int n, _Float128 x)
     ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_ynl, __ynl_finite)
+libm_alias_finite (__ieee754_ynl, __ynl)
diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
index f7359ce62e..0476df8db3 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 <libm-alias-finite.h>
 
 static const _Float128 PIL = L(3.1415926535897932384626433832795028841972E0);
 static const _Float128 MAXLGM = L(1.0485738685148938358098967157129705071571E4928);
@@ -1039,4 +1040,4 @@  __ieee754_lgammal_r (_Float128 x, int *signgamp)
   q += neval (p, RASY, NRASY) / x;
   return (q);
 }
-strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
+libm_alias_finite (__ieee754_lgammal_r, __lgammal_r)
diff --git a/sysdeps/ieee754/ldbl-128/e_log10l.c b/sysdeps/ieee754/ldbl-128/e_log10l.c
index 7123c6f69a..9d1728af33 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 <libm-alias-finite.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,4 @@  done:
   z += e * L102A;
   return (z);
 }
-strong_alias (__ieee754_log10l, __log10l_finite)
+libm_alias_finite (__ieee754_log10l, __log10l)
diff --git a/sysdeps/ieee754/ldbl-128/e_log2l.c b/sysdeps/ieee754/ldbl-128/e_log2l.c
index b82cd80bbc..b81b98ced8 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 <libm-alias-finite.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,4 @@  done:
   z += e;
   return (z);
 }
-strong_alias (__ieee754_log2l, __log2l_finite)
+libm_alias_finite (__ieee754_log2l, __log2l)
diff --git a/sysdeps/ieee754/ldbl-128/e_logl.c b/sysdeps/ieee754/ldbl-128/e_logl.c
index be1ebe28b9..f6476e6534 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 <libm-alias-finite.h>
 
 /* log(1+x) = x - .5 x^2 + x^3 l(x)
    -.0078125 <= x <= +.0078125
@@ -279,4 +280,4 @@  __ieee754_logl(_Float128 x)
   y += e * ln2a;
   return y;
 }
-strong_alias (__ieee754_logl, __logl_finite)
+libm_alias_finite (__ieee754_logl, __logl)
diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c
index 967a730500..4e20616705 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 <libm-alias-finite.h>
 
 static const _Float128 bp[] = {
   1,
@@ -449,4 +450,4 @@  __ieee754_powl (_Float128 x, _Float128 y)
     }
   return sgn * z;
 }
-strong_alias (__ieee754_powl, __powl_finite)
+libm_alias_finite (__ieee754_powl, __powl)
diff --git a/sysdeps/ieee754/ldbl-128/e_remainderl.c b/sysdeps/ieee754/ldbl-128/e_remainderl.c
index 09b8640b78..ade586a2d0 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 <libm-alias-finite.h>
 
 static const _Float128 zero = 0;
 
@@ -68,4 +69,4 @@  __ieee754_remainderl(_Float128 x, _Float128 p)
 	SET_LDOUBLE_MSW64(x,hx^sx);
 	return x;
 }
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+libm_alias_finite (__ieee754_remainderl, __remainderl)
diff --git a/sysdeps/ieee754/ldbl-128/e_sinhl.c b/sysdeps/ieee754/ldbl-128/e_sinhl.c
index 9bbafa8c7a..976fcead3a 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 <libm-alias-finite.h>
 
 static const _Float128 one = 1.0, shuge = L(1.0e4931),
 ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
@@ -115,4 +116,4 @@  __ieee754_sinhl (_Float128 x)
   /* |x| > overflowthreshold, sinhl(x) overflow */
   return x * shuge;
 }
-strong_alias (__ieee754_sinhl, __sinhl_finite)
+libm_alias_finite (__ieee754_sinhl, __sinhl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
index f85fe678ba..e2f045ac23 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 <libm-alias-finite.h>
 
 static const long double
 one	= 1.0L,
@@ -59,4 +60,4 @@  __ieee754_acoshl(long double x)
 	    return __log1pl(t+sqrtl(2.0*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+libm_alias_finite (__ieee754_acoshl, __acoshl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
index 36fe75e215..46a480e8ce 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 <libm-alias-finite.h>
 
 static const long double
   one = 1.0L,
@@ -313,4 +314,4 @@  __ieee754_acosl (long double x)
       return 2.0 * w;
     }
 }
-strong_alias (__ieee754_acosl, __acosl_finite)
+libm_alias_finite (__ieee754_acosl, __acosl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
index 0e54332cd5..8cf60f0c2d 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 <libm-alias-finite.h>
 
 static const long double
   one = 1.0L,
@@ -248,4 +249,4 @@  __ieee754_asinl (long double x)
   else
     return -t;
 }
-strong_alias (__ieee754_asinl, __asinl_finite)
+libm_alias_finite (__ieee754_asinl, __asinl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
index b625323df3..8c451ed207 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 <libm-alias-finite.h>
 
 static const long double
 tiny  = 1.0e-300L,
@@ -119,4 +120,4 @@  __ieee754_atan2l(long double y, long double x)
 		    return  (z-pi_lo)-pi;/* atan(-,-) */
 	}
 }
-strong_alias (__ieee754_atan2l, __atan2l_finite)
+libm_alias_finite (__ieee754_atan2l, __atan2l)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
index 25c286b8ff..d38d7b5432 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 <libm-alias-finite.h>
 
 static const long double one = 1.0L, huge = 1e300L;
 
@@ -69,4 +70,4 @@  __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)
+libm_alias_finite (__ieee754_atanhl, __atanhl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
index 327b2ab960..bdbaad73ea 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 <libm-alias-finite.h>
 
 static const long double one = 1.0L, half=0.5L, huge = 1.0e300L;
 
@@ -78,4 +79,4 @@  __ieee754_coshl (long double x)
     /* |x| > overflowthresold, cosh(x) overflow */
 	return huge*huge;
 }
-strong_alias (__ieee754_coshl, __coshl_finite)
+libm_alias_finite (__ieee754_coshl, __coshl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
index 7eedd57adb..7b07c68fb5 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 <libm-alias-finite.h>
 
 static const long double log10_high = 0x2.4d763776aaap+0L;
 static const long double log10_low = 0x2.b05ba95b58ae0b4c28a38a3fb4p-48L;
@@ -45,4 +46,4 @@  __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)
+libm_alias_finite (__ieee754_exp10l, __exp10l)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
index 494f38bed7..690501d89b 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 <libm-alias-finite.h>
 
 #include "t_expl.h"
 
@@ -257,4 +257,4 @@  __ieee754_expl (long double x)
     return result;
   return result * scale_u.ld;
 }
-strong_alias (__ieee754_expl, __expl_finite)
+libm_alias_finite (__ieee754_expl, __expl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
index fae7dbe888..a8b178dbd0 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 <libm-alias-finite.h>
 
 static const long double one = 1.0, Zero[] = {0.0, -0.0,};
 
@@ -146,4 +147,4 @@  __ieee754_fmodl (long double x, long double y)
 	}
 	return x;		/* exact output */
 }
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+libm_alias_finite (__ieee754_fmodl, __fmodl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
index d08a93aa8e..3ef8f09e4d 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 <libm-alias-finite.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -217,4 +218,4 @@  __ieee754_gammal_r (long double x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammal_r, __gammal_r_finite)
+libm_alias_finite (__ieee754_gammal_r, __gammal_r)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
index 842f77b7ed..8767905cd5 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 <libm-alias-finite.h>
 
 long double
 __ieee754_hypotl(long double x, long double y)
@@ -136,4 +137,4 @@  __ieee754_hypotl(long double x, long double y)
 	else
 	    return w;
 }
-strong_alias (__ieee754_hypotl, __hypotl_finite)
+libm_alias_finite (__ieee754_hypotl, __hypotl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
index d430c29247..a12ef1b845 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 <libm-alias-finite.h>
 
 /* 1 / sqrt(pi) */
 static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
@@ -716,7 +717,7 @@  __ieee754_j0l (long double x)
   z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_j0l, __j0l_finite)
+libm_alias_finite (__ieee754_j0l, __j0l)
 
 
 /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
@@ -861,4 +862,4 @@  long double
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
   return z;
 }
-strong_alias (__ieee754_y0l, __y0l_finite)
+libm_alias_finite (__ieee754_y0l, __y0l)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
index ec6b1cec96..f85ba94466 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 <libm-alias-finite.h>
 
 /* 1 / sqrt(pi) */
 static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
@@ -733,7 +734,7 @@  __ieee754_j1l (long double x)
     z = -z;
   return z;
 }
-strong_alias (__ieee754_j1l, __j1l_finite)
+libm_alias_finite (__ieee754_j1l, __j1l)
 
 
 /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
@@ -883,4 +884,4 @@  __ieee754_y1l (long double x)
   z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx);
   return z;
 }
-strong_alias (__ieee754_y1l, __y1l_finite)
+libm_alias_finite (__ieee754_y1l, __y1l)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
index 3fe4c0e5c6..1ea48ff6d8 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 <libm-alias-finite.h>
 
 static const long double
   invsqrtpi = 5.6418958354775628694807945156077258584405E-1L,
@@ -308,7 +309,7 @@  __ieee754_jnl (int n, long double x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jnl, __jnl_finite)
+libm_alias_finite (__ieee754_jnl, __jnl)
 
 long double
 __ieee754_ynl (int n, long double x)
@@ -424,4 +425,4 @@  __ieee754_ynl (int n, long double x)
     ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_ynl, __ynl_finite)
+libm_alias_finite (__ieee754_ynl, __ynl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
index 9dc130cfa9..adf25b01f4 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 <libm-alias-finite.h>
 
 static const long double PIL = 3.1415926535897932384626433832795028841972E0L;
 static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L;
@@ -989,4 +990,4 @@  __ieee754_lgammal_r (long double x, int *signgamp)
   q += neval (p, RASY, NRASY) / x;
   return (q);
 }
-strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
+libm_alias_finite (__ieee754_lgammal_r, __lgammal_r)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
index 7efaacd0ed..bcf71f91e5 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 <libm-alias-finite.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,4 @@  done:
   z += e * L102A;
   return (z);
 }
-strong_alias (__ieee754_log10l, __log10l_finite)
+libm_alias_finite (__ieee754_log10l, __log10l)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
index 57b4b68052..4b3ac26c6e 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 <libm-alias-finite.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,4 @@  done:
   z += e;
   return (z);
 }
-strong_alias (__ieee754_log2l, __log2l_finite)
+libm_alias_finite (__ieee754_log2l, __log2l)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
index 65e17cb73c..c7f0af4759 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 <libm-alias-finite.h>
 
 /* log(1+x) = x - .5 x^2 + x^3 l(x)
    -.0078125 <= x <= +.0078125
@@ -297,4 +298,4 @@  __ieee754_logl(long double x)
   y += e * ln2a;
   return y;
 }
-strong_alias (__ieee754_logl, __logl_finite)
+libm_alias_finite (__ieee754_logl, __logl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
index df09c87662..74142a58e1 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 <libm-alias-finite.h>
 
 static const long double bp[] = {
   1.0L,
@@ -413,4 +414,4 @@  __ieee754_powl (long double x, long double y)
   math_check_force_underflow (z);
   return z;
 }
-strong_alias (__ieee754_powl, __powl_finite)
+libm_alias_finite (__ieee754_powl, __powl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
index efa83bdab7..8a99c7984d 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 <libm-alias-finite.h>
 
 static const long double zero = 0.0L;
 
@@ -78,4 +79,4 @@  __ieee754_remainderl(long double x, long double p)
 	  x = -x;
 	return x;
 }
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+libm_alias_finite (__ieee754_remainderl, __remainderl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
index f869fb068c..f30d701011 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 <libm-alias-finite.h>
 
 static const long double one = 1.0, shuge = 1.0e307;
 
@@ -77,4 +78,4 @@  __ieee754_sinhl(long double x)
     /* |x| > overflowthresold, sinh(x) overflow */
 	return x*shuge;
 }
-strong_alias (__ieee754_sinhl, __sinhl_finite)
+libm_alias_finite (__ieee754_sinhl, __sinhl)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
index d80d7e9de3..acef45e348 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 <libm-alias-finite.h>
 
 typedef union {int64_t i[2]; long double x; double d[2]; } mynumber;
 
@@ -99,4 +100,4 @@  long double __ieee754_sqrtl(long double x)
     return tm256*__ieee754_sqrtl(x*t512);
   }
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/ieee754/ldbl-96/e_acoshl.c b/sysdeps/ieee754/ldbl-96/e_acoshl.c
index 56b04d4cc4..0bdf4a998b 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 <libm-alias-finite.h>
 
 static const long double
 one	= 1.0,
@@ -58,4 +59,4 @@  __ieee754_acoshl(long double x)
 	    return __log1pl(t+sqrtl(2.0*t+t*t));
 	}
 }
-strong_alias (__ieee754_acoshl, __acoshl_finite)
+libm_alias_finite (__ieee754_acoshl, __acoshl)
diff --git a/sysdeps/ieee754/ldbl-96/e_asinl.c b/sysdeps/ieee754/ldbl-96/e_asinl.c
index 1740bd6f43..ed915ee0f2 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 <libm-alias-finite.h>
 
 static const long double
   one = 1.0L,
@@ -155,4 +156,4 @@  __ieee754_asinl (long double x)
   else
     return -t;
 }
-strong_alias (__ieee754_asinl, __asinl_finite)
+libm_alias_finite (__ieee754_asinl, __asinl)
diff --git a/sysdeps/ieee754/ldbl-96/e_atanhl.c b/sysdeps/ieee754/ldbl-96/e_atanhl.c
index 7312f84329..502ae7bb64 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 <libm-alias-finite.h>
 
 static const long double one = 1.0, huge = 1e4900L;
 
@@ -68,4 +69,4 @@  __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)
+libm_alias_finite (__ieee754_atanhl, __atanhl)
diff --git a/sysdeps/ieee754/ldbl-96/e_coshl.c b/sysdeps/ieee754/ldbl-96/e_coshl.c
index 1edf2c1542..fa3e8f15a0 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 <libm-alias-finite.h>
 
 static const long double one = 1.0, half=0.5, huge = 1.0e4900L;
 
@@ -84,4 +85,4 @@  __ieee754_coshl (long double x)
     /* |x| >= log(2*maxdouble), cosh(x) overflow */
 	return huge*huge;
 }
-strong_alias (__ieee754_coshl, __coshl_finite)
+libm_alias_finite (__ieee754_coshl, __coshl)
diff --git a/sysdeps/ieee754/ldbl-96/e_gammal_r.c b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
index fcda82d08d..d8a4aa1a50 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 <libm-alias-finite.h>
 
 /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
    approximation to gamma function.  */
@@ -209,4 +210,4 @@  __ieee754_gammal_r (long double x, int *signgamp)
   else
     return ret;
 }
-strong_alias (__ieee754_gammal_r, __gammal_r_finite)
+libm_alias_finite (__ieee754_gammal_r, __gammal_r)
diff --git a/sysdeps/ieee754/ldbl-96/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c
index f664e30c98..7cd487e862 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 <libm-alias-finite.h>
 
 long double __ieee754_hypotl(long double x, long double y)
 {
@@ -140,4 +141,4 @@  long double __ieee754_hypotl(long double x, long double y)
 	    return w;
 	} else return w;
 }
-strong_alias (__ieee754_hypotl, __hypotl_finite)
+libm_alias_finite (__ieee754_hypotl, __hypotl)
diff --git a/sysdeps/ieee754/ldbl-96/e_j0l.c b/sysdeps/ieee754/ldbl-96/e_j0l.c
index 76258bdf2b..715f56fb0b 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 <libm-alias-finite.h>
 
 static long double pzero (long double), qzero (long double);
 
@@ -165,7 +166,7 @@  __ieee754_j0l (long double x)
       return ((one + u) * (one - u) + z * (r / s));
     }
 }
-strong_alias (__ieee754_j0l, __j0l_finite)
+libm_alias_finite (__ieee754_j0l, __j0l)
 
 
 /* y0(x) = 2/pi ln(x) J0(x) + U(x^2)/V(x^2)
@@ -256,7 +257,7 @@  __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)
+libm_alias_finite (__ieee754_y0l, __y0l)
 
 /* 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 c0e8d304fd..2c967a6e56 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 <libm-alias-finite.h>
 
 static long double pone (long double), qone (long double);
 
@@ -167,7 +168,7 @@  __ieee754_j1l (long double x)
   r *= x;
   return (x * 0.5 + r / s);
 }
-strong_alias (__ieee754_j1l, __j1l_finite)
+libm_alias_finite (__ieee754_j1l, __j1l)
 
 
 /* Y1(x) = 2/pi * (log(x) * j1(x) - 1/x) + x R(x^2)
@@ -254,7 +255,7 @@  __ieee754_y1l (long double x)
   return (x * (u / v) +
 	  tpi * (__ieee754_j1l (x) * __ieee754_logl (x) - one / x));
 }
-strong_alias (__ieee754_y1l, __y1l_finite)
+libm_alias_finite (__ieee754_y1l, __y1l)
 
 
 /* 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 06aed7c287..ee0eff882d 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 <libm-alias-finite.h>
 
 static const long double
   invsqrtpi = 5.64189583547756286948079e-1L, two = 2.0e0L, one = 1.0e0L;
@@ -301,7 +302,7 @@  __ieee754_jnl (int n, long double x)
     math_check_force_underflow (ret);
   return ret;
 }
-strong_alias (__ieee754_jnl, __jnl_finite)
+libm_alias_finite (__ieee754_jnl, __jnl)
 
 long double
 __ieee754_ynl (int n, long double x)
@@ -407,4 +408,4 @@  __ieee754_ynl (int n, long double x)
     ret = copysignl (LDBL_MAX, ret) * LDBL_MAX;
   return ret;
 }
-strong_alias (__ieee754_ynl, __ynl_finite)
+libm_alias_finite (__ieee754_ynl, __ynl)
diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
index d2802692c0..c6f0e77057 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 <libm-alias-finite.h>
 
 static const long double
   half = 0.5L,
@@ -436,4 +437,4 @@  __ieee754_lgammal_r (long double x, int *signgamp)
   DIAG_POP_NEEDS_COMMENT;
   return r;
 }
-strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
+libm_alias_finite (__ieee754_lgammal_r, __lgammal_r)
diff --git a/sysdeps/ieee754/ldbl-96/e_sinhl.c b/sysdeps/ieee754/ldbl-96/e_sinhl.c
index a4b39783bc..fcda8c660f 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 <libm-alias-finite.h>
 
 static const long double one = 1.0, shuge = 1.0e4931L;
 
@@ -85,4 +86,4 @@  __ieee754_sinhl(long double x)
     /* |x| > overflowthreshold, sinhl(x) overflow */
 	return x*shuge;
 }
-strong_alias (__ieee754_sinhl, __sinhl_finite)
+libm_alias_finite (__ieee754_sinhl, __sinhl)
diff --git a/sysdeps/ieee754/libm-alias-finite.h b/sysdeps/ieee754/libm-alias-finite.h
new file mode 100644
index 0000000000..871eea13a7
--- /dev/null
+++ b/sysdeps/ieee754/libm-alias-finite.h
@@ -0,0 +1,39 @@ 
+/* Finite math compatibility macros.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBM_ALIAS_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
diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrt.c b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
index f8f1a3e242..c23540a2c4 100644
--- a/sysdeps/m68k/coldfire/fpu/e_sqrt.c
+++ b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
@@ -15,10 +15,12 @@ 
    License along with the GNU C Library.  If not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-finite.h>
+
 double
 __ieee754_sqrt (double x)
 {
   asm ("fdsqrt.d %1,%0" : "=f" (x) : "fm" (x));
   return x;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrtf.c b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
index 34100473c0..4cd8f1e367 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
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-finite.h>
+
 float
 __ieee754_sqrtf (float x)
 {
@@ -22,4 +24,4 @@  __ieee754_sqrtf (float x)
   asm ("fssqrt.s %1,%0" : "=f" (result) : "dm" (x));
   return result;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
diff --git a/sysdeps/m68k/m680x0/fpu/e_acos.c b/sysdeps/m68k/m680x0/fpu/e_acos.c
index af6b367bcc..348b84723b 100644
--- a/sysdeps/m68k/m680x0/fpu/e_acos.c
+++ b/sysdeps/m68k/m680x0/fpu/e_acos.c
@@ -18,10 +18,11 @@ 
 #include <math.h>
 #include <math_private.h>
 #include "mathimpl.h"
+#include <libm-alias-finite.h>
 
 #ifndef	FUNC
 # define FUNC __ieee754_acos
-# define FUNC_FINITE __acos_finite
+# define FUNC_FINITE __acos
 #endif
 #ifndef float_type
 # define float_type double
@@ -33,5 +34,5 @@  FUNC (float_type x)
   return __m81_u(FUNC)(x);
 }
 #ifdef FUNC_FINITE
-strong_alias (FUNC, FUNC_FINITE)
+libm_alias_finite (FUNC, FUNC_FINITE)
 #endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_acosf.c b/sysdeps/m68k/m680x0/fpu/e_acosf.c
index 300fff601e..b21d8b715d 100644
--- a/sysdeps/m68k/m680x0/fpu/e_acosf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_acosf.c
@@ -1,6 +1,6 @@ 
 #ifndef	FUNC
 # define FUNC __ieee754_acosf
-# define FUNC_FINITE __acosf_finite
+# define FUNC_FINITE __acosf
 #endif
 #define float_type float
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_acosl.c b/sysdeps/m68k/m680x0/fpu/e_acosl.c
index 35767f4e23..b1c2c70b5d 100644
--- a/sysdeps/m68k/m680x0/fpu/e_acosl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_acosl.c
@@ -1,6 +1,6 @@ 
 #ifndef FUNC
 # define FUNC __ieee754_acosl
-# define FUNC_FINITE __acosl_finite
+# define FUNC_FINITE __acosl
 #endif
 #define float_type long double
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_asin.c b/sysdeps/m68k/m680x0/fpu/e_asin.c
index 271a1f23d2..76f28680cb 100644
--- a/sysdeps/m68k/m680x0/fpu/e_asin.c
+++ b/sysdeps/m68k/m680x0/fpu/e_asin.c
@@ -1,3 +1,3 @@ 
 #define	FUNC	__ieee754_asin
-#define	FUNC_FINITE __asin_finite
+#define	FUNC_FINITE __asin
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_asinf.c b/sysdeps/m68k/m680x0/fpu/e_asinf.c
index ece691c6fb..db051be884 100644
--- a/sysdeps/m68k/m680x0/fpu/e_asinf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_asinf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_asinf
-#define FUNC_FINITE __asinf_finite
+#define FUNC_FINITE __asinf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_asinl.c b/sysdeps/m68k/m680x0/fpu/e_asinl.c
index 0c136f30eb..d0aa4fa658 100644
--- a/sysdeps/m68k/m680x0/fpu/e_asinl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_asinl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_asinl
-#define FUNC_FINITE __asinl_finite
+#define FUNC_FINITE __asinl
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_atan2.c b/sysdeps/m68k/m680x0/fpu/e_atan2.c
index dbac8c2750..48f22e3dbc 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 <libm-alias-finite.h>
 
 #ifndef SUFF
 #define SUFF
@@ -101,4 +102,4 @@  s(__ieee754_atan2) (float_type y, float_type x)
     }
   return z;
 }
-strong_alias (s(__ieee754_atan2), CONCATX (s (__atan2), _finite))
+libm_alias_finite (s(__ieee754_atan2), s (__atan2))
diff --git a/sysdeps/m68k/m680x0/fpu/e_atanh.c b/sysdeps/m68k/m680x0/fpu/e_atanh.c
index f5f7e7b520..50978bed34 100644
--- a/sysdeps/m68k/m680x0/fpu/e_atanh.c
+++ b/sysdeps/m68k/m680x0/fpu/e_atanh.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_atanh
-#define FUNC_FINITE __atanh_finite
+#define FUNC_FINITE __atanh
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_atanhf.c b/sysdeps/m68k/m680x0/fpu/e_atanhf.c
index cb464cbb7d..d46ca735a0 100644
--- a/sysdeps/m68k/m680x0/fpu/e_atanhf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_atanhf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_atanhf
-#define	FUNC_FINITE __atanhf_finite
+#define	FUNC_FINITE __atanhf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_atanhl.c b/sysdeps/m68k/m680x0/fpu/e_atanhl.c
index 8f276f5fad..0e58e14b3d 100644
--- a/sysdeps/m68k/m680x0/fpu/e_atanhl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_atanhl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_atanhl
-#define FUNC_FINITE __atanhl_finite
+#define FUNC_FINITE __atanhl
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_cosh.c b/sysdeps/m68k/m680x0/fpu/e_cosh.c
index aaba11be3a..2da818bc6c 100644
--- a/sysdeps/m68k/m680x0/fpu/e_cosh.c
+++ b/sysdeps/m68k/m680x0/fpu/e_cosh.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_cosh
-#define FUNC_FINITE __cosh_finite
+#define FUNC_FINITE __cosh
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_coshf.c b/sysdeps/m68k/m680x0/fpu/e_coshf.c
index 0884741c5c..11f3a20c61 100644
--- a/sysdeps/m68k/m680x0/fpu/e_coshf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_coshf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_coshf
-#define FUNC_FINITE __coshf_finite
+#define FUNC_FINITE __coshf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_coshl.c b/sysdeps/m68k/m680x0/fpu/e_coshl.c
index 7fc9b7b91c..7fdc933787 100644
--- a/sysdeps/m68k/m680x0/fpu/e_coshl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_coshl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_coshl
-#define FUNC_FINITE __coshl_finite
+#define FUNC_FINITE __coshl
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp.c b/sysdeps/m68k/m680x0/fpu/e_exp.c
index 9f228034a1..a302e26ea4 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp
-#define FUNC_FINITE __exp_finite
+#define FUNC_FINITE __exp
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10.c b/sysdeps/m68k/m680x0/fpu/e_exp10.c
index e66a80599c..a2224acbe6 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp10.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp10.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp10
-#define FUNC_FINITE __exp10_finite
+#define FUNC_FINITE __exp10
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10f.c b/sysdeps/m68k/m680x0/fpu/e_exp10f.c
index 7a3bdd4186..f58fddd8a6 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp10f.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp10f.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp10f
-#define FUNC_FINITE __exp10f_finite
+#define FUNC_FINITE __exp10f
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp10l.c b/sysdeps/m68k/m680x0/fpu/e_exp10l.c
index e2a6255a76..2051ed4971 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp10l.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp10l.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp10l
-#define FUNC_FINITE __exp10l_finite
+#define FUNC_FINITE __exp10l
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp2.c b/sysdeps/m68k/m680x0/fpu/e_exp2.c
index 35e29ae653..7ff26f0dc8 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp2.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp2.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp2
-#define FUNC_FINITE __exp2_finite
+#define FUNC_FINITE __exp2
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp2f.c b/sysdeps/m68k/m680x0/fpu/e_exp2f.c
index e57ddb5365..68557e41ee 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp2f.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp2f.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp2f
-#define FUNC_FINITE __exp2f_finite
+#define FUNC_FINITE __exp2f
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_exp2l.c b/sysdeps/m68k/m680x0/fpu/e_exp2l.c
index c5854ae427..e3b191d8ff 100644
--- a/sysdeps/m68k/m680x0/fpu/e_exp2l.c
+++ b/sysdeps/m68k/m680x0/fpu/e_exp2l.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_exp2l
-#define FUNC_FINITE __exp2l_finite
+#define FUNC_FINITE __exp2l
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_expf.c b/sysdeps/m68k/m680x0/fpu/e_expf.c
index af1e019504..76aa5ff3d6 100644
--- a/sysdeps/m68k/m680x0/fpu/e_expf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_expf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_expf
-#define FUNC_FINITE __expf_finite
+#define FUNC_FINITE __expf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_expl.c b/sysdeps/m68k/m680x0/fpu/e_expl.c
index 543eb0edf5..b807c51bf5 100644
--- a/sysdeps/m68k/m680x0/fpu/e_expl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_expl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_expl
-#define FUNC_FINITE __expl_finite
+#define FUNC_FINITE __expl
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_fmod.c b/sysdeps/m68k/m680x0/fpu/e_fmod.c
index 8b8f91ab59..8bf5c5d369 100644
--- a/sysdeps/m68k/m680x0/fpu/e_fmod.c
+++ b/sysdeps/m68k/m680x0/fpu/e_fmod.c
@@ -18,10 +18,11 @@ 
 #include <math.h>
 #include <math_private.h>
 #include "mathimpl.h"
+#include <libm-alias-finite.h>
 
 #ifndef FUNC
 # define FUNC __ieee754_fmod
-# define FUNC_FINITE __fmod_finite
+# define FUNC_FINITE __fmod
 #endif
 #ifndef float_type
 # define float_type double
@@ -33,5 +34,5 @@  FUNC (float_type x, float_type y)
   return __m81_u(FUNC)(x, y);
 }
 #ifdef FUNC_FINITE
-strong_alias (FUNC, FUNC_FINITE)
+libm_alias_finite (FUNC, FUNC_FINITE)
 #endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_fmodf.c b/sysdeps/m68k/m680x0/fpu/e_fmodf.c
index 38995c3768..ffae68f17f 100644
--- a/sysdeps/m68k/m680x0/fpu/e_fmodf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_fmodf.c
@@ -1,6 +1,6 @@ 
 #ifndef FUNC
 # define FUNC __ieee754_fmodf
-# define FUNC_FINITE __fmodf_finite
+# define FUNC_FINITE __fmodf
 #endif
 #define float_type float
 #include <e_fmod.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_fmodl.c b/sysdeps/m68k/m680x0/fpu/e_fmodl.c
index 8d793b2de7..8f1cbabda6 100644
--- a/sysdeps/m68k/m680x0/fpu/e_fmodl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_fmodl.c
@@ -1,6 +1,6 @@ 
 #ifndef FUNC
 # define FUNC __ieee754_fmodl
-# define FUNC_FINITE __fmodl_finite
+# define FUNC_FINITE __fmodl
 #endif
 #define float_type long double
 #include <e_fmod.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log.c b/sysdeps/m68k/m680x0/fpu/e_log.c
index 628c62b31a..acc113b952 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log
-#define FUNC_FINITE __log_finite
+#define FUNC_FINITE __log
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log10.c b/sysdeps/m68k/m680x0/fpu/e_log10.c
index 78e0693e9d..11ff6c2801 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log10.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log10.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log10
-#define FUNC_FINITE __log10_finite
+#define FUNC_FINITE __log10
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log10f.c b/sysdeps/m68k/m680x0/fpu/e_log10f.c
index 452a75ec15..fd54c47da4 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log10f.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log10f.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log10f
-#define FUNC_FINITE __log10f_finite
+#define FUNC_FINITE __log10f
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log10l.c b/sysdeps/m68k/m680x0/fpu/e_log10l.c
index 7c5dcb8e18..5807d3d50a 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log10l.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log10l.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log10l
-#define FUNC_FINITE __log10l_finite
+#define FUNC_FINITE __log10l
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log2.c b/sysdeps/m68k/m680x0/fpu/e_log2.c
index a00ddbdc96..74610e58f6 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log2.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log2.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log2
-#define FUNC_FINITE __log2_finite
+#define FUNC_FINITE __log2
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log2f.c b/sysdeps/m68k/m680x0/fpu/e_log2f.c
index 670b69c8a9..77ea067429 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log2f.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log2f.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log2f
-#define FUNC_FINITE __log2f_finite
+#define FUNC_FINITE __log2f
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_log2l.c b/sysdeps/m68k/m680x0/fpu/e_log2l.c
index 4a97a00235..72e6bf4fad 100644
--- a/sysdeps/m68k/m680x0/fpu/e_log2l.c
+++ b/sysdeps/m68k/m680x0/fpu/e_log2l.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_log2l
-#define FUNC_FINITE __log2l_finite
+#define FUNC_FINITE __log2l
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_logf.c b/sysdeps/m68k/m680x0/fpu/e_logf.c
index 1989a95431..0fa0311dde 100644
--- a/sysdeps/m68k/m680x0/fpu/e_logf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_logf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_logf
-#define FUNC_FINITE __logf_finite
+#define FUNC_FINITE __logf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_logl.c b/sysdeps/m68k/m680x0/fpu/e_logl.c
index 9ab842c3fc..322ebdab85 100644
--- a/sysdeps/m68k/m680x0/fpu/e_logl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_logl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_logl
-#define FUNC_FINITE __logl_finite
+#define FUNC_FINITE __logl
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_pow.c b/sysdeps/m68k/m680x0/fpu/e_pow.c
index 45c767d34f..e81ce5f01a 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 <libm-alias-finite.h>
 
 #ifndef SUFF
 #define SUFF
@@ -123,4 +124,4 @@  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))
+libm_alias_finite (s(__ieee754_pow), s (__pow))
diff --git a/sysdeps/m68k/m680x0/fpu/e_remainder.c b/sysdeps/m68k/m680x0/fpu/e_remainder.c
index f7732af8c5..cc1422c48b 100644
--- a/sysdeps/m68k/m680x0/fpu/e_remainder.c
+++ b/sysdeps/m68k/m680x0/fpu/e_remainder.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_remainder
-#define FUNC_FINITE __remainder_finite
+#define FUNC_FINITE __remainder
 #include <e_fmod.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_remainderf.c b/sysdeps/m68k/m680x0/fpu/e_remainderf.c
index 94b53e7a80..77f1f029b0 100644
--- a/sysdeps/m68k/m680x0/fpu/e_remainderf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_remainderf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_remainderf
-#define FUNC_FINITE __remainderf_finite
+#define FUNC_FINITE __remainderf
 #include <e_fmodf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_remainderl.c b/sysdeps/m68k/m680x0/fpu/e_remainderl.c
index d5b59607ab..ce3490a5ec 100644
--- a/sysdeps/m68k/m680x0/fpu/e_remainderl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_remainderl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_remainderl
-#define FUNC_FINITE __remainderl_finite
+#define FUNC_FINITE __remainderl
 #include <e_fmodl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_scalb.c b/sysdeps/m68k/m680x0/fpu/e_scalb.c
index d9ed2c0cb3..2f8e829baa 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 <libm-alias-finite.h>
 
 #ifndef SUFF
 #define SUFF
@@ -57,4 +58,4 @@  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))
+libm_alias_finite (s(__ieee754_scalb), s (__scalb))
diff --git a/sysdeps/m68k/m680x0/fpu/e_sinh.c b/sysdeps/m68k/m680x0/fpu/e_sinh.c
index 1e1b1c1180..3ab63c52da 100644
--- a/sysdeps/m68k/m680x0/fpu/e_sinh.c
+++ b/sysdeps/m68k/m680x0/fpu/e_sinh.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_sinh
-#define FUNC_FINITE __sinh_finite
+#define FUNC_FINITE __sinh
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_sinhf.c b/sysdeps/m68k/m680x0/fpu/e_sinhf.c
index 13c79f9d96..20f460b8bf 100644
--- a/sysdeps/m68k/m680x0/fpu/e_sinhf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_sinhf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_sinhf
-#define FUNC_FINITE __sinhf_finite
+#define FUNC_FINITE __sinhf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_sinhl.c b/sysdeps/m68k/m680x0/fpu/e_sinhl.c
index 47f0f24401..bf85464405 100644
--- a/sysdeps/m68k/m680x0/fpu/e_sinhl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_sinhl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_sinhl
-#define FUNC_FINITE __sinhl_finite
+#define FUNC_FINITE __sinhl
 #include <e_acosl.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrt.c b/sysdeps/m68k/m680x0/fpu/e_sqrt.c
index 9a250cbc25..57a90d853d 100644
--- a/sysdeps/m68k/m680x0/fpu/e_sqrt.c
+++ b/sysdeps/m68k/m680x0/fpu/e_sqrt.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_sqrt
-#define FUNC_FINITE __sqrt_finite
+#define FUNC_FINITE __sqrt
 #include <e_acos.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrtf.c b/sysdeps/m68k/m680x0/fpu/e_sqrtf.c
index 372c3eb2f4..8681e29fae 100644
--- a/sysdeps/m68k/m680x0/fpu/e_sqrtf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_sqrtf.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_sqrtf
-#define FUNC_FINITE __sqrtf_finite
+#define FUNC_FINITE __sqrtf
 #include <e_acosf.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_sqrtl.c b/sysdeps/m68k/m680x0/fpu/e_sqrtl.c
index df5f44e6a7..6a109d2410 100644
--- a/sysdeps/m68k/m680x0/fpu/e_sqrtl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_sqrtl.c
@@ -1,3 +1,3 @@ 
 #define FUNC __ieee754_sqrtl
-#define FUNC_FINITE __sqrtl_finite
+#define FUNC_FINITE __sqrtl
 #include <e_acosl.c>
diff --git a/sysdeps/mips/fpu/e_sqrt.c b/sysdeps/mips/fpu/e_sqrt.c
index a8231160b1..f7bd78c960 100644
--- a/sysdeps/mips/fpu/e_sqrt.c
+++ b/sysdeps/mips/fpu/e_sqrt.c
@@ -18,7 +18,7 @@ 
 
 
 #include <sgidefs.h>
-
+#include <libm-alias-finite.h>
 
 #if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
 
@@ -29,7 +29,7 @@  __ieee754_sqrt (double x)
   __asm__ ("sqrt.d %0,%1" : "=f" (z) : "f" (x));
   return z;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
 
 #else
 
diff --git a/sysdeps/mips/fpu/e_sqrtf.c b/sysdeps/mips/fpu/e_sqrtf.c
index c7e71a3f66..525ab8a953 100644
--- a/sysdeps/mips/fpu/e_sqrtf.c
+++ b/sysdeps/mips/fpu/e_sqrtf.c
@@ -18,7 +18,7 @@ 
 
 
 #include <sgidefs.h>
-
+#include <libm-alias-finite.h>
 
 #if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
 
@@ -29,7 +29,7 @@  __ieee754_sqrtf (float x)
   __asm__ ("sqrt.s %0,%1" : "=f" (z) : "f" (x));
   return z;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
 
 #else
 
diff --git a/sysdeps/mips/mips64/e_sqrtl.c b/sysdeps/mips/mips64/e_sqrtl.c
index 8386194a66..d64e7d56a7 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 <libm-alias-finite.h>
 
 long double
 __ieee754_sqrtl (const long double a)
@@ -36,4 +37,4 @@  __ieee754_sqrtl (const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c
index 30d00e2603..ace4224ce8 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 <libm-alias-finite.h>
 
 /* __ieee754_hypot(x,y)
  *
@@ -82,4 +83,6 @@  __ieee754_hypot (double x, double y)
     }
   return sqrt (x * x + y * y);
 }
-strong_alias (__ieee754_hypot, __hypot_finite)
+#ifndef __ieee754_hypot
+libm_alias_finite (__ieee754_hypot, __hypot)
+#endif
diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c
index fe389deaec..cad76e54ac 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 <libm-alias-finite.h>
 
 /* __ieee754_hypotf(x,y)
 
@@ -73,4 +74,6 @@  __ieee754_hypotf (float x, float y)
 
   return sqrt ((double) x * x + (double) y * y);
 }
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+#ifndef __ieee754_hypotf
+libm_alias_finite (__ieee754_hypotf, __hypotf)
+#endif
diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
index 85a4fa272e..fa507d40ea 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 <libm-alias-finite.h>
 
 #ifndef _ARCH_PPCSQ
 static const double almost_half = 0.5000000000000001;	/* 0.5 + 2^-53 */
@@ -173,4 +174,4 @@  __ieee754_sqrt (double x)
 
   return z;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
index 7a392867d2..d7da3f6044 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 <libm-alias-finite.h>
 
 #ifndef _ARCH_PPCSQ
 static const float almost_half = 0.50000006;	/* 0.5 + 2^-24 */
@@ -148,4 +149,4 @@  __ieee754_sqrtf (float x)
 
   return z;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
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 084b50e279..90caf8697a 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 d56c10b430..7c587dbe73 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 91e76bab34..d3cbdd288e 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
@@ -19,7 +19,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include "init-arch.h"
 
 extern __typeof (__ieee754_hypot) __ieee754_hypot_ppc32 attribute_hidden;
@@ -30,4 +30,4 @@  libc_ifunc (__ieee754_hypot,
 	    ? __ieee754_hypot_power7
             : __ieee754_hypot_ppc32);
 
-strong_alias (__ieee754_hypot, __hypot_finite)
+libm_alias_finite (__ieee754_hypot, __hypot)
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 02ba1b60a0..a33916d679 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 b482ae7e25..f0a49c6909 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 5c6af03ef2..c3d927fc69 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
@@ -19,7 +19,7 @@ 
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
-#include <shlib-compat.h>
+#include <libm-alias-finite.h>
 #include "init-arch.h"
 
 extern __typeof (__ieee754_hypotf) __ieee754_hypotf_ppc32 attribute_hidden;
@@ -30,4 +30,4 @@  libc_ifunc (__ieee754_hypotf,
 	    ? __ieee754_hypotf_power7
             : __ieee754_hypotf_ppc32);
 
-strong_alias (__ieee754_hypotf, __hypotf_finite)
+libm_alias_finite (__ieee754_hypotf, __hypotf)
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c b/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
index 05781b3367..6951a9af00 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
+++ b/sysdeps/powerpc/powerpc64/le/fpu/e_sqrtf128.c
@@ -27,6 +27,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 /* Unavoidable hacks since TFmode is assumed to be binary128 when
    -mabi=ibmlongdouble is used.  */
@@ -53,4 +54,4 @@  __ieee754_sqrtf128 (__float128 a)
   FP_HANDLE_EXCEPTIONS;
   return r;
 }
-strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
+libm_alias_finite (__ieee754_sqrtf128, __sqrtf128)
diff --git a/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c b/sysdeps/powerpc/powerpc64/le/power9/fpu/e_sqrtf128.c
index 633af0ba3e..4ad441fdd0 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
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-finite.h>
+
 __float128
 __ieee754_sqrtf128 (__float128 a)
 {
@@ -33,4 +35,4 @@  __ieee754_sqrtf128 (__float128 a)
   asm ("xssqrtqp %0,%1" : "=v" (z) : "v" (a));
   return z;
 }
-strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
+libm_alias_finite (__ieee754_sqrtf128, __sqrtf128)
diff --git a/sysdeps/riscv/e_sqrtl.c b/sysdeps/riscv/e_sqrtl.c
index 64cc61d365..8e1929354e 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 <libm-alias-finite.h>
 
 long double
 __ieee754_sqrtl (const long double a)
@@ -34,4 +35,4 @@  __ieee754_sqrtl (const long double a)
   FP_HANDLE_EXCEPTIONS;
   return c;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/riscv/rvd/e_sqrt.c b/sysdeps/riscv/rvd/e_sqrt.c
index d4e5215139..6639029319 100644
--- a/sysdeps/riscv/rvd/e_sqrt.c
+++ b/sysdeps/riscv/rvd/e_sqrt.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 double
 __ieee754_sqrt (double x)
@@ -24,4 +25,4 @@  __ieee754_sqrt (double x)
   asm ("fsqrt.d %0, %1" : "=f" (x) : "f" (x));
   return x;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/riscv/rvf/e_sqrtf.c b/sysdeps/riscv/rvf/e_sqrtf.c
index 5791350e7c..6cf88667aa 100644
--- a/sysdeps/riscv/rvf/e_sqrtf.c
+++ b/sysdeps/riscv/rvf/e_sqrtf.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 float
 __ieee754_sqrtf (float x)
@@ -24,4 +25,4 @@  __ieee754_sqrtf (float x)
   asm ("fsqrt.s %0, %1" : "=f" (x) : "f" (x));
   return x;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
diff --git a/sysdeps/s390/fpu/e_sqrt.c b/sysdeps/s390/fpu/e_sqrt.c
index 34c1ea3043..d23dee7efd 100644
--- a/sysdeps/s390/fpu/e_sqrt.c
+++ b/sysdeps/s390/fpu/e_sqrt.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 double
 __ieee754_sqrt (double x)
@@ -26,4 +27,4 @@  __ieee754_sqrt (double x)
   __asm__ ( "sqdbr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/s390/fpu/e_sqrtf.c b/sysdeps/s390/fpu/e_sqrtf.c
index 5450d4cc7e..f9ead5182b 100644
--- a/sysdeps/s390/fpu/e_sqrtf.c
+++ b/sysdeps/s390/fpu/e_sqrtf.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 float
 __ieee754_sqrtf (float x)
@@ -26,4 +27,4 @@  __ieee754_sqrtf (float x)
   __asm__ ( "sqebr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
diff --git a/sysdeps/s390/fpu/e_sqrtl.c b/sysdeps/s390/fpu/e_sqrtl.c
index 1f551fe965..965dd3fe76 100644
--- a/sysdeps/s390/fpu/e_sqrtl.c
+++ b/sysdeps/s390/fpu/e_sqrtl.c
@@ -18,6 +18,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 long double
 __ieee754_sqrtl (long double x)
@@ -27,4 +28,4 @@  __ieee754_sqrtl (long double x)
   __asm__ ( "sqxbr %0,%1" : "=f" (res) : "f" (x) );
   return res;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/sparc/sparc32/e_sqrt.c b/sysdeps/sparc/sparc32/e_sqrt.c
index 2441b6c0f9..73b709cdb0 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 <libm-alias-finite.h>
 
 #ifndef	__GNUC__
   #error This file uses GNU C extensions; you must compile with GCC.
@@ -30,4 +31,4 @@  __ieee754_sqrt (double x)
   asm ("fsqrtd %1, %0" : "=f" (result) : "f" (x));
   return result;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/sparc/sparc64/fpu/e_sqrtl.c b/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
index 22b62b281c..67b0f72e2d 100644
--- a/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
+++ b/sysdeps/sparc/sparc64/fpu/e_sqrtl.c
@@ -18,6 +18,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 extern void _Qp_sqrt(long double *, const long double *);
 
@@ -28,4 +29,4 @@  __ieee754_sqrtl (long double x)
   _Qp_sqrt (&ret, &x);
   return ret;
 }
-strong_alias (__ieee754_sqrtl, __sqrtl_finite)
+libm_alias_finite (__ieee754_sqrtl, __sqrtl)
diff --git a/sysdeps/x86/fpu/e_sqrtf128.c b/sysdeps/x86/fpu/e_sqrtf128.c
index 5c641a069c..f0075cc78e 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 <libm-alias-finite.h>
 
 __float128
 __ieee754_sqrtf128 (__float128 a)
@@ -44,4 +45,4 @@  __ieee754_sqrtf128 (__float128 a)
   FP_HANDLE_EXCEPTIONS;
   return r;
 }
-strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)
+libm_alias_finite (__ieee754_sqrtf128, __sqrtf128)
diff --git a/sysdeps/x86_64/fpu/e_exp2l.S b/sysdeps/x86_64/fpu/e_exp2l.S
index 0e059b7565..f16760840b 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 <libm-alias-finite.h>
 
 DEFINE_LDBL_MIN
 
@@ -55,4 +56,4 @@  ENTRY(__ieee754_exp2l)
 	fldz				/* Set result to 0.  */
 2:	ret
 END (__ieee754_exp2l)
-strong_alias (__ieee754_exp2l, __exp2l_finite)
+libm_alias_finite (__ieee754_exp2l, __exp2l)
diff --git a/sysdeps/x86_64/fpu/e_expl.S b/sysdeps/x86_64/fpu/e_expl.S
index b75a103803..9835ac2a3b 100644
--- a/sysdeps/x86_64/fpu/e_expl.S
+++ b/sysdeps/x86_64/fpu/e_expl.S
@@ -25,6 +25,7 @@ 
 #include <libm-alias-ldouble.h>
 #include <machine/asm.h>
 #include <x86_64-math-asm.h>
+#include <libm-alias-finite.h>
 
 #ifdef USE_AS_EXP10L
 # define IEEE754_EXPL __ieee754_exp10l
@@ -212,9 +213,12 @@  ENTRY(IEEE754_EXPL)
 	fadd	%st
 	ret
 END(IEEE754_EXPL)
+
 #ifdef USE_AS_EXPM1L
 libm_hidden_def (__expm1l)
 libm_alias_ldouble (__expm1, expm1)
+#elif defined USE_AS_EXP10L
+libm_alias_finite (__ieee754_exp10l, __exp10l)
 #else
-strong_alias (IEEE754_EXPL, EXPL_FINITE)
+libm_alias_finite (__ieee754_expl, __expl)
 #endif
diff --git a/sysdeps/x86_64/fpu/e_fmodl.S b/sysdeps/x86_64/fpu/e_fmodl.S
index 07c50df8d1..a06ad6833b 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 <libm-alias-finite.h>
 
 RCSID("$NetBSD: $")
 
@@ -20,4 +21,4 @@  ENTRY(__ieee754_fmodl)
 	fstp	%st(1)
 	ret
 END (__ieee754_fmodl)
-strong_alias (__ieee754_fmodl, __fmodl_finite)
+libm_alias_finite (__ieee754_fmodl, __fmodl)
diff --git a/sysdeps/x86_64/fpu/e_log10l.S b/sysdeps/x86_64/fpu/e_log10l.S
index e0cb88e32e..552bc00ad0 100644
--- a/sysdeps/x86_64/fpu/e_log10l.S
+++ b/sysdeps/x86_64/fpu/e_log10l.S
@@ -9,6 +9,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -90,3 +91,4 @@  ENTRY(__log10l_finite)
 	fyl2xp1			// log10(x)
 	ret
 END(__log10l_finite)
+libm_alias_finite (__log10l_finite, __log10l)
diff --git a/sysdeps/x86_64/fpu/e_log2l.S b/sysdeps/x86_64/fpu/e_log2l.S
index 023ec29164..1459cef3d7 100644
--- a/sysdeps/x86_64/fpu/e_log2l.S
+++ b/sysdeps/x86_64/fpu/e_log2l.S
@@ -8,6 +8,7 @@ 
  */
 
 #include <machine/asm.h>
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -89,3 +90,4 @@  ENTRY(__log2l_finite)
 	fyl2xp1			// log(x)
 	ret
 END (__log2l_finite)
+libm_alias_finite (__log2l_finite, __log2l)
diff --git a/sysdeps/x86_64/fpu/e_logl.S b/sysdeps/x86_64/fpu/e_logl.S
index 0d3576f48b..37cd5b6ae9 100644
--- a/sysdeps/x86_64/fpu/e_logl.S
+++ b/sysdeps/x86_64/fpu/e_logl.S
@@ -7,7 +7,7 @@ 
  */
 
 #include <machine/asm.h>
-
+#include <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -92,3 +92,4 @@  ENTRY(__logl_finite)
 	fyl2xp1			// log(x)
 	ret
 END (__logl_finite)
+libm_alias_finite (__logl_finite, __logl)
diff --git a/sysdeps/x86_64/fpu/e_powl.S b/sysdeps/x86_64/fpu/e_powl.S
index 997736ab53..94b6ed3174 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 <libm-alias-finite.h>
 
 	.section .rodata.cst8,"aM",@progbits,8
 
@@ -430,4 +431,4 @@  ENTRY(__ieee754_powl)
 	ret
 
 END(__ieee754_powl)
-strong_alias (__ieee754_powl, __powl_finite)
+libm_alias_finite (__ieee754_powl, __powl)
diff --git a/sysdeps/x86_64/fpu/e_remainderl.S b/sysdeps/x86_64/fpu/e_remainderl.S
index 4ee0910912..994bfb3e80 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 <libm-alias-finite.h>
 
 ENTRY(__ieee754_remainderl)
 	fldt	24(%rsp)
@@ -18,4 +19,4 @@  ENTRY(__ieee754_remainderl)
 	fstp	%st(1)
 	ret
 END (__ieee754_remainderl)
-strong_alias (__ieee754_remainderl, __remainderl_finite)
+libm_alias_finite (__ieee754_remainderl, __remainderl)
diff --git a/sysdeps/x86_64/fpu/e_scalbl.S b/sysdeps/x86_64/fpu/e_scalbl.S
index 2982dc3b9e..c13cba4b13 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 <libm-alias-finite.h>
 
 	.section .rodata
 
@@ -86,4 +87,4 @@  ENTRY(__ieee754_scalbl)
 	fdiv	%st
 	ret
 END(__ieee754_scalbl)
-strong_alias (__ieee754_scalbl, __scalbl_finite)
+libm_alias_finite (__ieee754_scalbl, __scalbl)
diff --git a/sysdeps/x86_64/fpu/e_sqrt.c b/sysdeps/x86_64/fpu/e_sqrt.c
index df58eaab60..19caa2154b 100644
--- a/sysdeps/x86_64/fpu/e_sqrt.c
+++ b/sysdeps/x86_64/fpu/e_sqrt.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 #undef __ieee754_sqrt
 double
@@ -28,4 +29,4 @@  __ieee754_sqrt (double x)
 
   return res;
 }
-strong_alias (__ieee754_sqrt, __sqrt_finite)
+libm_alias_finite (__ieee754_sqrt, __sqrt)
diff --git a/sysdeps/x86_64/fpu/e_sqrtf.c b/sysdeps/x86_64/fpu/e_sqrtf.c
index b5ad96057e..2162a4bc84 100644
--- a/sysdeps/x86_64/fpu/e_sqrtf.c
+++ b/sysdeps/x86_64/fpu/e_sqrtf.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math_private.h>
+#include <libm-alias-finite.h>
 
 #undef __ieee754_sqrtf
 float
@@ -28,4 +29,4 @@  __ieee754_sqrtf (float x)
 
   return res;
 }
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
+libm_alias_finite (__ieee754_sqrtf, __sqrtf)
diff --git a/sysdeps/x86_64/fpu/multiarch/e_asin.c b/sysdeps/x86_64/fpu/multiarch/e_asin.c
index b8eb074b23..dc1bd23485 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
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-finite.h>
+
 extern double __redirect_ieee754_asin (double);
 extern double __redirect_ieee754_acos (double);
 
@@ -24,7 +26,7 @@  extern double __redirect_ieee754_acos (double);
 
 libc_ifunc_redirected (__redirect_ieee754_asin, __ieee754_asin,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_asin, __asin_finite)
+libm_alias_finite (__ieee754_asin, __asin)
 
 #undef SYMBOL_NAME
 #define SYMBOL_NAME ieee754_acos
@@ -32,8 +34,7 @@  strong_alias (__ieee754_asin, __asin_finite)
 
 libc_ifunc_redirected (__redirect_ieee754_acos, __ieee754_acos,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_acos, __acos_finite)
-
+libm_alias_finite (__ieee754_acos, __acos)
 
 #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 2dac79091a..5ae155cdeb 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
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-finite.h>
+
 extern double __redirect_ieee754_atan2 (double, double);
 
 #define SYMBOL_NAME ieee754_atan2
@@ -23,7 +25,7 @@  extern double __redirect_ieee754_atan2 (double, double);
 
 libc_ifunc_redirected (__redirect_ieee754_atan2,
 		       __ieee754_atan2, IFUNC_SELECTOR ());
-strong_alias (__ieee754_atan2, __atan2_finite)
+libm_alias_finite (__ieee754_atan2, __atan2)
 
 #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 1da616f7f9..03fec227f2 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_exp.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 extern double __redirect_ieee754_exp (double);
 
@@ -25,7 +26,7 @@  extern double __redirect_ieee754_exp (double);
 
 libc_ifunc_redirected (__redirect_ieee754_exp, __ieee754_exp,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_exp, __exp_finite)
+libm_alias_finite (__ieee754_exp, __exp)
 
 #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 7c10b16599..58d21a7182 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <libm-alias-finite.h>
 
 extern float __redirect_exp2f (float);
 
@@ -26,15 +27,14 @@  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)
+libm_alias_finite (__exp2f, __exp2f)
 
 #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 077929bde4..ef620a5355 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_expf.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_expf.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <libm-alias-finite.h>
 
 extern float __redirect_expf (float);
 
@@ -29,15 +30,14 @@  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)
+libm_alias_finite (__expf, __expf)
 
 #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 5973a1d0a6..bf469f5683 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 extern double __redirect_ieee754_log (double);
 
@@ -25,7 +26,7 @@  extern double __redirect_ieee754_log (double);
 
 libc_ifunc_redirected (__redirect_ieee754_log, __ieee754_log,
 		       IFUNC_SELECTOR ());
-strong_alias (__ieee754_log, __log_finite)
+libm_alias_finite (__ieee754_log, __log)
 
 #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 b57041e62a..cc823b3486 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_log2f.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <libm-alias-finite.h>
 
 extern float __redirect_log2f (float);
 
@@ -29,15 +30,14 @@  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)
+libm_alias_finite (__log2f, __log2f)
 
 #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 c149d05684..d6341b2a67 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_logf.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_logf.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <libm-alias-finite.h>
 
 extern float __redirect_logf (float);
 
@@ -29,15 +30,14 @@  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)
+libm_alias_finite (__logf, __logf)
 
 #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 27e7c47f0b..8661af543e 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_pow.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_pow.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <math.h>
+#include <libm-alias-finite.h>
 
 extern double __redirect_ieee754_pow (double, double);
 
@@ -25,7 +26,7 @@  extern double __redirect_ieee754_pow (double, double);
 
 libc_ifunc_redirected (__redirect_ieee754_pow,
 		       __ieee754_pow, IFUNC_SELECTOR ());
-strong_alias (__ieee754_pow, __pow_finite)
+libm_alias_finite (__ieee754_pow, __pow)
 
 #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 ab35e069a5..449fabbcb2 100644
--- a/sysdeps/x86_64/fpu/multiarch/e_powf.c
+++ b/sysdeps/x86_64/fpu/multiarch/e_powf.c
@@ -17,6 +17,7 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-float.h>
+#include <libm-alias-finite.h>
 
 #define powf __redirect_powf
 #define __DECL_SIMD___redirect_powf
@@ -32,15 +33,14 @@  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)
+libm_alias_finite (__powf, __powf)
 
 #define __powf __powf_sse2
 #include <sysdeps/ieee754/flt-32/e_powf.c>