[llvm] r311742 - [sanitizer-coverage] Make sure pc-tables aren't dead stripped

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 24 18:24:54 PDT 2017


Author: bogner
Date: Thu Aug 24 18:24:54 2017
New Revision: 311742

URL: http://llvm.org/viewvc/llvm-project?rev=311742&view=rev
Log:
[sanitizer-coverage] Make sure pc-tables aren't dead stripped

Add a reference to the PC array in llvm.used so that linkers that
aggressively dead strip (like ld64) don't remove it.

Modified:
    llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp

Modified: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=311742&r1=311741&r2=311742&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp Thu Aug 24 18:24:54 2017
@@ -557,6 +557,10 @@ void SanitizerCoverageModule::CreatePCAr
   FunctionPCsArray->setInitializer(
       ConstantArray::get(ArrayType::get(Int8PtrTy, N), PCs));
   FunctionPCsArray->setConstant(true);
+
+  // We don't reference the PCs array in any of our runtime functions, so we
+  // need to prevent it from being dead stripped.
+  appendToUsed(*F.getParent(), {FunctionPCsArray});
 }
 
 void SanitizerCoverageModule::CreateFunctionLocalArrays(




More information about the llvm-commits mailing list