LLVM 22.0.0git
|
#include "llvm/Object/ELF.h"
Public Types | |
using | WarningHandler = llvm::function_ref<Error(const Twine &Msg)> |
using | RelsOrRelas = std::pair<std::vector<Elf_Rel>, std::vector<Elf_Rela>> |
Public Member Functions | |
ELFFile (const ELFFile &)=default | |
ELFFile & | operator= (const ELFFile &)=default |
const uint8_t * | base () const |
const uint8_t * | end () const |
size_t | getBufSize () const |
const Elf_Ehdr & | getHeader () const |
template<typename T> | |
Expected< const T * > | getEntry (uint32_t Section, uint32_t Entry) const |
template<typename T> | |
Expected< const T * > | getEntry (const Elf_Shdr &Section, uint32_t Entry) const |
Expected< std::vector< VerDef > > | getVersionDefinitions (const Elf_Shdr &Sec) const |
Expected< std::vector< VerNeed > > | getVersionDependencies (const Elf_Shdr &Sec, WarningHandler WarnHandler=&defaultWarningHandler) const |
Expected< StringRef > | getSymbolVersionByIndex (uint32_t SymbolVersionIndex, bool &IsDefault, SmallVector< std::optional< VersionEntry >, 0 > &VersionMap, std::optional< bool > IsSymHidden) const |
Expected< StringRef > | getStringTable (const Elf_Shdr &Section, WarningHandler WarnHandler=&defaultWarningHandler) const |
Expected< StringRef > | getStringTableForSymtab (const Elf_Shdr &Section) const |
Expected< StringRef > | getStringTableForSymtab (const Elf_Shdr &Section, Elf_Shdr_Range Sections) const |
Expected< StringRef > | getLinkAsStrtab (const typename ELFT::Shdr &Sec) const |
Expected< ArrayRef< Elf_Word > > | getSHNDXTable (const Elf_Shdr &Section) const |
Expected< ArrayRef< Elf_Word > > | getSHNDXTable (const Elf_Shdr &Section, Elf_Shdr_Range Sections) const |
Expected< uint64_t > | getDynSymtabSize () const |
This function determines the number of dynamic symbols. | |
StringRef | getRelocationTypeName (uint32_t Type) const |
void | getRelocationTypeName (uint32_t Type, SmallVectorImpl< char > &Result) const |
uint32_t | getRelativeRelocationType () const |
std::string | getDynamicTagAsString (unsigned Arch, uint64_t Type) const |
std::string | getDynamicTagAsString (uint64_t Type) const |
Expected< const Elf_Sym * > | getRelocationSymbol (const Elf_Rel &Rel, const Elf_Shdr *SymTab) const |
Get the symbol for a given relocation. | |
Expected< SmallVector< std::optional< VersionEntry >, 0 > > | loadVersionMap (const Elf_Shdr *VerNeedSec, const Elf_Shdr *VerDefSec) const |
bool | isLE () const |
bool | isMipsELF64 () const |
bool | isMips64EL () const |
Expected< Elf_Shdr_Range > | sections () const |
Expected< Elf_Dyn_Range > | dynamicEntries () const |
Expected< const uint8_t * > | toMappedAddr (uint64_t VAddr, WarningHandler WarnHandler=&defaultWarningHandler) const |
Expected< Elf_Sym_Range > | symbols (const Elf_Shdr *Sec) const |
Expected< Elf_Rela_Range > | relas (const Elf_Shdr &Sec) const |
Expected< Elf_Rel_Range > | rels (const Elf_Shdr &Sec) const |
Expected< Elf_Relr_Range > | relrs (const Elf_Shdr &Sec) const |
std::vector< Elf_Rel > | decode_relrs (Elf_Relr_Range relrs) const |
Expected< uint64_t > | getCrelHeader (ArrayRef< uint8_t > Content) const |
Expected< RelsOrRelas > | decodeCrel (ArrayRef< uint8_t > Content) const |
Expected< RelsOrRelas > | crels (const Elf_Shdr &Sec) const |
Expected< std::vector< Elf_Rela > > | android_relas (const Elf_Shdr &Sec) const |
Expected< Elf_Phdr_Range > | program_headers () const |
Iterate over program header table. | |
Elf_Note_Iterator | notes_begin (const Elf_Phdr &Phdr, Error &Err) const |
Get an iterator over notes in a program header. | |
Elf_Note_Iterator | notes_begin (const Elf_Shdr &Shdr, Error &Err) const |
Get an iterator over notes in a section. | |
Elf_Note_Iterator | notes_end () const |
Get the end iterator for notes. | |
iterator_range< Elf_Note_Iterator > | notes (const Elf_Phdr &Phdr, Error &Err) const |
Get an iterator range over notes of a program header. | |
iterator_range< Elf_Note_Iterator > | notes (const Elf_Shdr &Shdr, Error &Err) const |
Get an iterator range over notes of a section. | |
Expected< StringRef > | getSectionStringTable (Elf_Shdr_Range Sections, WarningHandler WarnHandler=&defaultWarningHandler) const |
Expected< uint32_t > | getSectionIndex (const Elf_Sym &Sym, Elf_Sym_Range Syms, DataRegion< Elf_Word > ShndxTable) const |
Expected< const Elf_Shdr * > | getSection (const Elf_Sym &Sym, const Elf_Shdr *SymTab, DataRegion< Elf_Word > ShndxTable) const |
Expected< const Elf_Shdr * > | getSection (const Elf_Sym &Sym, Elf_Sym_Range Symtab, DataRegion< Elf_Word > ShndxTable) const |
Expected< const Elf_Shdr * > | getSection (uint32_t Index) const |
Expected< const Elf_Sym * > | getSymbol (const Elf_Shdr *Sec, uint32_t Index) const |
Expected< StringRef > | getSectionName (const Elf_Shdr &Section, WarningHandler WarnHandler=&defaultWarningHandler) const |
Expected< StringRef > | getSectionName (const Elf_Shdr &Section, StringRef DotShstrtab) const |
template<typename T> | |
Expected< ArrayRef< T > > | getSectionContentsAsArray (const Elf_Shdr &Sec) const |
Expected< ArrayRef< uint8_t > > | getSectionContents (const Elf_Shdr &Sec) const |
Expected< ArrayRef< uint8_t > > | getSegmentContents (const Elf_Phdr &Phdr) const |
Expected< std::vector< BBAddrMap > > | decodeBBAddrMap (const Elf_Shdr &Sec, const Elf_Shdr *RelaSec=nullptr, std::vector< PGOAnalysisMap > *PGOAnalyses=nullptr) const |
Returns a vector of BBAddrMap structs corresponding to each function within the text section that the SHT_LLVM_BB_ADDR_MAP section Sec is associated with. | |
Expected< MapVector< const Elf_Shdr *, const Elf_Shdr * > > | getSectionAndRelocations (std::function< Expected< bool >(const Elf_Shdr &)> IsMatch) const |
Returns a map from every section matching IsMatch to its relocation section, or nullptr if it has no relocation section. | |
void | createFakeSections () |
Used by llvm-objdump -d (which needs sections for disassembly) to disassemble objects without a section header table (e.g. |
Static Public Member Functions | |
static Expected< ELFFile > | create (StringRef Object) |
using llvm::object::ELFFile< ELFT >::RelsOrRelas = std::pair<std::vector<Elf_Rel>, std::vector<Elf_Rela>> |
using llvm::object::ELFFile< ELFT >::WarningHandler = llvm::function_ref<Error(const Twine &Msg)> |
|
default |
|
inline |
|
static |
Definition at line 893 of file ELF.h.
Referenced by llvm::objcopy::elf::ELFBuilder< ELFT >::build().
void llvm::object::ELFFile< ELFT >::createFakeSections | ( | ) |
Expected< typename ELFFile< ELFT >::RelsOrRelas > ELFFile::crels | ( | const Elf_Shdr & | Sec | ) | const |
std::vector< typename ELFT::Rel > ELFFile::decode_relrs | ( | Elf_Relr_Range | relrs | ) | const |
Expected< std::vector< BBAddrMap > > ELFFile::decodeBBAddrMap | ( | const Elf_Shdr & | Sec, |
const Elf_Shdr * | RelaSec = nullptr, | ||
std::vector< PGOAnalysisMap > * | PGOAnalyses = nullptr ) const |
Returns a vector of BBAddrMap structs corresponding to each function within the text section that the SHT_LLVM_BB_ADDR_MAP section Sec
is associated with.
If the current ELFFile is relocatable, a corresponding RelaSec
must be passed in as an argument. Optional out variable to collect all PGO Analyses. New elements are only added if no error occurs. If not provided, the PGO Analyses are decoded then ignored.
Expected< typename ELFFile< ELFT >::RelsOrRelas > ELFFile::decodeCrel | ( | ArrayRef< uint8_t > | Content | ) | const |
Expected< typename ELFT::DynRange > ELFFile::dynamicEntries | ( | ) | const |
|
inline |
|
inline |
std::string ELFFile::getDynamicTagAsString | ( | uint64_t | Type | ) | const |
Expected< uint64_t > llvm::object::ELFFile< ELFT >::getDynSymtabSize | ( | ) | const |
|
inline |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getLinkAsStrtab | ( | const typename ELFT::Shdr & | Sec | ) | const |
uint32_t llvm::object::ELFFile< ELFT >::getRelativeRelocationType | ( | ) | const |
Expected< const typename ELFT::Sym * > llvm::object::ELFFile< ELFT >::getRelocationSymbol | ( | const Elf_Rel & | Rel, |
const Elf_Shdr * | SymTab ) const |
StringRef llvm::object::ELFFile< ELFT >::getRelocationTypeName | ( | uint32_t | Type | ) | const |
void llvm::object::ELFFile< ELFT >::getRelocationTypeName | ( | uint32_t | Type, |
SmallVectorImpl< char > & | Result ) const |
Expected< const typename ELFT::Shdr * > llvm::object::ELFFile< ELFT >::getSection | ( | const Elf_Sym & | Sym, |
const Elf_Shdr * | SymTab, | ||
DataRegion< Elf_Word > | ShndxTable ) const |
Expected< const typename ELFT::Shdr * > llvm::object::ELFFile< ELFT >::getSection | ( | const Elf_Sym & | Sym, |
Elf_Sym_Range | Symtab, | ||
DataRegion< Elf_Word > | ShndxTable ) const |
Expected< const typename ELFT::Shdr * > llvm::object::ELFFile< ELFT >::getSection | ( | uint32_t | Index | ) | const |
Expected< ArrayRef< uint8_t > > llvm::object::ELFFile< ELFT >::getSectionContents | ( | const Elf_Shdr & | Sec | ) | const |
Expected< uint32_t > llvm::object::ELFFile< ELFT >::getSectionIndex | ( | const Elf_Sym & | Sym, |
Elf_Sym_Range | Syms, | ||
DataRegion< Elf_Word > | ShndxTable ) const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getSectionName | ( | const Elf_Shdr & | Section, |
StringRef | DotShstrtab ) const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getSectionName | ( | const Elf_Shdr & | Section, |
WarningHandler | WarnHandler = &defaultWarningHandler ) const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getSectionStringTable | ( | Elf_Shdr_Range | Sections, |
WarningHandler | WarnHandler = &defaultWarningHandler ) const |
Expected< ArrayRef< uint8_t > > llvm::object::ELFFile< ELFT >::getSegmentContents | ( | const Elf_Phdr & | Phdr | ) | const |
Expected< ArrayRef< typename ELFT::Word > > llvm::object::ELFFile< ELFT >::getSHNDXTable | ( | const Elf_Shdr & | Section | ) | const |
Expected< ArrayRef< typename ELFT::Word > > llvm::object::ELFFile< ELFT >::getSHNDXTable | ( | const Elf_Shdr & | Section, |
Elf_Shdr_Range | Sections ) const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getStringTable | ( | const Elf_Shdr & | Section, |
WarningHandler | WarnHandler = &defaultWarningHandler ) const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getStringTableForSymtab | ( | const Elf_Shdr & | Section | ) | const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getStringTableForSymtab | ( | const Elf_Shdr & | Section, |
Elf_Shdr_Range | Sections ) const |
Expected< const typename ELFT::Sym * > llvm::object::ELFFile< ELFT >::getSymbol | ( | const Elf_Shdr * | Sec, |
uint32_t | Index ) const |
Expected< StringRef > llvm::object::ELFFile< ELFT >::getSymbolVersionByIndex | ( | uint32_t | SymbolVersionIndex, |
bool & | IsDefault, | ||
SmallVector< std::optional< VersionEntry >, 0 > & | VersionMap, | ||
std::optional< bool > | IsSymHidden ) const |
Expected< std::vector< VerDef > > llvm::object::ELFFile< ELFT >::getVersionDefinitions | ( | const Elf_Shdr & | Sec | ) | const |
Expected< std::vector< VerNeed > > llvm::object::ELFFile< ELFT >::getVersionDependencies | ( | const Elf_Shdr & | Sec, |
WarningHandler | WarnHandler = &defaultWarningHandler ) const |
|
inline |
|
inline |
|
inline |
Expected< SmallVector< std::optional< VersionEntry >, 0 > > llvm::object::ELFFile< ELFT >::loadVersionMap | ( | const Elf_Shdr * | VerNeedSec, |
const Elf_Shdr * | VerDefSec ) const |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
default |
|
inline |
|
inline |
|
inline |
|
inline |
Expected< typename ELFT::ShdrRange > llvm::object::ELFFile< ELFT >::sections | ( | ) | const |
|
inline |
Expected< const uint8_t * > ELFFile::toMappedAddr | ( | uint64_t | VAddr, |
WarningHandler | WarnHandler = &defaultWarningHandler ) const |