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

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 8 19:28:33 PDT 2017


On Thu, Aug 24, 2017 at 6:24 PM, Justin Bogner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> 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});
>

Sadly, this seems to break everything.
E.g. now to build clang's tools/clang/lib/Sema/SemaExpr.cpp with
-fsanitize=fuzzer it takes ~6Gb  of RAM and all time/RAM is spent here.

I'll try to come up with a simple repro.


 }
>
>  void SanitizerCoverageModule::CreateFunctionLocalArrays(
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170908/6a6f1433/attachment.html>


More information about the llvm-commits mailing list