diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerMerge.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerMerge.h | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerMerge.cpp b/llvm/lib/Fuzzer/FuzzerMerge.cpp index 344d7a83959..5c17f66940a 100644 --- a/llvm/lib/Fuzzer/FuzzerMerge.cpp +++ b/llvm/lib/Fuzzer/FuzzerMerge.cpp @@ -17,6 +17,7 @@ #include <fstream> #include <iterator> +#include <set> #include <sstream> namespace fuzzer { @@ -88,7 +89,7 @@ bool Merger::Parse(std::istream &IS, bool ParseCoverage) { assert(ExpectedStartMarker < Files.size()); ExpectedStartMarker++; } else if (Marker == "DONE") { - // DONE FILE_SIZE COV1 COV2 COV3 ... + // DONE FILE_ID COV1 COV2 COV3 ... size_t CurrentFileIdx = N; if (CurrentFileIdx != LastSeenStartMarker) return false; @@ -111,6 +112,13 @@ bool Merger::Parse(std::istream &IS, bool ParseCoverage) { return true; } +size_t Merger::ApproximateMemoryConsumption() const { + size_t Res = 0; + for (const auto &F: Files) + Res += sizeof(F) + F.Features.size() * sizeof(F.Features[0]); + return Res; +} + // Decides which files need to be merged (add thost to NewFiles). // Returns the number of new features added. size_t Merger::Merge(std::vector<std::string> *NewFiles) { @@ -262,6 +270,8 @@ void Fuzzer::CrashResistantMerge(const std::vector<std::string> &Args, IF.seekg(0, IF.beg); M.ParseOrExit(IF, true); IF.close(); + Printf("MERGE-OUTER: consumed %zd bytes to parse the control file\n", + M.ApproximateMemoryConsumption()); std::vector<std::string> NewFiles; size_t NumNewFeatures = M.Merge(&NewFiles); Printf("MERGE-OUTER: %zd new files with %zd new features added\n", diff --git a/llvm/lib/Fuzzer/FuzzerMerge.h b/llvm/lib/Fuzzer/FuzzerMerge.h index 8a2fe5d74f8..4cef9c47bb1 100644 --- a/llvm/lib/Fuzzer/FuzzerMerge.h +++ b/llvm/lib/Fuzzer/FuzzerMerge.h @@ -43,7 +43,6 @@ #include "FuzzerDefs.h" #include <istream> -#include <set> namespace fuzzer { @@ -63,6 +62,7 @@ struct Merger { bool Parse(const std::string &Str, bool ParseCoverage); void ParseOrExit(std::istream &IS, bool ParseCoverage); size_t Merge(std::vector<std::string> *NewFiles); + size_t ApproximateMemoryConsumption() const; }; } // namespace fuzzer |

