From: Thiago Jung Bauermann Date: Wed, 3 Dec 2025 23:15:13 +0000 (-0300) Subject: Revert "[gdb/guile] Use SCM_DEBUG_TYPING_STRICTNESS 0" X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79c4b2780ac006e87268d9e7d77dcf1593107620;p=thirdparty%2Fbinutils-gdb.git Revert "[gdb/guile] Use SCM_DEBUG_TYPING_STRICTNESS 0" This reverts commit 852cbc7ffadf9daf173e13ea56caff49d52733af. It fixed the build with libguile v2.0.9, but now GDB only supports Guile >= 2.2. I was able to build GDB using -std=c++20 with both Guile 2.2 and Guile 3.0 (tested with GCC 14.3) without any error or warning. Approved-By: Tom Tromey --- diff --git a/gdb/guile/guile-internal.h b/gdb/guile/guile-internal.h index aeef77abbaf..c7c8f9b4e8d 100644 --- a/gdb/guile/guile-internal.h +++ b/gdb/guile/guile-internal.h @@ -30,25 +30,18 @@ #include "objfiles.h" #include "top.h" -/* For libguile v2.0.9 and SCM_DEBUG_TYPING_STRICTNESS == 1, SCM_UNPACK(x) is - defined as: - - ((scm_t_bits) (0? (*(SCM*)0=(x)): x)) - - and for v2.0.10 it's defined as: - - ((scm_t_bits) (0? (*(volatile SCM *)0=(x)): x)) - - The volatile was added to avoid a clang warning. - - The latter form causes a Werror=volatile with C++20. - This was reported upstream ( - https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65333 ). - - The former form causes a Werror=sequence-point with gcc 7-14. - - Work around these problem by using SCM_DEBUG_TYPING_STRICTNESS == 0. */ +/* GCC introduced C++20 support in GCC 8, using -std=c++2a (the name of the + C++20 standard before publishing) and __cplusplus 201709L. In GCC 10, + -std=c++20 was added, but __cplusplus stayed at 201709L, and was only + changed to the standard 202002L in GCC 11. Consequently, some C++20 + features and restrictions need to be tested against the non-standard + 201709L, otherwise the build with GCC 10 and -std=c++20 will break. */ +#if __cplusplus >= 201709L +/* Work around Werror=volatile in SCM_UNPACK for + SCM_DEBUG_TYPING_STRICTNESS == 1. Reported upstream: + https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65333 . */ #define SCM_DEBUG_TYPING_STRICTNESS 0 +#endif #include "libguile.h" struct block;