[PATCH v2 00/10] IEEE binary128 long double on powerpc64le
Paul E. Murphy
murphyp@linux.vnet.ibm.com
Fri Mar 27 21:17:51 GMT 2020
New for V2:
Several preparatory patches have been merged, and three new
patches are added.
Notably, GCC 7.5.x is blacklisted as it cannot handle both
-mabi=* and -mlong-double-128 being passed without error.
Update install.texi and regenerate INSTALL per feedback from
JSM.
Cleanup some ugly loose ends in the ldbl-128ibm iscanonical.h,
and add documentation to, and rename __LONG_DOUBLE_USES_FLOAT128
to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.
The final 4 patches should be committed simultaneously, and will
be tested against the cross product of the following GCC versions
and CPU targets.
{power8, power9, powerpc64le} x { GCC 7.3, 8.4, 9.3}
---8<---
This shuffles the powerpc64le Makefile around to support
building and testing the new long double format. I consider
this support experimental as GNU libstc++ has some growing
pains to make -mfloat128 and -mabi=ieeelongdouble play nicely
togethor, and the runtime symbol selection may also need some
improvement (i.e dlopen/dlsym). Nevertheless, this is the
start to making this feature available.
The first 3 patches fixup internal headers to ensure local
PLT usage works, and C++ tests continue to work. Something
changed between g++ 8 and 9 which prevents the redirects from
working unless the headers are marked as system headers.
The majority of the powerpc64le patches refactor the common
ppc64le Makefile to ensure the correct ldouble/float128
compiler flags are applied when -mabi=ieeelongdouble is
applied globally, as should be the case in some future release.
Notably, the only explicit user of long double internally is
difftime.
Gabriel F. T. Gomes (1):
powerpc64le: Enable support for IEEE long double
Paul E. Murphy (9):
ldbl-128ibm-compat: workaround C++ redirect limitations
ldbl-128ibm: simplify iscanonical.h
Rename __LONG_DOUBLE_USES_FLOAT128 to
powerpc64le: Enforce -mabi=ibmlongdouble when -mfloat128 used
powerpc64le: workaround ieee long double / _Float128 stdc++ bug
powerpc64le: raise GCC requirement to 7.3 for long double transition
powerpc64le: bump binutils version requirement to >= 2.26
powerpc64le: enforce non-specific long double in .gnu.attributes
section
powerpc64le: blacklist broken GCC compilers (e.g GCC 7.5.0)
INSTALL | 9 ++
NEWS | 8 +-
argp/argp.h | 2 +-
bits/long-double.h | 15 +-
elf/tst-addr1.c | 2 +-
include/math.h | 6 +-
include/monetary.h | 8 +
include/printf.h | 8 +
include/stdio.h | 16 +-
include/stdlib.h | 11 +-
include/sys/cdefs.h | 2 +-
include/wchar.h | 9 ++
libio/bits/stdio-ldbl.h | 4 +-
libio/stdio.h | 8 +-
manual/install.texi | 9 ++
math/complex.h | 4 +-
math/math.h | 12 +-
math/test-ldouble.h | 2 +-
misc/err.h | 2 +-
misc/error.h | 2 +-
misc/sys/cdefs.h | 4 +-
misc/sys/syslog.h | 2 +-
stdio-common/printf.h | 2 +-
stdio-common/tst-vfprintf-user-type.c | 2 +-
stdlib/bits/stdlib-ldbl.h | 2 +-
stdlib/monetary.h | 2 +-
stdlib/stdlib.h | 2 +-
sysdeps/ieee754/ldbl-128/bits/long-double.h | 2 +-
sysdeps/ieee754/ldbl-128ibm-compat/Makefile | 12 --
.../ldbl-128ibm-compat/bits/long-double.h | 7 +-
.../ieee754/ldbl-128ibm-compat/math_ldbl.h | 2 +-
.../ieee754/ldbl-128ibm/bits/iscanonical.h | 10 +-
sysdeps/ieee754/ldbl-128ibm/ieee754.h | 6 +-
.../ldbl-128ibm/include/bits/iscanonical.h | 2 +-
sysdeps/ieee754/ldbl-96/bits/long-double.h | 2 +-
sysdeps/ieee754/ldbl-opt/bits/long-double.h | 2 +-
sysdeps/mips/ieee754/bits/long-double.h | 2 +-
sysdeps/powerpc/fpu/libm-test-ulps | 4 +
sysdeps/powerpc/powerpc64/le/Implies-before | 1 +
sysdeps/powerpc/powerpc64/le/Makefile | 130 ++++++++++-----
sysdeps/powerpc/powerpc64/le/configure | 151 ++++++++++++++++++
sysdeps/powerpc/powerpc64/le/configure.ac | 56 +++++++
.../powerpc64/le/fpu/multiarch/Makefile | 4 +-
.../powerpc64/le/no_ldbl_gnu_attribute.c | 30 ++++
.../powerpc64/le/ldbl-128ibm-compat-abi.h | 8 +
.../linux/powerpc/powerpc64/le/libc.abilist | 93 +++++++++++
.../linux/powerpc/powerpc64/le/libm.abilist | 117 ++++++++++++++
.../linux/sparc/sparc32/bits/long-double.h | 2 +-
.../linux/sparc/sparc64/bits/long-double.h | 2 +-
wcsmbs/bits/wchar-ldbl.h | 4 +-
wcsmbs/wchar.h | 8 +-
51 files changed, 691 insertions(+), 121 deletions(-)
create mode 100644 sysdeps/powerpc/powerpc64/le/no_ldbl_gnu_attribute.c
create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/ldbl-128ibm-compat-abi.h
--
2.21.1
More information about the Libc-alpha
mailing list