Hi Folks this has more than 2 weeks without comment, (it is darwin-local) thanks Iain
> On 29 Mar 2025, at 15:23, Iain Sandoe <iains....@gmail.com> wrote: > > 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) >> >