public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] Deleted branch gabriel/powerpc-ieee128-printscan
@ 2019-12-13 22:28 Gabriel F.T.Gomes
  0 siblings, 0 replies; 5+ messages in thread
From: Gabriel F.T.Gomes @ 2019-12-13 22:28 UTC (permalink / raw)
  To: glibc-cvs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 14162 bytes --]

The branch 'gabriel/powerpc-ieee128-printscan' was deleted.
It previously pointed to:

 5b7fcf2... RFC: powerpc64le: Enable support for IEEE long double

Diff:

!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------

  5b7fcf2... RFC: powerpc64le: Enable support for IEEE long double
  b9d9986... powerpc64le: Require a compiler with -mno-gnu-attribute
  4625bdf... ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong
  9dcbdd5... Avoid compat symbols for totalorder in powerpc64le IEEE lon
  675a15e... ldbl-128ibm-compat: Compiler flags for stdio functions
  cf48802... Do not redirect calls to __GI_* symbols, when redirecting t
  d00ba66... ldbl-128ibm-compat: Add *cvt functions
  e470a3f... Refactor *cvt functions implementation (5/5)
  fc90741... Refactor *cvt functions implementation (1-4/5)
  8a9f338... ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
  48630fa... ldbl-128ibm-compat: Fix selection of GNU and ISO C99 scanf

commit 5b7fcf2e8104411e4fe41f2847b717abf31d2433
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:28 2019 -0300

    RFC: powerpc64le: Enable support for IEEE long double
    
    DO NOT COMMIT!
    
    Changes since v2:
    
      - Added definition of LDBL_IBM128_COMPAT_VERSION and
        LDBL_IBM128_VERSION (moved from a previous commit).
    
    Changes since v1:
    
      - Use __LONG_DOUBLE_USES_FLOAT128 directly.
    
    -- 8< --
    On platforms where long double may have two different formats, i.e.: the
    same format as double (64-bits) or something else (128-bits), building
    with -mlong-double-128 is the default and function calls in the user
    program match the name of the function in Glibc.  When building with
    -mlong-double-64, Glibc installed headers redirect such calls to the
    appropriate function.
    
    This patch adds similar redirections to be used by user code builds in
    IEEE long double mode (-mabi=ieeelongdouble).  It also skips some uses
    of libc_hidden_proto in internal headers, because they also produce
    redirections, causing a redirection conflict.
    
    PS: Missing NEWS entry.

commit b9d9986c6619d94750e5879df7f15190d9c85140
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    No changes since v2.
    
    Changes since v1:
    
      - Added mentions to the build requirement in manual/install.texi,
        INSTALL (regenerated) and NEWS.
    
    -- 8< --
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.
    
    Reviewed-by: Joseph Myers <joseph@codesourcery.com>

commit 4625bdf4d3edb21b437c0a84cfe80562b92a066a
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Sep 10 08:05:03 2019 -0500

    ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128
    
    No changes since v2.
    
    Changes since v1:
    
      - Do not try to remove -mabi=ieeelongdouble, since it hasn't been
        added.  The removal is a residue from our initial development.
    
    -- 8< --
    Some compiler versions, e.g. GCC 7, complain when -mlong-double-128 is
    used together with -mabi=ibmlongdouble or -mabi=ieeelongdouble,
    producing the following error message:
    
      cc1: error: ‘-mabi=ibmlongdouble’ requires ‘-mlong-double-128’
    
    This patch removes -mlong-double-128 from the compilation lines that
    explicitly request -mabi=*longdouble.
    
    Tested for powerpc64le.

commit 9dcbdd544768e71ce2b0a8e127f6095d24ce8d15
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Mon Sep 9 12:59:46 2019 -0500

    Avoid compat symbols for totalorder in powerpc64le IEEE long double
    
    No changes since v2.
    
    Changes since v1:
    
      - Added comment on the redefinition of libm_alias_float128_other_r_ldbl.
    
    -- 8< --
    On powerpc64le, the libm_alias_float128_other_r_ldbl macro is
    used to create an alias between totalorderf128 and __totalorderlieee128,
    as well as between the totalordermagf128 and __totalordermaglieee128.
    
    However, the totalorder* and totalordermag* functions changed their
    parameter type since commit ID 42760d764649 and got compat symbols for
    their old versions.  With this change, the aforementioned macro would
    create two conflicting aliases for __totalorderlieee128 and
    __totalordermaglieee128.
    
    This patch avoids the creation of the alias between the IEEE long double
    symbols (__totalorderl*ieee128) and the compat symbols, because the IEEE
    long double functions have never been exported thus don't need such
    compat symbol.
    
    Tested for powerpc64le.
    
    Reviewed-by: Joseph Myers <joseph@codesourcery.com>

commit 675a15ed1e980c8473d843ae1de0e2d0be8e53b3
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Mon Jul 30 12:04:40 2018 -0300

    ldbl-128ibm-compat: Compiler flags for stdio functions
    
    No changes since v2.
    
    No changes since v1.
    
    -- 8< --
    Some of the files that provide stdio.h and wchar.h functions have a
    filename prefixed with 'io', such as 'iovsprintf.c'.  On platforms that
    imply ldbl-128ibm-compat, these files must be compiled with the flag
    -mabi=ibmlongdouble.  This patch adds this flag to their compilation.
    
    Notice that this is not required for the other files that provide
    similar functions, because filenames that are not prefixed with 'io'
    have ldbl-128ibm-compat counterparts in the Makefile, which already adds
    -mabi=ibmlongdouble to them.

commit cf488028e0e656b700652d5d87dff494ad37bd5a
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Sun Oct 20 16:00:30 2019 -0500

    Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
    
    No changes since v2.
    
    Changes since v1:
    
      - Reduced the number of changes to the minimum required to build *cvt
        files in -mabi=ieeelongdouble mode.
      - Added __LONG_DOUBLE_USES_FLOAT128 to all long-double.h files.
    
    -- 8< --
    On platforms where long double has IEEE binary128 format as a third
    option (initially, only powerpc64le), many exported functions are
    redirected to their __*ieee128 equivalents.  This redirection is
    provided by installed headers such as stdio-ldbl.h, and is supposed to
    work correctly with user code.
    
    However, during the build of glibc, similar redirections are employed,
    in internal headers, such as include/stdio.h, in order to avoid extra
    PLT entries.  These redirections conflict with the redirections to
    __*ieee128, and must be avoided during the build.  This patch protects
    the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128, a
    new macro that is defined to 1 when functions that deal with long double
    typed values reuses the _Float128 implementation (this is currently only
    true for powerpc64le).
    
    Tested for powerpc64le, x86_64, and with build-many-glibcs.py.
    
    Co-authored-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
    Reviewed-by: Florian Weimer <fweimer@redhat.com>

commit d00ba6675d9c07e7a1336793336a13e8a75b98d6
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:24 2019 -0300

    ldbl-128ibm-compat: Add *cvt functions
    
    Changes since v2:
    
      - Fix http URLs.
    
    No changes since v1.
    
    -- 8< --
    This patch adds IEEE long double versions of q*cvt* functions for
    powerpc64le.  Unlike all other long double to/from string conversion
    functions, these do not rely on internal functions that can take
    floating-point numbers with different formats and act on them
    accordingly, instead, the related files are rebuilt with the
    -mabi=ieeelongdouble compiler flag set.
    
    Having -mabi=ieeelongdouble passed to the compiler causes the object
    files to be marked with a .gnu_attribute that is incompatible with the
    .gnu_attribute in files built with -mabi=ibmlongdouble (the default).
    The difference causes error messages similar to the following:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt_r.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    Although this warning is useful in other situations, the library
    actually needs to have functions with different long double formats, so
    .gnu_attribute generation is explicitly disabled for these files with
    the use of -mno-gnu-attribute.
    
    Tested for powerpc64le on the branch that actually enables the
    sysdeps/ieee754/ldbl-128ibm-compat for powerpc64le.

commit e470a3f2e608ddfe4ce3ca1ce2cf8d3896750be3
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Nov 26 14:48:49 2019 -0300

    Refactor *cvt functions implementation (5/5)
    
    Changes since v2:
    
      - Moved the removal of unused macros to a previous patch
    
    Changes since v1:
    
      - Adapted after patch v1 19/31 (remove hidden_* uses) was dropped.
      - Fixed unintended removal of cvt* symbols on alpha and s390x
        (now tested with build-many-glibcs.py).
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch replaces the use of the APPEND macro with one new macro being
    defined for each of the cvt* functions.  This makes it easier to define
    functions names for IEEE long double on powerpc64le, e.g. __ecvtieee128.
    
    The commit message is on patch 1-4/5.

commit fc9074193ecb65c2b778497d43cbd90be3291c9f
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:08 2019 -0300

    Refactor *cvt functions implementation (1-4/5)
    
    Changes since v2:
    
      - Squashed patches 1-4 and trivial bits of patch 5.
      - Replaced http with https (like the rest of glibc).
      - Updated copyright years.
      - Removed refactoring noise reported by Paul Murphy.
    
    No changes since v1.
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    Below, the commit message to be used after the squashing...
    
    -- 8< --
    This patch refactors the *cvt functions implementation in a way that
    makes it easier to re-use them for implementing the IEEE long double on
    powerpc64le.  By splitting the implementation per se in one file
    (efgcvt-template.c) and the alias definitions in others (e.g. efgcvt.c),
    the new code makes it easier to define new function names, such as
    __qecvtieee128.
    
    Tested for powerpc64le and with build-many-glibcs.
    
    Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>

commit 8a9f338591e27a72b179fec6a42d7469c6a55eb5
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:43 2019 -0300

    ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
    
    Changes since v2:
    
      - Removed ugly hacks after rebase against commit ID 93486ba583ec.
      - Updated copyright years.
      - Unified test case for GNU and ISO C99 versions (got rid of many
        files in the process, including the new test template for C99).
      - Fixed http URLs.
      - Updated commit message.
    
    No changes since v1.
    
    -- 8< --
    In the format string for *scanf functions, the '%as', '%aS', and '%a[]'
    modifiers behave differently depending on ISO C99 compatibility.  When
    _GNU_SOURCE is defined and -std=c89 is passed to the compiler, these
    functions behave like ascanf, and the modifiers allocate memory for the
    output.  Otherwise, the ISO C99 compliant version of these functions is
    used, and the modifiers consume a floating-point argument.  This patch
    adds the IEEE binary128 variant of ISO C99 compliant functions for the
    third long double format on powerpc64le.
    
    Tested for powerpc64le.
    
    Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>

commit 48630fa435cebdbf0b91ef0dbb1fe7be99a2d4ec
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Wed Nov 27 10:06:50 2019 -0600

    ldbl-128ibm-compat: Fix selection of GNU and ISO C99 scanf
    
    New since v2.
    
    -- 8< --
    Since commit
    
    commit 03992356e6fedc5a5e9d32df96c1a2c79ea28a8f
    Author: Zack Weinberg <zackw@panix.com>
    Date:   Sat Feb 10 11:58:35 2018 -0500
    
        Use C99-compliant scanf under _GNU_SOURCE with modern compilers.
    
    the selection of the GNU versions of scanf functions requires both
    _GNU_SOURCE and -std=c89.  This patch changes the tests in
    ldbl-128ibm-compat so that they actually test the GNU versions (without
    this change, the redirection to the ISO C99 version always happens, so
    GNU versions of the new implementation (e.g. __scanfieee128) were left
    untested).
    
    Tested for powerpc64le.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [glibc] Deleted branch gabriel/powerpc-ieee128-printscan
@ 2019-12-03 17:02 Gabriel F.T.Gomes
  0 siblings, 0 replies; 5+ messages in thread
From: Gabriel F.T.Gomes @ 2019-12-03 17:02 UTC (permalink / raw)
  To: glibc-cvs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 28695 bytes --]

The branch 'gabriel/powerpc-ieee128-printscan' was deleted.
It previously pointed to:

 d9fa17b... RFC: powerpc64le: Enable support for IEEE long double

Diff:

!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------

  d9fa17b... RFC: powerpc64le: Enable support for IEEE long double
  4992aa5... powerpc64le: Require a compiler with -mno-gnu-attribute
  9084ecd... ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong
  5958c57... Avoid compat symbols for totalorder in powerpc64le IEEE lon
  547bbef... ldbl-128ibm-compat: Compiler flags for stdio functions
  8d21b26... Do not redirect calls to __GI_* symbols, when redirecting t
  c6bb3a4... ldbl-128ibm-compat: Add *cvt functions
  7966fb8... Refactor *cvt functions implementation (5/5)
  b4cb03e... Refactor *cvt functions implementation (4/5)
  4d6a325... Refactor *cvt functions implementation (3/5)
  1f10b80... Refactor *cvt functions implementation (2/5)
  b84bffd... Refactor *cvt functions implementation (1/5)
  f612070... ldbl-128ibm-compat: Add tests for strfroml, strtold, and wc
  b33232b... ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
  76f8344... ldbl-128ibm-compat: Add strfmon_l with IEEE long double for
  6611627... ldbl-128ibm-compat: Add syslog functions
  d75118e... ldbl-128ibm-compat: Add obstack printing functions
  03b7bf2... ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
  c9a8cf4... ldbl-128ibm-compat: Reuse tests for err.h and error.h funct
  df8545f... ldbl-128ibm-compat: Add error.h functions
  7512cfb... ldbl-128ibm-compat: Add err.h functions
  d77fb42... ldbl-128ibm-compat: Add argp_error and argp_failure
  bc2b28d... ldbl-128ibm-compat: Add wide character scanning functions
  fd64b59... ldbl-128ibm-compat: Add regular character scanning function
  1592827... ldbl-128ibm-compat: Test positional arguments
  c2f8a35... ldbl-128ibm-compat: Test double values
  4d36596... ldbl-128ibm-compat: Add wide character, fortified printing 
  6c63ba6... ldbl-128ibm-compat: Add regular character, fortified printi
  2497c0c... ldbl-128ibm-compat: Add wide character printing functions
  ce7633e... ldbl-128ibm-compat: Add regular character printing function

commit d9fa17b4597aefa40b705f64c7304a83b62f0185
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:28 2019 -0300

    RFC: powerpc64le: Enable support for IEEE long double
    
    DO NOT COMMIT!
    
    Changes since v1:
    
      - Use __LONG_DOUBLE_USES_FLOAT128 directly.
    
    -- 8< --
    On platforms where long double may have two different formats, i.e.: the
    same format as double (64-bits) or something else (128-bits), building
    with -mlong-double-128 is the default and function calls in the user
    program match the name of the function in Glibc.  When building with
    -mlong-double-64, Glibc installed headers redirect such calls to the
    appropriate function.
    
    This patch adds similar redirections to be used by user code builds in
    IEEE long double mode (-mabi=ieeelongdouble).  It also skips some uses
    of libc_hidden_proto in internal headers, because they also produce
    redirections, causing a redirection conflict.
    
    PS: Missing NEWS entry.

commit 4992aa5de10a4877f97096c0afa5c5691f625762
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    Changes since v1:
    
      - Added mentions to the build requirement in manual/install.texi,
        INSTALL (regenerated) and NEWS.
    
    -- 8< --
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.

commit 9084ecd967de262646ec6a527c8670a1ab364be4
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Sep 10 08:05:03 2019 -0500

    ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128
    
    Changes since v1:
    
      - Do not try to remove -mabi=ieeelongdouble, since it hasn't been
        added.  The removal is a residue from our initial development.
    
    -- 8< --
    Some compiler versions, e.g. GCC 7, complain when -mlong-double-128 is
    used together with -mabi=ibmlongdouble or -mabi=ieeelongdouble,
    producing the following error message:
    
      cc1: error: ‘-mabi=ibmlongdouble’ requires ‘-mlong-double-128’
    
    This patch removes -mlong-double-128 from the compilation lines that
    explicitly request -mabi=*longdouble.
    
    Tested for powerpc64le.

commit 5958c576fae361db66398899e050e0f6b753e8e5
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Mon Sep 9 12:59:46 2019 -0500

    Avoid compat symbols for totalorder in powerpc64le IEEE long double
    
    Changes since v1:
    
      - Added comment on the redefinition of libm_alias_float128_other_r_ldbl.
    
    -- 8< --
    On powerpc64le, the libm_alias_float128_other_r_ldbl macro is
    used to create an alias between totalorderf128 and __totalorderlieee128,
    as well as between the totalordermagf128 and __totalordermaglieee128.
    
    However, the totalorder* and totalordermag* functions changed their
    parameter type since commit ID 42760d764649 and got compat symbols for
    their old versions.  With this change, the aforementioned macro would
    create two conflicting aliases for __totalorderlieee128 and
    __totalordermaglieee128.
    
    This patch avoids the creation of the alias between the IEEE long double
    symbols (__totalorderl*ieee128) and the compat symbols, because the IEEE
    long double functions have never been exported thus don't need such
    compat symbol.

commit 547bbef79b0d4cf45368f6149d4cc25e8183717a
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Mon Jul 30 12:04:40 2018 -0300

    ldbl-128ibm-compat: Compiler flags for stdio functions
    
    No changes since v1.
    
    -- 8< --
    Some of the files that provide stdio.h and wchar.h functions have a
    filename prefixed with 'io', such as 'iovsprintf.c'.  On platforms that
    imply ldbl-128ibm-compat, these files must be compiled with the flag
    -mabi=ibmlongdouble.  This patch adds this flag to their compilation.
    
    Notice that this is not required for the other files that provide
    similar functions, because filenames that are not prefixed with 'io'
    have ldbl-128ibm-compat counterparts in the Makefile, which already adds
    -mabi=ibmlongdouble to them.

commit 8d21b26af1efd1f4cef8597065f3b2fdf733b480
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Sun Oct 20 16:00:30 2019 -0500

    Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
    
    Changes since v1:
    
      - Reduced the number of changes to the minimum required to build *cvt
        files in -mabi=ieeelongdouble mode.
      - Added __LONG_DOUBLE_USES_FLOAT128 to all long-double.h files.
    
    -- 8< --
    On platforms where long double has IEEE binary128 format as a third
    option (initially, only powerpc64le), many exported functions are
    redirected to their __*ieee128 equivalents.  This redirection is
    provided by installed headers such as stdio-ldbl.h, and is supposed to
    work correctly with user code.
    
    However, during the build of glibc, similar redirections are employed,
    in internal headers, such as include/stdio.h, in order to avoid extra
    PLT entries.  These redirections conflict with the redirections to
    __*ieee128, and must be avoided during the build.  This patch protects
    the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128, a
    new macro that is defined to 1 when functions that deal with long double
    typed values reuses the _Float128 implementation (this is currently only
    true for powerpc64le).
    
    Tested for powerpc64le, x86_64, and with build-many-glibcs.py.
    
    Co-authored-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>

commit c6bb3a47fa3aec8f03712f9c9d5272601868c62b
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:24 2019 -0300

    ldbl-128ibm-compat: Add *cvt functions
    
    No changes since v1.
    
    -- 8< --
    This patch adds IEEE long double versions of q*cvt* functions for
    powerpc64le.  Unlike all other long double to/from string conversion
    functions, these do not rely on internal functions that can take
    floating-point numbers with different formats and act on them
    accordingly, instead, the related files are rebuilt with the
    -mabi=ieeelongdouble compiler flag set.
    
    Having -mabi=ieeelongdouble passed to the compiler causes the object
    files to be marked with a .gnu_attribute that is incompatible with the
    .gnu_attribute in files built with -mabi=ibmlongdouble (the default).
    The difference causes error messages similar to the following:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt_r.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    Although this warning is useful in other situations, the library
    actually needs to have functions with different long double formats, so
    .gnu_attribute generation is explicitly disabled for these files with
    the use of -mno-gnu-attribute.
    
    Tested for powerpc64le on the branch that actually enables the
    sysdeps/ieee754/ldbl-128ibm-compat for powerpc64le.

commit 7966fb87cdf3d07b5ac70537359490859fd2707d
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Oct 17 21:49:57 2019 -0300

    Refactor *cvt functions implementation (5/5)
    
    Changes since v1:
    
      - Adapted after patch v1 19/31 (remove hidden_* uses) was dropped.
      - Fixed unintended removal of cvt* symbols on alpha and s390x
        (now tested with build-many-glibcs.py).
    
    -- 8< --
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch replaces the use of the APPEND macro with one new macro being
    defined for each of the cvt* functions.  This makes it easier to define
    functions names for IEEE long double on powerpc64le, e.g. __ecvtieee128.

commit b4cb03e6d90bc48e77ea3f006678994574a47886
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Oct 17 21:16:46 2019 -0300

    Refactor *cvt functions implementation (4/5)
    
    Changes since v1:
    
      - Adapted after patch v1 19/31 (remove hidden_* uses) was dropped.
      - Fixed unintended removal of cvt* symbols on alpha and s390x
        (now tested with build-many-glibcs.py).
    
    -- 8< --
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch splits the definition of the symbol names into separate files
    for double and long double, which will make it easier to define new
    symbol names for IEEE long double functions on powerpc64le.

commit 4d6a3259405eecb85f4a075e1cd468c15f227806
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:16 2019 -0300

    Refactor *cvt functions implementation (3/5)
    
    No changes since v1.
    
    -- 8< --
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch only moves and merges the contents of misc/qefgcvt.c and
    misc/qefgcvt_r.c into misc/efgcvt-ldbl-macros.h.

commit 1f10b8057eb608a0feded160624552772afc85d5
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:12 2019 -0300

    Refactor *cvt functions implementation (2/5)
    
    No changes since v1.
    
    -- 8< --
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch only moves and merges the contents of misc/efgcvt-template.c
    and misc/efgcvt_r-template.c into misc/efgcvt-dbl-macros.h.

commit b84bffdeaaa63451fdb993d351fee721bebfe0c6
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:08 2019 -0300

    Refactor *cvt functions implementation (1/5)
    
    No changes since v1.
    
    -- 8< --
    This patch is to be squashed with the other n/5 refactoring patches.
    
    I split it into these 5 patches, because even using -M<x> and -C<y>, the
    patches looks as if a lot has changed, when it's basically just moving
    code around.  The final commit will be the squashing of patches 1 to 5,
    with the following commit message:
    
    -- 8< --
    This patch refactors the *cvt functions implementation in a way that
    makes it easier to re-use them for implementing the IEEE long double on
    powerpc64le.  By splitting the implementation per se in one file
    (efgcvt-template.c) and the alias definitions in others (e.g. efgcvt.c),
    the new code makes it easier to define new function names, such as
    __qecvtieee128.

commit f61207054da2f3786a81cf0cbfdc820366a9f499
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:00 2019 -0300

    ldbl-128ibm-compat: Add tests for strfroml, strtold, and wcstold
    
    No changes since v1.
    
    -- 8< --
    Since the commit
    
    commit 86a0f56158bd9cbaf2d640e2e6c66539f4cbbcc1
    Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
    Date:   Thu Jun 28 13:57:50 2018 +0530
    
        ldbl-128ibm-compat: Introduce ieee128 symbols
    
    IEEE long double versions of strfroml, strtold, and wcstold have been
    prepared, but not exposed (which will only happen when the full support
    for IEEE long double is complete).  This patch adds tests for these
    functions in both IBM and IEEE long double mode.

commit b33232be446c05628e6cd384e0b274dcb34936d3
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:56 2019 -0300

    ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
    
    No changes since v1.
    
    -- 8< --
    This patch adds elementary tests to check that strfmon and strfmon_l
    correctly evaluate long double values with IBM Extended Precision and
    IEEE binary128 format.
    
    Tested for powerpc64le.

commit 76f8344e76926e26e3c331dc5ac146ec0d0c5455
Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
Date:   Thu Jun 28 15:17:42 2018 +0530

    ldbl-128ibm-compat: Add strfmon_l with IEEE long double format
    
    No changes since v1.
    
    -- 8< --
    Similarly to what has been done for printf-like functions, more
    specifically to the internal implementation in __vfprintf_internal, this
    patch extends __vstrfmon_l_internal to deal with long double values with
    binary128 format (as a third format option and reusing the float128
    implementation).
    
    Tested for powerpc64le and x86_64.

commit 661162782a64a3b44f5b5c2712681118b4d54184
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:51 2019 -0300

    ldbl-128ibm-compat: Add syslog functions
    
    Changes since v1:
    
      - Moved the test to a container, which stopped messages being written
        to the system log.
    
    Comment from v1:
    
    I'm using 'syslog (LOG_DEBUG, etc.);' and support_capture_subprocess in
    the test case, which I believe will not print to the console, but I'm
    not sure if changing some system setting to high verbosity will disturb
    people's lives.  Please advise.  :)
    
    -- 8< --
    Similarly to __vfprintf_internal and __vfscanf_internal, the internal
    implementation of syslog functions (__vsyslog_internal) takes a
    'mode_flags' parameter used to select the format of long double
    parameters.  This patch adds variants of the syslog functions that set
    'mode_flags' to PRINTF_LDBL_USES_FLOAT128, thus enabling the correct
    printing of long double values on powerpc64le, when long double has IEEE
    binary128 format (-mabi=ieeelongdouble).
    
    Tested for powerpc64le.

commit d75118e56217fff72ef2291ff11aab138184dd90
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:47 2019 -0300

    ldbl-128ibm-compat: Add obstack printing functions
    
    No changes since v1.
    
    -- 8< --
    Similarly to the functions from the *printf family, this patch adds
    implementations for __obstack_*printf* functions that set the
    'mode_flags' parameter to PRINTF_LDBL_USES_FLOAT128, before making calls
    to __vfprintf_internal (indirectly through __obstack_vprintf_internal).
    
    Tested for powerpc64le.

commit 03b7bf2a5ac362aa37c18ef932f60ef3e7bb1f33
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:43 2019 -0300

    ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
    
    No changes since v1.
    
    -- 8< --
    In the format string for *scanf functions, the '%as', '%aS', and '%a[]'
    modifiers behave differently depending on ISO C99 compatibility and on
    _GNU_SOURCE.  When _GNU_SOURCE is not set and when in compatibility with
    ISO C99, these modifiers consume a floating-point argument.  Otherwise,
    they behave like ascanf, and allocate memory for the output.  This patch
    adds the IEEE binary128 variant of these functions for the third long
    double format on powerpc64le.
    
    Tested for powerpc64le.

commit c9a8cf4ad780225f20a0010e411cdd6bacd19b30
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:39 2019 -0300

    ldbl-128ibm-compat: Reuse tests for err.h and error.h functions
    
    No changes since v1.
    
    -- 8< --
    Commit IDs 9771e6cb5102 and 7597b0c7f711 added tests for the functions
    from err.h and error.h that can take long double parameters.
    Afterwards, commit ID f0eaf8627654 reused them on architectures that
    changed the long double format from the same as double to something else
    (i.e.: architectures that imply ldbl-opt).  This patch reuses it again
    for IEEE long double on powerpc64le.
    
    Tested for powerpc64le.

commit df8545f1aa57883b18294e491be15df966d81191
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:35 2019 -0300

    ldbl-128ibm-compat: Add error.h functions
    
    No changes since v1.
    
    -- 8< --
    Use the recently added, internal functions, __error_at_line_internal and
    __error_internal, to provide error.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.

commit 7512cfb00a5c3c31988816ecf0f323e55c93fd7c
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:30 2019 -0300

    ldbl-128ibm-compat: Add err.h functions
    
    No changes since v1.
    
    -- 8< --
    Use the recently added, internal functions, __vwarnx_internal and
    __vwarn_internal, to provide err.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.

commit d77fb42a4ed1dded279b791cbb3c8d8e86da5954
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:25 2019 -0300

    ldbl-128ibm-compat: Add argp_error and argp_failure
    
    No changes since v1.
    
    -- 8< --
    Use the recently added, internal functions, __argp_error_internal and
    __argp_failure_internal, to provide argp_error and argp_failure that can
    take long double arguments with IEEE binary128 format on platforms where
    long double can also take double format or some non-IEEE format
    (currently, this means powerpc64le).
    
    Tested for powerpc64le.

commit bc2b28d5a00c7f375428d4cc69a6a6526cf2978d
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:21 2019 -0300

    ldbl-128ibm-compat: Add wide character scanning functions
    
    No changes since v1.
    
    -- 8< --
    Similarly to what was done for regular character scanning functions,
    this patch uses the new mode mask, SCANF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters scanning function,
    __vfwscanf_internal (which is also extended to support scanning
    floating-point values with IEEE binary128, by redirecting calls to
    __wcstold_internal to __wcstof128_internal).
    
    Tested for powerpc64le.

commit fd64b59c03e3b744db68c5c9738de40b69a4bdbe
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:16 2019 -0300

    ldbl-128ibm-compat: Add regular character scanning functions
    
    No changes since v1.
    
    -- 8< --
    The 'mode' argument to __vfscanf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    SCANF_LDBL_USES_FLOAT128, which tells __vfscanf_internal to call
    __strtof128_internal, instead of __strtold_internal, and save the output
    into a _Float128 variable.
    
    Tested for powerpc64le.

commit 15928276f9a32995af199bffe13b044d14e49870
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:12 2019 -0300

    ldbl-128ibm-compat: Test positional arguments
    
    No changes since v1.
    
    -- 8< --
    The format string can request positional parameters, instead of relying
    on the order in which they appear as arguments.  Since this has an
    effect on how the type of each argument is determined, this patch
    extends the test cases to use positional parameters with mixed double
    and long double types, to verify that the IEEE long double
    implementations of *printf work correctly in this scenario.
    
    Tested for powerpc64le.

commit c2f8a353d1939fb290c098f432354765fd5978de
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:06 2019 -0300

    ldbl-128ibm-compat: Test double values
    
    No changes since v1.
    
    -- 8< --
    A single format string can take double and long double parameters at the
    same time.  Internally, these parameters are routed to the same
    function, which correctly reads them and calls the underlying functions
    responsible for the actual conversion to string.  This patch adds a new
    case to test this scenario.
    
    Tested for powerpc64le.

commit 4d36596c6957cd48c0f8d4e84ee6a3fcdf5037db
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:01 2019 -0300

    ldbl-128ibm-compat: Add wide character, fortified printing functions
    
    No changes since v1.
    
    -- 8< --
    Similarly to what was done for the regular character, fortified printing
    functions, this patch combines the mode masks PRINTF_LDBL_USES_FLOAT128
    and PRINTF_FORTIFY to provide wide character versions of fortified
    printf functions.  It also adds two flavors of test cases: one that
    explicitly calls the fortified functions, and another that reuses the
    non-fortified test, but defining _FORTIFY_SOURCE as 2.  The first
    guarantees that the implementations are actually being tested
    (independently of what's in bits/wchar2.h), whereas the second
    guarantees that the redirections calls the correct function in the IBM
    and IEEE long double cases.
    
    Tested for powerpc64le.

commit 6c63ba67512ea9dc052fc7d1569236c948e1d9a9
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:46:57 2019 -0300

    ldbl-128ibm-compat: Add regular character, fortified printing functions
    
    No changes since v1.
    
    -- 8< --
    Since the introduction of internal functions with explicit flags for the
    printf family of functions, the 'mode' parameter can be used to select
    which format long double parameters have (with the mode flags:
    PRINTF_LDBL_IS_DBL and PRINTF_LDBL_USES_FLOAT128), as well as to select
    whether to check for overflows (mode flag: PRINTF_FORTIFY).
    
    This patch combines PRINTF_LDBL_USES_FLOAT128 and PRINTF_FORTIFY to
    provide the IEEE binary128 version of printf-like function for platforms
    where long double can take this format, in addition to the double format
    and to some non-ieee format (currently, this means powerpc64le).
    
    There are two flavors of test cases provided with this patch: one that
    explicitly calls the fortified functions, for instance __asprintf_chk,
    and another that reuses the non-fortified test, but defining
    _FORTIFY_SOURCE as 2.  The first guarantees that the implementations are
    actually being tested (in bits/stdio2.h, vprintf gets redirected to
    __vfprintf_chk, which would leave __vprintf_chk untested), whereas the
    second guarantees that the redirections calls the correct function in
    the IBM and IEEE long double cases.
    
    Tested for powerpc64le.

commit 2497c0c917f94e559dceaff5e3e190fe22e31bc4
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:46:51 2019 -0300

    ldbl-128ibm-compat: Add wide character printing functions
    
    No changes since v1.
    
    -- 8< --
    Similarly to what was done for regular character printing functions,
    this patch uses the new mode mask, PRINTF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters printing function,
    __vfwprintf_internal (which is also extended to support printing
    floating-point values with IEEE binary128, by saving floating-point
    values into variables of type __float128 and adjusting the parameters to
    __printf_fp and __printf_fphex as if it was a call from a wide-character
    version of strfromf128 (even though such version does not exist)).
    
    Tested for powerpc64le.

commit ce7633efd9d4066b1a404dc1c200a0a860c88223
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Aug 8 10:42:35 2019 -0300

    ldbl-128ibm-compat: Add regular character printing functions
    
    No changes since v1.
    
    -- 8< --
    The 'mode' argument to __vfprintf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    PRINTF_LDBL_USES_FLOAT128, which tells __vfprintf_internal to save the
    floating-point values into variables of type __float128 and adjusts the
    parameters to __printf_fp and __printf_fphex as if it was a call from
    strfromf128.
    
    Many files from the stdio-common, wcsmbs, argp, misc, and libio
    directories will have IEEE binary128 counterparts.  Setting the correct
    compiler options to these files (original and counterparts) would
    produce a large amount of repetitive Makefile rules.  To avoid this
    repetition, this patch adds a Makefile routine that iterates over the
    files adding or removing the appropriate flags.
    
    Tested for powerpc64le.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [glibc] Deleted branch gabriel/powerpc-ieee128-printscan
@ 2019-10-25 15:31 Gabriel F.T.Gomes
  0 siblings, 0 replies; 5+ messages in thread
From: Gabriel F.T.Gomes @ 2019-10-25 15:31 UTC (permalink / raw)
  To: glibc-cvs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 26524 bytes --]

The branch 'gabriel/powerpc-ieee128-printscan' was deleted.
It previously pointed to:

 1c4f7ff... RFC: powerpc64le: Enable support for IEEE long double

Diff:

!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------

  1c4f7ff... RFC: powerpc64le: Enable support for IEEE long double
  b843c8d... powerpc64le: Require a compiler with -mno-gnu-attribute
  1383090... ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong
  a4b0f5c... Avoid compat symbols for totalorder in powerpc64le IEEE lon
  a213c7d... ldbl-128ibm-compat: Compiler flags for stdio functions
  42508d9... Do not redirect calls to __GI_* symbols, when redirecting t
  db4e80f... ldbl-128ibm-compat: Add *cvt functions
  46e069a... Refactor *cvt functions implementation (5/5)
  ebd7273... Refactor *cvt functions implementation (4/5)
  8146c44... Refactor *cvt functions implementation (3/5)
  6d9910e... Refactor *cvt functions implementation (2/5)
  516e87f... Refactor *cvt functions implementation (1/5)
  3151bb4... Remove hidden_def and hidden_proto from cvt functions
  80c708b... ldbl-128ibm-compat: Add tests for strfroml, strtold, and wc
  0311489... ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
  9db8411... ldbl-128ibm-compat: Add strfmon_l with IEEE long double for
  e7f6beb... ldbl-128ibm-compat: Add syslog functions
  e4fc800... ldbl-128ibm-compat: Add obstack printing functions
  b0e6ff5... ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
  71beb18... ldbl-128ibm-compat: Reuse tests for err.h and error.h funct
  06b17cc... ldbl-128ibm-compat: Add error.h functions
  099d748... ldbl-128ibm-compat: Add err.h functions
  f19302c... ldbl-128ibm-compat: Add argp_error and argp_failure
  655d4f7... ldbl-128ibm-compat: Add wide character scanning functions
  850b131... ldbl-128ibm-compat: Add regular character scanning function
  58e9654... ldbl-128ibm-compat: Test positional arguments
  d7dc1ef... ldbl-128ibm-compat: Test double values
  cc8074c... ldbl-128ibm-compat: Add wide character, fortified printing 
  99092f6... ldbl-128ibm-compat: Add regular character, fortified printi
  d83653e... ldbl-128ibm-compat: Add wide character printing functions
  197108a... ldbl-128ibm-compat: Add regular character printing function

commit 1c4f7fffc4f1cc186906dd47812e725e51bb036a
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:28 2019 -0300

    RFC: powerpc64le: Enable support for IEEE long double
    
    DO NOT COMMIT!
    
    On platforms where long double may have two different formats, i.e.: the
    same format as double (64-bits) or something else (128-bits), building
    with -mlong-double-128 is the default and function calls in the user
    program match the name of the function in Glibc.  When building with
    -mlong-double-64, Glibc installed headers redirect such calls to the
    appropriate function.
    
    This patch adds similar redirections to be used by user code builds in
    IEEE long double mode (-mabi=ieeelongdouble).  It also skips some uses
    of libc_hidden_proto in internal headers, because they also produce
    redirections, causing a redirection conflict.
    
    PS: Missing NEWS entry.

commit b843c8d832cdb2a1000b45e853c17211de67b4e7
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.

commit 1383090d1047e6d4c108e8478e94511307de77cd
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Sep 10 08:05:03 2019 -0500

    ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128
    
    Some compiler versions, e.g. GCC 7, complain when -mlong-double-128 is
    used together with -mabi=ibmlongdouble or -mabi=ieeelongdouble,
    producing the following error message:
    
      cc1: error: ‘-mabi=ibmlongdouble’ requires ‘-mlong-double-128’
    
    This patch removes -mlong-double-128 from the compilation lines that
    explicitly request -mabi=*longdouble.
    
    Tested for powerpc64le.

commit a4b0f5cf0f30f3e71d2f4dc3428fb65673d432b5
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Mon Sep 9 12:59:46 2019 -0500

    Avoid compat symbols for totalorder in powerpc64le IEEE long double
    
    On powerpc64le, the libm_alias_float128_other_r_ldbl macro is
    used to create an alias between totalorderf128 and __totalorderlieee128,
    as well as between the totalordermagf128 and __totalordermaglieee128.
    
    However, the totalorder* and totalordermag* functions changed their
    parameter type since commit ID 42760d764649 and got compat symbols for
    their old versions.  With this change, the aforementioned macro would
    create two conflicting aliases for __totalorderlieee128 and
    __totalordermaglieee128.
    
    This patch avoids the creation of the alias between the IEEE long double
    symbols (__totalorderl*ieee128) and the compat symbols, because the IEEE
    long double functions have never been exported thus don't need such
    compat symbol.

commit a213c7d086add88350918467aff2e970d097e77e
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Mon Jul 30 12:04:40 2018 -0300

    ldbl-128ibm-compat: Compiler flags for stdio functions
    
    Some of the files that provide stdio.h and wchar.h functions have a
    filename prefixed with 'io', such as 'iovsprintf.c'.  On platforms that
    imply ldbl-128ibm-compat, these files must be compiled with the flag
    -mabi=ibmlongdouble.  This patch adds this flag to their compilation.
    
    Notice that this is not required for the other files that provide
    similar functions, because filenames that are not prefixed with 'io'
    have ldbl-128ibm-compat counterparts in the Makefile, which already adds
    -mabi=ibmlongdouble to them.

commit 42508d917d96003682b7a09459ebd61c0a9c64ad
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Tue Jul 24 16:06:23 2018 -0300

    Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
    
    On platforms where long double has IEEE binary128 format as a third
    option (initially, only powerpc64le), many exported functions are
    redirected to their __*ieee128 equivalents.  This redirection is
    provided by installed headers such as stdio-ldbl.h, and is supposed to
    work correctly with user code.
    
    However, during the build of glibc, similar redirections are employed,
    in internal headers such as include/stdio.h, in order to avoid extra PLT
    entries.  These redirections conflict with the redirections to
    __*ieee128, and must be avoided during the build.  This patch protects
    the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128.

commit db4e80f4d87bee8670497d0a672acee66fc1f384
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:24 2019 -0300

    ldbl-128ibm-compat: Add *cvt functions
    
    This patch adds IEEE long double versions of q*cvt* functions for
    powerpc64le.  Unlike all other long double to/from string conversion
    functions, these do not rely on internal functions that can take
    floating-point numbers with different formats and act on them
    accordingly, instead, the related files are rebuilt with the
    -mabi=ieeelongdouble compiler flag set.
    
    Having -mabi=ieeelongdouble passed to the compiler causes the object
    files to be marked with a .gnu_attribute that is incompatible with the
    .gnu_attribute in files built with -mabi=ibmlongdouble (the default).
    The difference causes error messages similar to the following:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt_r.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    Although this warning is useful in other situations, the library
    actually needs to have functions with different long double formats, so
    .gnu_attribute generation is explicitly disabled for these files with
    the use of -mno-gnu-attribute.
    
    Tested for powerpc64le on the branch that actually enables the
    sysdeps/ieee754/ldbl-128ibm-compat for powerpc64le.

commit 46e069a9d85c85f896674c93e3d9a3a6d5934699
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Oct 15 15:05:53 2019 -0300

    Refactor *cvt functions implementation (5/5)
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch replaces the use of the APPEND macro with one new macro being
    defined for each of the cvt* functions.  This makes it easier to define
    functions names for IEEE long double on powerpc64le, e.g. __ecvtieee128.

commit ebd7273305ceee35771c4fe0c7498f31f712cc7a
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Oct 15 15:05:19 2019 -0300

    Refactor *cvt functions implementation (4/5)
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch splits the definition of the symbol names into separate files
    for double and long double, which will make it easier to define new
    symbol names for IEEE long double functions on powerpc64le.

commit 8146c44cec0daec77e78dd95a504d664160d7780
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:16 2019 -0300

    Refactor *cvt functions implementation (3/5)
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch only moves and merges the contents of misc/qefgcvt.c and
    misc/qefgcvt_r.c into misc/efgcvt-ldbl-macros.h.

commit 6d9910ed3409f42705a5335202f80f9e740510a7
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:12 2019 -0300

    Refactor *cvt functions implementation (2/5)
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    This patch only moves and merges the contents of misc/efgcvt-template.c
    and misc/efgcvt_r-template.c into misc/efgcvt-dbl-macros.h.

commit 516e87fea648cb1993df6991219cc6d0728e2429
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:08 2019 -0300

    Refactor *cvt functions implementation (1/5)
    
    This patch is to be squashed with the other n/5 refactoring patches.
    
    I split it into these 5 patches, because even using -M<x> and -C<y>, the
    patches looks as if a lot has changed, when it's basically just moving
    code around.  The final commit will be the squashing of patches 1 to 5,
    with the following commit message:
    
    -- 8< --
    This patch refactors the *cvt functions implementation in a way that
    makes it easier to re-use them for implementing the IEEE long double on
    powerpc64le.  By splitting the implementation per se in one file
    (efgcvt-template.c) and the alias definitions in others (e.g. efgcvt.c),
    the new code makes it easier to define new function names, such as
    __qecvtieee128.

commit 3151bb4301d074893ee6e738ac81a2d3a7243fe5
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:04 2019 -0300

    Remove hidden_def and hidden_proto from cvt functions
    
    Some *cvt functions are not called from within libc, yet they use
    hidden_def and hidden_proto.  This patch cleans this up and adds
    attribute_hidden to the declarations, for architectures that need it.
    
    Tested for powerpc64le and x86_64.

commit 80c708b51817c9313531eba9fcd0d023747a0475
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:00 2019 -0300

    ldbl-128ibm-compat: Add tests for strfroml, strtold, and wcstold
    
    Since the commit
    
    commit 86a0f56158bd9cbaf2d640e2e6c66539f4cbbcc1
    Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
    Date:   Thu Jun 28 13:57:50 2018 +0530
    
        ldbl-128ibm-compat: Introduce ieee128 symbols
    
    IEEE long double versions of strfroml, strtold, and wcstold have been
    prepared, but not exposed (which will only happen when the full support
    for IEEE long double is complete).  This patch adds tests for these
    functions in both IBM and IEEE long double mode.

commit 03114891dc4763705c2bb207b53920c3597cacb8
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:56 2019 -0300

    ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
    
    This patch adds elementary tests to check that strfmon and strfmon_l
    correctly evaluate long double values with IBM Extended Precision and
    IEEE binary128 format.
    
    Tested for powerpc64le.

commit 9db8411551545b391b2196246a3a750e8d7b855a
Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
Date:   Thu Jun 28 15:17:42 2018 +0530

    ldbl-128ibm-compat: Add strfmon_l with IEEE long double format
    
    Similarly to what has been done for printf-like functions, more
    specifically to the internal implementation in __vfprintf_internal, this
    patch extends __vstrfmon_l_internal to deal with long double values with
    binary128 format (as a third format option and reusing the float128
    implementation).
    
    Tested for powerpc64le and x86_64.

commit e7f6beb8c1a3e5e8d59c1d0432f93cc26a15c1e8
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:51 2019 -0300

    ldbl-128ibm-compat: Add syslog functions
    
    I'm using 'syslog (LOG_DEBUG, etc.);' and support_capture_subprocess in
    the test case, which I believe will not print to the console, but I'm
    not sure if changing some system setting to high verbosity will disturb
    people's lives.  Please advise.  :)
    
    -- 8< --
    Similarly to __vfprintf_internal and __vfscanf_internal, the internal
    implementation of syslog functions (__vsyslog_internal) takes a
    'mode_flags' parameter used to select the format of long double
    parameters.  This patch adds variants of the syslog functions that set
    'mode_flags' to PRINTF_LDBL_USES_FLOAT128, thus enabling the correct
    printing of long double values on powerpc64le, when long double has IEEE
    binary128 format (-mabi=ieeelongdouble).
    
    Tested for powerpc64le.

commit e4fc8001a4413bf940eda6b189244fb90d0d9c1d
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:47 2019 -0300

    ldbl-128ibm-compat: Add obstack printing functions
    
    Similarly to the functions from the *printf family, this patch adds
    implementations for __obstack_*printf* functions that set the
    'mode_flags' parameter to PRINTF_LDBL_USES_FLOAT128, before making calls
    to __vfprintf_internal (indirectly through __obstack_vprintf_internal).
    
    Tested for powerpc64le.

commit b0e6ff51859a8fb11a3af31a4d902842f614dc2a
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:43 2019 -0300

    ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
    
    In the format string for *scanf functions, the '%as', '%aS', and '%a[]'
    modifiers behave differently depending on ISO C99 compatibility and on
    _GNU_SOURCE.  When _GNU_SOURCE is not set and when in compatibility with
    ISO C99, these modifiers consume a floating-point argument.  Otherwise,
    they behave like ascanf, and allocate memory for the output.  This patch
    adds the IEEE binary128 variant of these functions for the third long
    double format on powerpc64le.
    
    Tested for powerpc64le.

commit 71beb187bc2d5808604542b9f1d22fff154f7e5f
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:39 2019 -0300

    ldbl-128ibm-compat: Reuse tests for err.h and error.h functions
    
    Commit IDs 9771e6cb5102 and 7597b0c7f711 added tests for the functions
    from err.h and error.h that can take long double parameters.
    Afterwards, commit ID f0eaf8627654 reused them on architectures that
    changed the long double format from the same as double to something else
    (i.e.: architectures that imply ldbl-opt).  This patch reuses it again
    for IEEE long double on powerpc64le.
    
    Tested for powerpc64le.

commit 06b17ccdaf4ee7c0fe2fab4de443e8fdddcbe23e
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:35 2019 -0300

    ldbl-128ibm-compat: Add error.h functions
    
    Use the recently added, internal functions, __error_at_line_internal and
    __error_internal, to provide error.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.

commit 099d74805a59f25a339fe916a54eb1c753e59abe
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:30 2019 -0300

    ldbl-128ibm-compat: Add err.h functions
    
    Use the recently added, internal functions, __vwarnx_internal and
    __vwarn_internal, to provide err.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.

commit f19302ca897171bb924918a126cae4202672e17c
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:25 2019 -0300

    ldbl-128ibm-compat: Add argp_error and argp_failure
    
    Use the recently added, internal functions, __argp_error_internal and
    __argp_failure_internal, to provide argp_error and argp_failure that can
    take long double arguments with IEEE binary128 format on platforms where
    long double can also take double format or some non-IEEE format
    (currently, this means powerpc64le).
    
    Tested for powerpc64le.

commit 655d4f77a03ccd4116338ec508ef2b5c2801d1a6
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:21 2019 -0300

    ldbl-128ibm-compat: Add wide character scanning functions
    
    Similarly to what was done for regular character scanning functions,
    this patch uses the new mode mask, SCANF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters scanning function,
    __vfwscanf_internal (which is also extended to support scanning
    floating-point values with IEEE binary128, by redirecting calls to
    __wcstold_internal to __wcstof128_internal).
    
    Tested for powerpc64le.

commit 850b1312aa64fb5fa0f063bbcd6dd45648eec2d5
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:16 2019 -0300

    ldbl-128ibm-compat: Add regular character scanning functions
    
    The 'mode' argument to __vfscanf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    SCANF_LDBL_USES_FLOAT128, which tells __vfscanf_internal to call
    __strtof128_internal, instead of __strtold_internal, and save the output
    into a _Float128 variable.
    
    Tested for powerpc64le.

commit 58e96547f70914e57cade21dd5b4b7d15edaa71a
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:12 2019 -0300

    ldbl-128ibm-compat: Test positional arguments
    
    The format string can request positional parameters, instead of relying
    on the order in which they appear as arguments.  Since this has an
    effect on how the type of each argument is determined, this patch
    extends the test cases to use positional parameters with mixed double
    and long double types, to verify that the IEEE long double
    implementations of *printf work correctly in this scenario.
    
    Tested for powerpc64le.

commit d7dc1efc6d140e3ba28802c5fb03a7138422b7d7
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:06 2019 -0300

    ldbl-128ibm-compat: Test double values
    
    A single format string can take double and long double parameters at the
    same time.  Internally, these parameters are routed to the same
    function, which correctly reads them and calls the underlying functions
    responsible for the actual conversion to string.  This patch adds a new
    case to test this scenario.
    
    Tested for powerpc64le.

commit cc8074c014737e75694f23918a4d10b9730d69e4
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:01 2019 -0300

    ldbl-128ibm-compat: Add wide character, fortified printing functions
    
    Similarly to what was done for the regular character, fortified printing
    functions, this patch combines the mode masks PRINTF_LDBL_USES_FLOAT128
    and PRINTF_FORTIFY to provide wide character versions of fortified
    printf functions.  It also adds two flavors of test cases: one that
    explicitly calls the fortified functions, and another that reuses the
    non-fortified test, but defining _FORTIFY_SOURCE as 2.  The first
    guarantees that the implementations are actually being tested
    (independently of what's in bits/wchar2.h), whereas the second
    guarantees that the redirections calls the correct function in the IBM
    and IEEE long double cases.
    
    Tested for powerpc64le.

commit 99092f60bed5cff54664b5c81473a94ca909359c
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:46:57 2019 -0300

    ldbl-128ibm-compat: Add regular character, fortified printing functions
    
    Since the introduction of internal functions with explicit flags for the
    printf family of functions, the 'mode' parameter can be used to select
    which format long double parameters have (with the mode flags:
    PRINTF_LDBL_IS_DBL and PRINTF_LDBL_USES_FLOAT128), as well as to select
    whether to check for overflows (mode flag: PRINTF_FORTIFY).
    
    This patch combines PRINTF_LDBL_USES_FLOAT128 and PRINTF_FORTIFY to
    provide the IEEE binary128 version of printf-like function for platforms
    where long double can take this format, in addition to the double format
    and to some non-ieee format (currently, this means powerpc64le).
    
    There are two flavors of test cases provided with this patch: one that
    explicitly calls the fortified functions, for instance __asprintf_chk,
    and another that reuses the non-fortified test, but defining
    _FORTIFY_SOURCE as 2.  The first guarantees that the implementations are
    actually being tested (in bits/stdio2.h, vprintf gets redirected to
    __vfprintf_chk, which would leave __vprintf_chk untested), whereas the
    second guarantees that the redirections calls the correct function in
    the IBM and IEEE long double cases.
    
    Tested for powerpc64le.

commit d83653e772345782ff1009a873068e64fecbdef0
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:46:51 2019 -0300

    ldbl-128ibm-compat: Add wide character printing functions
    
    Similarly to what was done for regular character printing functions,
    this patch uses the new mode mask, PRINTF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters printing function,
    __vfwprintf_internal (which is also extended to support printing
    floating-point values with IEEE binary128, by saving floating-point
    values into variables of type __float128 and adjusting the parameters to
    __printf_fp and __printf_fphex as if it was a call from a wide-character
    version of strfromf128 (even though such version does not exist)).
    
    Tested for powerpc64le.

commit 197108ae63b3c2173ba7476150759ecd6e065d4c
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Aug 8 10:42:35 2019 -0300

    ldbl-128ibm-compat: Add regular character printing functions
    
    The 'mode' argument to __vfprintf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    PRINTF_LDBL_USES_FLOAT128, which tells __vfprintf_internal to save the
    floating-point values into variables of type __float128 and adjusts the
    parameters to __printf_fp and __printf_fphex as if it was a call from
    strfromf128.
    
    Many files from the stdio-common, wcsmbs, argp, misc, and libio
    directories will have IEEE binary128 counterparts.  Setting the correct
    compiler options to these files (original and counterparts) would
    produce a large amount of repetitive Makefile rules.  To avoid this
    repetition, this patch adds a Makefile routine that iterates over the
    files adding or removing the appropriate flags.
    
    Tested for powerpc64le.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [glibc] Deleted branch gabriel/powerpc-ieee128-printscan
@ 2019-10-15 19:00 Gabriel F.T.Gomes
  0 siblings, 0 replies; 5+ messages in thread
From: Gabriel F.T.Gomes @ 2019-10-15 19:00 UTC (permalink / raw)
  To: glibc-cvs

The branch 'gabriel/powerpc-ieee128-printscan' was deleted.
It previously pointed to:

 5f49077... TEMP: powerpc64le: Enable support for IEEE long double

Diff:

!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------

  5f49077... TEMP: powerpc64le: Enable support for IEEE long double
  ff8094b... ldbl-128ibm-compat: Compiler flags for stdio functions
  e9ec75d... Do not redirect calls to __GI_* symbols, when redirecting t
  cd3b0ae... ldbl-128ibm-compat: Add *cvt functions
  e68d5d6... Refactor *cvt functions implementation (4/4)
  09ad2c6... Refactor *cvt functions implementation (3/4)
  9e6e2c4... Refactor *cvt functions implementation (2/4)
  ad0747f... Refactor *cvt functions implementation (1/4)
  ab9d8a9... Remove hidden_def and hidden_proto from cvt functions
  5ee6bab... ldbl-128ibm-compat: Add tests for strfroml, strtold, and wc
  fcb4403... ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
  ee48071... ldbl-128ibm-compat: Add strfmon_l with IEEE long double for
  296b3a2... ldbl-128ibm-compat: Add syslog functions
  2f55e5a... ldbl-128ibm-compat: Add obstack printing functions
  3a15cc5... ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
  ee06790... ldbl-128ibm-compat: Add tests for err.h and error.h functio
  649699a... ldbl-128ibm-compat: Add error.h functions
  cf58352... ldbl-128ibm-compat: Add err.h functions
  5e4992a... ldbl-128ibm-compat: Add argp_error and argp_failure
  34da91f... ldbl-128ibm-compat: Add wide character scanning functions
  3f27187... ldbl-128ibm-compat: Add regular character scanning function
  3b54a47... ldbl-128ibm-compat: Test positional arguments
  fdb36db... ldbl-128ibm-compat: Test double values
  03e0ef4... ldbl-128ibm-compat: Add wide character, fortified printing 
  553c5b6... ldbl-128ibm-compat: Add regular character, fortified printi
  812e611... ldbl-128ibm-compat: Add wide character printing functions
  99ec031... ldbl-128ibm-compat: Add regular character printing function

commit 5f49077273274a266f939f6ffcdfab88f9238ec0
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:28 2019 -0300

    TEMP: powerpc64le: Enable support for IEEE long double
    
    DO NOT COMMIT!!!!!
    
    <NEWS entry>
    
    On platforms where long double may have two different formats, i.e.: the
    same format as double (64-bits) or something else (128-bits), building
    with -mlong-double-128 is the default and function calls in the user
    program match the name of the function in Glibc.  When building with
    -mlong-double-64, Glibc installed headers redirect such calls to the
    appropriate function.
    
    This patch adds similar redirections to be used by builds in IEEE long
    double mode (-mabi=ieeelongdouble).  It also skips some uses of
    libc_hidden_proto in internal headers, because they also produce
    redirections, causing a redirection conflict.
    
    Tested for powerpc64le.
    
    	* argp/argp.h: When in IEEE long double	mode, include the header
    	that produces the redirections.
    	* libio/stdio.h: Likewise.
    	* misc/err.h: Likewise.
    	* misc/error.h: Likewise.
    	* misc/sys/syslog.h: Likewise.
    	* stdio-common/printf.h: Likewise.
    	* stdlib/monetary.h: Likewise.
    	* stdlib/stdlib.h: Likewise.
    	* wcsmbs/wchar.h: Likewise.
    
    	* libio/bits/stdio-ldbl.h: Add specific redirections for IEEE
    	long double, when the generic redirection is not enough to
    	distinguish between -mlong-double-64 and -mabi=ieeelongdouble.
    	* misc/bits/syslog-ldbl.h: Likewise.
    	* stdlib/bits/stdlib-ldbl.h: Likewise.
    	* wcsmbs/bits/wchar-ldbl.h: Likewise.
    
    	* include/stdlib.h: Skip some uses of libc_hidden_proto when in
    	IEEE long double mode.
    	* include/wchar.h: Likewise.
    
    	* misc/sys/cdefs.h
            (__LDBL_REDIR1, __LDBL_REDIR1_DECL, __LDBL_REDIR)
    	(__LDBL_REDIR_DECL, __LDBL_REDIR2_DECL, __REDIRECT_LDBL)
    	(__LDBL_REDIR_NTH, __LDBL_REDIR1_NTH, __REDIRECT_NTH_LDBL):
    	New definitions for the IEEE long double case.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/bits/long-double.h: New
    	file.

commit ff8094b61200753a7c6f78b35998a71f006fec20
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Mon Jul 30 12:04:40 2018 -0300

    ldbl-128ibm-compat: Compiler flags for stdio functions
    
    Some of the files that provide stdio.h and wchar.h functions have a
    filename prefixed with 'io', such as 'iovsprintf.c'.  On platforms that
    imply ldbl-128ibm-compat, these files must be compiled with the flag
    -mabi=ibmlongdouble.  This patch adds this flag to their compilation.
    
    Notice that this is not required for the other files that provide
    similar functions, because filenames that are not prefixed with 'io'
    have ldbl-128ibm-compat counterparts in the Makefile, which already adds
    -mabi=ibmlongdouble to them.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	(ldbl-ibm128-files): Add $(objpfx)iovdprintf^,
    	$(objpfx)iovsprintf^, $(objpfx)iovsscanf^, $(objpfx)iovswscanf^,
    	$(objpfx)iovfscanf^, and $(objpfx)iovfwscanf^.

commit e9ec75dba7df41ad82f5e8b4efe63f673f142128
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Tue Jul 24 16:06:23 2018 -0300

    Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
    
    On platforms where long double has IEEE binary128 format as a third
    option (initially, only powerpc64le), many exported functions are
    redirected to their __*ieee128 equivalents.  This redirection is
    provided by installed headers such as stdio-ldbl.h, and is supposed to
    work correctly with user code.
    
    However, during the build of glibc, similar redirections are employed,
    in internal headers such as include/stdio.h, in order to avoid extra PLT
    entries.  These redirections conflict with the redirections to
    __*ieee128, and must be avoided during the build.  This patch protects
    the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128.
    
    	* include/err.h: Protect the redirection of warn, warnx, vwarn,
    	vwarnx, verr, and verrx)
    	* include/stdio.h: Likewise for __asprintf, fprintf, vfprintf,
    	sprintf, __snprintf, and sscanf.
    	* include/sys/syslog.h: Likewise for syslog and vsyslog.
    	* include/wchar.h: Likewise for vswscanf.

commit cd3b0aec91170c687dad79179b50b4839d873d70
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:24 2019 -0300

    ldbl-128ibm-compat: Add *cvt functions

commit e68d5d64a49f0ded47a84f440655f6cbc7c2943c
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:20 2019 -0300

    Refactor *cvt functions implementation (4/4)
    
    This patch is to be squashed with the other n/4 refactoring patches.
    
    The changelog is in patch 1/4.

commit 09ad2c6b9111e53c39b36c612fc10c9913a29c89
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:16 2019 -0300

    Refactor *cvt functions implementation (3/4)
    
    This patch is to be squashed with the other n/4 refactoring patches.
    
    The changelog is in patch 1/4.

commit 9e6e2c4dc7c9c831493fd27254577c568a58123d
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:12 2019 -0300

    Refactor *cvt functions implementation (2/4)
    
    This patch is to be squashed with the other n/4 refactoring patches.
    
    The changelog is in patch 1/4.

commit ad0747f4be67d76756b965516a62e0ab92770524
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:08 2019 -0300

    Refactor *cvt functions implementation (1/4)
    
    This patch is to be squashed with the other n/4 refactoring patches.
    
    The changelog for the squashed patches is as follows:
    
     misc/efgcvt_r.c: Moved to...
     misc/efgcvt_r-template.c: ... this file.
     misc/qefgcvt_r.c: Moved to...
     misc/efgcvt-template.c: ... this file.
     misc/efgcvt-dbl-macros.h}  |  51 +++---
     misc/efgcvt-ldbl-macros.h} |  12 +-
     misc/efgcvt.c                              | 126 +++------------
     misc/efgcvt_r.c                            | 252 ++---------------------------
     misc/qefgcvt.c                             |  43 +++--
     misc/qefgcvt_r.c                           |  48 ++----

commit ab9d8a93f90363b6406982a06f074bb10f237a6e
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:04 2019 -0300

    Remove hidden_def and hidden_proto from cvt functions
    
    Some *cvt functions are not called from within libc, yet they use
    hidden_def and hidden_proto.  This patch cleans this up and adds
    attribute_hidden to the declarations, for architectures that need it.
    
    Tested for powerpc64le and x86_64.

commit 5ee6bab6cbac40293e2eb664d61d16e8eb625fb9
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:00 2019 -0300

    ldbl-128ibm-compat: Add tests for strfroml, strtold, and wcstold
    
    Since the commit
    
    commit 86a0f56158bd9cbaf2d640e2e6c66539f4cbbcc1
    Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
    Date:   Thu Jun 28 13:57:50 2018 +0530
    
        ldbl-128ibm-compat: Introduce ieee128 symbols
    
    IEEE long double versions of strfroml, strtold, and wcstold have been
    prepared, but not exposed (which will only happen when the full support
    for IEEE long double is complete).  This patch adds tests for these
    functions in both IBM and IEEE long double mode.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdlib] (tests-internal): Add test-strfrom-ibm128 and
    	test-strfrom-ieee128.
    	[subdir == wcsmbs] (tests-internal): Add test-wcstold-ibm128 and
    	test-wcstold-ieee128.
    	(CFLAGS-test-strfrom-ieee128.c, CLAGS-test-strfrom-ibm128.c)
    	(CFLAGS-test-wcstold-ieee128.c, CLAGS-test-wcstold-ibm128.c):
    	New variables.
    	($(objpfx)test-strfrom-ieee128): New rule.
    	($(objpfx)test-wcstold-ieee128): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfrom-ibm128.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfrom-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfrom-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wcstold-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wcstold-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wcstold-ldbl-compat.c:
    	Likewise.

commit fcb4403a4ee01f51580471f44c8f52bf640f48fa
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:56 2019 -0300

    ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
    
    This patch adds elementary tests to check that strfmon and strfmon_l
    correctly evaluate long double values with IBM Extended Precision and
    IEEE binary128 format.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile [subdir== stdlib]
    	(tests-internal): Add test-strfmon-ibm128 and
    	test-strfmon-ieee128.
    	(CFLAGS-test-strfmon-ibm128.c, CFLAGS-test-strfmon-ieee128.c):
    	New flags.
    	($(objpfx)tst-strfmon-ibm128.out)
    	($(objpfx)tst-strfmon-ieee128.out): Add $(gen-locales) as
    	dependency.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfmon-ibm128.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfmon-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfmon-ldbl-compat.c:
    	Likewise.

commit ee4807101101fc7acac727b249043f562ad936d5
Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
Date:   Thu Jun 28 15:17:42 2018 +0530

    ldbl-128ibm-compat: Add strfmon_l with IEEE long double format
    
    Similarly to what has been done for printf-like functions, more
    specifically to the internal implementation in __vfprintf_internal, this
    patch extends __vstrfmon_l_internal to deal with long double values with
    binary128 format (as a third format option and reusing the float128
    implementation).
    
    2018-06-25  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
    	    Gabriel F. T. Gomes  <gabriel@inconstante.eti.br>
    
    	* include/monetary.h (STRFMON_LDBL_USES_FLOAT128): New constant.
    	* stdlib/strfmon_l.c: Include bits/floatn.h.
    	(__vstrfmon_l_internal): Add support for printing long double
    	values reusing the float128 implementation.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdlib] (ldbl-extra-routines): Add strfmon and
    	strfmon_l.
    	(CFLAGS-strfmon.c, CFLAGS-strfmon_l.c): New variables.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__strfmonieee128 and __strfmonieee128_l.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-strfmon.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-strfmon_l.c: New file.
    	* sysdeps/powerpc/powerpc64/le/Makefile: Add -mabi=ibmlongdouble
    	to build strfmon and strfmon_l.

commit 296b3a21b08dd8c239b59d79e848c6437c545bf2
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:51 2019 -0300

    ldbl-128ibm-compat: Add syslog functions
    
    I'm using 'syslog (LOG_DEBUG, etc.);' in the test case, which I believe
    will not print to the console, but I'm not sure if changing some system
    setting to high verbosity will disturb people's lives.  Please advise.
    :)
    
    -- 8< --
    Similarly to __vfprintf_internal and __vfscanf_internal, the internal
    implementation of syslog functions (__vsyslog_internal) takes a
    'mode_flags' parameter used to select the format of long double
    parameters.  This patch adds variants of the syslog functions that set
    'mode_flags' to PRINTF_LDBL_USES_FLOAT128, thus enabling the correct
    printing of long double values on powerpc64le, when long double has IEEE
    binary128 format (-mabi=ieeelongdouble).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == misc] (ldbl-extra-routines): Add syslog.
    	[subdir == misc] (tests-internal): Add test-syslog-ieee128,
    	test-syslog-ibm128, test-syslog-chk-ieee128, test-syslog-chk-ibm128.
    	[subdir == misc] (CFLAGS-test-syslog-ieee128.c)
    	(CFLAGS-test-syslog-ibm128.c, CFLAGS-test-syslog-chk-ieee128.c)
    	(CFLAGS-test-syslog-chk-ibm128.c): New variables.
    	[subdir == misc] (tests-special): Add
    	$(objpfx)test-syslog-ieee128.out,
    	$(objpfx)test-syslog-ibm128.out,
    	$(objpfx)test-syslog-chk-ieee128.out, and
    	$(objpfx)test-syslog-chk-ibm128.out.
    	[subdir == misc] ($(objpfx)test-syslog-ieee128.out)
    	($(objpfx)test-syslog-ibm128.out)
    	($(objpfx)test-syslog-chk-ieee128.out)
    	($(objpfx)test-syslog-chk-ibm128.out): New build and run rules.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__syslogieee128, __vsyslogieee128, __syslog_chkieee128, and
    	__vsyslog_chkieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-syslog.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat.sh:
    	Likewise.

commit 2f55e5a5d89e089d6e8f629aaff7515db26246f6
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:47 2019 -0300

    ldbl-128ibm-compat: Add obstack printing functions
    
    Similar to the functions from the *printf family, this patch adds
    implementations for __obstack_*printf* functions that set the
    'mode_flags' parameter to PRINTF_LDBL_USES_FLOAT128, before making calls
    to __vfprintf_internal (indirectly through __obstack_vprintf_internal).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (ldbl-extra-routines): Add obprintf,
    	obstack_chk, vobstack_chk.
    	[subdir == stdio-common] (tests-internal): Add
    	test-obstack-ieee128, test-obstack-ibm128,
    	test-obstack-chk-ieee128, and test-obstack-chk-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-obstack-ieee128.c)
    	(CFLAGS-test-obstack-ibm128.c, CFLAGS-test-obstack-chk-ieee128.c)
    	(CFLAGS-test-obstack-chk-ibm128.c): New variable.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc) Add
    	__obstack_printfieee128, __obstack_vprintfieee128,
    	__obstack_printf_chkieee128, and __obstack_vprintf_chkieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-obprintf.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-obstack_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vobstack_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ldbl-compat.c:
    	Likewise.

commit 3a15cc582aa8a1a670f659655783daa60288c7f0
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:43 2019 -0300

    ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
    
    In the format string for *scanf functions, the '%as', '%aS', and '%a[]'
    modifiers behave differently depending on ISO C99 compatibility and on
    _GNU_SOURCE.  When _GNU_SOURCE is not set and when in compatibility with
    ISO C99, these modifiers consume a floating-point argument.  Otherwise,
    they behave like ascanf, and allocate memory for the output.  This patch
    adds the IEEE binary128 variant of these functions for the third long
    double format on powerpc64le.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (ldbl-extra-routines): Add
    	isoc99_fscanf, isoc99_scanf, isoc99_sscanf, isoc99_vfscanf,
    	isoc99_vscanf, isoc99_vsscanf,
    	[subdir == wcsmbs] (ldbl-extra-routines): Add isoc99_fwscanf,
    	isoc99_swscanf, isoc99_wscanf, isoc99_vfwscanf, isoc99_vswscanf,
    	and isoc99_vwscanf.
    	[subdir == stdio-common] (tests-internal): Add
    	test-isoc99-scanf-ieee128, test-isoc99-scanf-ibm128,
    	test-isoc99-wscanf-ieee128, and test-isoc99-wscanf-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-isoc99-scanf-ieee128.c)
    	(CFLAGS-test-isoc99-scanf-ibm128.c)
    	(CFLAGS-test-isoc99-wscanf-ieee128.c)
    	(CFLAGS-test-isoc99-wscanf-ibm128.c): New variable.
    	[subdir == stdio-common] ($(objpfx)test-isoc99-scanf-ieee128)
    	($(objpfx)test-isoc99-wscanf-ieee128): Add $(f128-loader-link)
    	to gnulib.
    	[subdir == stdio-common] (tests-special): Add
    	$(objpfx)test-isoc99-scanf-ieee128.out,
    	$(objpfx)test-isoc99-scanf-ibm128.out,
    	$(objpfx)test-isoc99-wscanf-ieee128.out, and
    	$(objpfx)test-isoc99-wscanf-ibm128.out.
    	($(objpfx)test-isoc99-scanf-ieee128.out)
    	($(objpfx)test-isoc99-scanf-ibm128.out)
    	($(objpfx)test-isoc99-wscanf-ieee128.out)
    	($(objpfx)test-isoc99-wscanf-ibm128.out): New build and run rules.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__isoc99_fscanfieee128, __isoc99_scanfieee128,
    	__isoc99_sscanfieee128, __isoc99_vfscanfieee128,
    	__isoc99_vscanfieee128, __isoc99_vsscanfieee128,
    	__isoc99_fwscanfieee128, __isoc99_swscanfieee128,
    	__isoc99_wscanfieee128, __isoc99_vfwscanfieee128,
    	__isoc99_vswscanfieee128, and __isoc99_vwscanfieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_fscanf.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_fwscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_scanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_sscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vfscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vfwscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vsscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vwscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_wscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ldbl-compat.sh:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat-template.c:
    	Protect the declaration of variables based on ISO C99 feature
    	test macros.

commit ee06790283060ba54e5b83e75e57e7288f50a971
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:39 2019 -0300

    ldbl-128ibm-compat: Add tests for err.h and error.h functions
    
    Add tests for the functions from err.h and error.h that can take
    positional long double parameters.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	(tests-internal): Add tst-ibm128-warn, tst-ieee128-warn,
    	tst-ibm128-error, tst-ieee128-error.
    	($(objpfx)tst-ibm128-error.c, $(objpfx)tst-ieee128-error.c):
    	New rules.
    	(CFLAGS-tst-ibm128-warn.c): New variable.
    	(CFLAGS-tst-ibm128-error.c): Likewise.
    	(CFLAGS-tst-ieee128-warn.c): Likewise.
    	(CFLAGS-tst-ieee128-error.c): Likewise.

commit 649699a1d0439889d542cb4082d06d9d297f2922
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:35 2019 -0300

    ldbl-128ibm-compat: Add error.h functions
    
    Use the recently added, internal functions, __error_at_line_internal and
    __error_internal, to provide error.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.
    
    	* misc/errorP.h: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == misc] (ldbl-extra-routines): Add error.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__error_at_lineieee128 and __errorieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-error.c: New file.

commit cf583526361811bc3445409a4c8f5af0e1ecd345
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:30 2019 -0300

    ldbl-128ibm-compat: Add err.h functions
    
    Use the recently added, internal functions, __vwarnx_internal and
    __vwarn_internal, to provide err.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.
    
    	* misc/errP.h: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == misc] (ldbl-extra-routines): Add err.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__warnieee128, __warnxieee128, __vwarnieee128, __vwarnxieee128
    	__errieee128, __errxieee128, __verrieee128, and __verrxieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-err.c: New file.

commit 5e4992a36d45adb9fb21d1e99245ec811906db1a
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:25 2019 -0300

    ldbl-128ibm-compat: Add argp_error and argp_failure
    
    Use the recently added, internal functions, __argp_error_internal and
    __argp_failure_internal, to provide argp_error and argp_failure that can
    take long double arguments with IEEE binary128 format on platforms where
    long double can also take double format or some non-IEEE format
    (currently, this means powerpc64le).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == argp] (ldbl-extra-routines): Add argp-help.
    	[subdir == argp] ($(objpfx)tst-ieee128-argp.c)
    	($(objpfx)tst-ibm128-argp.c): New rule to copy the test from
    	the non-sysdeps directory to the build directory.
    	[subdir == argp] (tests-internal): Add tst-ieee128-argp,
    	tst-ibm128-argp.
    	[subdir == argp] (CFLAGS-tst-ieee128-argp.c): New variable.
    	[subdir == argp] (CFLAGS-tst-ibm128-argp.c): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__argp_errorieee128 and __argp_failureieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-argp-help.c: New file.

commit 34da91f4526611173cfe84b460ccb52dccd865b8
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:21 2019 -0300

    ldbl-128ibm-compat: Add wide character scanning functions
    
    Similarly to what was done for regular character scanning functions,
    this patch uses the new mode mask, SCANF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters scanning function,
    __vfwscanf_internal (which is also extended to support scanning
    floating-point values with IEEE binary128, by redirecting calls to
    __wcstold_internal to __wcstof128_internal).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == libio] (ldbl-extra-routines): Add fwscanf, swscanf,
    	wscanf, vswscanf, and vwscanf
    	[subdir == stdio-common] (ldbl-extra-routines): Add vfwscanf.
    	(CFLAGS-vfwscanf-internal.c): Add -mfloat128 to the compiler
    	command used to build vfwscanf-internal.c.  This is needed to
    	extend __vfwscanf_internal with the support to redirect the call
    	to __wcstold_internal to __wcstof128_internal.
    	(tests-internal): Add test-wscanf-ieee128 and test-wscanf-ibm128.
    	(CFLAGS-test-wscanf-ieee128.c): New variable.
    	(CFLAGS-test-wscanf-ibm128.c): Likewise.
    	($(objpfx)test-wscanf-ieee128): Link the loader after libgcc.
    	[run-built-tests] (tests-special): Add
    	$(objpfx)test-wscanf-ieee128.out and
    	$(objpfx)test-wscanf-ibm128.out.
    	($(objpfx)test-wscanf-ieee128.out): New build and run rules.
    	($(objpfx)test-wscanf-ibm128.out): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions: Add
    	__fwscanfieee128, __swscanfieee128, __wscanfieee128,
    	__vfwscanfieee128, __vswscanfieee128, and __vwscanfieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ibm128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ieee128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ldbl-compat.c:
    	Likewise.

commit 3f27187fb28c21c56370d95cf2305c126abc8bac
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:16 2019 -0300

    ldbl-128ibm-compat: Add regular character scanning functions
    
    The 'mode' argument to __vfscanf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    SCANF_LDBL_USES_FLOAT128, which tells __vfscanf_internal to call
    __strtof128_internal, instead of __strtold_internal, and save the output
    into a _Float128 variable.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (ldbl-extra-routines): Add fscanf,
    	scanf, sscanf, vfscanf, vscanf, and vsscanf.
    	(CFLAGS-vfscanf-internal.c): Add -mfloat128 to the compiler
    	command used to build vfscanf-internal.c.  This is needed to
    	extend __vfscanf_internal with the support to redirect the call
    	to __strtold_internal to __strtof128_internal.
    	(tests-internal): Add test-scanf-ieee128 and test-scanf-ibm128.
    	(CFLAGS-test-scanf-ieee128.c): New variable.
    	(CFLAGS-test-scanf-ibm128.c): Likewise.
    	($(objpfx)test-scanf-ieee128): Link the loader after libgcc.
    	[run-built-tests] (tests-special): Add
    	$(objpfx)test-scanf-ieee128.out and
    	$(objpfx)test-scanf-ibm128.out.
    	($(objpfx)test-scanf-ieee128.out): New build and run rule.
    	($(objpfx)test-scanf-ibm128.out): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__fscanfieee128, __scanfieee128, __sscanfieee128,
    	__vfscanfieee128, __vscanfieee128, and __vsscanfieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fscanf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-scanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-sscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh:
    	Likewise.

commit 3b54a4783b0b37a267246b62dc40f6a48b4e0bd3
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:12 2019 -0300

    ldbl-128ibm-compat: Test positional arguments
    
    The format string can request positional parameters, instead of relying
    on the order in which they appear as arguments.  Since this has an
    effect on how the type of each argument is determined, this patch
    extends the test cases to use positional parameters with mixed double
    and long double types, to verify that the IEEE long double
    implementations of *printf work correctly in this scenario.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ldbl-compat.c
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ldbl-compat.c
    	(do_test_call): Test positional parameters.
    	(do_test): Add results for positional parameters test.

commit fdb36db07be86c25ecbb81cf22c274ea9b91209d
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:06 2019 -0300

    ldbl-128ibm-compat: Test double values
    
    A single format string can take double and long double parameters at the
    same time.  Internally, these parameters are routed to the same
    function, which correctly reads them and calls the underlying functions
    responsible for the actual conversion to string.  This patch adds a new
    case to test this scenario.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c:
    	(do_test_call_rarg): Add parameter of double type and use it in
    	the calls to *printf functions under test.
    	(do_test_call): Add a parameter of double type to the calls to
    	do_test_call_rarg and do_test_call_varg.
    	(do_test): Update expected result.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ldbl-compat.c:
    	Likewise.

commit 03e0ef4a620783ed61e3573a5486fd83240a7120
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:47:01 2019 -0300

    ldbl-128ibm-compat: Add wide character, fortified printing functions
    
    Similarly to what was done for the regular character, fortified printing
    functions, this patch combines the mode masks PRINTF_LDBL_USES_FLOAT128
    and PRINTF_FORTIFY to provide wide character versions of fortified
    printf functions.  It also adds two flavors of test cases: one that
    explicitly calls the fortified functions, and another that reuses the
    non-fortified test, but defining _FORTIFY_SOURCE as 2.  The first
    guarantees that the implementations are actually being tested
    (independently of what's in bits/wchar2.h), whereas the second
    guarantees that the redirections calls the correct function in the IBM
    and IEEE long double cases.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == debug] (ldbl-extra-routines): Add
    	fwprintf_chk, swprintf_chk, wprintf_chk, vfwprintf_chk,
    	vswprintf_chk, and vwprintf_chk.
    	[subdir == debug] (tests-internal): Add
    	test-wprintf-chk-ieee128, test-wprintf-chk-ibm128,
    	test-wprintf-chk-redir-ieee128 and test-wprintf-chk-redir-ibm128.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-ibm128.c): Likewise.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-redir-ieee128.c):
    	Likewise.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-redir-ibm128.c):
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__fwprintf_chkieee128, __swprintf_chkieee128,
    	__wprintf_chkieee128, __vfwprintf_chkieee128,
    	__vswprintf_chkieee128, and __vwprintf_chkieee128;
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf_chk.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-redir-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-redir-ieee128.c:
    	Likewise.

commit 553c5b647f6c0f21956a82f7ae7339066da318f3
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:46:57 2019 -0300

    ldbl-128ibm-compat: Add regular character, fortified printing functions
    
    Since the introduction of internal functions with explicit flags for the
    printf family of functions, the 'mode' parameter can be used to select
    which format long double parameters have (with the mode flags:
    PRINTF_LDBL_IS_DBL and PRINTF_LDBL_USES_FLOAT128), as well as to select
    whether to check for overflows (mode flag: PRINTF_FORTIFY).
    
    This patch combines PRINTF_LDBL_USES_FLOAT128 and PRINTF_FORTIFY to
    provide the IEEE binary128 version of printf-like function for platforms
    where long double can take this format, in addition to the double format
    and to some non-ieee format (currently, this means powerpc64le).
    
    There are two flavors of test cases provided with this patch: one that
    explicitly calls the fortified functions, for instance __asprintf_chk,
    and another that reuses the non-fortified test, but defining
    _FORTIFY_SOURCE as 2.  The first guarantees that the implementations are
    actually being tested (in bits/stdio2.h, vprintf gets redirected to
    __vfprintf_chk, which would leave __vprintf_chk untested), whereas the
    second guarantees that the redirections calls the correct function in
    the IBM and IEEE long double cases.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == debug] (ldbl-extra-routines): Add
    	asprintf_chk, dprintf_chk, fprintf_chk, printf_chk,
    	snprintf_chk, sprintf_chk, vasprintf_chk, vdprintf_chk,
    	vfprintf_chk, vprintf_chk, vsnprintf_chk, and vsprintf_chk.
    	[subdir == debug] (tests-internal): Add
    	test-printf-chk-ieee128, test-printf-chk-ibm128,
    	test-printf-chk-redir-ieee128, and test-printf-chk-redir-ibm128.
    	[subdir == debug] (CFLAGS-test-printf-chk-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == debug] (CFLAGS-test-printf-chk-ibm128.c): Likewise.
    	[subdir == debug] (CFLAGS-test-printf-chk-redir-ieee128.c):
    	Likewise.
    	[subdir == debug] (CFLAGS-test-printf-chk-redir-ibm128.c):
    	Likewise.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__asprintf_chkieee128, __dprintf_chkieee128, __fprintf_chkieee128,
    	__printf_chkieee128, __snprintf_chkieee128, __sprintf_chkieee128,
    	__vasprintf_chkieee128, __vdprintf_chkieee128, __vfprintf_chkieee128,
    	__vprintf_chkieee128, __vsnprintf_chkieee128, __vsprintf_chkieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf_chk.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-printf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-snprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-sprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vasprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vdprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsnprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-redir-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-redir-ieee128.c:
    	Likewise.

commit 812e6114bd1c750ee3dfc2a984294da06da22646
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:46:51 2019 -0300

    ldbl-128ibm-compat: Add wide character printing functions
    
    Similarly to what was done for regular character printing functions,
    this patch uses the new mode mask, PRINTF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters printing function,
    __vfwprintf_internal (which is also extended to support printing
    floating-point values with IEEE binary128, by saving floating-point
    values into variables of type __float128 and adjusting the parameters to
    __printf_fp and __printf_fphex as if it was a call from a wide-character
    version of strfromf128 (even though such version does not exist)).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == stdio-common] (ldbl-extra-routines): Add fwprintf,
    	swprintf, wprintf, vfwprintf, vswprintf, and vwprintf.
    	[subdir == stdio-common] (CFLAGS-vfwprintf-internal.c): New
    	variable.  Add -mfloat128 to the compilation of
    	vfprintf-internal.c, so that it gets support for the use of
    	__printf_fp and __printf_fphex with __float128 parameter.
    	[subdir == stdio-common] (tests-internal): Add
    	test-wprintf-ieee128 and test-wprintf-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-wprintf-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == stdio-common] (CFLAGS-test-wprintf-ibm128.c): Likewise.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__fwprintfieee128, __swprintfieee128, __wprintfieee128,
    	__vfwprintfieee128, __vswprintfieee128, and __vwprintfieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ibm128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ieee128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ldbl-compat.c:
    	Likewise.

commit 99ec0318a3e820a0fcf4fcea4d25669f11de835d
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Aug 8 10:42:35 2019 -0300

    ldbl-128ibm-compat: Add regular character printing functions
    
    The 'mode' argument to __vfprintf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    PRINTF_LDBL_USES_FLOAT128, which tells __vfprintf_internal to save the
    floating-point values into variables of type __float128 and adjusts the
    parameters to __printf_fp and __printf_fphex as if it was a call from
    strfromf128.
    
    Many files from the stdio-common, wcsmbs, argp, misc, and libio
    directories will have IEEE binary128 counterparts.  Setting the correct
    compiler options to these files (original and counterparts) would
    produce a large amount of repetitive Makefile rules.  To avoid this
    repetition, this patch adds a Makefile routine that iterates over the
    files adding or removing the appropriate flags.
    
    Tested for powerpc64le.
    
    	* elf/tst-addr1.c (do_test): Accept redirections of printf to
    	__printfieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (routines): Move the addition of
    	printf_size to ldbl-extra-routines.
    	[subdir == stdio-common] (ldbl-extra-routines): New variable.
    	[subdir == stdio-common] (ldbl-ibm128-files): New variable.
    	[subdir == stdio-common] (obj-suf-foreach): New routine.
    	[subdir == stdio-common] (CFLAGS-vfprintf-internal.c): New
    	variable.  Add -mfloat128 to the compilation of
    	vfprintf-internal.c, so that it gets support for the use of
    	__printf_fp and __printf_fphex with __float128 parameter.
    	[subdir == stdio-common] (tests-internal): Add
    	test-printf-ieee128 and test-printf-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-printf-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == stdio-common] (CFLAGS-test-printf-ibm128.c): Likewise.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions: (libc): Add
    	__asprintfieee128, __dprintfieee128, __fprintfieee128,
    	__printfieee128, __snprintfieee128, __sprintfieee128,
    	__vasprintfieee128, __vdprintfieee128, __vfprintfieee128,
    	__vprintfieee128, __vsnprintfieee128, and __vsprintfieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-printf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-snprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-sprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vasprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vdprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsnprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ibm128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ieee128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/le/ldbl-128ibm-compat-abi.h:
    	Likewise.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [glibc] Deleted branch gabriel/powerpc-ieee128-printscan
@ 2019-08-09 18:34 Gabriel F.T.Gomes
  0 siblings, 0 replies; 5+ messages in thread
From: Gabriel F.T.Gomes @ 2019-08-09 18:34 UTC (permalink / raw)
  To: glibc-cvs

The branch 'gabriel/powerpc-ieee128-printscan' was deleted.
It previously pointed to:

 d929c19... TEMP: powerpc64le: Enable support for IEEE long double

Diff:

!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------

  d929c19... TEMP: powerpc64le: Enable support for IEEE long double
  3409ce3... ldbl-128ibm-compat: Compiler flags for stdio functions
  17b8d64... Do not redirect calls to __GI_* symbols, when redirecting t
  d784dc8... ldbl-128ibm-compat: Add *cvt functions
  6149983... Refactor *cvt functions implementation (4/4)
  d1348a7... Refactor *cvt functions implementation (3/4)
  d0936b1... Refactor *cvt functions implementation (2/4)
  2b2cdb1... Refactor *cvt functions implementation (1/4)
  94a234f... Remove hidden_def and hidden_proto from cvt functions
  fd73a4a... ldbl-128ibm-compat: Add tests for strfroml, strtold, and wc
  4299a30... ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
  f560389... ldbl-128ibm-compat: Add strfmon_l with IEEE long double for
  9045dd5... ldbl-128ibm-compat: Add syslog functions
  249b0cb... ldbl-128ibm-compat: Add obstack printing functions
  40835b9... ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
  64b20fe... ldbl-128ibm-compat: Add tests for err.h and error.h functio
  75f785f... ldbl-128ibm-compat: Add error.h functions
  4d12a34... ldbl-128ibm-compat: Add err.h functions
  4a0fc8c... ldbl-128ibm-compat: Add argp_error and argp_failure
  ce0bdd4... ldbl-128ibm-compat: Add wide character scanning functions
  d7fee1f... ldbl-128ibm-compat: Add regular character scanning function
  021d52a... ldbl-128ibm-compat: Test positional arguments
  647f174... ldbl-128ibm-compat: Test double values
  977c609... ldbl-128ibm-compat: Add wide character, fortified printing 
  e0af52f... ldbl-128ibm-compat: Add regular character, fortified printi
  f213b94... ldbl-128ibm-compat: Add wide character printing functions
  1b2f7f2... ldbl-128ibm-compat: Add regular character printing function
  00ebf9a... ldbl-128ibm-compat: Add Makefile routine to control compile
  23d36e7... Prepare vfprintf to use __printf_fp/__printf_fphex with flo

commit d929c19d9acf7d1377bafc9b966d339e62d4656f
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Mar 25 17:06:12 2019 -0300

    TEMP: powerpc64le: Enable support for IEEE long double
    
    DO NOT COMMIT!!!!!
    
    <NEWS entry>
    
    On platforms where long double may have two different formats, i.e.: the
    same format as double (64-bits) or something else (128-bits), building
    with -mlong-double-128 is the default and function calls in the user
    program match the name of the function in Glibc.  When building with
    -mlong-double-64, Glibc installed headers redirect such calls to the
    appropriate function.
    
    This patch adds similar redirections to be used by builds in IEEE long
    double mode (-mabi=ieeelongdouble).  It also skips some uses of
    libc_hidden_proto in internal headers, because they also produce
    redirections, causing a redirection conflict.
    
    Tested for powerpc64le.
    
    	* argp/argp.h: When in IEEE long double	mode, include the header
    	that produces the redirections.
    	* libio/stdio.h: Likewise.
    	* misc/err.h: Likewise.
    	* misc/error.h: Likewise.
    	* misc/sys/syslog.h: Likewise.
    	* stdio-common/printf.h: Likewise.
    	* stdlib/monetary.h: Likewise.
    	* stdlib/stdlib.h: Likewise.
    	* wcsmbs/wchar.h: Likewise.
    
    	* libio/bits/stdio-ldbl.h: Add specific redirections for IEEE
    	long double, when the generic redirection is not enough to
    	distinguish between -mlong-double-64 and -mabi=ieeelongdouble.
    	* misc/bits/syslog-ldbl.h: Likewise.
    	* stdlib/bits/stdlib-ldbl.h: Likewise.
    	* wcsmbs/bits/wchar-ldbl.h: Likewise.
    
    	* include/stdlib.h: Skip some uses of libc_hidden_proto when in
    	IEEE long double mode.
    	* include/wchar.h: Likewise.
    
    	* misc/sys/cdefs.h
            (__LDBL_REDIR1, __LDBL_REDIR1_DECL, __LDBL_REDIR)
    	(__LDBL_REDIR_DECL, __LDBL_REDIR2_DECL, __REDIRECT_LDBL)
    	(__LDBL_REDIR_NTH, __LDBL_REDIR1_NTH, __REDIRECT_NTH_LDBL):
    	New definitions for the IEEE long double case.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/bits/long-double.h: New
    	file.

commit 3409ce316dde7955e58ef46d87ecf943db8fe334
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Mon Jul 30 12:04:40 2018 -0300

    ldbl-128ibm-compat: Compiler flags for stdio functions
    
    Some of the files that provide stdio.h and wchar.h functions have a
    filename prefixed with 'io', such as 'iovsprintf.c'.  On platforms that
    imply ldbl-128ibm-compat, these files must be compiled with the flag
    -mabi=ibmlongdouble.  This patch adds this flag to their compilation.
    
    Notice that this is not required for the other files that provide
    similar functions, because filenames that are not prefixed with 'io'
    have ldbl-128ibm-compat counterparts in the Makefile, which already adds
    -mabi=ibmlongdouble to them.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	(ldbl-ibm128-files): Add $(objpfx)iovdprintf^,
    	$(objpfx)iovsprintf^, $(objpfx)iovsscanf^, $(objpfx)iovswscanf^,
    	$(objpfx)iovfscanf^, and $(objpfx)iovfwscanf^.

commit 17b8d64af280a0fc63f27a97eb252f4cd8e66b9f
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Tue Jul 24 16:06:23 2018 -0300

    Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
    
    On platforms where long double has IEEE binary128 format as a third
    option (initially, only powerpc64le), many exported functions are
    redirected to their __*ieee128 equivalents.  This redirection is
    provided by installed headers such as stdio-ldbl.h, and is supposed to
    work correctly with user code.
    
    However, during the build of glibc, similar redirections are employed,
    in internal headers such as include/stdio.h, in order to avoid extra PLT
    entries.  These redirections conflict with the redirections to
    __*ieee128, and must be avoided during the build.  This patch protects
    the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128.
    
    	* include/err.h: Protect the redirection of warn, warnx, vwarn,
    	vwarnx, verr, and verrx)
    	* include/stdio.h: Likewise for __asprintf, fprintf, vfprintf,
    	sprintf, __snprintf, and sscanf.
    	* include/sys/syslog.h: Likewise for syslog and vsyslog.
    	* include/wchar.h: Likewise for vswscanf.

commit d784dc8a19837799683af2b88ff960c3e3d359ea
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Dec 3 11:44:25 2018 -0200

    ldbl-128ibm-compat: Add *cvt functions

commit 6149983ca8da6bf7296d38e14d89a1b08bff8e08
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Wed Jan 9 18:27:28 2019 -0200

    Refactor *cvt functions implementation (4/4)

commit d1348a7877cd37c41ad009c197d493cbd5d76643
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Wed Jan 9 18:35:08 2019 -0200

    Refactor *cvt functions implementation (3/4)

commit d0936b129a6a01e154c9b1ae73ac4dbe566fbc39
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Wed Jan 9 18:23:24 2019 -0200

    Refactor *cvt functions implementation (2/4)

commit 2b2cdb118e35582ce2fea7483b825be21491d2f4
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Wed Jan 9 18:18:41 2019 -0200

    Refactor *cvt functions implementation (1/4)

commit 94a234fff7b1981b55941f4415b8a23a1a29494b
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Wed Nov 28 15:34:08 2018 -0200

    Remove hidden_def and hidden_proto from cvt functions
    
    Some *cvt functions are not called from within libc, yet they use
    hidden_def and hidden_proto.  This patch cleans this up and adds
    attribute_hidden to the declarations, for architectures that need it.
    
    Tested for powerpc64le and x86_64.

commit fd73a4a4e9c634c37b99e88a1b1854a33e64db16
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Thu Apr 4 15:42:37 2019 -0300

    ldbl-128ibm-compat: Add tests for strfroml, strtold, and wcstold
    
    Since the commit
    
    commit 86a0f56158bd9cbaf2d640e2e6c66539f4cbbcc1
    Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
    Date:   Thu Jun 28 13:57:50 2018 +0530
    
        ldbl-128ibm-compat: Introduce ieee128 symbols
    
    IEEE long double versions of strfroml, strtold, and wcstold have been
    prepared, but not exposed (which will only happen when the full support
    for IEEE long double is complete).  This patch adds tests for these
    functions in both IBM and IEEE long double mode.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdlib] (tests-internal): Add test-strfrom-ibm128 and
    	test-strfrom-ieee128.
    	[subdir == wcsmbs] (tests-internal): Add test-wcstold-ibm128 and
    	test-wcstold-ieee128.
    	(CFLAGS-test-strfrom-ieee128.c, CLAGS-test-strfrom-ibm128.c)
    	(CFLAGS-test-wcstold-ieee128.c, CLAGS-test-wcstold-ibm128.c):
    	New variables.
    	($(objpfx)test-strfrom-ieee128): New rule.
    	($(objpfx)test-wcstold-ieee128): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfrom-ibm128.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfrom-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfrom-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wcstold-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wcstold-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wcstold-ldbl-compat.c:
    	Likewise.

commit 4299a30d70c656f27e380810af45fa7963e12853
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Feb 18 17:03:21 2019 -0300

    ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
    
    This patch adds elementary tests to check that strfmon and strfmon_l
    correctly evaluate long double values with IBM Extended Precision and
    IEEE binary128 format.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile [subdir== stdlib]
    	(tests-internal): Add test-strfmon-ibm128 and
    	test-strfmon-ieee128.
    	(CFLAGS-test-strfmon-ibm128.c, CFLAGS-test-strfmon-ieee128.c):
    	New flags.
    	($(objpfx)tst-strfmon-ibm128.out)
    	($(objpfx)tst-strfmon-ieee128.out): Add $(gen-locales) as
    	dependency.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfmon-ibm128.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfmon-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-strfmon-ldbl-compat.c:
    	Likewise.

commit f560389949141382241084a4ea2564238ed705da
Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
Date:   Thu Jun 28 15:17:42 2018 +0530

    ldbl-128ibm-compat: Add strfmon_l with IEEE long double format
    
    Similarly to what has been done for printf-like functions, more
    specifically to the internal implementation in __vfprintf_internal, this
    patch extends __vstrfmon_l_internal to deal with long double values with
    binary128 format (as a third format option and reusing the float128
    implementation).
    
    2018-06-25  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
    	    Gabriel F. T. Gomes  <gabriel@inconstante.eti.br>
    
    	* include/monetary.h (STRFMON_LDBL_USES_FLOAT128): New constant.
    	* stdlib/strfmon_l.c: Include bits/floatn.h.
    	(__vstrfmon_l_internal): Add support for printing long double
    	values reusing the float128 implementation.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdlib] (ldbl-extra-routines): Add strfmon and
    	strfmon_l.
    	(CFLAGS-strfmon.c, CFLAGS-strfmon_l.c): New variables.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__strfmonieee128 and __strfmonieee128_l.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-strfmon.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-strfmon_l.c: New file.
    	* sysdeps/powerpc/powerpc64/le/Makefile: Add -mabi=ibmlongdouble
    	to build strfmon and strfmon_l.

commit 9045dd54446bc01098f387f663e1da7fb68ef9ea
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Tue Jun 26 17:22:13 2018 -0300

    ldbl-128ibm-compat: Add syslog functions
    
    I'm using 'syslog (LOG_DEBUG, etc.);' in the test case, which I believe
    will not print to the console, but I'm not sure if changing some system
    setting to high verbosity will disturb people's lives.  Please advise.
    :)
    
    -- 8< --
    Similarly to __vfprintf_internal and __vfscanf_internal, the internal
    implementation of syslog functions (__vsyslog_internal) takes a
    'mode_flags' parameter used to select the format of long double
    parameters.  This patch adds variants of the syslog functions that set
    'mode_flags' to PRINTF_LDBL_USES_FLOAT128, thus enabling the correct
    printing of long double values on powerpc64le, when long double has IEEE
    binary128 format (-mabi=ieeelongdouble).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == misc] (ldbl-extra-routines): Add syslog.
    	[subdir == misc] (tests-internal): Add test-syslog-ieee128,
    	test-syslog-ibm128, test-syslog-chk-ieee128, test-syslog-chk-ibm128.
    	[subdir == misc] (CFLAGS-test-syslog-ieee128.c)
    	(CFLAGS-test-syslog-ibm128.c, CFLAGS-test-syslog-chk-ieee128.c)
    	(CFLAGS-test-syslog-chk-ibm128.c): New variables.
    	[subdir == misc] (tests-special): Add
    	$(objpfx)test-syslog-ieee128.out,
    	$(objpfx)test-syslog-ibm128.out,
    	$(objpfx)test-syslog-chk-ieee128.out, and
    	$(objpfx)test-syslog-chk-ibm128.out.
    	[subdir == misc] ($(objpfx)test-syslog-ieee128.out)
    	($(objpfx)test-syslog-ibm128.out)
    	($(objpfx)test-syslog-chk-ieee128.out)
    	($(objpfx)test-syslog-chk-ibm128.out): New build and run rules.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__syslogieee128, __vsyslogieee128, __syslog_chkieee128, and
    	__vsyslog_chkieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-syslog.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat.sh:
    	Likewise.

commit 249b0cb1a84b537b971aa6f0b3e83026803aca6d
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Jun 25 22:43:24 2018 -0300

    ldbl-128ibm-compat: Add obstack printing functions
    
    Similar to the functions from the *printf family, this patch adds
    implementations for __obstack_*printf* functions that set the
    'mode_flags' parameter to PRINTF_LDBL_USES_FLOAT128, before making calls
    to __vfprintf_internal (indirectly through __obstack_vprintf_internal).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (ldbl-extra-routines): Add obprintf,
    	obstack_chk, vobstack_chk.
    	[subdir == stdio-common] (tests-internal): Add
    	test-obstack-ieee128, test-obstack-ibm128,
    	test-obstack-chk-ieee128, and test-obstack-chk-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-obstack-ieee128.c)
    	(CFLAGS-test-obstack-ibm128.c, CFLAGS-test-obstack-chk-ieee128.c)
    	(CFLAGS-test-obstack-chk-ibm128.c): New variable.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc) Add
    	__obstack_printfieee128, __obstack_vprintfieee128,
    	__obstack_printf_chkieee128, and __obstack_vprintf_chkieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-obprintf.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-obstack_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vobstack_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-obstack-ldbl-compat.c:
    	Likewise.

commit 40835b95003bff0ac97baa6cee78c63151b17d6e
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Wed Jun 20 10:10:24 2018 -0300

    ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
    
    In the format string for *scanf functions, the '%as', '%aS', and '%a[]'
    modifiers behave differently depending on ISO C99 compatibility and on
    _GNU_SOURCE.  When _GNU_SOURCE is not set and when in compatibility with
    ISO C99, these modifiers consume a floating-point argument.  Otherwise,
    they behave like ascanf, and allocate memory for the output.  This patch
    adds the IEEE binary128 variant of these functions for the third long
    double format on powerpc64le.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (ldbl-extra-routines): Add
    	isoc99_fscanf, isoc99_scanf, isoc99_sscanf, isoc99_vfscanf,
    	isoc99_vscanf, isoc99_vsscanf,
    	[subdir == wcsmbs] (ldbl-extra-routines): Add isoc99_fwscanf,
    	isoc99_swscanf, isoc99_wscanf, isoc99_vfwscanf, isoc99_vswscanf,
    	and isoc99_vwscanf.
    	[subdir == stdio-common] (tests-internal): Add
    	test-isoc99-scanf-ieee128, test-isoc99-scanf-ibm128,
    	test-isoc99-wscanf-ieee128, and test-isoc99-wscanf-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-isoc99-scanf-ieee128.c)
    	(CFLAGS-test-isoc99-scanf-ibm128.c)
    	(CFLAGS-test-isoc99-wscanf-ieee128.c)
    	(CFLAGS-test-isoc99-wscanf-ibm128.c): New variable.
    	[subdir == stdio-common] ($(objpfx)test-isoc99-scanf-ieee128)
    	($(objpfx)test-isoc99-wscanf-ieee128): Add $(f128-loader-link)
    	to gnulib.
    	[subdir == stdio-common] (tests-special): Add
    	$(objpfx)test-isoc99-scanf-ieee128.out,
    	$(objpfx)test-isoc99-scanf-ibm128.out,
    	$(objpfx)test-isoc99-wscanf-ieee128.out, and
    	$(objpfx)test-isoc99-wscanf-ibm128.out.
    	($(objpfx)test-isoc99-scanf-ieee128.out)
    	($(objpfx)test-isoc99-scanf-ibm128.out)
    	($(objpfx)test-isoc99-wscanf-ieee128.out)
    	($(objpfx)test-isoc99-wscanf-ibm128.out): New build and run rules.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__isoc99_fscanfieee128, __isoc99_scanfieee128,
    	__isoc99_sscanfieee128, __isoc99_vfscanfieee128,
    	__isoc99_vscanfieee128, __isoc99_vsscanfieee128,
    	__isoc99_fwscanfieee128, __isoc99_swscanfieee128,
    	__isoc99_wscanfieee128, __isoc99_vfwscanfieee128,
    	__isoc99_vswscanfieee128, and __isoc99_vwscanfieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_fscanf.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_fwscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_scanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_sscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_swscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vfscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vfwscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vsscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vswscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_vwscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc99_wscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-scanf-ldbl-compat.sh:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-isoc99-wscanf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat-template.c:
    	Protect the declaration of variables based on ISO C99 feature
    	test macros.

commit 64b20fed21575ddd12251872443d0bc62b9f08e7
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Fri Jun 15 13:29:31 2018 -0300

    ldbl-128ibm-compat: Add tests for err.h and error.h functions
    
    Add tests for the functions from err.h and error.h that can take
    positional long double parameters.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	(tests-internal): Add tst-ibm128-warn, tst-ieee128-warn,
    	tst-ibm128-error, tst-ieee128-error.
    	($(objpfx)tst-ibm128-error.c, $(objpfx)tst-ieee128-error.c):
    	New rules.
    	(CFLAGS-tst-ibm128-warn.c): New variable.
    	(CFLAGS-tst-ibm128-error.c): Likewise.
    	(CFLAGS-tst-ieee128-warn.c): Likewise.
    	(CFLAGS-tst-ieee128-error.c): Likewise.

commit 75f785fbadbe32efa629cefb7d95105529ec79dc
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Sat Jun 16 16:56:43 2018 -0300

    ldbl-128ibm-compat: Add error.h functions
    
    Use the recently added, internal functions, __error_at_line_internal and
    __error_internal, to provide error.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.
    
    	* misc/errorP.h: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == misc] (ldbl-extra-routines): Add error.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__error_at_lineieee128 and __errorieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-error.c: New file.

commit 4d12a346ccc6daf4244035f2fe78610798c0721a
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Fri Jun 15 11:24:05 2018 -0300

    ldbl-128ibm-compat: Add err.h functions
    
    Use the recently added, internal functions, __vwarnx_internal and
    __vwarn_internal, to provide err.h functions that can take long double
    arguments with IEEE binary128 format on platforms where long double can
    also take double format or some non-IEEE format (currently, this means
    powerpc64le).
    
    Tested for powerpc64le.
    
    	* misc/errP.h: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == misc] (ldbl-extra-routines): Add err.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__warnieee128, __warnxieee128, __vwarnieee128, __vwarnxieee128
    	__errieee128, __errxieee128, __verrieee128, and __verrxieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-err.c: New file.

commit 4a0fc8c24db1f1f7b2df3a147eeecd05471f8d67
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Tue Jun 12 22:27:21 2018 -0300

    ldbl-128ibm-compat: Add argp_error and argp_failure
    
    Use the recently added, internal functions, __argp_error_internal and
    __argp_failure_internal, to provide argp_error and argp_failure that can
    take long double arguments with IEEE binary128 format on platforms where
    long double can also take double format or some non-IEEE format
    (currently, this means powerpc64le).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == argp] (ldbl-extra-routines): Add argp-help.
    	[subdir == argp] ($(objpfx)tst-ieee128-argp.c)
    	($(objpfx)tst-ibm128-argp.c): New rule to copy the test from
    	the non-sysdeps directory to the build directory.
    	[subdir == argp] (tests-internal): Add tst-ieee128-argp,
    	tst-ibm128-argp.
    	[subdir == argp] (CFLAGS-tst-ieee128-argp.c): New variable.
    	[subdir == argp] (CFLAGS-tst-ibm128-argp.c): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__argp_errorieee128 and __argp_failureieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-argp-help.c: New file.

commit ce0bdd4827e59e5359cbc442edbbfcd4bedbd560
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Jun 11 15:48:48 2018 -0300

    ldbl-128ibm-compat: Add wide character scanning functions
    
    Similarly to what was done for regular character scanning functions,
    this patch uses the new mode mask, SCANF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters scanning function,
    __vfwscanf_internal (which is also extended to support scanning
    floating-point values with IEEE binary128, by redirecting calls to
    __wcstold_internal to __wcstof128_internal).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == libio] (ldbl-extra-routines): Add fwscanf, swscanf,
    	wscanf, vswscanf, and vwscanf
    	[subdir == stdio-common] (ldbl-extra-routines): Add vfwscanf.
    	(CFLAGS-vfwscanf-internal.c): Add -mfloat128 to the compiler
    	command used to build vfwscanf-internal.c.  This is needed to
    	extend __vfwscanf_internal with the support to redirect the call
    	to __wcstold_internal to __wcstof128_internal.
    	(tests-internal): Add test-wscanf-ieee128 and test-wscanf-ibm128.
    	(CFLAGS-test-wscanf-ieee128.c): New variable.
    	(CFLAGS-test-wscanf-ibm128.c): Likewise.
    	($(objpfx)test-wscanf-ieee128): Link the loader after libgcc.
    	[run-built-tests] (tests-special): Add
    	$(objpfx)test-wscanf-ieee128.out and
    	$(objpfx)test-wscanf-ibm128.out.
    	($(objpfx)test-wscanf-ieee128.out): New build and run rules.
    	($(objpfx)test-wscanf-ibm128.out): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions: Add
    	__fwscanfieee128, __swscanfieee128, __wscanfieee128,
    	__vfwscanfieee128, __vswscanfieee128, and __vwscanfieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ibm128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ieee128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ldbl-compat.c:
    	Likewise.

commit d7fee1ffde9e3cfb0cc4f89b375cc6fe34799d0f
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon Jun 11 00:12:28 2018 -0300

    ldbl-128ibm-compat: Add regular character scanning functions
    
    The 'mode' argument to __vfscanf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    SCANF_LDBL_USES_FLOAT128, which tells __vfscanf_internal to call
    __strtof128_internal, instead of __strtold_internal, and save the output
    into a _Float128 variable.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (ldbl-extra-routines): Add fscanf,
    	scanf, sscanf, vfscanf, vscanf, and vsscanf.
    	(CFLAGS-vfscanf-internal.c): Add -mfloat128 to the compiler
    	command used to build vfscanf-internal.c.  This is needed to
    	extend __vfscanf_internal with the support to redirect the call
    	to __strtold_internal to __strtof128_internal.
    	(tests-internal): Add test-scanf-ieee128 and test-scanf-ibm128.
    	(CFLAGS-test-scanf-ieee128.c): New variable.
    	(CFLAGS-test-scanf-ibm128.c): Likewise.
    	($(objpfx)test-scanf-ieee128): Link the loader after libgcc.
    	[run-built-tests] (tests-special): Add
    	$(objpfx)test-scanf-ieee128.out and
    	$(objpfx)test-scanf-ibm128.out.
    	($(objpfx)test-scanf-ieee128.out): New build and run rule.
    	($(objpfx)test-scanf-ibm128.out): Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__fscanfieee128, __scanfieee128, __sscanfieee128,
    	__vfscanfieee128, __vscanfieee128, and __vsscanfieee128.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fscanf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-scanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-sscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vscanf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsscanf.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat-template.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh:
    	Likewise.

commit 021d52a836d254b00ddcbdeb9dc19b8823b9b6e4
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Fri Feb 8 11:32:51 2019 -0200

    ldbl-128ibm-compat: Test positional arguments
    
    The format string can request positional parameters, instead of relying
    on the order in which they appear as arguments.  Since this has an
    effect on how the type of each argument is determined, this patch
    extends the test cases to use positional parameters with mixed double
    and long double types, to verify that the IEEE long double
    implementations of *printf work correctly in this scenario.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ldbl-compat.c
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ldbl-compat.c
    	(do_test_call): Test positional parameters.
    	(do_test): Add results for positional parameters test.

commit 647f17483ca0cf9fff07c2d06b3055222a4e4574
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Sun Jun 17 17:32:39 2018 -0300

    ldbl-128ibm-compat: Test double values
    
    A single format string can take double and long double parameters at the
    same time.  Internally, these parameters are routed to the same
    function, which correctly reads them and calls the underlying functions
    responsible for the actual conversion to string.  This patch adds a new
    case to test this scenario.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c:
    	(do_test_call_rarg): Add parameter of double type and use it in
    	the calls to *printf functions under test.
    	(do_test_call): Add a parameter of double type to the calls to
    	do_test_call_rarg and do_test_call_varg.
    	(do_test): Update expected result.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ldbl-compat.c:
    	Likewise.

commit 977c609e0f1f6b5ac977e77a8ca7d63946953e0b
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Sun Jun 10 22:40:58 2018 -0300

    ldbl-128ibm-compat: Add wide character, fortified printing functions
    
    Similarly to what was done for the regular character, fortified printing
    functions, this patch combines the mode masks PRINTF_LDBL_USES_FLOAT128
    and PRINTF_FORTIFY to provide wide character versions of fortified
    printf functions.  It also adds two flavors of test cases: one that
    explicitly calls the fortified functions, and another that reuses the
    non-fortified test, but defining _FORTIFY_SOURCE as 2.  The first
    guarantees that the implementations are actually being tested
    (independently of what's in bits/wchar2.h), whereas the second
    guarantees that the redirections calls the correct function in the IBM
    and IEEE long double cases.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == debug] (ldbl-extra-routines): Add
    	fwprintf_chk, swprintf_chk, wprintf_chk, vfwprintf_chk,
    	vswprintf_chk, and vwprintf_chk.
    	[subdir == debug] (tests-internal): Add
    	test-wprintf-chk-ieee128, test-wprintf-chk-ibm128,
    	test-wprintf-chk-redir-ieee128 and test-wprintf-chk-redir-ibm128.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-ibm128.c): Likewise.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-redir-ieee128.c):
    	Likewise.
    	[subdir == debug] (CFLAGS-test-wprintf-chk-redir-ibm128.c):
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__fwprintf_chkieee128, __swprintf_chkieee128,
    	__wprintf_chkieee128, __vfwprintf_chkieee128,
    	__vswprintf_chkieee128, and __vwprintf_chkieee128;
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf_chk.c:
    	New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wprintf_chk.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-redir-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-chk-redir-ieee128.c:
    	Likewise.

commit e0af52f4f5d24a636f99fc5b076856017115a1f5
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Sun Jun 10 15:57:48 2018 -0300

    ldbl-128ibm-compat: Add regular character, fortified printing functions
    
    Since the introduction of internal functions with explicit flags for the
    printf family of functions, the 'mode' parameter can be used to select
    which format long double parameters have (with the mode flags:
    PRINTF_LDBL_IS_DBL and PRINTF_LDBL_USES_FLOAT128), as well as to select
    whether to check for overflows (mode flag: PRINTF_FORTIFY).
    
    This patch combines PRINTF_LDBL_USES_FLOAT128 and PRINTF_FORTIFY to
    provide the IEEE binary128 version of printf-like function for platforms
    where long double can take this format, in addition to the double format
    and to some non-ieee format (currently, this means powerpc64le).
    
    There are two flavors of test cases provided with this patch: one that
    explicitly calls the fortified functions, for instance __asprintf_chk,
    and another that reuses the non-fortified test, but defining
    _FORTIFY_SOURCE as 2.  The first guarantees that the implementations are
    actually being tested (in bits/stdio2.h, vprintf gets redirected to
    __vfprintf_chk, which would leave __vprintf_chk untested), whereas the
    second guarantees that the redirections calls the correct function in
    the IBM and IEEE long double cases.
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == debug] (ldbl-extra-routines): Add
    	asprintf_chk, dprintf_chk, fprintf_chk, printf_chk,
    	snprintf_chk, sprintf_chk, vasprintf_chk, vdprintf_chk,
    	vfprintf_chk, vprintf_chk, vsnprintf_chk, and vsprintf_chk.
    	[subdir == debug] (tests-internal): Add
    	test-printf-chk-ieee128, test-printf-chk-ibm128,
    	test-printf-chk-redir-ieee128, and test-printf-chk-redir-ibm128.
    	[subdir == debug] (CFLAGS-test-printf-chk-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == debug] (CFLAGS-test-printf-chk-ibm128.c): Likewise.
    	[subdir == debug] (CFLAGS-test-printf-chk-redir-ieee128.c):
    	Likewise.
    	[subdir == debug] (CFLAGS-test-printf-chk-redir-ibm128.c):
    	Likewise.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__asprintf_chkieee128, __dprintf_chkieee128, __fprintf_chkieee128,
    	__printf_chkieee128, __snprintf_chkieee128, __sprintf_chkieee128,
    	__vasprintf_chkieee128, __vdprintf_chkieee128, __vfprintf_chkieee128,
    	__vprintf_chkieee128, __vsnprintf_chkieee128, __vsprintf_chkieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf_chk.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-printf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-snprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-sprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vasprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vdprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsnprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsprintf_chk.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ieee128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-redir-ibm128.c:
    	Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-redir-ieee128.c:
    	Likewise.

commit f213b94986e412a9814adc4215463934128b6896
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Fri Jun 8 11:40:45 2018 -0300

    ldbl-128ibm-compat: Add wide character printing functions
    
    Similarly to what was done for regular character printing functions,
    this patch uses the new mode mask, PRINTF_LDBL_USES_FLOAT128, in the
    'mode' argument of the wide characters printing function,
    __vfwprintf_internal (which is also extended to support printing
    floating-point values with IEEE binary128, by saving floating-point
    values into variables of type __float128 and adjusting the parameters to
    __printf_fp and __printf_fphex as if it was a call from a wide-character
    version of strfromf128 (even though such version does not exist)).
    
    Tested for powerpc64le.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == stdio-common] (ldbl-extra-routines): Add fwprintf,
    	swprintf, wprintf, vfwprintf, vswprintf, and vwprintf.
    	[subdir == stdio-common] (CFLAGS-vfwprintf-internal.c): New
    	variable.  Add -mfloat128 to the compilation of
    	vfprintf-internal.c, so that it gets support for the use of
    	__printf_fp and __printf_fphex with __float128 parameter.
    	[subdir == stdio-common] (tests-internal): Add
    	test-wprintf-ieee128 and test-wprintf-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-wprintf-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == stdio-common] (CFLAGS-test-wprintf-ibm128.c): Likewise.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions (libc): Add
    	__fwprintfieee128, __swprintfieee128, __wprintfieee128,
    	__vfwprintfieee128, __vswprintfieee128, and __vwprintfieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwprintf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ibm128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ieee128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-wprintf-ldbl-compat.c:
    	Likewise.

commit 1b2f7f223684da8b401045062e293a0666667fb2
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Mon May 21 11:25:39 2018 -0300

    ldbl-128ibm-compat: Add regular character printing functions
    
    The 'mode' argument to __vfprintf_internal allows the selection of the
    long double format for all long double arguments requested by the format
    string.  Currently, there are two possibilities: long double with the
    same format as double or long double as something else.  The 'something
    else' format varies between architectures, and on powerpc64le, it means
    IBM Extended Precision format.
    
    In preparation for the third option of long double format on
    powerpc64le, this patch uses the new mode mask,
    PRINTF_LDBL_USES_FLOAT128, which tells __vfprintf_internal to save the
    floating-point values into variables of type __float128 and adjusts the
    parameters to __printf_fp and __printf_fphex as if it was a call from
    strfromf128.
    
    Tested for powerpc64le.
    
    	* elf/tst-addr1.c (do_test): Accept redirections of printf to
    	__printfieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile:
    	[subdir == stdio-common] (ldbl-extra-routines): Add asprintf,
    	dprintf, fprintf, printf, snprintf, sprintf, vasprintf,
    	vdprintf, vfprintf, vprintf, vsnprintf, and vsprintf.
    	[subdir == stdio-common] (CFLAGS-vfprintf-internal.c): New
    	variable.  Add -mfloat128 to the compilation of
    	vfprintf-internal.c, so that it gets support for the use of
    	__printf_fp and __printf_fphex with __float128 parameter.
    	[subdir == stdio-common] (tests-internal): Add
    	test-printf-ieee128 and test-printf-ibm128.
    	[subdir == stdio-common] (CFLAGS-test-printf-ieee128.c): New
    	variable to add the relevant -mabi flags to the compilation.
    	[subdir == stdio-common] (CFLAGS-test-printf-ibm128.c): Likewise.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Versions: (libc): Add
    	__asprintfieee128, __dprintfieee128, __fprintfieee128,
    	__printfieee128, __snprintfieee128, __sprintfieee128,
    	__vasprintfieee128, __vdprintfieee128, __vfprintfieee128,
    	__vprintfieee128, __vsnprintfieee128, and __vsprintfieee128.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf.c: New file.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-printf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-snprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-sprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vasprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vdprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsnprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vsprintf.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ibm128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ieee128.c: Likewise.
    	* sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c:
    	Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/le/ldbl-128ibm-compat-abi.h:
    	Likewise.

commit 00ebf9aced2f328bc6bbc254c0c7d597d9c939e8
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Tue Jul 31 10:40:30 2018 -0300

    ldbl-128ibm-compat: Add Makefile routine to control compiler options
    
    Many files from the stdio-common, wcsmbs, argp, misc, and libio
    directories will have IEEE binary128 counterparts.  Setting the correct
    compiler options to these files (original and counterparts) would
    produce a large amount of repetitive Makefile rules.  To avoid this
    repetition, this patch adds a Makefile routine that iterates over the
    files adding or removing the appropriate flags.
    
    Currently, this mechanism only affects printf_size.  Future commits will
    use the mechanism for many more files.
    
    	* sysdeps/ieee754/ldbl-128ibm-compat/Makefile
    	[subdir == stdio-common] (routines): Move the addition of
    	printf_size to ldbl-extra-routines.
    	(ldbl-extra-routines): New variable.
    	(ldbl-ibm128-files): New variable.
    	(obj-suf-foreach): New routine.

commit 23d36e7d41aa5fc49eda3bf21567b553f867c375
Author: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
Date:   Sun Jun 3 17:20:43 2018 -0300

    Prepare vfprintf to use __printf_fp/__printf_fphex with float128 arg
    
    Changes since v2:
    
      - Fixed style error in `do { ... } while (0)' blocks.
      - Zero-initialize args_value[cnt] with memset, rather than relying on
        the `.pa_long_double' member being the largest of the members.
    
    Changes since v1:
    
      - Updated to the revised and integrated patches for __ldbl_is_dbl
        removal, i.e.: the patches in the following thread:
        <https://sourceware.org/ml/libc-alpha/2018-12/msg00186.html>.
        - Added description for the PRINTF_LDBL_USES_FLOAT128 macro.
        - Removed the LDBL_USES_FLOAT128 macro.
      - Added `do { } while (0)' to the PARSE_FLOAT_VA_ARG_EXTENDED,
        PARSE_FLOAT_VA_ARG, and SETUP_FLOAT128_INFO macros.  Appended
        expansions with `;', accordingly.
    
    -- 8< --
    On powerpc64le, long double can currently take two formats: the same as
    double (-mlong-double-64) or IBM Extended Precision (default with
    -mlong-double-128 or explicitly with -mabi=ibmlongdouble).  The internal
    implementation of printf-like functions is aware of these possibilities
    and properly parses floating-point values from the variable arguments,
    before making calls to __printf_fp and __printf_fphex.  These functions
    are also aware of the format possibilities and know how to convert both
    formats to string.
    
    When library support for TS 18661-3 was added to glibc, __printf_fp and
    __printf_fphex were extended with support for an additional type
    (__float128/_Float128) with a different format (binary128).  Now that
    powerpc64le is getting support for its third long double format, and
    taking into account that this format is the same as the format of
    __float128/_Float128, this patch extends __vfprintf_internal to properly
    call __printf_fp and __printf_fphex with this new format.
    
    Tested for powerpc64le (with additional patches to actually enable the
    use of these preparations) and for x86_64.
    
    	* libio/libioP.h (PRINTF_LDBL_USES_FLOAT128): New macro to be
    	used as a mask for the mode argument of __vfprintf_internal.
    	* stdio-common/printf-parse.h (printf_arg): New union member:
    	pa_float128.
    	* stdio-common/vfprintf-internal.c
    	(PARSE_FLOAT_VA_ARG_EXTENDED): New macro.
    	(PARSE_FLOAT_VA_ARG): Likewise.
    	(SETUP_FLOAT128_INFO): Likewise.
    	(process_arg): Use PARSE_FLOAT_VA_ARG_EXTENDED and
    	SETUP_FLOAT128_INFO.
    	[__HAVE_FLOAT128_UNLIKE_LDBL] (printf_positional): Write
    	floating-point value to the new union member, pa_float128.
    	(printf_positional): Zero-initialize args_value[cnt] with memset.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-12-13 22:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-13 22:28 [glibc] Deleted branch gabriel/powerpc-ieee128-printscan Gabriel F.T.Gomes
  -- strict thread matches above, loose matches on Subject: below --
2019-12-03 17:02 Gabriel F.T.Gomes
2019-10-25 15:31 Gabriel F.T.Gomes
2019-10-15 19:00 Gabriel F.T.Gomes
2019-08-09 18:34 Gabriel F.T.Gomes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).