浏览代码

VS: Add support for (lib)fuzzer /fsanitize=fuzzer flag

Fredrik Claesson 3 年之前
父节点
当前提交
feeb9ae4ba
共有 2 个文件被更改,包括 10 次插入0 次删除
  1. 9 0
      Source/cmVisualStudio10TargetGenerator.cxx
  2. 1 0
      Source/cmVisualStudio10TargetGenerator.h

+ 9 - 0
Source/cmVisualStudio10TargetGenerator.cxx

@@ -1557,6 +1557,10 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValues(
       this->ASanEnabledConfigurations.end()) {
     e1.Element("EnableAsan", "true");
   }
+  if (this->FuzzerEnabledConfigurations.find(config) !=
+      this->FuzzerEnabledConfigurations.end()) {
+    e1.Element("EnableFuzzer", "true");
+  }
   {
     auto s = this->SpectreMitigation.find(config);
     if (s != this->SpectreMitigation.end()) {
@@ -3315,6 +3319,11 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
     this->ASanEnabledConfigurations.insert(configName);
   }
 
+  // Check if (lib)Fuzzer is enabled.
+  if (flags.find("/fsanitize=fuzzer") != std::string::npos) {
+    this->FuzzerEnabledConfigurations.insert(configName);
+  }
+
   // Precompile Headers
   std::string pchHeader =
     this->GeneratorTarget->GetPchHeader(configName, linkLanguage);

+ 1 - 0
Source/cmVisualStudio10TargetGenerator.h

@@ -231,6 +231,7 @@ private:
   bool TargetCompileAsWinRT;
   std::set<std::string> IPOEnabledConfigurations;
   std::set<std::string> ASanEnabledConfigurations;
+  std::set<std::string> FuzzerEnabledConfigurations;
   std::map<std::string, std::string> SpectreMitigation;
   cmGlobalVisualStudio10Generator* const GlobalGenerator;
   cmLocalVisualStudio10Generator* const LocalGenerator;