On Fri, 10 Dec 2021 at 15:16, Rasmus Villemoes via Libstdc++ <libstd...@gcc.gnu.org> wrote: > > On 10/12/2021 16.06, Olivier Hainque wrote: > > Hello, > > > > The attached patch for libstdc++ / VxWorks helps building > > the library for old versions of the OS, as witnessed with > > VxWorks 6.9 in particular. > > > > It explicitly requests C99 features from old system headers, > > on which libstc++ relies since at least c++98. The specific > > issue that exposed this was a failure to compile > > > > libstdc++-v3/src/c++17/floating_to_chars.cc > > > > for VxWorks 6.9 with a batch of errors such as: > > > > error: 'FP_NAN' was not declared in this scope > > > > The missing definitions are provided by the > > system headers with guards on _HAS_C9X, which gets > > internally defined when _C99 is. > > > > Ok to commit? > > Yes, we've observed that error as well. We have just patched our vxworks > 5.5 headers to provide FP_NAN et al. There's no test of definedness or > other uses of a _C99 macro anywhere, so ok by me, as it shouldn't change > anything on our end. > > Rasmus
OK to commit then, thanks. The comment is a bit misleading though: +// libstdc++ relies on C99 features for virtually all versions of C++, +// up to at least C++98. +#undef _C99 +#define _C99 1 The "up to" seems backwards, I'd expect it to say "down to" or "as far back as at least C++98". But there's nothing older than C++98 anyway, so this just means "all versions", there's no "virtually" about it. Please just say "libstdc++ relies on C99 features for all versions of C++".