LLVM 20.0.0git
|
SampleProfileReaderExtBinaryBase/SampleProfileWriterExtBinaryBase defines the basic structure of the extensible binary format. More...
#include "llvm/ProfileData/SampleProfReader.h"
Public Member Functions | |
SampleProfileReaderExtBinaryBase (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format) | |
std::error_code | readImpl () override |
Read sample profiles in extensible format from the associated file. | |
uint64_t | getSectionSize (SecType Type) |
Get the total size of all Type sections. | |
uint64_t | getFileSize () |
Get the total size of header and all sections. | |
bool | dumpSectionInfo (raw_ostream &OS=dbgs()) override |
bool | collectFuncsFromModule () override |
Collect functions with definitions in Module M. | |
std::unique_ptr< ProfileSymbolList > | getProfileSymbolList () override |
Public Member Functions inherited from llvm::sampleprof::SampleProfileReaderBinary | |
SampleProfileReaderBinary (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_None) | |
std::error_code | readHeader () override |
Read and validate the file header. | |
std::error_code | readImpl () override |
Read sample profiles from the associated file. | |
std::vector< FunctionId > * | getNameTable () override |
It includes all the names that have samples either in outline instance or inline instance. | |
Public Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
SampleProfileReader (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_None) | |
virtual | ~SampleProfileReader ()=default |
virtual std::error_code | readHeader ()=0 |
Read and validate the file header. | |
void | setDiscriminatorMaskedBitFrom (FSDiscriminatorPass P) |
Set the bits for FS discriminators. | |
uint32_t | getDiscriminatorMask () const |
Get the bitmask the discriminators: For FS profiles, return the bit mask for this pass. | |
std::error_code | read () |
The interface to read sample profiles from the associated file. | |
std::error_code | read (const DenseSet< StringRef > &FuncsToUse) |
Read sample profiles for the given functions. | |
virtual std::error_code | readImpl ()=0 |
The implementaion to read sample profiles from the associated file. | |
void | dumpFunctionProfile (const FunctionSamples &FS, raw_ostream &OS=dbgs()) |
Print the profile for FunctionSamples on stream OS . | |
virtual bool | collectFuncsFromModule () |
Collect functions with definitions in Module M. | |
void | dump (raw_ostream &OS=dbgs()) |
Print all the profiles on stream OS . | |
void | dumpJson (raw_ostream &OS=dbgs()) |
Print all the profiles on stream OS in the JSON format. | |
FunctionSamples * | getSamplesFor (const Function &F) |
Return the samples collected for function F . | |
FunctionSamples * | getSamplesFor (StringRef Fname) |
Return the samples collected for function F . | |
SampleProfileMap & | getProfiles () |
Return all the profiles. | |
void | reportError (int64_t LineNumber, const Twine &Msg) const |
Report a parse error message. | |
ProfileSummary & | getSummary () const |
Return the profile summary. | |
MemoryBuffer * | getBuffer () const |
SampleProfileFormat | getFormat () const |
Return the profile format. | |
bool | profileIsProbeBased () const |
Whether input profile is based on pseudo probes. | |
bool | profileIsCS () const |
Whether input profile is fully context-sensitive. | |
bool | profileIsPreInlined () const |
Whether input profile contains ShouldBeInlined contexts. | |
bool | profileIsFS () const |
Whether input profile is flow-sensitive. | |
virtual std::unique_ptr< ProfileSymbolList > | getProfileSymbolList () |
virtual std::vector< FunctionId > * | getNameTable () |
It includes all the names that have samples either in outline instance or inline instance. | |
virtual bool | dumpSectionInfo (raw_ostream &OS=dbgs()) |
bool | useMD5 () const |
Return whether names in the profile are all MD5 numbers. | |
virtual void | setProfileUseMD5 () |
Force the profile to use MD5 in Sample contexts, even if function names are present. | |
void | setSkipFlatProf (bool Skip) |
Don't read profile without context if the flag is set. | |
virtual bool | hasUniqSuffix () |
Return whether any name in the profile contains ".__uniq." suffix. | |
SampleProfileReaderItaniumRemapper * | getRemapper () |
void | setModule (const Module *Mod) |
void | setFuncNameToProfNameMap (const HashKeyMap< std::unordered_map, FunctionId, FunctionId > &FPMap) |
Protected Member Functions | |
std::error_code | readSecHdrTableEntry (uint64_t Idx) |
std::error_code | readSecHdrTable () |
std::error_code | readFuncMetadata (bool ProfileHasAttribute, SampleProfileMap &Profiles) |
std::error_code | readFuncMetadata (bool ProfileHasAttribute) |
std::error_code | readFuncMetadata (bool ProfileHasAttribute, FunctionSamples *FProfile) |
std::error_code | readFuncOffsetTable () |
std::error_code | readFuncProfiles () |
std::error_code | readFuncProfiles (const DenseSet< StringRef > &FuncsToUse, SampleProfileMap &Profiles) |
std::error_code | readNameTableSec (bool IsMD5, bool FixedLengthMD5) |
std::error_code | readCSNameTableSec () |
std::error_code | readProfileSymbolList () |
std::error_code | readHeader () override |
Read and validate the file header. | |
std::error_code | verifySPMagic (uint64_t Magic) override=0 |
virtual std::error_code | readOneSection (const uint8_t *Start, uint64_t Size, const SecHdrTableEntry &Entry) |
virtual std::error_code | readCustomSection (const SecHdrTableEntry &Entry)=0 |
bool | useFuncOffsetList () const |
Determine which container readFuncOffsetTable() should populate, the list FuncOffsetList or the map FuncOffsetTable. | |
Protected Member Functions inherited from llvm::sampleprof::SampleProfileReaderBinary | |
template<typename T > | |
ErrorOr< T > | readNumber () |
Read a numeric value of type T from the profile. | |
template<typename T > | |
ErrorOr< T > | readUnencodedNumber () |
Read a numeric value of type T from the profile. | |
ErrorOr< StringRef > | readString () |
Read a string from the profile. | |
template<typename T > | |
ErrorOr< size_t > | readStringIndex (T &Table) |
Read the string index and check whether it overflows the table. | |
std::error_code | readFuncProfile (const uint8_t *Start) |
Read the next function profile instance. | |
std::error_code | readFuncProfile (const uint8_t *Start, SampleProfileMap &Profiles) |
std::error_code | readProfile (FunctionSamples &FProfile) |
Read the contents of the given profile instance. | |
std::error_code | readMagicIdent () |
Read the contents of Magic number and Version number. | |
std::error_code | readSummary () |
Read profile summary. | |
std::error_code | readNameTable () |
Read the whole name table. | |
ErrorOr< FunctionId > | readStringFromTable (size_t *RetIdx=nullptr) |
Read a string indirectly via the name table. Optionally return the index. | |
ErrorOr< SampleContextFrames > | readContextFromTable (size_t *RetIdx=nullptr) |
Read a context indirectly via the CSNameTable. | |
ErrorOr< std::pair< SampleContext, uint64_t > > | readSampleContextFromTable () |
Read a context indirectly via the CSNameTable if the profile has context, otherwise same as readStringFromTable, also return its hash value. | |
Protected Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
void | computeSummary () |
Compute summary for this profile. | |
virtual std::error_code | read (const DenseSet< StringRef > &FuncsToUse, SampleProfileMap &Profiles) |
Read sample profiles for the given functions and write them to the given profile map. | |
Protected Attributes | |
std::vector< SecHdrTableEntry > | SecHdrTable |
std::unique_ptr< ProfileSymbolList > | ProfSymList |
DenseMap< hash_code, uint64_t > | FuncOffsetTable |
The table mapping from a function context's MD5 to the offset of its FunctionSample towards file start. | |
std::vector< std::pair< SampleContext, uint64_t > > | FuncOffsetList |
The list version of FuncOffsetTable. | |
DenseSet< StringRef > | FuncsToUse |
The set containing the functions to use when compiling a module. | |
Protected Attributes inherited from llvm::sampleprof::SampleProfileReaderBinary | |
const uint8_t * | Data = nullptr |
Points to the current location in the buffer. | |
const uint8_t * | End = nullptr |
Points to the end of the buffer. | |
std::vector< FunctionId > | NameTable |
Function name table. | |
std::vector< SampleContextFrameVector > | CSNameTable |
CSNameTable is used to save full context vectors. | |
std::vector< uint64_t > | MD5SampleContextTable |
Table to cache MD5 values of sample contexts corresponding to readSampleContextFromTable(), used to index into Profiles or FuncOffsetTable. | |
const uint64_t * | MD5SampleContextStart = nullptr |
The starting address of the table of MD5 values of sample contexts. | |
Protected Attributes inherited from llvm::sampleprof::SampleProfileReader | |
SampleProfileMap | Profiles |
Map every function to its associated profile. | |
LLVMContext & | Ctx |
LLVM context used to emit diagnostics. | |
std::unique_ptr< MemoryBuffer > | Buffer |
Memory buffer holding the profile file. | |
std::unique_ptr< ProfileSummary > | Summary |
Profile summary information. | |
std::unique_ptr< SampleProfileReaderItaniumRemapper > | Remapper |
const HashKeyMap< std::unordered_map, FunctionId, FunctionId > * | FuncNameToProfNameMap = nullptr |
std::unordered_map< uint64_t, std::pair< const uint8_t *, const uint8_t * > > | FuncMetadataIndex |
std::pair< const uint8_t *, const uint8_t * > | ProfileSecRange |
bool | ProfileHasAttribute = false |
Whether the profile has attribute metadata. | |
bool | ProfileIsProbeBased = false |
Whether samples are collected based on pseudo probes. | |
bool | ProfileIsCS = false |
Whether function profiles are context-sensitive flat profiles. | |
bool | ProfileIsPreInlined = false |
Whether function profile contains ShouldBeInlined contexts. | |
uint32_t | CSProfileCount = 0 |
Number of context-sensitive profiles. | |
bool | ProfileIsFS = false |
Whether the function profiles use FS discriminators. | |
SampleProfileFormat | Format = SPF_None |
The format of sample. | |
const Module * | M = nullptr |
The current module being compiled if SampleProfileReader is used by compiler. | |
uint32_t | MaskedBitFrom = 31 |
Zero out the discriminator bits higher than bit MaskedBitFrom (0 based). | |
bool | ProfileIsMD5 = false |
Whether the profile uses MD5 for Sample Contexts and function names. | |
bool | SkipFlatProf = false |
If SkipFlatProf is true, skip functions marked with !Flat in text mode or sections with SecFlagFlat flag in ExtBinary mode. | |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
static ErrorOr< std::unique_ptr< SampleProfileReader > > | create (StringRef Filename, LLVMContext &C, vfs::FileSystem &FS, FSDiscriminatorPass P=FSDiscriminatorPass::Base, StringRef RemapFilename="") |
Create a sample profile reader appropriate to the file format. | |
static ErrorOr< std::unique_ptr< SampleProfileReader > > | create (std::unique_ptr< MemoryBuffer > &B, LLVMContext &C, vfs::FileSystem &FS, FSDiscriminatorPass P=FSDiscriminatorPass::Base, StringRef RemapFilename="") |
Create a sample profile reader from the supplied memory buffer. | |
Static Protected Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
static std::unique_ptr< ProfileSummary > | takeSummary (SampleProfileReader &Reader) |
Take ownership of the summary of this reader. | |
SampleProfileReaderExtBinaryBase/SampleProfileWriterExtBinaryBase defines the basic structure of the extensible binary format.
The format is organized in sections except the magic and version number at the beginning. There is a section table before all the sections, and each entry in the table describes the entry type, start, size and attributes. The format in each section is defined by the section itself.
It is easy to add a new section while maintaining the backward compatibility of the profile. Nothing extra needs to be done. If we want to extend an existing section, like add cache misses information in addition to the sample count in the profile body, we can add a new section with the extension and retire the existing section, and we could choose to keep the parser of the old section if we want the reader to be able to read both new and old format profile.
SampleProfileReaderExtBinary/SampleProfileWriterExtBinary define the commonly used sections of a profile in extensible binary format. It is possible to define other types of profile inherited from SampleProfileReaderExtBinaryBase/SampleProfileWriterExtBinaryBase.
Definition at line 765 of file SampleProfReader.h.
|
inline |
Definition at line 818 of file SampleProfReader.h.
|
overridevirtual |
Collect functions with definitions in Module M.
Return true if the reader has been given a module.
Reimplemented from llvm::sampleprof::SampleProfileReader.
Definition at line 840 of file SampleProfReader.cpp.
References F, FuncsToUse, llvm::sampleprof::FunctionSamples::getCanonicalFnName(), and llvm::sampleprof::SampleProfileReader::M.
Referenced by readFuncProfiles().
|
overridevirtual |
Reimplemented from llvm::sampleprof::SampleProfileReader.
Definition at line 1474 of file SampleProfReader.cpp.
References assert(), getFileSize(), getSecFlagsStr(), llvm::sampleprof::getSecName(), OS, and SecHdrTable.
uint64_t SampleProfileReaderExtBinaryBase::getFileSize | ( | ) |
Get the total size of header and all sections.
Definition at line 1411 of file SampleProfReader.cpp.
References SecHdrTable.
Referenced by dumpSectionInfo().
|
inlineoverridevirtual |
Reimplemented from llvm::sampleprof::SampleProfileReader.
Definition at line 835 of file SampleProfReader.h.
References ProfSymList.
Get the total size of all Type
sections.
Definition at line 1402 of file SampleProfReader.cpp.
References SecHdrTable, and Size.
|
protected |
Definition at line 1203 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReaderBinary::CSNameTable, I, isOffsetLegal(), llvm::sampleprof::SampleProfileReaderBinary::MD5SampleContextStart, llvm::sampleprof::SampleProfileReaderBinary::MD5SampleContextTable, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::SampleProfileReaderBinary::readStringFromTable(), Size, and llvm::success.
Referenced by readOneSection().
|
protectedpure virtual |
Referenced by readOneSection().
|
protected |
Definition at line 1325 of file SampleProfReader.cpp.
References assert(), llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::sampleprof::SampleProfileMap::find(), llvm::sampleprof::SampleProfileReader::FuncMetadataIndex, llvm::sampleprof::SampleProfileReader::ProfileHasAttribute, llvm::sampleprof::SampleProfileReader::Profiles, readFuncMetadata(), llvm::sampleprof::SampleProfileReaderBinary::readSampleContextFromTable(), and llvm::success.
|
protected |
Definition at line 1247 of file SampleProfReader.cpp.
References Attributes, llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::sampleprof::FunctionSamples::functionSamplesAt(), llvm::sampleprof::FunctionSamples::getContext(), llvm::sampleprof::SampleProfileReader::ProfileHasAttribute, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::SampleProfileReader::ProfileIsProbeBased, readFuncMetadata(), llvm::sampleprof::SampleProfileReaderBinary::readSampleContextFromTable(), llvm::sampleprof::SampleContext::setAllAttributes(), llvm::sampleprof::FunctionSamples::setFunctionHash(), and llvm::success.
|
protected |
Definition at line 1304 of file SampleProfReader.cpp.
References assert(), llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::sampleprof::SampleProfileReader::FuncMetadataIndex, llvm::sampleprof::FunctionSamples::getContext(), llvm::sampleprof::SampleContext::getHashCode(), I, llvm::sampleprof::SampleProfileReader::ProfileHasAttribute, llvm::sampleprof::SampleProfileReader::Profiles, readFuncMetadata(), and llvm::success.
Referenced by readFuncMetadata(), and readOneSection().
|
protected |
Definition at line 849 of file SampleProfReader.cpp.
References FuncOffsetList, FuncOffsetTable, I, llvm::Offset, llvm::sampleprof::SampleProfileReaderBinary::readSampleContextFromTable(), Size, llvm::success, and useFuncOffsetList().
Referenced by readOneSection().
|
protected |
Definition at line 977 of file SampleProfReader.cpp.
References assert(), collectFuncsFromModule(), llvm::sampleprof::SampleProfileReader::CSProfileCount, llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, FuncsToUse, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::SampleProfileReader::Profiles, llvm::sampleprof::SampleProfileReaderBinary::readFuncProfile(), readFuncProfiles(), and llvm::success.
Referenced by readFuncProfiles(), and readOneSection().
|
protected |
Definition at line 886 of file SampleProfReader.cpp.
References assert(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), llvm::sampleprof::SampleProfileReaderBinary::Data, FuncOffsetList, FuncOffsetTable, FuncsToUse, llvm::sampleprof::SampleContext::getFunction(), llvm::GlobalValue::getGUID(), llvm::sampleprof::FunctionId::getHashCode(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::sampleprof::SampleContext::isPrefixOf(), llvm::sampleprof::MD5Hash(), Name, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::SampleProfileReader::Profiles, llvm::sampleprof::SampleProfileReaderBinary::readFuncProfile(), llvm::sampleprof::SampleProfileReader::Remapper, llvm::sampleprof::FunctionId::stringRef(), llvm::success, useFuncOffsetList(), and llvm::sampleprof::SampleProfileReader::useMD5().
|
overrideprotectedvirtual |
Read and validate the file header.
Reimplemented from llvm::sampleprof::SampleProfileReaderBinary.
Definition at line 1387 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReader::Buffer, llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::sampleprof::SampleProfileReaderBinary::readMagicIdent(), readSecHdrTable(), and llvm::success.
|
overridevirtual |
Read sample profiles in extensible format from the associated file.
Reimplemented from llvm::sampleprof::SampleProfileReaderBinary.
Definition at line 1045 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReader::Buffer, llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::sampleprof::hasSecFlag(), llvm::malformed, readOneSection(), llvm::sampleprof::SecFlagCompress, llvm::sampleprof::SecFlagFlat, SecHdrTable, llvm::sampleprof::SampleProfileReader::SkipFlatProf, and llvm::success.
|
protected |
Definition at line 1144 of file SampleProfReader.cpp.
References assert(), llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::errs(), I, llvm::sampleprof::SampleProfileReaderBinary::MD5SampleContextStart, llvm::sampleprof::SampleProfileReaderBinary::MD5SampleContextTable, llvm::sampleprof::SampleProfileReaderBinary::NameTable, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::SampleProfileReaderBinary::readNameTable(), Size, llvm::success, llvm::truncated, and llvm::support::endian::write64le().
Referenced by readOneSection().
|
protectedvirtual |
Definition at line 723 of file SampleProfReader.cpp.
References assert(), llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, llvm::sampleprof::hasSecFlag(), llvm::sampleprof::FunctionSamples::HasUniqSuffix, llvm::sampleprof::SampleProfileReader::M, llvm::sampleprof::SampleProfileReader::ProfileHasAttribute, llvm::sampleprof::FunctionSamples::ProfileIsCS, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::FunctionSamples::ProfileIsFS, llvm::sampleprof::SampleProfileReader::ProfileIsFS, llvm::sampleprof::SampleProfileReader::ProfileIsMD5, llvm::sampleprof::FunctionSamples::ProfileIsPreInlined, llvm::sampleprof::SampleProfileReader::ProfileIsPreInlined, llvm::sampleprof::FunctionSamples::ProfileIsProbeBased, llvm::sampleprof::SampleProfileReader::ProfileIsProbeBased, llvm::sampleprof::SampleProfileReader::ProfileSecRange, readCSNameTableSec(), readCustomSection(), readFuncMetadata(), readFuncOffsetTable(), readFuncProfiles(), readNameTableSec(), readProfileSymbolList(), llvm::sampleprof::SampleProfileReaderBinary::readSummary(), llvm::sampleprof::SecCSNameTable, llvm::sampleprof::SecFlagFixedLengthMD5, llvm::sampleprof::SecFlagFSDiscriminator, llvm::sampleprof::SecFlagFullContext, llvm::sampleprof::SecFlagHasAttribute, llvm::sampleprof::SecFlagIsPreInlined, llvm::sampleprof::SecFlagIsProbeBased, llvm::sampleprof::SecFlagMD5Name, llvm::sampleprof::SecFlagOrdered, llvm::sampleprof::SecFlagPartial, llvm::sampleprof::SecFlagUniqSuffix, llvm::sampleprof::SecFuncMetadata, llvm::sampleprof::SecFuncOffsetTable, llvm::sampleprof::SecLBRProfile, llvm::sampleprof::SecNameTable, llvm::sampleprof::SecProfileSymbolList, llvm::sampleprof::SecProfSummary, Size, llvm::success, and llvm::sampleprof::SampleProfileReader::Summary.
Referenced by readImpl().
|
protected |
Definition at line 1007 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReaderBinary::Data, llvm::sampleprof::SampleProfileReaderBinary::End, ProfSymList, and llvm::success.
Referenced by readOneSection().
|
protected |
Definition at line 1375 of file SampleProfReader.cpp.
References readSecHdrTableEntry(), and llvm::success.
Referenced by readHeader().
|
protected |
Definition at line 1348 of file SampleProfReader.cpp.
References Idx, llvm::Offset, SecHdrTable, Size, and llvm::success.
Referenced by readSecHdrTable().
|
protected |
Determine which container readFuncOffsetTable() should populate, the list FuncOffsetList or the map FuncOffsetTable.
Definition at line 798 of file SampleProfReader.cpp.
References llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::sampleprof::SampleProfileReader::Remapper, and llvm::sampleprof::SampleProfileReader::useMD5().
Referenced by readFuncOffsetTable(), and readFuncProfiles().
|
overrideprotectedpure virtual |
Implements llvm::sampleprof::SampleProfileReaderBinary.
|
protected |
The list version of FuncOffsetTable.
This is used if every entry is being accessed.
Definition at line 812 of file SampleProfReader.h.
Referenced by readFuncOffsetTable(), and readFuncProfiles().
|
protected |
The table mapping from a function context's MD5 to the offset of its FunctionSample towards file start.
At most one of FuncOffsetTable and FuncOffsetList is populated.
Definition at line 808 of file SampleProfReader.h.
Referenced by readFuncOffsetTable(), and readFuncProfiles().
The set containing the functions to use when compiling a module.
Definition at line 815 of file SampleProfReader.h.
Referenced by collectFuncsFromModule(), and readFuncProfiles().
|
protected |
Definition at line 803 of file SampleProfReader.h.
Referenced by getProfileSymbolList(), and readProfileSymbolList().
|
protected |
Definition at line 775 of file SampleProfReader.h.
Referenced by dumpSectionInfo(), getFileSize(), getSectionSize(), readImpl(), and readSecHdrTableEntry().