diff options
author | Tom de Vries <tdevries@suse.de> | 2024-01-25 16:31:47 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-01-25 16:31:47 +0100 |
commit | 2ec7980408fafb172d2ddb716a367ce2111e2e9e (patch) | |
tree | 548d0b553d27021e9d11fcca40626c8d0d68a2b9 /gdb/gdbthread.h | |
parent | 7ff4111cdee7eedbe083918f34774e1487ece557 (diff) | |
download | gdb-2ec7980408fafb172d2ddb716a367ce2111e2e9e.zip gdb-2ec7980408fafb172d2ddb716a367ce2111e2e9e.tar.gz gdb-2ec7980408fafb172d2ddb716a367ce2111e2e9e.tar.bz2 |
[gdb/build] Workaround gcc PR113599
Since gcc commit d3f48f68227 ("c++: non-dependent .* operand folding
[PR112427]"), with gdb we run into PR gcc/113599 [1], a wrong-code bug, as
reported in PR build/31281.
Work around this by flipping inherit order:
...
-class thread_info : public refcounted_object,
- public intrusive_list_node<thread_info>
+class thread_info : public intrusive_list_node<thread_info>,
+ public refcounted_object
...
An argument could be made that this isn't necessary, because this occurred in
an unreleased gcc version.
However, I think it could be useful when bisecting gcc for other problems in
building gdb. Having this workaround means the bisect won't reintroduce the
problem. Furthermore, the workaround is harmless.
Tested on Fedora rawhide x86_64.
Approved-By: Tom Tromey <tom@tromey.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31281
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113599
Diffstat (limited to 'gdb/gdbthread.h')
-rw-r--r-- | gdb/gdbthread.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index e7035d4..11c553a 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -244,10 +244,11 @@ using private_thread_info_up = std::unique_ptr<private_thread_info>; strong reference, and is thus not accounted for in the thread's refcount. - The intrusive_list_node base links threads in a per-inferior list. */ + The intrusive_list_node base links threads in a per-inferior list. + We place it first in the inherit order to work around PR gcc/113599. */ -class thread_info : public refcounted_object, - public intrusive_list_node<thread_info> +class thread_info : public intrusive_list_node<thread_info>, + public refcounted_object { public: explicit thread_info (inferior *inf, ptid_t ptid); |