On Mon, 30 Oct 2023, 18:31 François Dumont, wrote: > > On 30/10/2023 14:45, Jonathan Wakely wrote: > > On Sun, 29 Oct 2023 at 21:11, François Dumont > wrote: > >> This fixes handle_contract_violation under versioned namespace mode. > >> > >> Tested under Linux x64 and confirmed to also fix Darwin build. > >> > >> libstdc++: [_GLIBCXX_INLINE_VERSION] Provide handle_contract_violation > >> symbol > >> > >> libstdc++-v3/ChangeLog: > >> > >> * src/experimental/contract.cc > >> [_GLIBCXX_INLINE_VERSION](handle_contract_violation): Provide > >> symbol > >> without version namespace decoration for gcc. > >> +#if _GLIBCXX_INLINE_VERSION > >> +// Provide symbol without version namespace decoration for gcc. > > For the comment in the code, I think this would be better: > > > > // The compiler expects the contract_violation class to be in an > unversioned > > // namespace, so provide a forwarding function with the expected symbol > name. > Sure, I'll update it. > > Do we want the forwarding function to be a weak symbol? The main > > handler function is weak because we want users to be able to override > > it with their own handler. But for this new forwarding function, they > > can't even declare it (because it has a reserved name that doesn't > > demangle to a valid type for the versioned namespace build). > > > Good point, I see no reason neither so I'll remove it. > Thanks, looks good for trunk (and gcc-13 maybe?) with that change. >