powerpc64: apply -mabi=ibmlongdouble to special files

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>
This commit is contained in:
Paul E. Murphy 2020-02-07 14:08:08 -06:00
parent 39517c008f
commit 57651ee4c8
3 changed files with 13 additions and 2 deletions

View File

@ -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)

View File

@ -6,7 +6,8 @@
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

View File

@ -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)