<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 19, 2016 at 2:55 PM, Mike Aizatsky via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: aizatsky<br>
Date: Fri Feb 19 16:55:21 2016<br>
New Revision: 261376<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=261376&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=261376&view=rev</a><br>
Log:<br>
[sancov] use GetLoadedModules for list of modules rather than sanitizer's list.<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc?rev=261376&r1=261375&r2=261376&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc?rev=261376&r1=261375&r2=261376&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc Fri Feb 19 16:55:21 2016<br>
@@ -783,10 +783,35 @@ void CoverageData::GetRangeOffsets(const<br>
     (*offsets)[i] = UnbundlePc((*offsets)[i]);<br>
 }<br>
<br>
-static void GenerateHtmlReport(const InternalMmapVector<char *> &sancov_argv) {<br>
-  if (!common_flags()->html_cov_report || sancov_argv[0] == nullptr) {<br>
+static void GenerateHtmlReport(const InternalMmapVector<char *> &cov_files) {<br>
+  if (!common_flags()->html_cov_report) {<br>
     return;<br>
   }<br>
+  char *sancov_path = FindPathToBinary(common_flags()->sancov_path);<br>
+  if (sancov_path == nullptr) {<br>
+    return;<br>
+  }<br>
+<br>
+  InternalMmapVector<char *> sancov_argv(cov_files.size() * 2 + 3);<br>
+  sancov_argv.push_back(sancov_path);<br>
+  sancov_argv.push_back(internal_strdup("-html-report"));<br>
+  auto argv_deleter = at_scope_exit([&] {<br>
+    for (uptr i = 0; i < sancov_argv.size(); ++i) {<br>
+      InternalFree(sancov_argv[i]);<br>
+    }<br>
+  });<br>
+<br>
+  for (const auto &cov_file : cov_files) {<br>
+    sancov_argv.push_back(internal_strdup(cov_file));<br>
+  }<br>
+<br>
+  InternalScopedBuffer<LoadedModule> LoadedModules(kMaxNumberOfModules);<br>
+  uptr n_modules = GetListOfModules(LoadedModules.data(), kMaxNumberOfModules,<br>
+                                    /* filter */ nullptr);<br>
+  for (uptr i = 0; i < n_modules; ++i) {<br>
+    sancov_argv.push_back(internal_strdup(LoadedModules[i].full_name()));<br>
+  }<br></blockquote><div><br></div><div>You forgot to call .clear() on these modules.</div><div>However, I plan to touch/fix the uses of GetListOfModules() soon, so you might want to wait until that happens.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+<br>
   InternalScopedString report_path(kMaxPathLength);<br>
   fd_t report_fd =<br>
       CovOpenFile(&report_path, false /* packed */, GetProcessName(), "html");<br>
@@ -806,12 +831,10 @@ void CoverageData::DumpOffsets() {<br>
   InternalMmapVector<uptr> offsets(0);<br>
   InternalScopedString path(kMaxPathLength);<br>
<br>
-  InternalMmapVector<char *> sancov_argv(module_name_vec.size() * 2 + 3);<br>
-  sancov_argv.push_back(FindPathToBinary(common_flags()->sancov_path));<br>
-  sancov_argv.push_back(internal_strdup("-html-report"));<br>
-  auto argv_deleter = at_scope_exit([&] {<br>
-    for (uptr i = 0; i < sancov_argv.size(); ++i) {<br>
-      InternalFree(sancov_argv[i]);<br>
+  InternalMmapVector<char *> cov_files(module_name_vec.size());<br>
+  auto cov_files_deleter = at_scope_exit([&] {<br>
+    for (uptr i = 0; i < cov_files.size(); ++i) {<br>
+      InternalFree(cov_files[i]);<br>
     }<br>
   });<br>
<br>
@@ -839,16 +862,14 @@ void CoverageData::DumpOffsets() {<br>
       if (fd == kInvalidFd) continue;<br>
       WriteToFile(fd, offsets.data(), offsets.size() * sizeof(offsets[0]));<br>
       CloseFile(fd);<br>
-      sancov_argv.push_back(internal_strdup(r.copied_module_name));<br>
-      sancov_argv.push_back(internal_strdup(path.data()));<br>
+      cov_files.push_back(internal_strdup(path.data()));<br>
       VReport(1, " CovDump: %s: %zd PCs written\n", path.data(), num_offsets);<br>
     }<br>
   }<br>
   if (cov_fd != kInvalidFd)<br>
     CloseFile(cov_fd);<br>
<br>
-  sancov_argv.push_back(nullptr);<br>
-  GenerateHtmlReport(sancov_argv);<br>
+  GenerateHtmlReport(cov_files);<br>
 }<br>
<br>
 void CoverageData::DumpAll() {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div></div>
</div></div>