This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc/azanella/ffinite-math-compat] Add libm_alias_finite for _finite symbols


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9ed932b7c34cbf05ccbe835d1d8af3512ad0ae98

commit 9ed932b7c34cbf05ccbe835d1d8af3512ad0ae98
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Tue Jul 16 12:17:22 2019 -0300

    Add libm_alias_finite for _finite symbols
    
    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>

Diff:
---
 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 --
 .../powerpc32/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 +-
 .../powerpc/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(-)

diff --git a/math/e_exp10.c b/math/e_exp10.c
index 665c5d1..fa05ea3 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 92a2882..0bc1300 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 cd0ec36..a0f202d 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 66a8bf2..5a4d2e2 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 4c3194f..c68a96d 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 1f7119c..4ac219b 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 00dfd3d..b5a14da 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 6fc031f..d830df7 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 14484ca..6f03112 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 8aa342b..595d62d 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 609e509..fc2b902 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 5b1b29c..42aa6c2 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 fc5b1ab..6f33f78 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 ad523f5..102d9ef 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 eeb9095..917d83a 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 36ae9fa..fdcf335 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 6cd88c8..bd58794 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 586c7fc..9d9825d 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 54930af..cf2b75d 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 58620f1..082f023 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 ae73ba3..ac8749a 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 c44d633..1f4f9e5 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 ab08931..b99088a 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 39c8b47..74028c7 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 1102bde..7e37843 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 25f43bb..d6b550f 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 2bc909a..d237fee 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 9f88bfc..531f9b2 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 77208fa..353d16a 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 169a7b2..62880aa 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 b85cd11..19d8f11 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 a7e7f13..b9fd62f 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 acb5160..2758a73 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 1812b34..196ce87 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 fc16a96..0939f7d 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 c4cb73d..6cf28a7 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 18a627e..a7c459e 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 26b3acc..93f20e5 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 ece4d98..8adc8d5 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 49700ae..4476539 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 4c0f6d2..f4d1e79 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 34a1384..ffc2a34 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 335df22..9d2195e 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 1727708..ead30d8 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 72a3b88..54bc82d 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 9326b19..cd57a5d 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 73ff0ff..57725cd 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 73e62ea..82decff 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 53127d7..3e019cc 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 4c7ad09..4ccf207 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 f7ec0a1..fff0fc1 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 f7867aa..5b71e91 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 cfd390b..2257db3 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 5ec23a3..551660c 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 370924c..5a2f566 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 4f2dfa3..ef7bd97 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 896f599..790f07a 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 fba5833..191122b 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 6f7e4b0..9f34be7 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 41bcd7e..8f284dd 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 73060b0..3ac3dca 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 7e3bc8d..77ec373 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 b002d22..e8208ca 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 b55071f..a3baadf 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 a33b337..a2f0006 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 bfbd566..b3b5d39 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 a92229f..45398f7 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 fe0c375..75df0ab 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 8241905..8db79e1 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 099a76e..41aa402 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 7a79527..bf4a37f 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 ae2180a..6c78a3a 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 d255e7b..541a868 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 de457da..2f971c2 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 6db662a..8005943 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 1a8c14d..f6a095b 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 5981f0d..684d05d 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 a2c33cc..9ec4c1c 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 7f59199..d0e6836 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 734f3ca..8757bd5 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 90a7e77..f61d71f 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 88051bc..5ef289e 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 8030da6..73f5042 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 677cbc4..44a4bd2 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 b999141..8410007 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 79f3592..8087a96 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 868725d..33d55d2 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 c4e3421..b4b5857 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 20c72d5..610c1d5 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 0af05a0..a241366 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 fca80b1..4f41ca2 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 f686bb6..52a8687 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 cd55671..0b4116e 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 4e31ef3..02633d6 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 3b2e4f1..ce688c9 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 49e64f3..5f573c3 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 3328a8f..720e95d 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 ddc5873..743b6fd 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 878e153..02953da 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 a2aa838..742a681 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 ba62a4d..18b6f12 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 3a2ed22..c4786b4 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 1a9407b..e641599 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 2a72d96..e38c74c 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 5336876..dfffcf4 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 0efc646..0ac7d8e 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 09b2296..eafff4f 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 ae29015..b2a015a 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 a7f9b9f..0667b1b 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 7f1ffda..4e31e5c 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 57bdb54..22ff7e3 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 27b9612..c891ddc 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 4947ae2..016687f 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 8e78784..946527c 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 20f7db8..6fe74f3 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 6025da1..b339444 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 c292759..c3cb73a 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 f698d0a..6a6e541 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 aa240f1..4825e0c 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 8b4afa4..142060d 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 13b7683..68a5220 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 2b8c1ab..dc9d376 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 093ab09..d340f72 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 a39f3d5..360c9f9 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 7346512..c927859 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 8cef0f7..c459566 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 7bafd4a..cc3cc4a 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 631d67b..c424acc 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 174f35d..54c4576 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 9066e93..2abd32a 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 f7359ce..0476df8 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 7123c6f..9d1728a 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 b82cd80..b81b98c 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 be1ebe2..f6476e6 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 967a730..4e20616 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 09b8640..ade586a 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 9bbafa8..976fcea 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 f85fe67..e2f045a 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 36fe75e..46a480e 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 0e54332..8cf60f0 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 b625323..8c451ed 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 25c286b..d38d7b5 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 327b2ab..bdbaad7 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 7eedd57..7b07c68 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 494f38b..690501d 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 fae7dbe..a8b178d 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 d08a93a..3ef8f09 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 842f77b..8767905 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 d430c29..a12ef1b 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 ec6b1ce..f85ba94 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 3fe4c0e..1ea48ff 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 9dc130c..adf25b0 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 7efaacd..bcf71f9 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 57b4b68..4b3ac26 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 65e17cb..c7f0af4 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 df09c87..74142a5 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 efa83bd..8a99c79 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 f869fb0..f30d701 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 d80d7e9..acef45e 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 56b04d4..0bdf4a9 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 1740bd6..ed915ee 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 7312f84..502ae7b 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 1edf2c1..fa3e8f1 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 fcda82d..d8a4aa1a 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 f664e30..7cd487e 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 76258bd..715f56f 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 c0e8d30..2c967a6 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 06aed7c..ee0eff8 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 d280269..c6f0e77 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 a4b3978..fcda8c6 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 0000000..871eea1
--- /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 f8f1a3e..c23540a 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 3410047..4cd8f1e 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 af6b367..348b847 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 300fff6..b21d8b7 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 35767f4..b1c2c70 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 271a1f2..76f2868 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 ece691c..db051be 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 0c136f3..d0aa4fa 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 dbac8c2..48f22e3 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 f5f7e7b..50978be 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 cb464cb..d46ca73 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 8f276f5..0e58e14 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 aaba11b..2da818b 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 0884741..11f3a20 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 7fc9b7b..7fdc933 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 9f22803..a302e26 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 e66a805..a2224ac 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 7a3bdd4..f58fddd 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 e2a6255..2051ed4 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 35e29ae..7ff26f0 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 e57ddb5..68557e4 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 c5854ae..e3b191d 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 af1e019..76aa5ff 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 543eb0e..b807c51 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 8b8f91a..8bf5c5d 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 38995c3..ffae68f 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 8d793b2..8f1cbab 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 628c62b..acc113b 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 78e0693..11ff6c2 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 452a75e..fd54c47 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 7c5dcb8..5807d3d 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 a00ddbd..74610e5 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 670b69c..77ea067 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 4a97a00..72e6bf4 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 1989a95..0fa0311 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 9ab842c..322ebda 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 45c767d..e81ce5f 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 f7732af..cc1422c 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 94b53e7..77f1f02 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 d5b5960..ce3490a 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 d9ed2c0..2f8e829 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 1e1b1c1..3ab63c5 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 13c79f9..20f460b 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 47f0f24..bf85464 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 9a250cb..57a90d8 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 372c3eb..8681e29 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 df5f44e..6a109d2 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 a823116..f7bd78c 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 c7e71a3..525ab8a 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 8386194..d64e7d5 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 30d00e2..ace4224 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 fe389de..cad76e5 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 85a4fa2..fa507d4 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 7a39286..d7da3f6 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 084b50e..90caf86 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 d56c10b..7c587db 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 91e76ba..d3cbdd2 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 02ba1b6..a33916d 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 b482ae7..f0a49c6 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 5c6af03..c3d927f 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 05781b3..6951a9a 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 633af0b..4ad441f 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 64cc61d..8e19293 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 d4e5215..6639029 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 5791350..6cf8866 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 34c1ea3..d23dee7 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 5450d4c..f9ead51 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 1f551fe..965dd3f 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 2441b6c..73b709c 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 22b62b2..67b0f72 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 5c641a0..f0075cc 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 0e059b7..f167608 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 b75a103..9835ac2 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 07c50df..a06ad68 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 e0cb88e..552bc00 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 023ec29..1459cef 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 0d3576f..37cd5b6 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 997736a..94b6ed3 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 4ee0910..994bfb3 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 2982dc3..c13cba4 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 df58eaa..19caa21 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 b5ad960..2162a4b 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 b8eb074..dc1bd23 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 2dac790..5ae155c 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 1da616f..03fec22 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 7c10b16..58d21a7 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 077929b..ef620a5 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 5973a1d..bf469f5 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 b57041e..cc823b3 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 c149d05..d6341b2 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 27e7c47..8661af5 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 ab35e06..449fabb 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>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]