| Summary: | gdb fails to build on ppc64le when building with -flto | ||
|---|---|---|---|
| Product: | gdb | Reporter: | Alexandra Hájková <ahajkova> |
| Component: | gdb | Assignee: | Keith Seitz <keiths> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | keiths, tromey, vries |
| Priority: | P2 | ||
| Version: | 10.1 | ||
| Target Milestone: | --- | ||
| Host: | Target: | ||
| Build: | Last reconfirmed: | ||
| Project(s) to access: | ssh public key: | ||
|
Description
Alexandra Hájková
2021-10-11 20:24:37 UTC
Marking as dup of the generic ODR bug. *** This bug has been marked as a duplicate of bug 22395 *** If this still occurs, we need to reopen it. If it does occur, please post the entire warning. This appears to have popped up again
(FSF master updated May 6, 2026):
CXXLD gdbserver
../../src/gdbserver/../gdb/arch/ppc-linux-tdesc.h:46:29: error: ‘tdesc_powerpc_isa207_htm_vsx64l’ violates the C++ One Definition Rule [-Werror=odr]
46 | extern const_target_desc_up tdesc_powerpc_isa207_htm_vsx64l;
| ^
powerpc-isa207-htm-vsx64l-generated.cc:26:27: note: ‘tdesc_powerpc_isa207_htm_vsx64l’ was previously declared here
26 | const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
| ^
powerpc-isa207-htm-vsx64l-generated.cc:26:27: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
[snip]
I'm working on a patch.
The master branch has been updated by Keith Seitz <kseitz@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d839c0e5ab5a1c08d0a110b31f54d17946d4fc8b commit d839c0e5ab5a1c08d0a110b31f54d17946d4fc8b Author: Keith Seitz <keiths@redhat.com> Date: Tue Jul 7 12:10:08 2026 -0700 regdat.sh: generate const_target_desc_up for register descriptions Late last year, a patch propagated the use of target_desc unique pointers (commit 1a5362ce51ef79ffb61caa20c93284dc368dc74a). At the time, the "old regformats/regdat.sh [weren't] changed because their target_desc objects are statically allocated in the generated files." Unfortunately that re-introduced ODR violations on ppc64le: CXXLD gdbserver ../../src/gdbserver/../gdb/arch/ppc-linux-tdesc.h:46:29: error: âtdesc_powerpc_isa207_htm_vsx64lâ violates the C++ One Definition Rule [-Werror=odr] 46 | extern const_target_desc_up tdesc_powerpc_isa207_htm_vsx64l; | ^ powerpc-isa207-htm-vsx64l-generated.cc:26:27: note: âtdesc_powerpc_isa207_htm_vsx64lâ was previously declared here 26 | const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; | ^ powerpc-isa207-htm-vsx64l-generated.cc:26:27: note: code may be misoptimized unless â-fno-strict-aliasingâ is used Update regdat.sh so that generated init_registers_* code matches the const-unique_ptr-based target description API, resolving the ODR violation. A follow-up patch updates various gdbserver architectures to accommodate this API change. Tested on ppc64le and s390x Fedora 43 and mips-linux cross build (all with LTO). Approved-By: Simon Marchi <simon.marchi@efficios.com> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28444 Fixed again. |