[PATCH] D48203: [SanitizerCoverage] Add associated metadata to pc-tables.
Matt Morehouse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 15 12:40:06 PDT 2018
morehouse added inline comments.
================
Comment at: llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp:409
appendToUsed(M, GlobalsToAppendToUsed);
+ appendToCompilerUsed(M, GlobalsToAppendToCompilerUsed);
+ }
----------------
eugenis wrote:
> morehouse wrote:
> > eugenis wrote:
> > > morehouse wrote:
> > > > eugenis wrote:
> > > > > this is unnecessary, llvm.used is strictly stronger than llvm.compiler.used
> > > > I'm not sure I understand... We're appending different things to each list.
> > > Right. Sorry.
> > > A different question then: why only MachO?
> > Kostya mentioned his reasoning in http://lists.llvm.org/pipermail/llvm-dev/2017-September/117315.html.
> I don't understand that thread :(
> What I know is, without compiler.used, neither comdat nor !associated nor a named section would save pctable from the optimizer. Try passing this through opt -O3:
>
> $a = comdat any
> @a = global i32 0, align 4, comdat($a)
> @b = internal global i32 0, align 4, section "abc", !associated !0, comdat($a)
> ; @llvm.compiler.used = appending global [1 x i8*] [i8* bitcast (i32* @b to i8*)]
> !0 = !{i32 *@a}
>
`clang++ -fsanitize=fuzzer -O3 -S -emit-llvm -o-` shows the pc-tables still there. But if I run the output of that through `opt -O3`, the pc-tables get stripped.
So maybe running directly through `opt` performs some stripping that otherwise wouldn't be done?
https://reviews.llvm.org/D48203
More information about the llvm-commits
mailing list