diff options
| author | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-07-11 11:48:28 -0300 |
|---|---|---|
| committer | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-12-13 19:06:02 -0300 |
| commit | 39a7b82283cab9dbfc119d8411d26d55a65f5eb4 (patch) | |
| tree | 74a7c8d739205d232fbf6d113d8ab3001d0fcb16 /stdlib/bits | |
| parent | b851fea5c875acdca549103493d0439e91360d7e (diff) | |
| download | glibc-gabriel/powerpc-ieee128-printscan.tar.xz glibc-gabriel/powerpc-ieee128-printscan.zip | |
RFC: powerpc64le: Enable support for IEEE long doublegabriel/powerpc-ieee128-printscan
Not for glibc-2.31 - Do not commit!
No changes since v3.
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.
Diffstat (limited to 'stdlib/bits')
| -rw-r--r-- | stdlib/bits/stdlib-ldbl.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/stdlib/bits/stdlib-ldbl.h b/stdlib/bits/stdlib-ldbl.h index dcbf74a6dd..615ee3131a 100644 --- a/stdlib/bits/stdlib-ldbl.h +++ b/stdlib/bits/stdlib-ldbl.h @@ -21,21 +21,43 @@ #endif #ifdef __USE_ISOC99 +# ifdef __LDBL_COMPAT __LDBL_REDIR1_DECL (strtold, strtod) +# else +__LDBL_REDIR1_DECL (strtold, __strtoieee128) +# endif #endif #ifdef __USE_GNU +# ifdef __LDBL_COMPAT __LDBL_REDIR1_DECL (strtold_l, strtod_l) +# else +__LDBL_REDIR1_DECL (strtold_l, __strtoieee128_l) +# endif #endif #if __GLIBC_USE (IEC_60559_BFP_EXT_C2X) +# ifdef __LDBL_COMPAT __LDBL_REDIR1_DECL (strfroml, strfromd) +# else +__LDBL_REDIR1_DECL (strfroml, __strfromieee128) +# endif #endif #ifdef __USE_MISC +# if defined __LDBL_COMPAT __LDBL_REDIR1_DECL (qecvt, ecvt) __LDBL_REDIR1_DECL (qfcvt, fcvt) __LDBL_REDIR1_DECL (qgcvt, gcvt) __LDBL_REDIR1_DECL (qecvt_r, ecvt_r) __LDBL_REDIR1_DECL (qfcvt_r, fcvt_r) +# elif __LONG_DOUBLE_USES_FLOAT128 == 1 +__LDBL_REDIR1_DECL (qecvt, __qecvtieee128) +__LDBL_REDIR1_DECL (qfcvt, __qfcvtieee128) +__LDBL_REDIR1_DECL (qgcvt, __qgcvtieee128) +__LDBL_REDIR1_DECL (qecvt_r, __qecvtieee128_r) +__LDBL_REDIR1_DECL (qfcvt_r, __qfcvtieee128_r) +# else +# error bits/stdlib-ldbl.h included when no ldbl redirections are required. +# endif #endif |
