#include "FuzzerCommand.h"
#include "FuzzerMerge.h"
#include "FuzzerIO.h"
#include "FuzzerInternal.h"
#include "FuzzerTracePC.h"
#include "FuzzerUtil.h"
#include <fstream>
#include <iterator>
#include <set>
#include <sstream>
#include <unordered_set>
namespace fuzzer {
bool Merger::Parse(const std::string &Str, bool ParseCoverage) { … }
void Merger::ParseOrExit(std::istream &IS, bool ParseCoverage) { … }
bool Merger::Parse(std::istream &IS, bool ParseCoverage) { … }
size_t Merger::ApproximateMemoryConsumption() const { … }
size_t Merger::Merge(const std::set<uint32_t> &InitialFeatures,
std::set<uint32_t> *NewFeatures,
const std::set<uint32_t> &InitialCov,
std::set<uint32_t> *NewCov,
std::vector<std::string> *NewFiles) { … }
std::set<uint32_t> Merger::AllFeatures() const { … }
void Fuzzer::CrashResistantMergeInternalStep(const std::string &CFPath,
bool IsSetCoverMerge) { … }
size_t Merger::SetCoverMerge(const std::set<uint32_t> &InitialFeatures,
std::set<uint32_t> *NewFeatures,
const std::set<uint32_t> &InitialCov,
std::set<uint32_t> *NewCov,
std::vector<std::string> *NewFiles) { … }
static size_t
WriteNewControlFile(const std::string &CFPath,
const std::vector<SizedFile> &OldCorpus,
const std::vector<SizedFile> &NewCorpus,
const std::vector<MergeFileInfo> &KnownFiles) { … }
void CrashResistantMerge(const std::vector<std::string> &Args,
const std::vector<SizedFile> &OldCorpus,
const std::vector<SizedFile> &NewCorpus,
std::vector<std::string> *NewFiles,
const std::set<uint32_t> &InitialFeatures,
std::set<uint32_t> *NewFeatures,
const std::set<uint32_t> &InitialCov,
std::set<uint32_t> *NewCov, const std::string &CFPath,
bool V,
bool IsSetCoverMerge) { … }
}