[v4,6/9] Avoid compat symbols for totalorder in powerpc64le IEEE long double

Message ID 20191213222427.14278-7-gabriel@inconstante.net.br
State Committed
Headers

Commit Message

Gabriel F. T. Gomes Dec. 13, 2019, 10:24 p.m. UTC
  From: "Gabriel F. T. Gomes" <gabrielftg@linux.ibm.com>

No changes since v3.

No changes since v2.

Changes since v1:

  - Added comment on the redefinition of libm_alias_float128_other_r_ldbl.

-- 8< --
On powerpc64le, the libm_alias_float128_other_r_ldbl macro is
used to create an alias between totalorderf128 and __totalorderlieee128,
as well as between the totalordermagf128 and __totalordermaglieee128.

However, the totalorder* and totalordermag* functions changed their
parameter type since commit ID 42760d764649 and got compat symbols for
their old versions.  With this change, the aforementioned macro would
create two conflicting aliases for __totalorderlieee128 and
__totalordermaglieee128.

This patch avoids the creation of the alias between the IEEE long double
symbols (__totalorderl*ieee128) and the compat symbols, because the IEEE
long double functions have never been exported thus don't need such
compat symbol.

Tested for powerpc64le.

Reviewed-by: Joseph Myers <joseph@codesourcery.com>
---
 sysdeps/ieee754/ldbl-128/s_totalorderl.c    | 9 +++++++++
 sysdeps/ieee754/ldbl-128/s_totalordermagl.c | 9 +++++++++
 2 files changed, 18 insertions(+)
  

Comments

Gabriel F. T. Gomes Dec. 13, 2019, 10:32 p.m. UTC | #1
On Fri, 13 Dec 2019, Gabriel F. T. Gomes wrote:

>No changes since v3.

I plan to commit this patch next week.  It got positive feedback for the
suggested change.
(https://sourceware.org/ml/libc-alpha/2019-10/msg00621.html)
  
Gabriel F. T. Gomes Dec. 23, 2019, 8:56 p.m. UTC | #2
On Fri, 13 Dec 2019, Gabriel F. T. Gomes wrote:

>On Fri, 13 Dec 2019, Gabriel F. T. Gomes wrote:
>
>>No changes since v3.  
>
>I plan to commit this patch next week.  It got positive feedback for the
>suggested change.
>(https://sourceware.org/ml/libc-alpha/2019-10/msg00621.html)

Now committed.
  

Patch

diff --git a/sysdeps/ieee754/ldbl-128/s_totalorderl.c b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
index 098bd2bcab..f9db06c025 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
@@ -74,6 +74,15 @@  __totalorder_compatl (_Float128 x, _Float128 y)
 {
   return __totalorderl (&x, &y);
 }
+/* On platforms that reuse the _Float128 implementation for IEEE long
+   double (powerpc64le), the libm_alias_float128_other_r_ldbl macro
+   (which is called by the libm_alias_ldouble macro) is used to create
+   aliases between *f128 (_Float128 API) and __*ieee128 functions.
+   However, this compat version of totalorderl is older than the
+   availability of __ieee*128 symbols, thus, the compat alias is not
+   required, nor desired.  */
+#undef libm_alias_float128_other_r_ldbl
+#define libm_alias_float128_other_r_ldbl(from, to, r)
 #undef do_symbol
 #define do_symbol(orig_name, name, aliasname)			\
   strong_alias (orig_name, name)				\
diff --git a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
index b31788c77c..45b17ed4dd 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
@@ -68,6 +68,15 @@  __totalordermag_compatl (_Float128 x, _Float128 y)
 {
   return __totalordermagl (&x, &y);
 }
+/* On platforms that reuse the _Float128 implementation for IEEE long
+   double (powerpc64le), the libm_alias_float128_other_r_ldbl macro
+   (which is called by the libm_alias_ldouble macro) is used to create
+   aliases between *f128 (_Float128 API) and __*ieee128 functions.
+   However, this compat version of totalordermagl is older than the
+   availability of __ieee*128 symbols, thus, the compat alias is not
+   required, nor desired.  */
+#undef libm_alias_float128_other_r_ldbl
+#define libm_alias_float128_other_r_ldbl(from, to, r)
 #undef do_symbol
 #define do_symbol(orig_name, name, aliasname)			\
   strong_alias (orig_name, name)				\