https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69881
--- Comment #18 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Bernd Edlinger from comment #13) > (In reply to Jonathan Wakely from comment #12) > > (In reply to Bernd Edlinger from comment #9) > > > right now I am trying to boot-strap this: > > > > > > Index: c/cstddef > > > =================================================================== > > > --- c/cstddef (revision 233581) > > > +++ c/cstddef (working copy) > > > @@ -31,10 +31,11 @@ > > > > > > #pragma GCC system_header > > > > > > -#define __need_size_t > > > -#define __need_ptrdiff_t > > > -#define __need_NULL > > > -#define __need_offsetof > > > +#undef __need_wchar_t > > > +#undef __need_size_t > > > +#undef __need_ptrdiff_t > > > +#undef __need_NULL > > > +#undef __need_wint_t > > > #include_next <stddef.h> > > > > > > How do you plan to test this change? Do you have a target that uses this > > header? > > > > Yes, I do have such targets. > We use eCos at Softing as real time O/S a lot. Great, that's good to know. > I think I will build an ecos cross compiler, did so last year with > gcc-5.1, (and had quite a lot of trouble with the bugs in > ecos headers) > > ./gcc-5.1.0/configure --prefix=/home/ed/gnu/arm-eabi --target=arm-eabi > --with-newlib --enable-languages=c,c++ --disable-hosted-libstdcxx > --disable-__cxa-atexit --disable-libquadmath --disable-decimal-float > > > > > > #endif > > > Index: c_global/cstddef > > > =================================================================== > > > --- c_global/cstddef (revision 233581) > > > +++ c_global/cstddef (working copy) > > > @@ -41,6 +41,11 @@ > > > > > > #pragma GCC system_header > > > > > > +#undef __need_wchar_t > > > +#undef __need_size_t > > > +#undef __need_ptrdiff_t > > > +#undef __need_NULL > > > +#undef __need_wint_t > > > #include <bits/c++config.h> > > > #include <stddef.h> > > > > This isn't incorrect, but it should not be necessary. This macros are > > internal implementation details of the standard library headers, and user > > code (like GMP) should not be defining those macros. If GMP wants size_t it > > should include <stddef.h> and if it wants std::size_t it should include > > <cstddef>, and it should not try to play silly games to only get part of the > > header. > > > > > > Yeah, shit happens. > Anyway boot-strap & reg-testing OK on x86_64-pc-linux-gnu. > gcc-4.9 builds successfully (minus Ada, see pr69883 :() I'm in two minds whether we should fix that shit in the library or not. > > > Index: c_std/cstddef > > > =================================================================== > > > --- c_std/cstddef (revision 233581) > > > +++ c_std/cstddef (working copy) > > > @@ -41,6 +41,11 @@ > > > > > > #pragma GCC system_header > > > > > > +#undef __need_wchar_t > > > +#undef __need_size_t > > > +#undef __need_ptrdiff_t > > > +#undef __need_NULL > > > +#undef __need_wint_t > > > #include <bits/c++config.h> > > > #include <stddef.h> > > > > How do you plan to test this? > > no idea yet. > under what condition is that header used? For targets that choose to use it or with --enable-cheaders=c_std, but I don't know of any targets where that is the default or needed, so don't know how to test it. It is to be expected that you can't just use --enable-cheaders=c_std on a target where that isn't usually used (and I'm not surprised if those headers are also currently broken). > Why does it only differ in the comment from the > previous header? > > why are the both files different? > diff c_global/cstddef c_std/cstddef > 26c26 > < * This is a Standard C++ Library file. You should @c \#include this file > --- > > * This is a Standard C++ Library file. You should @c #include this file > > is this a mistake? Maybe. It's only a comment, I'm not very concerned.