C++ modules are not really usable on latest Darwin without resolving this, thanks Iain
> On 23 Mar 2025, at 12:29, Iain Sandoe <iains....@gmail.com> wrote: > > From: Iain Sandoe <iainsandoe@mini-05-seq.local> > > Tested on x86_64/aarch64 Darwin and x86_64-linux, > OK for trunk? > backports to branches supporting modules? > thanks > Iain > > --- 8< --- > > Recent changes to the OS SDKs have altered the way in which include guards > are used for a number of headers when C++ modules are enabled. Instead of > placing the guards in the included header, they are being placed in the > including header. This breaks the assumptions in the current GCC stddef.h > specifically, that the presence of __PTRDIFF_T and __SIZE_T means that the > relevant defs are already made. However in the case of the module-enabled > C++ with these SDKs, that is no longer true. > > stddef.h has a large body of special-cases already, but it seems that the > only viable solution here is to add a new one specifically for __APPLE__ > and modular code. > > This fixes around 280 new fails in the modules test-suite; it is needed on > all open branches that support modules. > > PR target/116827 > > gcc/ChangeLog: > > * ginclude/stddef.h: Undefine __PTRDIFF_T and __SIZE_T for module- > enabled c++ on Darwin/macOS platforms. > > Signed-off-by: Iain Sandoe <i...@sandoe.co.uk> > --- > gcc/ginclude/stddef.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h > index 0d53103ce20..bf9c6e609dc 100644 > --- a/gcc/ginclude/stddef.h > +++ b/gcc/ginclude/stddef.h > @@ -89,6 +89,17 @@ see the files COPYING3 and COPYING.RUNTIME respectively. > If not, see > #undef _PTRDIFF_T_ > #endif > > +#if defined (__APPLE__) > +# if defined(__has_feature) && __has_feature(modules) > +# if defined (__need_ptrdiff_t) > +# undef __PTRDIFF_T > +# endif > +# if defined (__need_size_t) > +# undef __SIZE_T > +# endif > +# endif > +#endif > + > /* On VxWorks, <type/vxTypesBase.h> may have defined macros like > _TYPE_size_t which will typedef size_t. fixincludes patched the > vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is > -- > 2.39.2 (Apple Git-143) >