about summary refs log tree commit diff
path: root/src/rustllvm/CoverageMappingWrapper.cpp
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 /src/rustllvm/CoverageMappingWrapper.cpp
parentfb05be00df385ed216fcb9f6712206ec64fed72e (diff)
downloadrust-b450c0c86ccdc836272feeac6e1312c1a168b343.tar.gz
rust-b450c0c86ccdc836272feeac6e1312c1a168b343.zip
Write coverage filenames in Version3 format
Diffstat (limited to 'src/rustllvm/CoverageMappingWrapper.cpp')
-rw-r--r--src/rustllvm/CoverageMappingWrapper.cpp16
1 files changed, 9 insertions, 7 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;
 }