llvm-mirror/tools/llvm-lto2
Teresa Johnson 411e4731ce [LTO] Prevent dead stripping and internalization of symbols with sections
Summary:
ELF linkers generate __start_<secname> and __stop_<secname> symbols
when there is a value in a section <secname> where the name is a valid
C identifier.  If dead stripping determines that the values declared
in section <secname> are dead, and we then internalize (and delete)
such a symbol, programs that reference the corresponding start and end
section symbols will get undefined reference linking errors.

To fix this, add the section name to the IRSymtab entry when a symbol is
defined in a specific section. Then use this in the gold-plugin to mark
the symbol as external and visible from outside the summary when the
section name is a valid C identifier.

Reviewers: pcc

Subscribers: mehdi_amini, inglorion, eraman, llvm-commits

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

llvm-svn: 309009
2017-07-25 19:42:32 +00:00
..
CMakeLists.txt Add missing library dependency to fix build break in llvm-lto2 2017-06-28 06:14:30 +00:00
llvm-lto2.cpp [LTO] Prevent dead stripping and internalization of symbols with sections 2017-07-25 19:42:32 +00:00
LLVMBuild.txt Add missing library dependency to fix build break in llvm-lto2 2017-06-28 06:14:30 +00:00