3
3
#include " llvm/ProfileData/Coverage/CoverageMappingWriter.h"
4
4
#include " llvm/ProfileData/InstrProf.h"
5
5
#include " llvm/ADT/ArrayRef.h"
6
+ #include " llvm/Support/LEB128.h"
6
7
7
8
#include < iostream>
8
9
@@ -12,14 +13,15 @@ extern "C" void LLVMRustCoverageWriteFilenamesSectionToBuffer(
12
13
const char * const Filenames[],
13
14
size_t FilenamesLen,
14
15
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);
16
20
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;
18
24
}
19
- auto FilenamesWriter = coverage::CoverageFilenamesSectionWriter (
20
- makeArrayRef (FilenameRefs));
21
- RawRustStringOstream OS (BufferOut);
22
- FilenamesWriter.write (OS);
23
25
}
24
26
25
27
extern " C" void LLVMRustCoverageWriteMappingToBuffer (
@@ -64,5 +66,5 @@ extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
64
66
}
65
67
66
68
extern " C" uint32_t LLVMRustCoverageMappingVersion () {
67
- return coverage::CovMapVersion::CurrentVersion ;
69
+ return coverage::CovMapVersion::Version3 ;
68
70
}
0 commit comments