[Bug libstdc++/100912] powerpc64le: ieee128 long double incorrectly printed when using shared libstdc++
qiu.chaofan at outlook dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 6 06:26:02 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100912
--- Comment #9 from Qiu Chaofan <qiu.chaofan at outlook dot com> ---
I also get following 'symbol not found' error for following case (under
-mabi=ieeelongdouble): undefined reference to
`std::__gnu_cxx11_ieee128::money_get<wchar_t, std::istreambuf_iterator<wchar_t,
std::char_traits<wchar_t> > >::money_get(unsigned long)'
Maybe related?
#include <iterator>
#include <locale>
#include <sstream>
struct D : public std::money_get<wchar_t> {
D() : std::money_get<wchar_t>() {}
iter_type do_get(iter_type s, iter_type end, bool intl, std::ios_base &str,
std::ios_base::iostate &err, long double &units) const {
return std::money_get<wchar_t>::do_get(s, end, intl, str, err, units);
}
} d;
int main(void) {
std::wistringstream in(L"1 ");
in.imbue(std::locale::classic());
in.exceptions(std::ios_base::goodbit);
long double val;
std::istreambuf_iterator<wchar_t> end;
std::istreambuf_iterator<wchar_t> begin(in);
std::ios_base::iostate prior_err = in.rdstate();
std::ios_base::iostate err = in.rdstate();
d.do_get(begin, end, true, in, err, val);
return 0;
}
More information about the Gcc-bugs
mailing list