[llvm-cov] Allow specifying distinct architectures for each loaded binary
The coverage tool needs to know which slice to look at when it's handed a universal binary. Some projects need to look at aggregate coverage reports for a variety of slices in different binaries: this patch adds support for these kinds of projects to llvm-cov. rdar://problem/33579007 llvm-svn: 309747
This commit is contained in:
@@ -260,7 +260,7 @@ Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
|
||||
|
||||
Expected<std::unique_ptr<CoverageMapping>>
|
||||
CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
|
||||
StringRef ProfileFilename, StringRef Arch) {
|
||||
StringRef ProfileFilename, ArrayRef<StringRef> Arches) {
|
||||
auto ProfileReaderOrErr = IndexedInstrProfReader::create(ProfileFilename);
|
||||
if (Error E = ProfileReaderOrErr.takeError())
|
||||
return std::move(E);
|
||||
@@ -268,10 +268,11 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
|
||||
|
||||
SmallVector<std::unique_ptr<CoverageMappingReader>, 4> Readers;
|
||||
SmallVector<std::unique_ptr<MemoryBuffer>, 4> Buffers;
|
||||
for (StringRef ObjectFilename : ObjectFilenames) {
|
||||
auto CovMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(ObjectFilename);
|
||||
for (const auto &File : llvm::enumerate(ObjectFilenames)) {
|
||||
auto CovMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(File.value());
|
||||
if (std::error_code EC = CovMappingBufOrErr.getError())
|
||||
return errorCodeToError(EC);
|
||||
StringRef Arch = Arches.empty() ? StringRef() : Arches[File.index()];
|
||||
auto CoverageReaderOrErr =
|
||||
BinaryCoverageReader::create(CovMappingBufOrErr.get(), Arch);
|
||||
if (Error E = CoverageReaderOrErr.takeError())
|
||||
|
||||
Reference in New Issue
Block a user