public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* GCC 8.3.0, -flto and violation of C++ One Definition Rule
@ 2021-12-29 11:44 Tom Kacvinsky
  2021-12-29 12:55 ` Xi Ruoyao
  2021-12-29 15:38 ` Jonathan Wakely
  0 siblings, 2 replies; 9+ messages in thread
From: Tom Kacvinsky @ 2021-12-29 11:44 UTC (permalink / raw)
  To: gcc-help

Hi,

First, using GCC 8.3.0 and binutils 2.37.I am trying to increase
performance of linking our product, so I thought I'd give LTO a try.  So
I am compiling all object files with -flto, and passing -flto to g++
(which we use as our link driver).  However, what I have found is that
some of our code violates the C++ One Definition Rule (-Werror=odr). This
only happens when building with LTO - without LTO, the C++ rule is
not violated.  The problem exists with LTO using both the BFD and gold
linkers.

So, my question is, since the LTO object files are now such that one
needs to use gcc-nm to examine them (which I know is a wrapper around nm,
and passes an option to load the LTO plugin). how can I leverage that to
see if there are other translation units that define the class that ODR
violation is complaining about?  I did do a fairly thorough analysis of
the object files and did not see there the particular class and methods
would be multiply defined, but that was just based on symbol names from
gcc-nm output.  I suspect there is more to this since the object files
have LTO information now, and that is what I'd like to examine.

Any hints on how to move forward with diagnosing LTO link errors?

Thanks,

Tom

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-12-29 19:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-29 11:44 GCC 8.3.0, -flto and violation of C++ One Definition Rule Tom Kacvinsky
2021-12-29 12:55 ` Xi Ruoyao
2021-12-29 13:34   ` Tom Kacvinsky
2021-12-29 15:38 ` Jonathan Wakely
2021-12-29 16:15   ` Tom Kacvinsky
2021-12-29 17:01     ` Jonathan Wakely
2021-12-29 17:04       ` Jonathan Wakely
2021-12-29 18:18         ` Tom Kacvinsky
2021-12-29 19:36           ` Jonathan Wakely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).