[libFuzzer] fix merging with trace-pc-guard
llvm-svn: 282224
This commit is contained in:
@@ -163,6 +163,7 @@ Fuzzer::Fuzzer(UserCallback CB, InputCorpus &Corpus, MutationDispatcher &MD,
|
||||
assert(!F);
|
||||
F = this;
|
||||
TPC.ResetTotalPCCoverage();
|
||||
TPC.Reset();
|
||||
ResetCoverage();
|
||||
IsMyThread = true;
|
||||
if (Options.DetectLeaks && EF->__sanitizer_install_malloc_and_free_hooks)
|
||||
@@ -309,7 +310,7 @@ void Fuzzer::RssLimitCallback() {
|
||||
_Exit(Options.ErrorExitCode); // Stop right now.
|
||||
}
|
||||
|
||||
void Fuzzer::PrintStats(const char *Where, const char *End) {
|
||||
void Fuzzer::PrintStats(const char *Where, const char *End, size_t Units) {
|
||||
size_t ExecPerSec = execPerSec();
|
||||
if (Options.OutputCSV) {
|
||||
static bool csvHeaderPrinted = false;
|
||||
@@ -337,7 +338,11 @@ void Fuzzer::PrintStats(const char *Where, const char *End) {
|
||||
Printf(" bits: %zd", MaxCoverage.TPCMap.GetNumBitsSinceLastMerge());
|
||||
if (MaxCoverage.CallerCalleeCoverage)
|
||||
Printf(" indir: %zd", MaxCoverage.CallerCalleeCoverage);
|
||||
Printf(" units: %zd exec/s: %zd", Corpus.size(), ExecPerSec);
|
||||
if (size_t N = Corpus.size())
|
||||
Printf(" units: %zd", N);
|
||||
if (Units)
|
||||
Printf(" units: %zd", Units);
|
||||
Printf(" exec/s: %zd", ExecPerSec);
|
||||
Printf("%s", End);
|
||||
}
|
||||
|
||||
@@ -381,9 +386,7 @@ void Fuzzer::RereadOutputCorpus(size_t MaxSize) {
|
||||
X.resize(MaxSize);
|
||||
if (!Corpus.HasUnit(X)) {
|
||||
if (RunOne(X)) {
|
||||
uintptr_t *NewPCIDs;
|
||||
size_t NumNewPCIDs = TPC.GetNewPCIDs(&NewPCIDs);
|
||||
Corpus.AddToCorpus(X, NewPCIDs, NumNewPCIDs);
|
||||
Corpus.AddToCorpus(X);
|
||||
PrintStats("RELOAD");
|
||||
}
|
||||
}
|
||||
@@ -406,9 +409,7 @@ void Fuzzer::ShuffleAndMinimize(UnitVector *InitialCorpus) {
|
||||
for (const auto &U : *InitialCorpus) {
|
||||
bool NewCoverage = RunOne(U);
|
||||
if (!Options.PruneCorpus || NewCoverage) {
|
||||
uintptr_t *NewPCIDs;
|
||||
size_t NumNewPCIDs = TPC.GetNewPCIDs(&NewPCIDs);
|
||||
Corpus.AddToCorpus(U, NewPCIDs, NumNewPCIDs);
|
||||
Corpus.AddToCorpus(U);
|
||||
if (Options.Verbosity >= 2)
|
||||
Printf("NEW0: %zd L %zd\n", MaxCoverage.BlockCoverage, U.size());
|
||||
}
|
||||
@@ -545,9 +546,7 @@ void Fuzzer::PrintNewPCs() {
|
||||
|
||||
void Fuzzer::ReportNewCoverage(InputInfo *II, const Unit &U) {
|
||||
II->NumSuccessfullMutations++;
|
||||
uintptr_t *NewPCIDs;
|
||||
size_t NumNewPCIDs = TPC.GetNewPCIDs(&NewPCIDs);
|
||||
Corpus.AddToCorpus(U, NewPCIDs, NumNewPCIDs);
|
||||
Corpus.AddToCorpus(U);
|
||||
MD.RecordSuccessfulMutationSequence();
|
||||
PrintStatusForNewUnit(U);
|
||||
WriteToOutputCorpus(U);
|
||||
@@ -566,6 +565,7 @@ UnitVector Fuzzer::FindExtraUnits(const UnitVector &Initial,
|
||||
size_t OldSize = Res.size();
|
||||
for (int Iter = 0; Iter < 10; Iter++) {
|
||||
ShuffleCorpus(&Res);
|
||||
TPC.Reset();
|
||||
ResetCoverage();
|
||||
|
||||
for (auto &U : Initial)
|
||||
@@ -578,7 +578,7 @@ UnitVector Fuzzer::FindExtraUnits(const UnitVector &Initial,
|
||||
|
||||
char Stat[7] = "MIN ";
|
||||
Stat[3] = '0' + Iter;
|
||||
PrintStats(Stat);
|
||||
PrintStats(Stat, "\n", Tmp.size());
|
||||
|
||||
size_t NewSize = Tmp.size();
|
||||
assert(NewSize <= OldSize);
|
||||
@@ -691,7 +691,6 @@ void Fuzzer::MutateAndTestOne() {
|
||||
void Fuzzer::ResetCoverage() {
|
||||
ResetEdgeCoverage();
|
||||
MaxCoverage.Reset();
|
||||
TPC.Reset();
|
||||
PrepareCounters(&MaxCoverage);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user