[llvm-dev] LTO in LLVM3.8

Below, Daniel via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 4 18:28:39 PDT 2016


Hi all,


I've been playing around with LLVM and LTO trying to compile some open-source projects.


Prior to the 3.8 release I had been using r250630 (if I remember correctly) and I was able to successfully build GamePlay (https://github.com/gameplay3d/GamePlay).

Sadly, since upgrading to 3.8 I am getting weird link-time-errors (error: undefined reference to 'XYZ::~XYZ').


It appears that these destructors are all virtual (although I cannot guarantee this does not break for non-virtual destructors too). The project generates an archive file which is then linked against to generate a few sample applications. During this linking phase, the above error (undefined reference to 'XYZ::~XYZ') appears.



I have upgraded the gold-linker, and I have tried using the current trunk of LLVM - both did not help. After three days of trying to debug this, I have run out of ideas.


Is this a known bug? I have found an issue on the gnu/binutils bugtracker that sounds similar (https://lists.gnu.org/archive/html/bug-binutils/2016-03/msg00235.html - bugged symbol resolution of weak symbols), although in my case compilation is aborted because of said errors.


Have there been any undocumented changes to LTO in 3.8 I should be aware of? Is there maybe a specific gold-linker version I have to use or should I use llvm-ar/nm now, instead of the ar/nm provided by binutils (which have worked for me before 3.8)?


Any help is greatly appreciated,


Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160405/9b5ad14c/attachment.html>


More information about the llvm-dev mailing list