[07/13] powerpc64: apply -mabi=ibmlongdouble to special files

Message ID 20200306203721.15886-8-murphyp@linux.vnet.ibm.com
State New
Headers show
Series
  • Enable IEEE binary128 long double on powerpc64le
Related show

Commit Message

Paul E. Murphy March 6, 2020, 8:37 p.m.
Some of these files depend on the avoidance of using the various
register sets of POWER.  When enabling the IEEE 128 long double,
we must be sure to disable this ABI as some compilers will
refuse to compile if -mno-vsx and -mabi=ieeelongdouble are both
present.
---
 sysdeps/powerpc/powerpc64/Makefile        | 6 ++++++
 sysdeps/powerpc/powerpc64/le/Makefile     | 3 ++-
 sysdeps/powerpc/powerpc64/power7/Makefile | 6 +++++-
 3 files changed, 13 insertions(+), 2 deletions(-)

-- 
2.21.1

Comments

Tulio Magno Quites Machado Filho March 24, 2020, 8:59 p.m. | #1
"Paul E. Murphy" <murphyp@linux.vnet.ibm.com> writes:

> Some of these files depend on the avoidance of using the various

> register sets of POWER.  When enabling the IEEE 128 long double,

> we must be sure to disable this ABI as some compilers will

> refuse to compile if -mno-vsx and -mabi=ieeelongdouble are both

> present.


Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>


-- 
Tulio Magno
Paul A. Clarke via Libc-alpha March 25, 2020, 9:22 p.m. | #2
Pushed.  Thank you for reviewing.

On 3/24/20 3:59 PM, Tulio Magno Quites Machado Filho wrote:
> "Paul E. Murphy" <murphyp@linux.vnet.ibm.com> writes:

> 

>> Some of these files depend on the avoidance of using the various

>> register sets of POWER.  When enabling the IEEE 128 long double,

>> we must be sure to disable this ABI as some compilers will

>> refuse to compile if -mno-vsx and -mabi=ieeelongdouble are both

>> present.

> 

> Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

>

Patch

diff --git a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
index 6e88df1d69..dd49dbbce2 100644
--- a/sysdeps/powerpc/powerpc64/Makefile
+++ b/sysdeps/powerpc/powerpc64/Makefile
@@ -25,6 +25,12 @@  no-special-regs := $(sort $(foreach n,40 41 50 51 60 61 62 63 \
 				    -ffixed-v$n)) \
 		   -ffixed-vrsave -ffixed-vscr -mno-altivec -mno-vsx
 
+# Likewise, we must disable IEEE long double support as some (all?)
+# compilers will not accept the above options with IEEE long double.
+ifeq ($(ibm128-fcts),yes)
+no-special-regs += -mabi=ibmlongdouble
+endif
+
 # Need to prevent gcc from using fprs in code used during dynamic linking.
 
 CFLAGS-dl-runtime.os = $(no-special-regs)
diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile
index f23e2782f0..f9dd44c1a2 100644
--- a/sysdeps/powerpc/powerpc64/le/Makefile
+++ b/sysdeps/powerpc/powerpc64/le/Makefile
@@ -11,7 +11,8 @@  f128-loader-link = -Wl,--as-needed $(elf-objpfx)ld.so -Wl,--no-as-needed
 type-ldouble-CFLAGS =
 no-gnu-attribute-CFLAGS =
 ifeq ($(ibm128-fcts),yes)
-type-ldouble-CFLAGS += -mabi=ibmlongdouble
+ibm128-abi-CFLAGS := -mabi=ibmlongdouble
+type-ldouble-CFLAGS += $(ibm128-abi-CFLAGS)
 no-gnu-attribute-CFLAGS = -mno-gnu-attribute
 endif
 
diff --git a/sysdeps/powerpc/powerpc64/power7/Makefile b/sysdeps/powerpc/powerpc64/power7/Makefile
index 89a2296085..9a0e7474bb 100644
--- a/sysdeps/powerpc/powerpc64/power7/Makefile
+++ b/sysdeps/powerpc/powerpc64/power7/Makefile
@@ -1,7 +1,11 @@ 
 ifeq ($(subdir),elf)
 # Prevent the use of VSX registers and insns in _dl_start, which under -O3
 # optimization may require a TOC reference before relocations are resolved.
-CFLAGS-rtld.c += -mno-vsx
+CFLAGS-rtld.c += $(ibm128-abi-CFLAGS) -mno-vsx
+
+# Likewise, remove options to build IEEE long double
+$(foreach suf,$(all-object-suffixes),$(objpfx)rtld$(suf)): \
+  sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
 endif
 
 ifeq ($(subdir),string)