[00/13] Enable IEEE binary128 long double on powerpc64le

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

Message

Paul E. Murphy March 6, 2020, 8:37 p.m.
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 (3):
  powerpc64le: Ensure correct ldouble compiler flags are used
  powerpc64le: link tests against ld.so
  powerpc64le: Enable support for IEEE long double

Paul E. Murphy (10):
  ldbl-128ibm-compat: PLT redirects for using ldbl redirects internally
  Fix tests which expose ldbl -> _Float128 redirects
  RFC: ldbl-128ibm-compat: workaround C++ redirect limitations
  powerpc64le: add -mno-gnu-attribute to *f128 objects and difftime
  powerpc64: apply -mabi=ibmlongdouble to special files
  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

 INSTALL                                       |   5 +
 NEWS                                          |   8 +-
 elf/tst-addr1.c                               |  11 +
 include/err.h                                 |  12 +-
 include/libc-symbols.h                        |   2 +
 include/monetary.h                            |   8 +
 include/printf.h                              |   8 +
 include/stdio.h                               |  62 +++--
 include/stdlib.h                              |   9 +
 include/sys/cdefs.h                           |  20 ++
 include/sys/syslog.h                          |   2 +-
 include/wchar.h                               |  11 +-
 manual/install.texi                           |   9 +
 stdio-common/tst-vfprintf-user-type.c         |   4 +
 .../ldbl-128ibm-compat/ieee128-asprintf.c     |   5 +-
 .../ldbl-128ibm-compat/ieee128-dprintf.c      |   1 +
 .../ieee754/ldbl-128ibm-compat/ieee128-err.c  |   7 +
 .../ldbl-128ibm-compat/ieee128-fprintf.c      |   1 +
 .../ieee128-isoc99_sscanf.c                   |   1 +
 .../ieee128-isoc99_vfscanf.c                  |   2 +
 .../ieee128-isoc99_vsscanf.c                  |   1 +
 .../ldbl-128ibm-compat/ieee128-sprintf.c      |   1 +
 .../ldbl-128ibm-compat/ieee128-syslog.c       |   1 +
 .../ldbl-128ibm-compat/ieee128-vfprintf.c     |   1 +
 .../ldbl-128ibm/include/bits/iscanonical.h    |   2 +-
 sysdeps/powerpc/fpu/libm-test-ulps            |   8 +
 sysdeps/powerpc/powerpc64/Makefile            |   6 +
 sysdeps/powerpc/powerpc64/le/Implies-before   |   1 +
 sysdeps/powerpc/powerpc64/le/Makefile         | 251 ++++++++++++++----
 sysdeps/powerpc/powerpc64/le/configure        | 124 +++++++++
 sysdeps/powerpc/powerpc64/le/configure.ac     |  41 +++
 .../powerpc64/le/fpu/multiarch/Makefile       |   4 +-
 .../powerpc64/le/no_ldbl_gnu_attribute.c      |  30 +++
 sysdeps/powerpc/powerpc64/power7/Makefile     |   6 +-
 .../powerpc64/le/ldbl-128ibm-compat-abi.h     |   8 +
 .../linux/powerpc/powerpc64/le/libc.abilist   |  93 +++++++
 .../linux/powerpc/powerpc64/le/libm.abilist   | 117 ++++++++
 37 files changed, 803 insertions(+), 80 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