LLVM 20.0.0git
|
#include "llvm/ProfileData/Coverage/CoverageMappingReader.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/Wasm.h"
#include "llvm/Object/Archive.h"
#include "llvm/Object/Binary.h"
#include "llvm/Object/COFF.h"
#include "llvm/Object/Error.h"
#include "llvm/Object/MachOUniversal.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Object/Wasm.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Triple.h"
#include <vector>
Go to the source code of this file.
Classes | |
struct | FilenameRange |
A range of filename indices. More... | |
Macros | |
#define | DEBUG_TYPE "coverage-mapping" |
Functions | |
STATISTIC (CovMapNumRecords, "The # of coverage function records") | |
STATISTIC (CovMapNumUsedRecords, "The # of used coverage function records") | |
static bool | shouldSkipSectionFirstByte (SectionRef &Section) |
Determine if we should skip the first byte of the section content. | |
static Expected< bool > | isCoverageMappingDummy (uint64_t Hash, StringRef Mapping) |
template<typename T , llvm::endianness Endian> | |
static Error | readCoverageMappingData (InstrProfSymtab &ProfileNames, StringRef CovMap, StringRef FuncRecords, std::vector< BinaryCoverageReader::ProfileMappingRecord > &Records, StringRef CompilationDir, std::vector< std::string > &Filenames) |
static Expected< std::unique_ptr< BinaryCoverageReader > > | loadTestingFormat (StringRef Data, StringRef CompilationDir) |
static Expected< std::vector< SectionRef > > | lookupSections (ObjectFile &OF, InstrProfSectKind IPSK) |
Find all sections that match IPSK name. | |
static Expected< std::pair< StringRef, uint64_t > > | lookupAllocatableSection (ObjectFile &OF, InstrProfSectKind IPSK) |
Find a section that matches Name and is allocatable at runtime. | |
static Expected< std::unique_ptr< BinaryCoverageReader > > | loadBinaryFormat (std::unique_ptr< Binary > Bin, StringRef Arch, StringRef CompilationDir="", object::BuildIDRef *BinaryID=nullptr) |
static bool | isArchSpecifierInvalidOrMissing (Binary *Bin, StringRef Arch) |
Determine whether Arch is invalid or empty, given Bin . | |
Variables | |
static const unsigned | EncodingExpansionRegionBit |
#define DEBUG_TYPE "coverage-mapping" |
Definition at line 45 of file CoverageMappingReader.cpp.
Determine whether Arch
is invalid or empty, given Bin
.
Definition at line 1257 of file CoverageMappingReader.cpp.
References llvm::Bin.
Referenced by llvm::coverage::BinaryCoverageReader::create().
Definition at line 532 of file CoverageMappingReader.cpp.
References llvm::coverage::RawCoverageMappingDummyChecker::isDummy().
|
static |
Definition at line 1138 of file CoverageMappingReader.cpp.
References llvm::alignAddr(), llvm::alignTo(), assert(), llvm::big, llvm::Bin, llvm::consumeError(), llvm::InstrProfSymtab::create(), llvm::coverage::BinaryCoverageReader::createCoverageReaderFromBuffer(), llvm::StringRef::empty(), Endian, llvm::errorCodeToError(), llvm::object::getBuildID(), llvm::MemoryBuffer::getMemBuffer(), llvm::MemoryBuffer::getMemBufferCopy(), llvm::WritableMemoryBuffer::getNewUninitMemBuffer(), llvm::isAddrAligned(), llvm::little, lookupAllocatableSection(), lookupSections(), and llvm::coverage::malformed.
Referenced by llvm::coverage::BinaryCoverageReader::create().
|
static |
Definition at line 943 of file CoverageMappingReader.cpp.
References llvm::Address, llvm::InstrProfSymtab::create(), llvm::coverage::BinaryCoverageReader::createCoverageReaderFromBuffer(), llvm::Data, llvm::decodeULEB128(), Endian, llvm::MemoryBuffer::getMemBuffer(), llvm::little, llvm::coverage::malformed, N, llvm::offsetToAlignedAddr(), llvm::coverage::TestingFormatMagic, llvm::coverage::truncated, llvm::coverage::unsupported_version, llvm::Version, llvm::coverage::Version1, llvm::coverage::Version2, and llvm::coverage::Version4.
Referenced by llvm::coverage::BinaryCoverageReader::create().
|
static |
Find a section that matches Name
and is allocatable at runtime.
Returns the contents of the section and its start offset in the object file.
Definition at line 1091 of file CoverageMappingReader.cpp.
References Content, llvm::Data, llvm::wasm::DATA_SEGMENT, llvm::getInstrProfSectionName(), llvm::object::Binary::getTripleObjectFormat(), lookupSections(), llvm::coverage::malformed, Name, llvm::coverage::no_data_found, and shouldSkipSectionFirstByte().
Referenced by loadBinaryFormat().
|
static |
Find all sections that match IPSK
name.
There may be more than one if comdats are in use, e.g. for the __llvm_covfun section on ELF.
Definition at line 1054 of file CoverageMappingReader.cpp.
References llvm::getInstrProfSectionName(), llvm::object::Binary::getTripleObjectFormat(), N, Name, llvm::coverage::no_data_found, llvm::object::ObjectFile::sections(), and llvm::Expected< T >::takeError().
Referenced by loadBinaryFormat(), and lookupAllocatableSection().
|
static |
Definition at line 859 of file CoverageMappingReader.cpp.
References llvm::coverage::CurrentVersion, llvm::StringRef::data(), Endian, llvm::Expected< T >::get(), llvm::StringRef::size(), llvm::Error::success(), llvm::Expected< T >::takeError(), llvm::coverage::unsupported_version, llvm::Version, and llvm::coverage::Version4.
|
static |
Determine if we should skip the first byte of the section content.
Definition at line 496 of file CoverageMappingReader.cpp.
References llvm::Triple::COFF, llvm::getInstrProfSectionName(), and llvm::object::ObjectFile::isRelocatableObject().
Referenced by llvm::InstrProfSymtab::create(), and lookupAllocatableSection().
STATISTIC | ( | CovMapNumRecords | , |
"The # of coverage function records" | |||
) |
STATISTIC | ( | CovMapNumUsedRecords | , |
"The # of used coverage function records" | |||
) |
Definition at line 232 of file CoverageMappingReader.cpp.