From: Arsen Arsenović Date: Tue, 4 Apr 2023 17:25:09 +0000 (+0200) Subject: libstdc++: Downgrade DEBUG to ASSERTIONS when !HOSTED X-Git-Tag: basepoints/gcc-14~190 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bff26ac162772313d3d9b8ce952b5a0846e26878;p=thirdparty%2Fgcc.git libstdc++: Downgrade DEBUG to ASSERTIONS when !HOSTED Supporting the debug mode in freestanding is a non-trivial job, so instead, as a best-effort, enable assertions, which are light and easy. libstdc++-v3/ChangeLog: * include/bits/c++config: When __STDC_HOSTED__ is zero, disable _GLIBCXX_DEBUG and, if it was set, enable _GLIBCXX_ASSERTIONS. * testsuite/lib/libstdc++.exp (check_v3_target_debug_mode): Include when determining whether debug is set, in order to inherit the logic from above --- diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index 71f2401402fa..13892787e095 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -397,6 +397,13 @@ _GLIBCXX_END_NAMESPACE_VERSION # define _GLIBCXX_END_INLINE_ABI_NAMESPACE(X) } // inline namespace X #endif +// In the case that we don't have a hosted environment, we can't provide the +// debugging mode. Instead, we do our best and downgrade to assertions. +#if defined(_GLIBCXX_DEBUG) && !__STDC_HOSTED__ +#undef _GLIBCXX_DEBUG +#define _GLIBCXX_ASSERTIONS 1 +#endif + // Inline namespaces for special modes: debug, parallel. #if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) namespace std diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 98512c973fb9..490abd108fad 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1007,6 +1007,7 @@ proc check_v3_target_debug_mode { } { global cxxflags return [check_v3_target_prop_cached et_debug_mode { set code " + #include #if ! defined _GLIBCXX_DEBUG # error no debug mode #endif