[v2,1/2] Move __isnanf128 to libc.so

Message ID 20210211141447.2970749-1-siddhesh@sourceware.org
State Superseded
Headers
Series [v2,1/2] Move __isnanf128 to libc.so |

Commit Message

Siddhesh Poyarekar Feb. 11, 2021, 2:14 p.m. UTC
  All of the isnan functions are in libc.so due to printf_fp, so move
__isnanf128 there too for consistency.
---
Changes from v1:

- Added __isnanf128@@GLIBC_2_34 default symbol.

 sysdeps/ia64/float128-abi.h                   |  1 +
 sysdeps/ieee754/float128/Versions             |  5 ++++-
 sysdeps/ieee754/float128/s_isnanf128.c        | 19 +++++++++++++++++++
 sysdeps/ieee754/ldbl-128/float128-abi.h       |  1 +
 sysdeps/mach/hurd/i386/libc.abilist           |  2 ++
 sysdeps/mach/hurd/i386/libm.abilist           |  1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/i386/libm.abilist     |  1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 ++
 sysdeps/unix/sysv/linux/ia64/libm.abilist     |  1 -
 .../linux/powerpc/powerpc64/le/float128-abi.h |  1 +
 .../linux/powerpc/powerpc64/le/libc.abilist   |  2 ++
 .../linux/powerpc/powerpc64/le/libm.abilist   |  1 -
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 ++
 .../unix/sysv/linux/x86_64/64/libm.abilist    |  1 -
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 ++
 .../unix/sysv/linux/x86_64/x32/libm.abilist   |  1 -
 sysdeps/x86/float128-abi.h                    |  1 +
 18 files changed, 39 insertions(+), 7 deletions(-)
  

Comments

Florian Weimer Feb. 11, 2021, 4:03 p.m. UTC | #1
* Siddhesh Poyarekar:

> All of the isnan functions are in libc.so due to printf_fp, so move
> __isnanf128 there too for consistency.

I can't comment on the mechanics to get there, but the result looks as
expected to me.

Thanks,
Florian
  
Siddhesh Poyarekar March 29, 2021, 1:57 p.m. UTC | #2
+Tulio

Tulio, could you please take a look at this, specifically the macro soup 
I've come up with for ppc64le to get the symbols in the right places?

Thanks,
Siddhesh

On 2/11/21 7:44 PM, Siddhesh Poyarekar via Libc-alpha wrote:
> All of the isnan functions are in libc.so due to printf_fp, so move
> __isnanf128 there too for consistency.
> ---
> Changes from v1:
> 
> - Added __isnanf128@@GLIBC_2_34 default symbol.
> 
>   sysdeps/ia64/float128-abi.h                   |  1 +
>   sysdeps/ieee754/float128/Versions             |  5 ++++-
>   sysdeps/ieee754/float128/s_isnanf128.c        | 19 +++++++++++++++++++
>   sysdeps/ieee754/ldbl-128/float128-abi.h       |  1 +
>   sysdeps/mach/hurd/i386/libc.abilist           |  2 ++
>   sysdeps/mach/hurd/i386/libm.abilist           |  1 -
>   sysdeps/unix/sysv/linux/i386/libc.abilist     |  2 ++
>   sysdeps/unix/sysv/linux/i386/libm.abilist     |  1 -
>   sysdeps/unix/sysv/linux/ia64/libc.abilist     |  2 ++
>   sysdeps/unix/sysv/linux/ia64/libm.abilist     |  1 -
>   .../linux/powerpc/powerpc64/le/float128-abi.h |  1 +
>   .../linux/powerpc/powerpc64/le/libc.abilist   |  2 ++
>   .../linux/powerpc/powerpc64/le/libm.abilist   |  1 -
>   .../unix/sysv/linux/x86_64/64/libc.abilist    |  2 ++
>   .../unix/sysv/linux/x86_64/64/libm.abilist    |  1 -
>   .../unix/sysv/linux/x86_64/x32/libc.abilist   |  2 ++
>   .../unix/sysv/linux/x86_64/x32/libm.abilist   |  1 -
>   sysdeps/x86/float128-abi.h                    |  1 +
>   18 files changed, 39 insertions(+), 7 deletions(-)
> 
> diff --git a/sysdeps/ia64/float128-abi.h b/sysdeps/ia64/float128-abi.h
> index 6b954cc673..8e7616bc7e 100644
> --- a/sysdeps/ia64/float128-abi.h
> +++ b/sysdeps/ia64/float128-abi.h
> @@ -1,2 +1,3 @@
>   /* ABI version for _Float128 ABI introduction.  */
>   #define FLOAT128_VERSION GLIBC_2.26
> +#define FLOAT128_VERSION_M GLIBC_2_26
> diff --git a/sysdeps/ieee754/float128/Versions b/sysdeps/ieee754/float128/Versions
> index 2eebc6f1b0..2be97f8564 100644
> --- a/sysdeps/ieee754/float128/Versions
> +++ b/sysdeps/ieee754/float128/Versions
> @@ -4,9 +4,13 @@
>   %endif
>   libc {
>     FLOAT128_VERSION {
> +    __isnanf128;
>       __strtof128_internal;
>       __wcstof128_internal;
>     }
> +  GLIBC_2.34 {
> +    __isnanf128;
> +  }
>     GLIBC_PRIVATE {
>       # For __nanf128.
>       __strtof128_nan;
> @@ -30,7 +34,6 @@ libm {
>       __hypotf128_finite;
>       __iseqsigf128;
>       __isinff128;
> -    __isnanf128;
>       __issignalingf128;
>       __j0f128_finite;
>       __j1f128_finite;
> diff --git a/sysdeps/ieee754/float128/s_isnanf128.c b/sysdeps/ieee754/float128/s_isnanf128.c
> index efba24059a..59f71533ce 100644
> --- a/sysdeps/ieee754/float128/s_isnanf128.c
> +++ b/sysdeps/ieee754/float128/s_isnanf128.c
> @@ -1,2 +1,21 @@
> +#include <shlib-compat.h>
>   #include <float128_private.h>
> +#if !IS_IN (libm)
> +#undef __isnanl
> +#define __isnanl __isnanf128_impl
> +#undef weak_alias
> +#define weak_alias(n,a)
> +#undef mathx_hidden_def
> +#define mathx_hidden_def(x)
> +#endif
>   #include "../ldbl-128/s_isnanl.c"
> +#if !IS_IN (libm)
> +#include <float128-abi.h>
> +hidden_ver (__isnanf128_impl, __isnanf128)
> +_weak_alias (__isnanf128_impl, isnanl)
> +versioned_symbol (libc, __isnanf128_impl, __isnanf128, GLIBC_2_34);
> +#if (SHLIB_COMPAT (libc, FLOAT128_VERSION_M, GLIBC_2_34))
> +strong_alias (__isnanf128_impl, __isnanf128_alias)
> +compat_symbol (libc, __isnanf128_alias, __isnanf128, FLOAT128_VERSION_M);
> +#endif
> +#endif
> diff --git a/sysdeps/ieee754/ldbl-128/float128-abi.h b/sysdeps/ieee754/ldbl-128/float128-abi.h
> index 3077ffc7fe..8251ce841f 100644
> --- a/sysdeps/ieee754/ldbl-128/float128-abi.h
> +++ b/sysdeps/ieee754/ldbl-128/float128-abi.h
> @@ -1,2 +1,3 @@
>   /* ABI version for _Float128 ABI introduction.  */
>   #define FLOAT128_VERSION GLIBC_2.27
> +#define FLOAT128_VERSION_M GLIBC_2_27
> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 509e9b7cb0..cfdff6eaa7 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -1995,6 +1995,7 @@ GLIBC_2.25 gnu_dev_minor F
>   GLIBC_2.25 strfromd F
>   GLIBC_2.25 strfromf F
>   GLIBC_2.25 strfroml F
> +GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __strtof128_internal F
>   GLIBC_2.26 __wcstof128_internal F
>   GLIBC_2.26 _hurd_exec_paths F
> @@ -2203,6 +2204,7 @@ GLIBC_2.33 mknod F
>   GLIBC_2.33 mknodat F
>   GLIBC_2.33 stat F
>   GLIBC_2.33 stat64 F
> +GLIBC_2.34 __isnanf128 F
>   GLIBC_2.4 __confstr_chk F
>   GLIBC_2.4 __fgets_chk F
>   GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
> index a19a69ce6a..bb077b9030 100644
> --- a/sysdeps/mach/hurd/i386/libm.abilist
> +++ b/sysdeps/mach/hurd/i386/libm.abilist
> @@ -474,7 +474,6 @@ GLIBC_2.26 __gammaf128_r_finite F
>   GLIBC_2.26 __hypotf128_finite F
>   GLIBC_2.26 __iseqsigf128 F
>   GLIBC_2.26 __isinff128 F
> -GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __issignalingf128 F
>   GLIBC_2.26 __j0f128_finite F
>   GLIBC_2.26 __j1f128_finite F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index ddc5837059..3bbc28c88f 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2002,6 +2002,7 @@ GLIBC_2.25 getrandom F
>   GLIBC_2.25 strfromd F
>   GLIBC_2.25 strfromf F
>   GLIBC_2.25 strfroml F
> +GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __strtof128_internal F
>   GLIBC_2.26 __wcstof128_internal F
>   GLIBC_2.26 preadv2 F
> @@ -2241,6 +2242,7 @@ GLIBC_2.33 mknod F
>   GLIBC_2.33 mknodat F
>   GLIBC_2.33 stat F
>   GLIBC_2.33 stat64 F
> +GLIBC_2.34 __isnanf128 F
>   GLIBC_2.4 __confstr_chk F
>   GLIBC_2.4 __fgets_chk F
>   GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
> index 0ab740dd97..335b5e7aa2 100644
> --- a/sysdeps/unix/sysv/linux/i386/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
> @@ -481,7 +481,6 @@ GLIBC_2.26 __gammaf128_r_finite F
>   GLIBC_2.26 __hypotf128_finite F
>   GLIBC_2.26 __iseqsigf128 F
>   GLIBC_2.26 __isinff128 F
> -GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __issignalingf128 F
>   GLIBC_2.26 __j0f128_finite F
>   GLIBC_2.26 __j1f128_finite F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index e3b345b803..563e17b69c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -1872,6 +1872,7 @@ GLIBC_2.25 getrandom F
>   GLIBC_2.25 strfromd F
>   GLIBC_2.25 strfromf F
>   GLIBC_2.25 strfroml F
> +GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __strtof128_internal F
>   GLIBC_2.26 __wcstof128_internal F
>   GLIBC_2.26 preadv2 F
> @@ -2106,6 +2107,7 @@ GLIBC_2.33 mknod F
>   GLIBC_2.33 mknodat F
>   GLIBC_2.33 stat F
>   GLIBC_2.33 stat64 F
> +GLIBC_2.34 __isnanf128 F
>   GLIBC_2.4 __confstr_chk F
>   GLIBC_2.4 __fgets_chk F
>   GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
> index c8e8fd7142..ec82b83e6f 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
> @@ -411,7 +411,6 @@ GLIBC_2.26 __gammaf128_r_finite F
>   GLIBC_2.26 __hypotf128_finite F
>   GLIBC_2.26 __iseqsigf128 F
>   GLIBC_2.26 __isinff128 F
> -GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __issignalingf128 F
>   GLIBC_2.26 __j0f128_finite F
>   GLIBC_2.26 __j1f128_finite F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
> index 6b954cc673..8e7616bc7e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
> @@ -1,2 +1,3 @@
>   /* ABI version for _Float128 ABI introduction.  */
>   #define FLOAT128_VERSION GLIBC_2.26
> +#define FLOAT128_VERSION_M GLIBC_2_26
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index 0ea50dc851..a9ba6c7db4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2183,6 +2183,7 @@ GLIBC_2.25 getrandom F
>   GLIBC_2.25 strfromd F
>   GLIBC_2.25 strfromf F
>   GLIBC_2.25 strfroml F
> +GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __strtof128_internal F
>   GLIBC_2.26 __wcstof128_internal F
>   GLIBC_2.26 preadv2 F
> @@ -2366,3 +2367,4 @@ GLIBC_2.33 mknod F
>   GLIBC_2.33 mknodat F
>   GLIBC_2.33 stat F
>   GLIBC_2.33 stat64 F
> +GLIBC_2.34 __isnanf128 F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
> index 4f8d3c1191..8266bc32f4 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
> @@ -478,7 +478,6 @@ GLIBC_2.26 __gammaf128_r_finite F
>   GLIBC_2.26 __hypotf128_finite F
>   GLIBC_2.26 __iseqsigf128 F
>   GLIBC_2.26 __isinff128 F
> -GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __issignalingf128 F
>   GLIBC_2.26 __j0f128_finite F
>   GLIBC_2.26 __j1f128_finite F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 2744bba4af..7c62419232 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -1853,6 +1853,7 @@ GLIBC_2.25 getrandom F
>   GLIBC_2.25 strfromd F
>   GLIBC_2.25 strfromf F
>   GLIBC_2.25 strfroml F
> +GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __strtof128_internal F
>   GLIBC_2.26 __wcstof128_internal F
>   GLIBC_2.26 preadv2 F
> @@ -2088,6 +2089,7 @@ GLIBC_2.33 mknod F
>   GLIBC_2.33 mknodat F
>   GLIBC_2.33 stat F
>   GLIBC_2.33 stat64 F
> +GLIBC_2.34 __isnanf128 F
>   GLIBC_2.4 __confstr_chk F
>   GLIBC_2.4 __fgets_chk F
>   GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
> index 89c4ac484d..b6a088ca64 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
> @@ -472,7 +472,6 @@ GLIBC_2.26 __gammaf128_r_finite F
>   GLIBC_2.26 __hypotf128_finite F
>   GLIBC_2.26 __iseqsigf128 F
>   GLIBC_2.26 __isinff128 F
> -GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __issignalingf128 F
>   GLIBC_2.26 __j0f128_finite F
>   GLIBC_2.26 __j1f128_finite F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index ce2f4fb72b..ff6b0d3d53 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2106,6 +2106,7 @@ GLIBC_2.25 getrandom F
>   GLIBC_2.25 strfromd F
>   GLIBC_2.25 strfromf F
>   GLIBC_2.25 strfroml F
> +GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __strtof128_internal F
>   GLIBC_2.26 __wcstof128_internal F
>   GLIBC_2.26 preadv2 F
> @@ -2185,3 +2186,4 @@ GLIBC_2.33 mknod F
>   GLIBC_2.33 mknodat F
>   GLIBC_2.33 stat F
>   GLIBC_2.33 stat64 F
> +GLIBC_2.34 __isnanf128 F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
> index d3c9cec71a..dfb5a7fa79 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
> @@ -472,7 +472,6 @@ GLIBC_2.26 __gammaf128_r_finite F
>   GLIBC_2.26 __hypotf128_finite F
>   GLIBC_2.26 __iseqsigf128 F
>   GLIBC_2.26 __isinff128 F
> -GLIBC_2.26 __isnanf128 F
>   GLIBC_2.26 __issignalingf128 F
>   GLIBC_2.26 __j0f128_finite F
>   GLIBC_2.26 __j1f128_finite F
> diff --git a/sysdeps/x86/float128-abi.h b/sysdeps/x86/float128-abi.h
> index 6b954cc673..8e7616bc7e 100644
> --- a/sysdeps/x86/float128-abi.h
> +++ b/sysdeps/x86/float128-abi.h
> @@ -1,2 +1,3 @@
>   /* ABI version for _Float128 ABI introduction.  */
>   #define FLOAT128_VERSION GLIBC_2.26
> +#define FLOAT128_VERSION_M GLIBC_2_26
>
  
Tulio Magno Quites Machado Filho March 29, 2021, 10:02 p.m. UTC | #3
Siddhesh Poyarekar <siddhesh@gotplt.org> writes:

> Tulio, could you please take a look at this, specifically the macro soup 
> I've come up with for ppc64le to get the symbols in the right places?

They seem alright.  LGTM.

I had to solve a few minor conflicts.
I pushed the patch I tested to
https://github.com/tuliom/glibc/commit/cb3b6053b60dce5c5aee11bc2cc528f8e9551e06
  

Patch

diff --git a/sysdeps/ia64/float128-abi.h b/sysdeps/ia64/float128-abi.h
index 6b954cc673..8e7616bc7e 100644
--- a/sysdeps/ia64/float128-abi.h
+++ b/sysdeps/ia64/float128-abi.h
@@ -1,2 +1,3 @@ 
 /* ABI version for _Float128 ABI introduction.  */
 #define FLOAT128_VERSION GLIBC_2.26
+#define FLOAT128_VERSION_M GLIBC_2_26
diff --git a/sysdeps/ieee754/float128/Versions b/sysdeps/ieee754/float128/Versions
index 2eebc6f1b0..2be97f8564 100644
--- a/sysdeps/ieee754/float128/Versions
+++ b/sysdeps/ieee754/float128/Versions
@@ -4,9 +4,13 @@ 
 %endif
 libc {
   FLOAT128_VERSION {
+    __isnanf128;
     __strtof128_internal;
     __wcstof128_internal;
   }
+  GLIBC_2.34 {
+    __isnanf128;
+  }
   GLIBC_PRIVATE {
     # For __nanf128.
     __strtof128_nan;
@@ -30,7 +34,6 @@  libm {
     __hypotf128_finite;
     __iseqsigf128;
     __isinff128;
-    __isnanf128;
     __issignalingf128;
     __j0f128_finite;
     __j1f128_finite;
diff --git a/sysdeps/ieee754/float128/s_isnanf128.c b/sysdeps/ieee754/float128/s_isnanf128.c
index efba24059a..59f71533ce 100644
--- a/sysdeps/ieee754/float128/s_isnanf128.c
+++ b/sysdeps/ieee754/float128/s_isnanf128.c
@@ -1,2 +1,21 @@ 
+#include <shlib-compat.h>
 #include <float128_private.h>
+#if !IS_IN (libm)
+#undef __isnanl
+#define __isnanl __isnanf128_impl
+#undef weak_alias
+#define weak_alias(n,a)
+#undef mathx_hidden_def
+#define mathx_hidden_def(x)
+#endif
 #include "../ldbl-128/s_isnanl.c"
+#if !IS_IN (libm)
+#include <float128-abi.h>
+hidden_ver (__isnanf128_impl, __isnanf128)
+_weak_alias (__isnanf128_impl, isnanl)
+versioned_symbol (libc, __isnanf128_impl, __isnanf128, GLIBC_2_34);
+#if (SHLIB_COMPAT (libc, FLOAT128_VERSION_M, GLIBC_2_34))
+strong_alias (__isnanf128_impl, __isnanf128_alias)
+compat_symbol (libc, __isnanf128_alias, __isnanf128, FLOAT128_VERSION_M);
+#endif
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/float128-abi.h b/sysdeps/ieee754/ldbl-128/float128-abi.h
index 3077ffc7fe..8251ce841f 100644
--- a/sysdeps/ieee754/ldbl-128/float128-abi.h
+++ b/sysdeps/ieee754/ldbl-128/float128-abi.h
@@ -1,2 +1,3 @@ 
 /* ABI version for _Float128 ABI introduction.  */
 #define FLOAT128_VERSION GLIBC_2.27
+#define FLOAT128_VERSION_M GLIBC_2_27
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 509e9b7cb0..cfdff6eaa7 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -1995,6 +1995,7 @@  GLIBC_2.25 gnu_dev_minor F
 GLIBC_2.25 strfromd F
 GLIBC_2.25 strfromf F
 GLIBC_2.25 strfroml F
+GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __strtof128_internal F
 GLIBC_2.26 __wcstof128_internal F
 GLIBC_2.26 _hurd_exec_paths F
@@ -2203,6 +2204,7 @@  GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 __isnanf128 F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index a19a69ce6a..bb077b9030 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -474,7 +474,6 @@  GLIBC_2.26 __gammaf128_r_finite F
 GLIBC_2.26 __hypotf128_finite F
 GLIBC_2.26 __iseqsigf128 F
 GLIBC_2.26 __isinff128 F
-GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __issignalingf128 F
 GLIBC_2.26 __j0f128_finite F
 GLIBC_2.26 __j1f128_finite F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index ddc5837059..3bbc28c88f 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2002,6 +2002,7 @@  GLIBC_2.25 getrandom F
 GLIBC_2.25 strfromd F
 GLIBC_2.25 strfromf F
 GLIBC_2.25 strfroml F
+GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __strtof128_internal F
 GLIBC_2.26 __wcstof128_internal F
 GLIBC_2.26 preadv2 F
@@ -2241,6 +2242,7 @@  GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 __isnanf128 F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 0ab740dd97..335b5e7aa2 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -481,7 +481,6 @@  GLIBC_2.26 __gammaf128_r_finite F
 GLIBC_2.26 __hypotf128_finite F
 GLIBC_2.26 __iseqsigf128 F
 GLIBC_2.26 __isinff128 F
-GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __issignalingf128 F
 GLIBC_2.26 __j0f128_finite F
 GLIBC_2.26 __j1f128_finite F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index e3b345b803..563e17b69c 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1872,6 +1872,7 @@  GLIBC_2.25 getrandom F
 GLIBC_2.25 strfromd F
 GLIBC_2.25 strfromf F
 GLIBC_2.25 strfroml F
+GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __strtof128_internal F
 GLIBC_2.26 __wcstof128_internal F
 GLIBC_2.26 preadv2 F
@@ -2106,6 +2107,7 @@  GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 __isnanf128 F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
index c8e8fd7142..ec82b83e6f 100644
--- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
@@ -411,7 +411,6 @@  GLIBC_2.26 __gammaf128_r_finite F
 GLIBC_2.26 __hypotf128_finite F
 GLIBC_2.26 __iseqsigf128 F
 GLIBC_2.26 __isinff128 F
-GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __issignalingf128 F
 GLIBC_2.26 __j0f128_finite F
 GLIBC_2.26 __j1f128_finite F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
index 6b954cc673..8e7616bc7e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
@@ -1,2 +1,3 @@ 
 /* ABI version for _Float128 ABI introduction.  */
 #define FLOAT128_VERSION GLIBC_2.26
+#define FLOAT128_VERSION_M GLIBC_2_26
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 0ea50dc851..a9ba6c7db4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2183,6 +2183,7 @@  GLIBC_2.25 getrandom F
 GLIBC_2.25 strfromd F
 GLIBC_2.25 strfromf F
 GLIBC_2.25 strfroml F
+GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __strtof128_internal F
 GLIBC_2.26 __wcstof128_internal F
 GLIBC_2.26 preadv2 F
@@ -2366,3 +2367,4 @@  GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 __isnanf128 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 4f8d3c1191..8266bc32f4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -478,7 +478,6 @@  GLIBC_2.26 __gammaf128_r_finite F
 GLIBC_2.26 __hypotf128_finite F
 GLIBC_2.26 __iseqsigf128 F
 GLIBC_2.26 __isinff128 F
-GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __issignalingf128 F
 GLIBC_2.26 __j0f128_finite F
 GLIBC_2.26 __j1f128_finite F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 2744bba4af..7c62419232 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1853,6 +1853,7 @@  GLIBC_2.25 getrandom F
 GLIBC_2.25 strfromd F
 GLIBC_2.25 strfromf F
 GLIBC_2.25 strfroml F
+GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __strtof128_internal F
 GLIBC_2.26 __wcstof128_internal F
 GLIBC_2.26 preadv2 F
@@ -2088,6 +2089,7 @@  GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 __isnanf128 F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 89c4ac484d..b6a088ca64 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -472,7 +472,6 @@  GLIBC_2.26 __gammaf128_r_finite F
 GLIBC_2.26 __hypotf128_finite F
 GLIBC_2.26 __iseqsigf128 F
 GLIBC_2.26 __isinff128 F
-GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __issignalingf128 F
 GLIBC_2.26 __j0f128_finite F
 GLIBC_2.26 __j1f128_finite F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index ce2f4fb72b..ff6b0d3d53 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2106,6 +2106,7 @@  GLIBC_2.25 getrandom F
 GLIBC_2.25 strfromd F
 GLIBC_2.25 strfromf F
 GLIBC_2.25 strfroml F
+GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __strtof128_internal F
 GLIBC_2.26 __wcstof128_internal F
 GLIBC_2.26 preadv2 F
@@ -2185,3 +2186,4 @@  GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 __isnanf128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index d3c9cec71a..dfb5a7fa79 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -472,7 +472,6 @@  GLIBC_2.26 __gammaf128_r_finite F
 GLIBC_2.26 __hypotf128_finite F
 GLIBC_2.26 __iseqsigf128 F
 GLIBC_2.26 __isinff128 F
-GLIBC_2.26 __isnanf128 F
 GLIBC_2.26 __issignalingf128 F
 GLIBC_2.26 __j0f128_finite F
 GLIBC_2.26 __j1f128_finite F
diff --git a/sysdeps/x86/float128-abi.h b/sysdeps/x86/float128-abi.h
index 6b954cc673..8e7616bc7e 100644
--- a/sysdeps/x86/float128-abi.h
+++ b/sysdeps/x86/float128-abi.h
@@ -1,2 +1,3 @@ 
 /* ABI version for _Float128 ABI introduction.  */
 #define FLOAT128_VERSION GLIBC_2.26
+#define FLOAT128_VERSION_M GLIBC_2_26