[v3,00/11] Add IEEE long double <-> string functions for powerpc64le

Message ID 20191203170540.18428-1-gabriel@inconstante.net.br
Headers show
Series
  • Add IEEE long double <-> string functions for powerpc64le
Related show

Message

Gabriel F. T. Gomes Dec. 3, 2019, 5:05 p.m.
From: "Gabriel F. T. Gomes" <gabrielftg@linux.ibm.com>


Changes since v2:

  - 'Changes since v2' messages in each of the patches;
  - Patch 1/11 is new;
  - Branch updated at our git server [1].

[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/gabriel/powerpc-ieee128-printscan

Message for v2:

'Changes since v1' messages in each of the patches, except for patch v1
19/31, which has been dropped.  The updated tree can be found in the
repository [1] (commit ID d9fa17b4597a).

This patch set has been tested on powerpc64le, x86_64, and with
build-many-glibcs.py (sorry for not using b-m-g previously).

[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/gabriel/powerpc-ieee128-printscan

Message for v1:

Hi,

I have previously sent some of the patches in this set, but sending only
part of them usually raised the concern that they were hard to test,
because they depended on the remaining patches (making it also hard to
review).  To make testing easier, I provided the remaining patches in a
public branch (even though some weren't fully done), but that is not
what we usually do, which also contributes for the patch set being hard
to test and review.

I wanted to change this, so I finished the patches that weren't fully
ready in the branch, and I'm finally sending it as a regular patch
series by email.

Some notes to ease review:

  - Many of the patches are somewhat independent, for instance, it
    should be possible for someone to review only the syslog or cvt
    patches, but not those related to printf*.  The reason why I want to
    send them together is that many of them touch the same file
    (sysdeps/ieee754/ldbl-128ibm-compat/Makefile), so the order is
    important in this sense (I can change the order before commit if
    some later patch gets positive reviews first).
  - Beware that the *cvt refactoring is composed of 5 patches, but I
    will commit them only after squashing all into a *single* commit.
  - The last patch in the series is what makes all of this patches
    actually be used, so it's needed for the testing (and the last one
    needs all the others, because the function redirections (in *-ldbl.h
    files) is all-or-nothing.
  - This patch set is also available as a branch in the repository [1]
    (commit ID 1c4f7fffc4f1 - branch gabriel/powerpc-ieee128-printscan),
    maybe that helps.

PS: I removed all the ChangeLog entries (Hurray!)

[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/gabriel/powerpc-ieee128-printscan

Gabriel F. T. Gomes (9):
  ldbl-128ibm-compat: Fix selection of GNU and ISO C99 scanf
  ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
  Refactor *cvt functions implementation (1-4/5)
  Refactor *cvt functions implementation (5/5)
  ldbl-128ibm-compat: Add *cvt functions
  Avoid compat symbols for totalorder in powerpc64le IEEE long double
  ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128
  powerpc64le: Require a compiler with -mno-gnu-attribute
  RFC: powerpc64le: Enable support for IEEE long double

Tulio Magno Quites Machado Filho (2):
  Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
  ldbl-128ibm-compat: Compiler flags for stdio functions

 INSTALL                                       |   5 +
 NEWS                                          |   2 +-
 argp/argp.h                                   |   3 +-
 bits/long-double.h                            |   1 +
 include/stdio.h                               |  11 +-
 include/stdlib.h                              |   3 +
 libio/bits/stdio-ldbl.h                       |  46 ++--
 libio/stdio.h                                 |  16 +-
 manual/install.texi                           |   5 +
 misc/bits/syslog-ldbl.h                       |   4 +-
 misc/efgcvt-dbl-macros.h                      |  52 ++++
 misc/efgcvt-ldbl-macros.h                     |  59 ++++
 misc/efgcvt-template.c                        |  75 ++++++
 misc/efgcvt.c                                 | 124 ++-------
 misc/efgcvt_r-template.c                      | 198 ++++++++++++++
 misc/efgcvt_r.c                               | 251 +-----------------
 misc/err.h                                    |   3 +-
 misc/error.h                                  |   6 +-
 misc/qefgcvt.c                                |  43 ++-
 misc/qefgcvt_r.c                              |  50 ++--
 misc/sys/cdefs.h                              |  38 ++-
 misc/sys/syslog.h                             |   4 +-
 stdio-common/printf.h                         |   3 +-
 stdlib/bits/stdlib-ldbl.h                     |  22 ++
 stdlib/monetary.h                             |   3 +-
 stdlib/stdlib.h                               |   4 +-
 sysdeps/ieee754/ldbl-128/bits/long-double.h   |   1 +
 sysdeps/ieee754/ldbl-128/s_totalorderl.c      |   9 +
 sysdeps/ieee754/ldbl-128/s_totalordermagl.c   |   9 +
 sysdeps/ieee754/ldbl-128ibm-compat/Makefile   |  97 ++++++-
 sysdeps/ieee754/ldbl-128ibm-compat/Versions   |  22 ++
 .../ldbl-128ibm-compat/bits/long-double.h     |  29 ++
 .../ieee128-isoc99_fscanf.c                   |  35 +++
 .../ieee128-isoc99_fwscanf.c                  |  35 +++
 .../ldbl-128ibm-compat/ieee128-isoc99_scanf.c |  35 +++
 .../ieee128-isoc99_sscanf.c                   |  39 +++
 .../ieee128-isoc99_swscanf.c                  |  40 +++
 .../ieee128-isoc99_vfscanf.c                  |  27 ++
 .../ieee128-isoc99_vfwscanf.c                 |  27 ++
 .../ieee128-isoc99_vscanf.c                   |  27 ++
 .../ieee128-isoc99_vsscanf.c                  |  30 +++
 .../ieee128-isoc99_vswscanf.c                 |  32 +++
 .../ieee128-isoc99_vwscanf.c                  |  27 ++
 .../ieee128-isoc99_wscanf.c                   |  35 +++
 .../ldbl-128ibm-compat/ieee128-qefgcvt.c      |  52 ++++
 .../ldbl-128ibm-compat/ieee128-qefgcvt_r.c    |  34 +++
 .../test-isoc99-scanf-ibm128.c                |   1 +
 .../test-isoc99-scanf-ieee128.c               |   1 +
 .../test-isoc99-wscanf-ibm128.c               |   1 +
 .../test-isoc99-wscanf-ieee128.c              |   1 +
 .../test-scanf-ldbl-compat-template.c         |  73 +++--
 .../test-scanf-ldbl-compat.c                  |   7 +-
 .../test-scanf-ldbl-compat.sh                 |  16 +-
 .../test-wscanf-ldbl-compat.c                 |   7 +-
 sysdeps/ieee754/ldbl-96/bits/long-double.h    |   1 +
 sysdeps/ieee754/ldbl-opt/bits/long-double.h   |   1 +
 sysdeps/mips/ieee754/bits/long-double.h       |   1 +
 sysdeps/powerpc/powerpc64/le/Implies-before   |   1 +
 sysdeps/powerpc/powerpc64/le/configure        |  29 ++
 sysdeps/powerpc/powerpc64/le/configure.ac     |  15 ++
 .../powerpc64/le/ldbl-128ibm-compat-abi.h     |   8 +
 .../linux/powerpc/powerpc64/le/libc.abilist   |  93 +++++++
 .../linux/powerpc/powerpc64/le/libm.abilist   | 104 ++++++++
 .../linux/sparc/sparc32/bits/long-double.h    |   1 +
 .../linux/sparc/sparc64/bits/long-double.h    |   1 +
 wcsmbs/bits/wchar-ldbl.h                      |  36 ++-
 wcsmbs/wchar.h                                |  14 +-
 67 files changed, 1594 insertions(+), 491 deletions(-)
 create mode 100644 misc/efgcvt-dbl-macros.h
 create mode 100644 misc/efgcvt-ldbl-macros.h
 create mode 100644 misc/efgcvt-template.c
 create mode 100644 misc/efgcvt_r-template.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/bits/long-double.h
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_fscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_fwscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_scanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_sscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vfscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vfwscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vsscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vwscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_wscanf.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt_r.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ibm128.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ieee128.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ibm128.c
 create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ieee128.c
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/ldbl-128ibm-compat-abi.h

-- 
2.21.0