about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2020-08-21 12:07:52 -0700
committerJosh Stone <jistone@redhat.com>2020-08-22 13:44:54 -0700
commitb450c0c86ccdc836272feeac6e1312c1a168b343 (patch)
treed0293a89ac971b5af0d0317f35f0a27bc6d749bc
parentfb05be00df385ed216fcb9f6712206ec64fed72e (diff)
downloadrust-b450c0c86ccdc836272feeac6e1312c1a168b343.tar.gz
rust-b450c0c86ccdc836272feeac6e1312c1a168b343.zip
Write coverage filenames in Version3 format
-rw-r--r--src/rustllvm/CoverageMappingWrapper.cpp16
-rw-r--r--src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json2
2 files changed, 10 insertions, 8 deletions
diff --git a/src/rustllvm/CoverageMappingWrapper.cpp b/src/rustllvm/CoverageMappingWrapper.cpp
index 4d15e31df15..81aba0cbf7d 100644
--- a/src/rustllvm/CoverageMappingWrapper.cpp
+++ b/src/rustllvm/CoverageMappingWrapper.cpp
@@ -3,6 +3,7 @@
 #include "llvm/ProfileData/Coverage/CoverageMappingWriter.h"
 #include "llvm/ProfileData/InstrProf.h"
 #include "llvm/ADT/ArrayRef.h"
+#include "llvm/Support/LEB128.h"
 
 #include <iostream>
 
@@ -12,14 +13,15 @@ extern "C" void LLVMRustCoverageWriteFilenamesSectionToBuffer(
     const char* const Filenames[],
     size_t FilenamesLen,
     RustStringRef BufferOut) {
-  SmallVector<StringRef,32> FilenameRefs;
+  // LLVM 11's CoverageFilenamesSectionWriter uses its new `Version4` format,
+  // so we're manually writing the `Version3` format ourselves.
+  RawRustStringOstream OS(BufferOut);
+  encodeULEB128(FilenamesLen, OS);
   for (size_t i = 0; i < FilenamesLen; i++) {
-    FilenameRefs.push_back(StringRef(Filenames[i]));
+    StringRef Filename(Filenames[i]);
+    encodeULEB128(Filename.size(), OS);
+    OS << Filename;
   }
-  auto FilenamesWriter = coverage::CoverageFilenamesSectionWriter(
-    makeArrayRef(FilenameRefs));
-  RawRustStringOstream OS(BufferOut);
-  FilenamesWriter.write(OS);
 }
 
 extern "C" void LLVMRustCoverageWriteMappingToBuffer(
@@ -64,5 +66,5 @@ extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
 }
 
 extern "C" uint32_t LLVMRustCoverageMappingVersion() {
-  return coverage::CovMapVersion::CurrentVersion;
+  return coverage::CovMapVersion::Version3;
 }
diff --git a/src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json b/src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json
index 5881cf4b7db..75bec80bdf8 100644
--- a/src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json
+++ b/src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json
@@ -55,5 +55,5 @@
     }
   ],
   "type": "llvm.coverage.json.export",
-  "version": "2.0.0"
+  "version": "2.0.1"
 }