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