[PATCH] libstdc++: Add C++ runtime support for new 128-bit long double format

Michael Meissner meissner@linux.ibm.com
Tue Dec 1 19:10:42 GMT 2020


On Tue, Dec 01, 2020 at 04:04:30PM +0000, Jonathan Wakely wrote:
> On 01/12/20 15:10 +0000, Jonathan Wakely wrote:
> >On 30/11/20 16:30 -0500, Michael Meissner via Libstdc++ wrote:
> >>Jonathan, could you send a fresh set of patches (or at least replacements)?  I
> >>tried installing the patches on a master branch I checked out this morning, and
> >>I got two rejects:
> >
> >I don't understand why those chunks failed, but I'll rebase and send a
> >new patch ASAP.
> 
> Here's the rebased patch, with regenerated autoconf files and a fix
> for the <ext/numeric_limits.h> header. I'd changed it since sending
> the previous patch, and broke the "there's more than one long double"
> case (i.e. the _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT case).

Unfortunately this patch DOES NOT work at all.

If I build a compiler with the configure option:
	--with-long-double-format=ieee

And I compile this simple program:

	#include <iostream>

	int main(int argc, char *argv[], char *envp[])
	{
	  std::cout << "Hello World!\n";
	  return 0;
	}

I get all of these errors:

/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract<false>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, std::string&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert<true>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, std::string const&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_int<unsigned long long>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, unsigned long long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_int<long long>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, long long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract<true>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, std::string&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_int<unsigned int>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, unsigned int&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_int<unsigned long>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, unsigned long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned int>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned int&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract<false>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, std::string&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert_float<long double>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, char, long double) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<unsigned long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<long>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<long long>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, long long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert_float<double>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, char, double) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned short>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned short&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert<true>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert_int<unsigned long>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, unsigned long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_int<unsigned short>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, unsigned short&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract<true>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, std::string&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_int<long>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, std::_Ios_Iostate&, long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<long long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, double) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert_int<unsigned long long>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, unsigned long long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert<false>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, std::string const&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert<false>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<long double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, long double) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned long long>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned long long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned long>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned long&) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<unsigned long long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert_int<long>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, long) const'
/home3/meissner/fsf-install-ppc64le/binutils-gdb/bin/ld: /home/meissner/fsf-install-ppc64le/work029-kf/lib/../lib64/libstdc++.so: undefined reference to `std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_insert_int<long long>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, long long) const'
collect2: error: ld returned 1 exit status

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.ibm.com, phone: +1 (978) 899-4797


More information about the Libstdc++ mailing list