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
2527extern " C" void LLVMRustCoverageWriteMappingToBuffer (
@@ -64,5 +66,5 @@ extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
6466}
6567
6668extern " C" uint32_t LLVMRustCoverageMappingVersion () {
67- return coverage::CovMapVersion::CurrentVersion ;
69+ return coverage::CovMapVersion::Version3 ;
6870}
0 commit comments