On Tue, 1 Dec 2020 at 21:10, Jonathan Wakely <jwakely....@gmail.com> wrote: > > On Tue, 1 Dec 2020 at 19:13, Michael Meissner via Libstdc++ > <libstd...@gcc.gnu.org> wrote: > > > > 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: > > It works fine for me (see below). I think your symptoms are due to > using a glibc that doesn't support the new long double, and so > libstdc++ support for it is also disabled. You need at least glibc > 2.32 for the libstdc++ changes to be enabled.
I should improve the failure mode (maybe refuse to compile anything using the C++ library headers if __LONG_DOUBLE_IEEE128__ is defined and __ieee128 support was disabled due to the missing glibc dependency) but that hasn't been a priority. Making the C++ library support __ieee128 on a machine that doesn't even have libc support for it isn't possible, so I didn't spend time on that use case. It doesn't work, and it's not going to work.