public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/2] math symbols cleanup
@ 2021-02-11 10:19 Siddhesh Poyarekar
  2021-02-11 10:19 ` [PATCH 1/2] Move __isnanf128 to libc.so Siddhesh Poyarekar
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-02-11 10:19 UTC (permalink / raw)
  To: libc-alpha; +Cc: fweimer, carlos

This patchset cleans up state of functions shared between libc and libm
so that they're consistent and avoid duplication where possible.

Siddhesh Poyarekar (2):
  Move __isnanf128 to libc.so
  Avoid adding duplicated symbols into static libraries

 math/Makefile                                             | 3 +++
 sysdeps/ieee754/float128/Versions                         | 2 +-
 sysdeps/mach/hurd/i386/libc.abilist                       | 1 +
 sysdeps/mach/hurd/i386/libm.abilist                       | 1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist                 | 1 +
 sysdeps/unix/sysv/linux/i386/libm.abilist                 | 1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 1 +
 sysdeps/unix/sysv/linux/ia64/libm.abilist                 | 1 -
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 +
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist | 1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 1 +
 sysdeps/unix/sysv/linux/x86_64/64/libm.abilist            | 1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 1 +
 sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist           | 1 -
 14 files changed, 10 insertions(+), 7 deletions(-)

-- 
2.29.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/2] Move __isnanf128 to libc.so
  2021-02-11 10:19 [PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
@ 2021-02-11 10:19 ` Siddhesh Poyarekar
  2021-02-11 10:27   ` Florian Weimer
  2021-02-11 10:19 ` [PATCH 2/2] Avoid adding duplicated symbols into static libraries Siddhesh Poyarekar
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-02-11 10:19 UTC (permalink / raw)
  To: libc-alpha; +Cc: fweimer, carlos

All of the isnan functions are in libc.so due to printf_fp, so move
__isnanf128 there too for consistency.
---
 sysdeps/ieee754/float128/Versions                         | 2 +-
 sysdeps/mach/hurd/i386/libc.abilist                       | 1 +
 sysdeps/mach/hurd/i386/libm.abilist                       | 1 -
 sysdeps/unix/sysv/linux/i386/libc.abilist                 | 1 +
 sysdeps/unix/sysv/linux/i386/libm.abilist                 | 1 -
 sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 1 +
 sysdeps/unix/sysv/linux/ia64/libm.abilist                 | 1 -
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 +
 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist | 1 -
 sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 1 +
 sysdeps/unix/sysv/linux/x86_64/64/libm.abilist            | 1 -
 sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 1 +
 sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist           | 1 -
 13 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/sysdeps/ieee754/float128/Versions b/sysdeps/ieee754/float128/Versions
index 2eebc6f1b0..8e644385f4 100644
--- a/sysdeps/ieee754/float128/Versions
+++ b/sysdeps/ieee754/float128/Versions
@@ -4,6 +4,7 @@
 %endif
 libc {
   FLOAT128_VERSION {
+    __isnanf128;
     __strtof128_internal;
     __wcstof128_internal;
   }
@@ -30,7 +31,6 @@ libm {
     __hypotf128_finite;
     __iseqsigf128;
     __isinff128;
-    __isnanf128;
     __issignalingf128;
     __j0f128_finite;
     __j1f128_finite;
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 509e9b7cb0..58b0120d58 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
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..ed631c0423 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
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..e4e0bfb2b8 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
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/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 0ea50dc851..d89e2ca6bb 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
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..4e4682c657 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
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..8151ac474e 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
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
-- 
2.29.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 2/2] Avoid adding duplicated symbols into static libraries
  2021-02-11 10:19 [PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
  2021-02-11 10:19 ` [PATCH 1/2] Move __isnanf128 to libc.so Siddhesh Poyarekar
@ 2021-02-11 10:19 ` Siddhesh Poyarekar
  2021-03-30 19:47   ` Adhemerval Zanella
  2021-03-02  6:09 ` [PING][PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
  2021-03-22  4:36 ` Siddhesh Poyarekar
  3 siblings, 1 reply; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-02-11 10:19 UTC (permalink / raw)
  To: libc-alpha; +Cc: fweimer, carlos

Some math functions (such as __isnan*) are built into both libm and
libc because they are needed in libc.  The symbol gets exported from
libc.so and not libm.so, because of which dynamic linking works fine;
the symbols are always resolved from libc.so and libm.so uses its
internal copy of the same function if needed.

When linking statically though, the libm variants get used throughout
because the symbols are exported in both archives and libm.a is
searched first.

This patch removes these duplicate objects from the libm.a archive so
that programs always link to libc in both, the static and dynamic
case.  The difference this will cause is that libm uses of these
functions will start using the libc versions in the !SHARED case.
This is harmless at the moment because the objects are identical
except for their names.

Some of these duplicates could be removed from libm.so too, but I
avoided that in the interest of retaining an internal reference if at
all those functions get used within libm in future.
---
 math/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index 687aa5d510..c4cc1b2068 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -196,6 +196,9 @@ calls = s_isinfF s_isnanF s_finiteF s_copysignF s_modfF s_scalbnF s_frexpF \
 gen-calls = s_ldexpF
 generated += $(foreach s,.c .S,$(call type-foreach, $(calls:s_%=m_%$(s))))
 routines = $(call type-foreach, $(calls))
+# The $(calls) that are shared between libm and libc are not included in static
+# libm so the symbols end up in exactly one place.
+libm-shared-only-routines = $(call type-foreach, $(calls:s_%=m_%))
 
 ifeq ($(build-mathvec),yes)
 # We need to install libm.so and libm.a as linker scripts
-- 
2.29.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] Move __isnanf128 to libc.so
  2021-02-11 10:19 ` [PATCH 1/2] Move __isnanf128 to libc.so Siddhesh Poyarekar
@ 2021-02-11 10:27   ` Florian Weimer
  2021-02-11 14:14     ` [PATCH v2 " Siddhesh Poyarekar
  0 siblings, 1 reply; 15+ messages in thread
From: Florian Weimer @ 2021-02-11 10:27 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha, carlos

* Siddhesh Poyarekar:

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

This needs to add a new symbol version in libc, so that newly linked
binaries fail to load immediately with an older libc.so.6.

Thanks,
Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v2 1/2] Move __isnanf128 to libc.so
  2021-02-11 10:27   ` Florian Weimer
@ 2021-02-11 14:14     ` Siddhesh Poyarekar
  2021-02-11 16:03       ` Florian Weimer
  2021-03-29 13:57       ` Siddhesh Poyarekar
  0 siblings, 2 replies; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-02-11 14:14 UTC (permalink / raw)
  To: libc-alpha; +Cc: fweimer, carlos

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
-- 
2.29.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/2] Move __isnanf128 to libc.so
  2021-02-11 14:14     ` [PATCH v2 " Siddhesh Poyarekar
@ 2021-02-11 16:03       ` Florian Weimer
  2021-03-29 13:57       ` Siddhesh Poyarekar
  1 sibling, 0 replies; 15+ messages in thread
From: Florian Weimer @ 2021-02-11 16:03 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha, carlos

* 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
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PING][PATCH 0/2] math symbols cleanup
  2021-02-11 10:19 [PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
  2021-02-11 10:19 ` [PATCH 1/2] Move __isnanf128 to libc.so Siddhesh Poyarekar
  2021-02-11 10:19 ` [PATCH 2/2] Avoid adding duplicated symbols into static libraries Siddhesh Poyarekar
@ 2021-03-02  6:09 ` Siddhesh Poyarekar
  2021-03-22  4:36 ` Siddhesh Poyarekar
  3 siblings, 0 replies; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-03-02  6:09 UTC (permalink / raw)
  To: Siddhesh Poyarekar, libc-alpha; +Cc: fweimer

Ping!

On 2/11/21 3:49 PM, Siddhesh Poyarekar via Libc-alpha wrote:
> This patchset cleans up state of functions shared between libc and libm
> so that they're consistent and avoid duplication where possible.
> 
> Siddhesh Poyarekar (2):
>    Move __isnanf128 to libc.so
>    Avoid adding duplicated symbols into static libraries
> 
>   math/Makefile                                             | 3 +++
>   sysdeps/ieee754/float128/Versions                         | 2 +-
>   sysdeps/mach/hurd/i386/libc.abilist                       | 1 +
>   sysdeps/mach/hurd/i386/libm.abilist                       | 1 -
>   sysdeps/unix/sysv/linux/i386/libc.abilist                 | 1 +
>   sysdeps/unix/sysv/linux/i386/libm.abilist                 | 1 -
>   sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 1 +
>   sysdeps/unix/sysv/linux/ia64/libm.abilist                 | 1 -
>   sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 +
>   sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist | 1 -
>   sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 1 +
>   sysdeps/unix/sysv/linux/x86_64/64/libm.abilist            | 1 -
>   sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 1 +
>   sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist           | 1 -
>   14 files changed, 10 insertions(+), 7 deletions(-)
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PING][PATCH 0/2] math symbols cleanup
  2021-02-11 10:19 [PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
                   ` (2 preceding siblings ...)
  2021-03-02  6:09 ` [PING][PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
@ 2021-03-22  4:36 ` Siddhesh Poyarekar
  3 siblings, 0 replies; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-03-22  4:36 UTC (permalink / raw)
  To: libc-alpha

Ping!  Paul has tested [2/2] and Florian has reviewed the abilist files. 
  Can someone please review the macro soup and ack the series?

Thanks,
Siddhesh

On 2/11/21 3:49 PM, Siddhesh Poyarekar via Libc-alpha wrote:
> This patchset cleans up state of functions shared between libc and libm
> so that they're consistent and avoid duplication where possible.
> 
> Siddhesh Poyarekar (2):
>    Move __isnanf128 to libc.so
>    Avoid adding duplicated symbols into static libraries
> 
>   math/Makefile                                             | 3 +++
>   sysdeps/ieee754/float128/Versions                         | 2 +-
>   sysdeps/mach/hurd/i386/libc.abilist                       | 1 +
>   sysdeps/mach/hurd/i386/libm.abilist                       | 1 -
>   sysdeps/unix/sysv/linux/i386/libc.abilist                 | 1 +
>   sysdeps/unix/sysv/linux/i386/libm.abilist                 | 1 -
>   sysdeps/unix/sysv/linux/ia64/libc.abilist                 | 1 +
>   sysdeps/unix/sysv/linux/ia64/libm.abilist                 | 1 -
>   sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 +
>   sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist | 1 -
>   sysdeps/unix/sysv/linux/x86_64/64/libc.abilist            | 1 +
>   sysdeps/unix/sysv/linux/x86_64/64/libm.abilist            | 1 -
>   sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist           | 1 +
>   sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist           | 1 -
>   14 files changed, 10 insertions(+), 7 deletions(-)
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/2] Move __isnanf128 to libc.so
  2021-02-11 14:14     ` [PATCH v2 " Siddhesh Poyarekar
  2021-02-11 16:03       ` Florian Weimer
@ 2021-03-29 13:57       ` Siddhesh Poyarekar
  2021-03-29 22:02         ` Tulio Magno Quites Machado Filho
  1 sibling, 1 reply; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-03-29 13:57 UTC (permalink / raw)
  To: Siddhesh Poyarekar, libc-alpha; +Cc: fweimer, Tulio Magno Quites Machado Filho

+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
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/2] Move __isnanf128 to libc.so
  2021-03-29 13:57       ` Siddhesh Poyarekar
@ 2021-03-29 22:02         ` Tulio Magno Quites Machado Filho
  2021-03-30  9:31           ` [COMMITTED] " Siddhesh Poyarekar
  0 siblings, 1 reply; 15+ messages in thread
From: Tulio Magno Quites Machado Filho @ 2021-03-29 22:02 UTC (permalink / raw)
  To: Siddhesh Poyarekar, Siddhesh Poyarekar, libc-alpha; +Cc: fweimer

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

-- 
Tulio Magno

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [COMMITTED] Move __isnanf128 to libc.so
  2021-03-29 22:02         ` Tulio Magno Quites Machado Filho
@ 2021-03-30  9:31           ` Siddhesh Poyarekar
  0 siblings, 0 replies; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-03-30  9:31 UTC (permalink / raw)
  To: libc-alpha; +Cc: Tulio Magno Quites Machado Filho, Florian Weimer

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

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@ascii.art.br>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
---
 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 e10a286d2e..7424dc9166 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.34 __libc_start_main F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_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 cdb6ec501a..cfd4e55e57 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2011,6 +2011,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
@@ -2250,6 +2251,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.34 __libc_start_main F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.4 __confstr_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 d0424a8b1a..426e15f4f6 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1873,6 +1873,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
@@ -2107,6 +2108,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.34 __libc_start_main F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.4 __confstr_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 d99afb2f60..ec9ae25539 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2184,6 +2184,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
@@ -2367,5 +2368,6 @@ 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.34 __libc_start_main F
 GLIBC_2.34 pthread_kill 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 dde107a249..da0974f11a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1854,6 +1854,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
@@ -2089,6 +2090,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.34 __libc_start_main F
 GLIBC_2.34 pthread_kill F
 GLIBC_2.4 __confstr_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 dcea87ca22..d3d155e7c0 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2107,6 +2107,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
@@ -2186,5 +2187,6 @@ 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.34 __libc_start_main F
 GLIBC_2.34 pthread_kill 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
-- 
2.29.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] Avoid adding duplicated symbols into static libraries
  2021-02-11 10:19 ` [PATCH 2/2] Avoid adding duplicated symbols into static libraries Siddhesh Poyarekar
@ 2021-03-30 19:47   ` Adhemerval Zanella
  2021-03-31  2:57     ` Siddhesh Poyarekar
  0 siblings, 1 reply; 15+ messages in thread
From: Adhemerval Zanella @ 2021-03-30 19:47 UTC (permalink / raw)
  To: libc-alpha, Siddhesh Poyarekar



On 11/02/2021 07:19, Siddhesh Poyarekar via Libc-alpha wrote:
> Some math functions (such as __isnan*) are built into both libm and
> libc because they are needed in libc.  The symbol gets exported from
> libc.so and not libm.so, because of which dynamic linking works fine;
> the symbols are always resolved from libc.so and libm.so uses its
> internal copy of the same function if needed.
> 
> When linking statically though, the libm variants get used throughout
> because the symbols are exported in both archives and libm.a is
> searched first.
> 
> This patch removes these duplicate objects from the libm.a archive so
> that programs always link to libc in both, the static and dynamic
> case.  The difference this will cause is that libm uses of these
> functions will start using the libc versions in the !SHARED case.
> This is harmless at the moment because the objects are identical
> except for their names.
> 
> Some of these duplicates could be removed from libm.so too, but I
> avoided that in the interest of retaining an internal reference if at
> all those functions get used within libm in future.
> ---
>  math/Makefile | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/math/Makefile b/math/Makefile
> index 687aa5d510..c4cc1b2068 100644
> --- a/math/Makefile
> +++ b/math/Makefile
> @@ -196,6 +196,9 @@ calls = s_isinfF s_isnanF s_finiteF s_copysignF s_modfF s_scalbnF s_frexpF \
>  gen-calls = s_ldexpF
>  generated += $(foreach s,.c .S,$(call type-foreach, $(calls:s_%=m_%$(s))))
>  routines = $(call type-foreach, $(calls))
> +# The $(calls) that are shared between libm and libc are not included in static
> +# libm so the symbols end up in exactly one place.
> +libm-shared-only-routines = $(call type-foreach, $(calls:s_%=m_%))
>  
>  ifeq ($(build-mathvec),yes)
>  # We need to install libm.so and libm.a as linker scripts
> 

This broke powerpc64le static math tests:

powerpc64le-linux-gnu]$ make math/tests
[...]
/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc -nostdlib -nostartfiles -static -o /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static     /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crt1.o /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crti.o `/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc  --print-file-name=crtbeginT.o` /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static.o /home/azanella/glibc/build/powerpc64le-linux-gnu/support/libsupport_nonshared.a /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a  -Wl,--start-group /home/azanella/glibc/build/powerpc64le-linux-gnu/libc.a -lgcc -lgcc_eh  -Wl,--end-group `/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc  --print-file-name=crtend.o` /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crtn.o
/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/lib/gcc/powerpc64le-glibc-linux-gnu/10.2.1/../../../../powerpc64le-glibc-linux-gnu/bin/ld: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a(e_logf128.o): in function `__ieee754_logf128_power8':
/home/azanella/glibc/glibc-git/math/../sysdeps/ieee754/float128/../ldbl-128/e_logl.c:217: undefined reference to `__frexpf128_power8'
/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/lib/gcc/powerpc64le-glibc-linux-gnu/10.2.1/../../../../powerpc64le-glibc-linux-gnu/bin/ld: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a(s_log1pf128.o): in function `__log1pf128_power8':
/home/azanella/glibc/glibc-git/math/../sysdeps/ieee754/float128/../ldbl-128/s_log1pl.c:166: undefined reference to `__frexpf128_power8'
collect2: error: ld returned 1 exit status
make[2]: *** [../Rules:264: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static] Error 1



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] Avoid adding duplicated symbols into static libraries
  2021-03-30 19:47   ` Adhemerval Zanella
@ 2021-03-31  2:57     ` Siddhesh Poyarekar
  2021-03-31 13:54       ` Tulio Magno Quites Machado Filho
  0 siblings, 1 reply; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-03-31  2:57 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha

On 3/31/21 1:17 AM, Adhemerval Zanella wrote:
> This broke powerpc64le static math tests:
> 
> powerpc64le-linux-gnu]$ make math/tests
> [...]
> /home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc -nostdlib -nostartfiles -static -o /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static     /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crt1.o /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crti.o `/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc  --print-file-name=crtbeginT.o` /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static.o /home/azanella/glibc/build/powerpc64le-linux-gnu/support/libsupport_nonshared.a /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a  -Wl,--start-group /home/azanella/glibc/build/powerpc64le-linux-gnu/libc.a -lgcc -lgcc_eh  -Wl,--end-group `/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc  --print-file-name=crtend.o` /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crtn.o
> /home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/lib/gcc/powerpc64le-glibc-linux-gnu/10.2.1/../../../../powerpc64le-glibc-linux-gnu/bin/ld: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a(e_logf128.o): in function `__ieee754_logf128_power8':
> /home/azanella/glibc/glibc-git/math/../sysdeps/ieee754/float128/../ldbl-128/e_logl.c:217: undefined reference to `__frexpf128_power8'
> /home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/lib/gcc/powerpc64le-glibc-linux-gnu/10.2.1/../../../../powerpc64le-glibc-linux-gnu/bin/ld: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a(s_log1pf128.o): in function `__log1pf128_power8':
> /home/azanella/glibc/glibc-git/math/../sysdeps/ieee754/float128/../ldbl-128/s_log1pl.c:166: undefined reference to `__frexpf128_power8'
> collect2: error: ld returned 1 exit status
> make[2]: *** [../Rules:264: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static] Error 1

Sorry about that.  I'll revert the patch if I'm unable to post a fix by 
the end of the day.

Siddhesh

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] Avoid adding duplicated symbols into static libraries
  2021-03-31  2:57     ` Siddhesh Poyarekar
@ 2021-03-31 13:54       ` Tulio Magno Quites Machado Filho
  2021-03-31 14:05         ` Siddhesh Poyarekar
  0 siblings, 1 reply; 15+ messages in thread
From: Tulio Magno Quites Machado Filho @ 2021-03-31 13:54 UTC (permalink / raw)
  To: Siddhesh Poyarekar, Adhemerval Zanella, libc-alpha

Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:

> On 3/31/21 1:17 AM, Adhemerval Zanella wrote:
>> This broke powerpc64le static math tests:
>> 
>> powerpc64le-linux-gnu]$ make math/tests
>> [...]
>> /home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc -nostdlib -nostartfiles -static -o /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static     /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crt1.o /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crti.o `/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc  --print-file-name=crtbeginT.o` /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static.o /home/azanella/glibc/build/powerpc64le-linux-gnu/support/libsupport_nonshared.a /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a  -Wl,--start-group /home/azanella/glibc/build/powerpc64le-linux-gnu/libc.a -lgcc -lgcc_eh  -Wl,--end-group `/home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/bin/powerpc64le-glibc-linux-gnu-gcc  --print-file-name=crtend.o` /home/azanella/glibc/build/powerpc64le-linux-gnu/csu/crtn.o
>> /home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/lib/gcc/powerpc64le-glibc-linux-gnu/10.2.1/../../../../powerpc64le-glibc-linux-gnu/bin/ld: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a(e_logf128.o): in function `__ieee754_logf128_power8':
>> /home/azanella/glibc/glibc-git/math/../sysdeps/ieee754/float128/../ldbl-128/e_logl.c:217: undefined reference to `__frexpf128_power8'
>> /home/azanella/toolchain/install/compilers/powerpc64le-linux-gnu/lib/gcc/powerpc64le-glibc-linux-gnu/10.2.1/../../../../powerpc64le-glibc-linux-gnu/bin/ld: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/libm.a(s_log1pf128.o): in function `__log1pf128_power8':
>> /home/azanella/glibc/glibc-git/math/../sysdeps/ieee754/float128/../ldbl-128/s_log1pl.c:166: undefined reference to `__frexpf128_power8'
>> collect2: error: ld returned 1 exit status
>> make[2]: *** [../Rules:264: /home/azanella/glibc/build/powerpc64le-linux-gnu/math/test-signgam-uchar-static] Error 1
>
> Sorry about that.  I'll revert the patch if I'm unable to post a fix by 
> the end of the day.

I don't think we need to hurry and revert this.
I'm also looking at this.  It has to do with multiarch builds.

I'm sorry for not taking a look at patch 2/2.  :-(

-- 
Tulio Magno

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] Avoid adding duplicated symbols into static libraries
  2021-03-31 13:54       ` Tulio Magno Quites Machado Filho
@ 2021-03-31 14:05         ` Siddhesh Poyarekar
  0 siblings, 0 replies; 15+ messages in thread
From: Siddhesh Poyarekar @ 2021-03-31 14:05 UTC (permalink / raw)
  To: Tulio Magno Quites Machado Filho, Adhemerval Zanella, libc-alpha

On 3/31/21 7:24 PM, Tulio Magno Quites Machado Filho via Libc-alpha wrote:
> I don't think we need to hurry and revert this.
> I'm also looking at this.  It has to do with multiarch builds.
> 
> I'm sorry for not taking a look at patch 2/2.  :-(

Sorry I rushed to push this :)

I posted a fix to patch this up but I think Andreas may have a more 
complete fix.  Could you please review that one?

https://sourceware.org/pipermail/libc-alpha/2021-March/124602.html

Thanks,
Siddhesh

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-03-31 14:05 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-11 10:19 [PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
2021-02-11 10:19 ` [PATCH 1/2] Move __isnanf128 to libc.so Siddhesh Poyarekar
2021-02-11 10:27   ` Florian Weimer
2021-02-11 14:14     ` [PATCH v2 " Siddhesh Poyarekar
2021-02-11 16:03       ` Florian Weimer
2021-03-29 13:57       ` Siddhesh Poyarekar
2021-03-29 22:02         ` Tulio Magno Quites Machado Filho
2021-03-30  9:31           ` [COMMITTED] " Siddhesh Poyarekar
2021-02-11 10:19 ` [PATCH 2/2] Avoid adding duplicated symbols into static libraries Siddhesh Poyarekar
2021-03-30 19:47   ` Adhemerval Zanella
2021-03-31  2:57     ` Siddhesh Poyarekar
2021-03-31 13:54       ` Tulio Magno Quites Machado Filho
2021-03-31 14:05         ` Siddhesh Poyarekar
2021-03-02  6:09 ` [PING][PATCH 0/2] math symbols cleanup Siddhesh Poyarekar
2021-03-22  4:36 ` Siddhesh Poyarekar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).