Skip to content

Commit b450c0c

Browse files
committed
Write coverage filenames in Version3 format
1 parent fb05be0 commit b450c0c

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/rustllvm/CoverageMappingWrapper.cpp

+9-7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "llvm/ProfileData/Coverage/CoverageMappingWriter.h"
44
#include "llvm/ProfileData/InstrProf.h"
55
#include "llvm/ADT/ArrayRef.h"
6+
#include "llvm/Support/LEB128.h"
67

78
#include <iostream>
89

@@ -12,14 +13,15 @@ extern "C" void LLVMRustCoverageWriteFilenamesSectionToBuffer(
1213
const char* const Filenames[],
1314
size_t FilenamesLen,
1415
RustStringRef BufferOut) {
15-
SmallVector<StringRef,32> FilenameRefs;
16+
// LLVM 11's CoverageFilenamesSectionWriter uses its new `Version4` format,
17+
// so we're manually writing the `Version3` format ourselves.
18+
RawRustStringOstream OS(BufferOut);
19+
encodeULEB128(FilenamesLen, OS);
1620
for (size_t i = 0; i < FilenamesLen; i++) {
17-
FilenameRefs.push_back(StringRef(Filenames[i]));
21+
StringRef Filename(Filenames[i]);
22+
encodeULEB128(Filename.size(), OS);
23+
OS << Filename;
1824
}
19-
auto FilenamesWriter = coverage::CoverageFilenamesSectionWriter(
20-
makeArrayRef(FilenameRefs));
21-
RawRustStringOstream OS(BufferOut);
22-
FilenamesWriter.write(OS);
2325
}
2426

2527
extern "C" void LLVMRustCoverageWriteMappingToBuffer(
@@ -64,5 +66,5 @@ extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
6466
}
6567

6668
extern "C" uint32_t LLVMRustCoverageMappingVersion() {
67-
return coverage::CovMapVersion::CurrentVersion;
69+
return coverage::CovMapVersion::Version3;
6870
}

src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,5 @@
5555
}
5656
],
5757
"type": "llvm.coverage.json.export",
58-
"version": "2.0.0"
58+
"version": "2.0.1"
5959
}

0 commit comments

Comments
 (0)