public inbox for libc-stable@sourceware.org
 help / color / mirror / Atom feed
From: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
To: libc-stable@sourceware.org
Subject: [2.26 COMMITTED] [BZ #21745] powerpc: build some IFUNC math functions for libc and libm
Date: Tue, 01 Jan 2019 00:00:00 -0000	[thread overview]
Message-ID: <20190111161848.27924-1-tuliom@linux.ibm.com> (raw)

From: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>

Some math functions have to be distributed in libc because they're
required by printf.
libc and libm require their own builds of these functions, e.g. libc
functions have to call __stack_chk_fail_local in order to bypass the
PLT, while libm functions have to call __stack_chk_fail.

While math/Makefile treat the generic cases, i.e. s_isinff, the
multiarch Makefile has to treat its own files, i.e. s_isinff-ppc64.

	[BZ #21745]
	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile:
	[$(subdir) = math] (sysdep_calls): New variable.  Has the
	previous contents of sysdep_routines, but re-sorted..
	[$(subdir) = math] (sysdep_routines): Re-use the contents from
	sysdep_calls.
	[$(subdir) = math] (libm-sysdep_routines): Remove the functions
	defined in sysdep_calls and replace by the respective m_* names.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S:
	(compat_symbol): Undefine to avoid duplicated compat symbols in
	libc.

(cherry picked from commit 61c45f250528dae431391823a9766053e61ccde1)
---
 ChangeLog                                          | 14 +++++++++
 sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile   | 36 ++++++++++++----------
 .../powerpc64/fpu/multiarch/s_isnan-ppc64.S        |  3 ++
 3 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4b18e27288..7d99754ec6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2019-01-11  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
+
+	[BZ #21745]
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile:
+	[$(subdir) = math] (sysdep_calls): New variable.  Has the
+	previous contents of sysdep_routines, but re-sorted..
+	[$(subdir) = math] (sysdep_routines): Re-use the contents from
+	sysdep_calls.
+	[$(subdir) = math] (libm-sysdep_routines): Remove the functions
+	defined in sysdep_calls and replace by the respective m_* names.
+	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S:
+	(compat_symbol): Undefine to avoid duplicated compat symbols in
+	libc.
+
 2019-01-02  Florian Weimer  <fweimer@redhat.com>
 
 	[BZ #24018]
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
index d6f14f360a..73f2f69377 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
@@ -1,33 +1,35 @@
 ifeq ($(subdir),math)
-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
-		   s_isnan-power5 s_isnan-ppc64 s_copysign-power6 \
-		   s_copysign-ppc64 s_finite-power7 s_finite-ppc64 \
-		   s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \
-		   s_isinf-ppc64 s_modf-power5+ s_modf-ppc64 \
-		   s_modff-power5+ s_modff-ppc64 s_isnan-power8 \
-		   s_isinf-power8 s_finite-power8
+# These functions are built both for libc and libm because they're required
+# by printf.  While the libc objects have the prefix s_, the libm ones are
+# prefixed with  m_.
+sysdep_calls := s_copysign-power6 s_copysign-ppc64 \
+		s_finite-power8 s_finite-power7 s_finite-ppc64 \
+		s_finitef-ppc64 \
+		s_isinf-power8 s_isinf-ppc64 \
+		s_isinff-ppc64 s_isinf-power7 \
+		s_isnan-power8 s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+		s_isnan-power5 s_isnan-ppc64 \
+		s_modf-power5+ s_modf-ppc64 \
+		s_modff-power5+ s_modff-ppc64
 
-libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
-			s_isnan-power5 s_isnan-ppc64 s_llround-power6x \
+sysdep_routines += $(sysdep_calls)
+libm-sysdep_routines += s_llround-power6x \
 			s_llround-power5+ s_llround-ppc64 s_ceil-power5+ \
 			s_ceil-ppc64 s_ceilf-power5+ s_ceilf-ppc64 \
 			s_floor-power5+ s_floor-ppc64 s_floorf-power5+ \
 			s_floorf-ppc64 s_round-power5+ s_round-ppc64 \
 			s_roundf-power5+ s_roundf-ppc64 s_trunc-power5+ \
 			s_trunc-ppc64 s_truncf-power5+ s_truncf-ppc64 \
-			s_copysign-power6 s_copysign-ppc64 s_llrint-power6x \
-			s_llrint-ppc64 s_finite-power7 s_finite-ppc64 \
-			s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \
-			s_isinf-ppc64 s_logb-power7 s_logbf-power7 \
+			s_llrint-power6x s_llrint-ppc64 \
+			s_logb-power7 s_logbf-power7 \
 			s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \
-			s_logbl-ppc64 s_modf-power5+ s_modf-ppc64 \
-			s_modff-power5+ s_modff-ppc64 e_hypot-ppc64 \
+			s_logbl-ppc64 e_hypot-ppc64 \
 			e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 \
-			s_isnan-power8 s_isinf-power8 s_finite-power8 \
 			s_llrint-power8 s_llround-power8 s_llroundf-ppc64 \
 			e_expf-power8 e_expf-ppc64 \
 			s_sinf-ppc64 s_sinf-power8 \
-			s_cosf-ppc64 s_cosf-power8
+			s_cosf-ppc64 s_cosf-power8 \
+			$(sysdep_calls:s_%=m_%)
 
 CFLAGS-s_logbf-power7.c = -mcpu=power7
 CFLAGS-s_logbl-power7.c = -mcpu=power7
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S
index ee219c14be..eba0d4ff5e 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S
@@ -23,6 +23,9 @@
 #define weak_alias(a,b)
 #undef strong_alias
 #define strong_alias(a,b)
+#undef compat_symbol
+#define compat_symbol(a,b,c,d)
+
 
 #define __isnan __isnan_ppc64
 #undef hidden_def
-- 
2.14.5

                 reply	other threads:[~2019-01-11 16:19 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190111161848.27924-1-tuliom@linux.ibm.com \
    --to=tuliom@linux.ibm.com \
    --cc=libc-stable@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).