ELF: Set symbol binding to STB_GLOBAL when undefining symbols during LTO.
authorPeter Collingbourne <peter@pcc.me.uk>
Tue, 2 May 2017 05:07:41 +0000 (05:07 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Tue, 2 May 2017 05:07:41 +0000 (05:07 +0000)
commit99c8fa3bef04901f34e8bdb1d2b5261a99a648a9
tree08c62b139ee7a65dbe1cc28ac68096c9f141498a
parentdfb1e2a1a148c3d269e2d03e572747425b2dbb53
ELF: Set symbol binding to STB_GLOBAL when undefining symbols during LTO.

If there is a bug in the LTO implementation that causes it to fail to provide
an expected symbol definition, the linker should report an undefined symbol
error. Unfortunately, we were failing to do so if the symbol definition
was weak, as the undefine() function was turning the definition into a weak
undefined symbol, which resolves to zero if the symbol remains undefined. This
patch causes us to set the binding to STB_GLOBAL when we undefine a symbol.

I can't see a good way to test this. The behaviour should only be observable
if there is a bug in the LTO implementation.

Differential Revision: https://reviews.llvm.org/D32731

llvm-svn: 301897
lld/ELF/LTO.cpp