aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-12-19 12:06:09 -0300
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-02-17 15:28:29 -0600
commite4a399921390509418826e8e8995d2441f29e243 (patch)
treecc9f1df5edb43ade00aa12cc1ba1c5a662e5f1c8 /stdlib/bits/stdlib-ldbl.h
parentconform/conformtest.py: Extend tokenizer to cover character constants (diff)
downloadglibc-e4a399921390509418826e8e8995d2441f29e243.tar.gz
glibc-e4a399921390509418826e8e8995d2441f29e243.tar.bz2
glibc-e4a399921390509418826e8e8995d2441f29e243.zip
Prepare redirections for IEEE long double on powerpc64le
All functions that have a format string, which can consume a long double argument, must have one version for each long double format supported on a platform. On powerpc64le, these functions currently have two versions (i.e.: long double with the same format as double, and long double with IBM Extended Precision format). Support for a third long double format option (i.e. long double with IEEE long double format) is being prepared and all the aforementioned functions now have a third version (not yet exported on the master branch, but the code is in). For these functions to get selected (during build time), references to them in user programs (or dependent libraries) must get redirected to the aforementioned new versions of the functions. This patch installs the header magic required to perform such redirections. Notice, however, that since the redirections only happen when __LONG_DOUBLE_USES_FLOAT128 is set to 1, and no platform (including powerpc64le) currently does it, no redirections actually happen. Redirections and the exporting of the new functions will happen at the same time (when powerpc64le adds ldbl-128ibm-compat to their Implies. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> Reviewed-by: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
Diffstat (limited to 'stdlib/bits/stdlib-ldbl.h')
-rw-r--r--stdlib/bits/stdlib-ldbl.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/stdlib/bits/stdlib-ldbl.h b/stdlib/bits/stdlib-ldbl.h
index 5c6294ed9b..2469474532 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