From: Tom de Vries Date: Sun, 13 Jul 2025 05:25:43 +0000 (+0200) Subject: [gdb/build] Work around GCC ipa-modref bug X-Git-Tag: binutils-2_45~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e8dbf5c5d6ae1d2b78322e5fed70200bc999cba;p=thirdparty%2Fbinutils-gdb.git [gdb/build] Work around GCC ipa-modref bug PR mi/32571 reports the following problem: ... $ gdb -q -batch -ex "b bla.c:100" Make breakpoint pending on future shared library load? (y or [n]) \ [answered N; input not from terminal] ... while this is expected: ... $ gdb -q -batch -ex "b bla.c:100" No symbol table is loaded. Use the "file" command. Make breakpoint pending on future shared library load? (y or [n]) \ [answered N; input not from terminal] ... A few factors in reproducing this are building gdb using gcc 14, "-O2 -flto=auto" and --disable-nls. For more details, see the PR. This turns out to be caused by a GCC PR [1], more specifically a problem in ipa-modref. Work around this by disabling ipa-modref for GCC versions 12-15 and 16.0, assuming the GCC 16.1 release will contain a fix. Tested on aarch64-linux and x86_64-linux. Approved-By: Andrew Burgess Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32571 [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120987 --- diff --git a/gdbsupport/common-defs.h b/gdbsupport/common-defs.h index 07caf3bd7e4..cfdefe19ce0 100644 --- a/gdbsupport/common-defs.h +++ b/gdbsupport/common-defs.h @@ -27,6 +27,14 @@ #pragma GCC optimize("-fno-hoist-adjacent-loads") #endif +#if defined (__GNUC__) && !defined (__clang__) \ + && ((__GNUC__ >= 12 && __GNUC__ <= 15) \ + || (__GNUC__ == 16 && __GNUC_MINOR__ < 1)) +/* Work around PR gcc/120987 starting gcc 12, and assume it will be fixed in + the gcc 16.1 release. */ +#pragma GCC optimize("-fno-ipa-modref") +#endif + #include #undef PACKAGE_NAME