summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/Module.cpp
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2017-04-06 19:55:17 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2017-04-06 19:55:17 +0000
commit6c3a8cbc4d98103475f072792bae2c4a1659db01 (patch)
tree8ac837d3d464188ea6b6c39f159660367ef36365 /llvm/lib/IR/Module.cpp
parent5dfe420d108d48d1864d1c7ef87b0fd907fe8a7b (diff)
downloadbcm5719-llvm-6c3a8cbc4d98103475f072792bae2c4a1659db01.tar.gz
bcm5719-llvm-6c3a8cbc4d98103475f072792bae2c4a1659db01.zip
[asan] Fix dead stripping of globals on Linux.
Use a combination of !associated, comdat, @llvm.compiler.used and custom sections to allow dead stripping of globals and their asan metadata. Sometimes. Currently this works on LLD, which supports SHF_LINK_ORDER with sh_link pointing to the associated section. This also works on BFD, which seems to treat comdats as all-or-nothing with respect to linker GC. There is a weird quirk where the "first" global in each link is never GC-ed because of the section symbols. At this moment it does not work on Gold (as in the globals are never stripped). This is a re-land of r298158 rebased on D31358. This time, asan.module_ctor is put in a comdat as well to avoid quadratic behavior in Gold. llvm-svn: 299697
Diffstat (limited to 'llvm/lib/IR/Module.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud