aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel F. T. Gomes <gabriel@inconstante.eti.br>2017-12-28 17:30:06 -0200
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-03-25 14:34:23 -0500
commit076d06e8494319c1405129ed505fc67f17c0487d (patch)
treeae92efddeb5e814caaff3a99f5369b13eb0c5dc2
parentd0d1811fb96d592e9b379b9176e1ab9d0b858916 (diff)
downloadglibc-076d06e8494319c1405129ed505fc67f17c0487d.tar
glibc-076d06e8494319c1405129ed505fc67f17c0487d.tar.gz
glibc-076d06e8494319c1405129ed505fc67f17c0487d.tar.bz2
glibc-076d06e8494319c1405129ed505fc67f17c0487d.zip
powerpc64le: Ensure correct ldouble compiler flags are used
Ensure the correct ldouble abi flags are applied to ibm128 files and nldbl files. Remove the IEEE options if used, and apply the flags used to build ldouble files which are ibm128 abi. nldbl tests are a little tricky. To use the support, we must remove all ldouble abi flags, and ensure -mlong-double-64 is used. Co-authored-by: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com> Co-authored-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> Co-authored-by: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
-rw-r--r--sysdeps/powerpc/powerpc64/le/Makefile58
1 files changed, 58 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile
index 86602af8fb..8fe75e54f2 100644
--- a/sysdeps/powerpc/powerpc64/le/Makefile
+++ b/sysdeps/powerpc/powerpc64/le/Makefile
@@ -6,6 +6,13 @@
# linked executables, forcing to link the loader after libgcc link.
f128-loader-link = -Wl,--as-needed $(elf-objpfx)ld.so -Wl,--no-as-needed
+# Bootstrapping code for enabling IEEE 128. This can be removed and
+# any indirections simplified once IEEE 128 long double is enabled.
+type-ldouble-CFLAGS =
+ifeq ($(ibm128-fcts),yes)
+type-ldouble-CFLAGS += -mabi=ibmlongdouble
+endif
+
ifeq ($(subdir),math)
# sqrtf128 requires emulation before POWER9.
CPPFLAGS += -I../soft-fp
@@ -33,6 +40,42 @@ $(foreach test, \
test-math-iszero, \
$(objpfx)$(test)): \
gnulib-tests += $(f128-loader-link)
+
+CFLAGS-s_logbl-power7.c += $(type-ldouble-CFLAGS)
+CFLAGS-s_logbl-ppc64.c += $(type-ldouble-CFLAGS)
+
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)s_copysignl$(suf) \
+ $(objpfx)s_fabsl$(suf)): \
+ ASFLAGS += $(type-ldouble-CFLAGS)
+
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)libm-test-%ibm128$(suf) \
+ $(objpfx)test-iibm128%$(suf) $(objpfx)test-ibm128%$(suf)): \
+ CFLAGS += $(type-ldouble-CFLAGS)
+
+# Newer GCC (>7) doesn't like -mabi=* and -mlong-double-64
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)test-narrow-macros-ldbl-64$(suf) \
+ $(objpfx)test-nldbl-redirect$(suf) \
+ $(objpfx)test-redirection-ldbl-64$(suf) \
+ ): sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
+
+endif
+
+# Newer GCC (>7) doesn't like -mabi=* and -mlong-double-64
+ifeq ($(subdir),misc)
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)tst-nldbl-warn$(suf) \
+ $(objpfx)tst-nldbl-error$(suf) \
+ ): sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
+endif
+
+# Newer GCC (>7) doesn't like -mabi=* and -mlong-double-64
+ifeq ($(subdir),argp)
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)tst-nldbl-argp$(suf) \
+ ): sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
endif
# Append flags to string <-> _Float128 routines.
@@ -80,3 +123,18 @@ CFLAGS-printf_fp.c = -mfloat128
CFLAGS-printf_fphex.c = -mfloat128
CFLAGS-printf_size.c = -mfloat128
endif
+
+
+$(foreach suf,$(all-object-suffixes),$(objpfx)nldbl-%$(suf)): \
+ CFLAGS += $(type-ldouble-CFLAGS)
+
+ldbl-ibm128-files = $(objpfx)nldbl-%$(suf) \
+ $(objpfx)libm-test-%ibm128$(suf) \
+ $(objpfx)test-iibm128%$(suf) $(objpfx)test-ibm128%$(suf) \
+ $(objpfx)test-tgmath3-%$(suf)
+
+# Remove -mabi=ieeelongdouble from ldbl-ibm128 files.
+$(foreach suf,$(all-object-suffixes), $(ldbl-ibm128-files)) \
+ $(foreach r,$(ldbl-128ibm-routines) $(ldbl-tests), \
+ $(objpfx)$(r)$(suf)): \
+ sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))