diff options
| author | Josh Stone <jistone@redhat.com> | 2020-08-21 12:07:52 -0700 |
|---|---|---|
| committer | Josh Stone <jistone@redhat.com> | 2020-08-22 13:44:54 -0700 |
| commit | b450c0c86ccdc836272feeac6e1312c1a168b343 (patch) | |
| tree | d0293a89ac971b5af0d0317f35f0a27bc6d749bc | |
| parent | fb05be00df385ed216fcb9f6712206ec64fed72e (diff) | |
| download | rust-b450c0c86ccdc836272feeac6e1312c1a168b343.tar.gz rust-b450c0c86ccdc836272feeac6e1312c1a168b343.zip | |
Write coverage filenames in Version3 format
| -rw-r--r-- | src/rustllvm/CoverageMappingWrapper.cpp | 16 | ||||
| -rw-r--r-- | src/test/run-make-fulldeps/instrument-coverage/expected_export_coverage.json | 2 |
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" } |
