LLVM 22.0.0git
llvm::object::ELFObjectFile< ELFT > Class Template Reference

#include "llvm/Object/ELFObjectFile.h"

Inheritance diagram for llvm::object::ELFObjectFile< ELFT >:
[legend]

Public Member Functions

SectionRef toSectionRef (const Elf_Shdr *Sec) const
ELFSymbolRef toSymbolRef (const Elf_Shdr *SymTable, unsigned SymbolNum) const
bool IsContentValid () const
 ELFObjectFile (ELFObjectFile< ELFT > &&Other)
const Elf_Rel * getRel (DataRefImpl Rel) const
const Elf_Rela * getRela (DataRefImpl Rela) const
Elf_Crel getCrel (DataRefImpl Crel) const
Expected< const Elf_Sym * > getSymbol (DataRefImpl Sym) const
const Elf_Shdr * getRelSection (DataRefImpl Rel) const
 Get the relocation section that contains Rel.
const Elf_Shdr * getSection (DataRefImpl Sec) const
basic_symbol_iterator symbol_begin () const override
basic_symbol_iterator symbol_end () const override
bool is64Bit () const override
elf_symbol_iterator dynamic_symbol_begin () const
elf_symbol_iterator dynamic_symbol_end () const
section_iterator section_begin () const override
section_iterator section_end () const override
Expected< int64_t > getRelocationAddend (DataRefImpl Rel) const override
uint8_t getBytesInAddress () const override
 The number of bytes used to represent an address in this object file format.
StringRef getFileFormatName () const override
Triple::ArchType getArch () const override
Triple::OSType getOS () const override
Expected< uint64_tgetStartAddress () const override
unsigned getPlatformFlags () const override
 Returns platform-specific object flags, if any.
const ELFFile< ELFT > & getELFFile () const
bool isDyldType () const
elf_symbol_iterator_range getDynamicSymbolIterators () const override
bool isRelocatableObject () const override
 True if this is a relocatable object (.o/.obj).
void createFakeSections ()
StringRef getCrelDecodeProblem (DataRefImpl Sec) const
Public Member Functions inherited from llvm::object::ELFObjectFileBase
elf_symbol_iterator_range symbols () const
Expected< SubtargetFeaturesgetFeatures () const override
std::optional< StringReftryGetCPUName () const override
void setARMSubArch (Triple &TheTriple) const override
std::vector< ELFPltEntrygetPltEntries (const MCSubtargetInfo &STI) const
Expected< std::vector< VersionEntry > > readDynsymVersions () const
 Returns a vector containing a symbol version for each dynamic symbol.
Expected< std::vector< BBAddrMap > > readBBAddrMap (std::optional< unsigned > TextSectionIndex=std::nullopt, std::vector< PGOAnalysisMap > *PGOAnalyses=nullptr) const
 Returns a vector of all BB address maps in the object file.
StringRef getCrelDecodeProblem (SectionRef Sec) const
Public Member Functions inherited from llvm::object::ObjectFile
 ObjectFile ()=delete
 ObjectFile (const ObjectFile &other)=delete
ObjectFileoperator= (const ObjectFile &other)=delete
uint64_t getCommonSymbolSize (DataRefImpl Symb) const
symbol_iterator_range symbols () const
section_iterator_range sections () const
virtual bool hasDebugInfo () const
Triple makeTriple () const
 Create a triple from the data in this object file.
virtual StringRef mapDebugSectionName (StringRef Name) const
 Maps a debug section name to a standard DWARF section name.
bool isReflectionSectionStrippable (llvm::binaryformat::Swift5ReflectionSectionKind ReflectionSectionKind) const
 True if the reflection section can be stripped by the linker.
Public Member Functions inherited from llvm::object::SymbolicFile
 SymbolicFile (unsigned int Type, MemoryBufferRef Source)
 ~SymbolicFile () override
basic_symbol_iterator_range symbols () const
Public Member Functions inherited from llvm::object::Binary
 Binary ()=delete
 Binary (const Binary &other)=delete
virtual ~Binary ()
StringRef getData () const
StringRef getFileName () const
MemoryBufferRef getMemoryBufferRef () const
unsigned int getType () const
bool isObject () const
bool isSymbolic () const
bool isArchive () const
bool isMachOUniversalBinary () const
bool isTapiUniversal () const
bool isELF () const
bool isMachO () const
bool isCOFF () const
bool isXCOFF () const
bool isWasm () const
bool isOffloadFile () const
bool isCOFFImportFile () const
bool isIR () const
bool isGOFF () const
bool isMinidump () const
bool isTapiFile () const
bool isLittleEndian () const
bool isWinRes () const
bool isDXContainer () const
Triple::ObjectFormatType getTripleObjectFormat () const

Static Public Member Functions

static Expected< ELFObjectFile< ELFT > > create (MemoryBufferRef Object, bool InitContent=true)
static bool classof (const Binary *v)
Static Public Member Functions inherited from llvm::object::ELFObjectFileBase
static bool classof (const Binary *v)
Static Public Member Functions inherited from llvm::object::ObjectFile
static Expected< OwningBinary< ObjectFile > > createObjectFile (StringRef ObjectPath)
static Expected< std::unique_ptr< ObjectFile > > createObjectFile (MemoryBufferRef Object, llvm::file_magic Type, bool InitContent=true)
static Expected< std::unique_ptr< ObjectFile > > createObjectFile (MemoryBufferRef Object)
static bool classof (const Binary *v)
static Expected< std::unique_ptr< COFFObjectFile > > createCOFFObjectFile (MemoryBufferRef Object)
static Expected< std::unique_ptr< ObjectFile > > createXCOFFObjectFile (MemoryBufferRef Object, unsigned FileType)
static Expected< std::unique_ptr< ObjectFile > > createELFObjectFile (MemoryBufferRef Object, bool InitContent=true)
static Expected< std::unique_ptr< MachOObjectFile > > createMachOObjectFile (MemoryBufferRef Object, uint32_t UniversalCputype=0, uint32_t UniversalIndex=0, size_t MachOFilesetEntryOffset=0)
 Create a MachOObjectFile instance from a given buffer.
static Expected< std::unique_ptr< ObjectFile > > createGOFFObjectFile (MemoryBufferRef Object)
static Expected< std::unique_ptr< WasmObjectFile > > createWasmObjectFile (MemoryBufferRef Object)
static Expected< std::unique_ptr< DXContainerObjectFile > > createDXContainerObjectFile (MemoryBufferRef Object)
Static Public Member Functions inherited from llvm::object::SymbolicFile
static Expected< std::unique_ptr< SymbolicFile > > createSymbolicFile (MemoryBufferRef Object, llvm::file_magic Type, LLVMContext *Context, bool InitContent=true)
static Expected< std::unique_ptr< SymbolicFile > > createSymbolicFile (MemoryBufferRef Object)
static bool classof (const Binary *v)
static bool isSymbolicFile (file_magic Type, const LLVMContext *Context)
Static Public Member Functions inherited from llvm::object::Binary
static Error checkOffset (MemoryBufferRef M, uintptr_t Addr, const uint64_t Size)

Protected Member Functions

Error initContent () override
void moveSymbolNext (DataRefImpl &Symb) const override
Expected< StringRefgetSymbolName (DataRefImpl Symb) const override
Expected< uint64_tgetSymbolAddress (DataRefImpl Symb) const override
uint64_t getSymbolValueImpl (DataRefImpl Symb) const override
uint32_t getSymbolAlignment (DataRefImpl Symb) const override
uint64_t getCommonSymbolSizeImpl (DataRefImpl Symb) const override
Expected< uint32_tgetSymbolFlags (DataRefImpl Symb) const override
uint8_t getSymbolBinding (DataRefImpl Symb) const override
uint8_t getSymbolOther (DataRefImpl Symb) const override
uint8_t getSymbolELFType (DataRefImpl Symb) const override
Expected< SymbolRef::TypegetSymbolType (DataRefImpl Symb) const override
Expected< section_iteratorgetSymbolSection (const Elf_Sym *Symb, const Elf_Shdr *SymTab) const
Expected< section_iteratorgetSymbolSection (DataRefImpl Symb) const override
void moveSectionNext (DataRefImpl &Sec) const override
Expected< StringRefgetSectionName (DataRefImpl Sec) const override
uint64_t getSectionAddress (DataRefImpl Sec) const override
uint64_t getSectionIndex (DataRefImpl Sec) const override
uint64_t getSectionSize (DataRefImpl Sec) const override
Expected< ArrayRef< uint8_t > > getSectionContents (DataRefImpl Sec) const override
uint64_t getSectionAlignment (DataRefImpl Sec) const override
bool isSectionCompressed (DataRefImpl Sec) const override
bool isSectionText (DataRefImpl Sec) const override
bool isSectionData (DataRefImpl Sec) const override
bool isSectionBSS (DataRefImpl Sec) const override
bool isSectionVirtual (DataRefImpl Sec) const override
bool isBerkeleyText (DataRefImpl Sec) const override
bool isBerkeleyData (DataRefImpl Sec) const override
bool isDebugSection (DataRefImpl Sec) const override
relocation_iterator section_rel_begin (DataRefImpl Sec) const override
relocation_iterator section_rel_end (DataRefImpl Sec) const override
std::vector< SectionRefdynamic_relocation_sections () const override
Expected< section_iteratorgetRelocatedSection (DataRefImpl Sec) const override
void moveRelocationNext (DataRefImpl &Rel) const override
uint64_t getRelocationOffset (DataRefImpl Rel) const override
symbol_iterator getRelocationSymbol (DataRefImpl Rel) const override
uint64_t getRelocationType (DataRefImpl Rel) const override
void getRelocationTypeName (DataRefImpl Rel, SmallVectorImpl< char > &Result) const override
uint32_t getSectionType (DataRefImpl Sec) const override
uint64_t getSectionFlags (DataRefImpl Sec) const override
uint64_t getSectionOffset (DataRefImpl Sec) const override
StringRef getRelocationTypeName (uint32_t Type) const
DataRefImpl toDRI (const Elf_Shdr *SymTable, unsigned SymbolNum) const
const Elf_Shdr * toELFShdrIter (DataRefImpl Sec) const
DataRefImpl toDRI (const Elf_Shdr *Sec) const
DataRefImpl toDRI (const Elf_Dyn *Dyn) const
bool isExportedToOtherDSO (const Elf_Sym *ESym) const
Error getBuildAttributes (ELFAttributeParser &Attributes) const override
Protected Member Functions inherited from llvm::object::ELFObjectFileBase
 ELFObjectFileBase (unsigned int Type, MemoryBufferRef Source)
Protected Member Functions inherited from llvm::object::ObjectFile
 ObjectFile (unsigned int Type, MemoryBufferRef Source)
const uint8_tbase () const
Error printSymbolName (raw_ostream &OS, DataRefImpl Symb) const override
virtual bool isSectionBitcode (DataRefImpl Sec) const
virtual bool isSectionStripped (DataRefImpl Sec) const
virtual llvm::binaryformat::Swift5ReflectionSectionKind mapReflectionSectionNameToEnumValue (StringRef SectionName) const
Expected< uint64_tgetSymbolValue (DataRefImpl Symb) const
Protected Member Functions inherited from llvm::object::Binary
 Binary (unsigned int Type, MemoryBufferRef Source)

Protected Attributes

ELFFile< ELFT > EF
const Elf_Shdr * DotDynSymSec = nullptr
const Elf_Shdr * DotSymtabSec = nullptr
const Elf_Shdr * DotSymtabShndxSec = nullptr
SmallVector< SmallVector< Elf_Crel, 0 >, 0 > Crels
SmallVector< std::string, 0 > CrelDecodeProblems
bool isDyldELFObject = false
Protected Attributes inherited from llvm::object::Binary
MemoryBufferRef Data

Additional Inherited Members

Public Types inherited from llvm::object::ELFObjectFileBase
using elf_symbol_iterator_range = iterator_range<elf_symbol_iterator>
Public Types inherited from llvm::object::ObjectFile
using symbol_iterator_range = iterator_range<symbol_iterator>
using section_iterator_range = iterator_range<section_iterator>
Public Types inherited from llvm::object::SymbolicFile
using basic_symbol_iterator_range = iterator_range<basic_symbol_iterator>
Protected Types inherited from llvm::object::Binary
enum  {
  ID_Archive , ID_MachOUniversalBinary , ID_COFFImportFile , ID_IR ,
  ID_TapiUniversal , ID_TapiFile , ID_Minidump , ID_WinRes ,
  ID_Offload , ID_StartObjects , ID_COFF , ID_XCOFF32 ,
  ID_XCOFF64 , ID_ELF32L , ID_ELF32B , ID_ELF64L ,
  ID_ELF64B , ID_MachO32L , ID_MachO32B , ID_MachO64L ,
  ID_MachO64B , ID_GOFF , ID_Wasm , ID_DXContainer ,
  ID_EndObjects
}
Static Protected Member Functions inherited from llvm::object::Binary
static unsigned int getELFType (bool isLE, bool is64Bits)
static unsigned int getMachOType (bool isLE, bool is64Bits)

Detailed Description

template<class ELFT>
class llvm::object::ELFObjectFile< ELFT >

Definition at line 268 of file ELFObjectFile.h.

Constructor & Destructor Documentation

◆ ELFObjectFile()

template<class ELFT>
llvm::object::ELFObjectFile< ELFT >::ELFObjectFile ( ELFObjectFile< ELFT > && Other)

Member Function Documentation

◆ classof()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::classof ( const Binary * v)
inlinestatic

Definition at line 505 of file ELFObjectFile.h.

◆ create()

template<class ELFT>
Expected< ELFObjectFile< ELFT > > llvm::object::ELFObjectFile< ELFT >::create ( MemoryBufferRef Object,
bool InitContent = true )
static

Definition at line 1200 of file ELFObjectFile.h.

References llvm::object::ELFFile< ELFT >::create(), E(), and initContent().

Referenced by createPtr().

◆ createFakeSections()

template<class ELFT>
void llvm::object::ELFObjectFile< ELFT >::createFakeSections ( )
inline

Definition at line 515 of file ELFObjectFile.h.

◆ dynamic_relocation_sections()

template<class ELFT>
std::vector< SectionRef > llvm::object::ELFObjectFile< ELFT >::dynamic_relocation_sections ( ) const
overrideprotectedvirtual

◆ dynamic_symbol_begin()

template<class ELFT>
elf_symbol_iterator llvm::object::ELFObjectFile< ELFT >::dynamic_symbol_begin ( ) const

Definition at line 1247 of file ELFObjectFile.h.

References DotDynSymSec, and toDRI().

Referenced by dynamic_symbol_end(), and getDynamicSymbolIterators().

◆ dynamic_symbol_end()

template<class ELFT>
elf_symbol_iterator llvm::object::ELFObjectFile< ELFT >::dynamic_symbol_end ( ) const

Definition at line 1257 of file ELFObjectFile.h.

References DotDynSymSec, dynamic_symbol_begin(), and toDRI().

Referenced by getDynamicSymbolIterators().

◆ getArch()

template<class ELFT>
Triple::ArchType llvm::object::ELFObjectFile< ELFT >::getArch ( ) const
overridevirtual

Implements llvm::object::ObjectFile.

Definition at line 1365 of file ELFObjectFile.h.

References llvm::Triple::aarch64, llvm::Triple::aarch64_be, llvm::Triple::amdgcn, llvm::Triple::arm, llvm::Triple::avr, llvm::Triple::bpfeb, llvm::Triple::bpfel, llvm::Triple::csky, EF, llvm::ELF::EF_AMDGPU_MACH, llvm::ELF::EF_AMDGPU_MACH_AMDGCN_FIRST, llvm::ELF::EF_AMDGPU_MACH_AMDGCN_LAST, llvm::ELF::EF_AMDGPU_MACH_R600_FIRST, llvm::ELF::EF_AMDGPU_MACH_R600_LAST, llvm::ELF::EI_CLASS, llvm::ELF::ELFCLASS32, llvm::ELF::ELFCLASS64, llvm::ELF::EM_386, llvm::ELF::EM_68K, llvm::ELF::EM_AARCH64, llvm::ELF::EM_AMDGPU, llvm::ELF::EM_ARM, llvm::ELF::EM_AVR, llvm::ELF::EM_BPF, llvm::ELF::EM_CSKY, llvm::ELF::EM_CUDA, llvm::ELF::EM_HEXAGON, llvm::ELF::EM_IAMCU, llvm::ELF::EM_LANAI, llvm::ELF::EM_LOONGARCH, llvm::ELF::EM_MIPS, llvm::ELF::EM_MSP430, llvm::ELF::EM_PPC, llvm::ELF::EM_PPC64, llvm::ELF::EM_RISCV, llvm::ELF::EM_S390, llvm::ELF::EM_SPARC, llvm::ELF::EM_SPARC32PLUS, llvm::ELF::EM_SPARCV9, llvm::ELF::EM_VE, llvm::ELF::EM_X86_64, llvm::ELF::EM_XTENSA, llvm::Triple::hexagon, llvm::Triple::lanai, llvm::little, llvm::Triple::loongarch32, llvm::Triple::loongarch64, llvm::Triple::m68k, llvm::Triple::mips, llvm::Triple::mips64, llvm::Triple::mips64el, llvm::Triple::mipsel, llvm::Triple::msp430, llvm::Triple::nvptx, llvm::Triple::nvptx64, llvm::Triple::ppc, llvm::Triple::ppc64, llvm::Triple::ppc64le, llvm::Triple::ppcle, llvm::Triple::r600, llvm::report_fatal_error(), llvm::Triple::riscv32, llvm::Triple::riscv32be, llvm::Triple::riscv64, llvm::Triple::riscv64be, llvm::Triple::sparc, llvm::Triple::sparcel, llvm::Triple::sparcv9, llvm::Triple::systemz, llvm::Triple::UnknownArch, llvm::Triple::ve, llvm::Triple::x86, llvm::Triple::x86_64, and llvm::Triple::xtensa.

◆ getBuildAttributes()

template<class ELFT>
Error llvm::object::ELFObjectFile< ELFT >::getBuildAttributes ( ELFAttributeParser & Attributes) const
inlineoverrideprotectedvirtual

Implements llvm::object::ELFObjectFileBase.

Definition at line 410 of file ELFObjectFile.h.

◆ getBytesInAddress()

template<class ELFT>
uint8_t llvm::object::ELFObjectFile< ELFT >::getBytesInAddress ( ) const
overridevirtual

The number of bytes used to represent an address in this object file format.

Implements llvm::object::ObjectFile.

Definition at line 1282 of file ELFObjectFile.h.

Referenced by llvm::object::ELFObjectFile< ELF32LE >::is64Bit().

◆ getCommonSymbolSizeImpl()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getCommonSymbolSizeImpl ( DataRefImpl Symb) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 702 of file ELFObjectFile.h.

◆ getCrel()

◆ getCrelDecodeProblem()

template<class ELFT>
StringRef llvm::object::ELFObjectFile< ELFT >::getCrelDecodeProblem ( DataRefImpl Sec) const

Definition at line 1511 of file ELFObjectFile.h.

References llvm::cantFail(), CrelDecodeProblems, EF, I, and llvm::object::DataRefImpl::p.

◆ getDynamicSymbolIterators()

template<class ELFT>
ELFObjectFileBase::elf_symbol_iterator_range llvm::object::ELFObjectFile< ELFT >::getDynamicSymbolIterators ( ) const
overridevirtual

◆ getELFFile()

template<class ELFT>
const ELFFile< ELFT > & llvm::object::ELFObjectFile< ELFT >::getELFFile ( ) const
inline

Definition at line 502 of file ELFObjectFile.h.

Referenced by llvm::ifs::buildStub().

◆ getFileFormatName()

◆ getOS()

◆ getPlatformFlags()

template<class ELFT>
unsigned llvm::object::ELFObjectFile< ELFT >::getPlatformFlags ( ) const
inlineoverridevirtual

Returns platform-specific object flags, if any.

Implements llvm::object::ELFObjectFileBase.

Definition at line 500 of file ELFObjectFile.h.

◆ getRel()

◆ getRela()

◆ getRelocatedSection()

template<class ELFT>
Expected< section_iterator > llvm::object::ELFObjectFile< ELFT >::getRelocatedSection ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ getRelocationAddend()

template<class ELFT>
Expected< int64_t > llvm::object::ELFObjectFile< ELFT >::getRelocationAddend ( DataRefImpl Rel) const
overridevirtual

◆ getRelocationOffset()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getRelocationOffset ( DataRefImpl Rel) const
overrideprotectedvirtual

◆ getRelocationSymbol()

◆ getRelocationType()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getRelocationType ( DataRefImpl Rel) const
overrideprotectedvirtual

◆ getRelocationTypeName() [1/2]

template<class ELFT>
void llvm::object::ELFObjectFile< ELFT >::getRelocationTypeName ( DataRefImpl Rel,
SmallVectorImpl< char > & Result ) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 1154 of file ELFObjectFile.h.

References EF, and getRelocationType().

◆ getRelocationTypeName() [2/2]

template<class ELFT>
StringRef llvm::object::ELFObjectFile< ELFT >::getRelocationTypeName ( uint32_t Type) const
protected

Definition at line 1149 of file ELFObjectFile.h.

References EF, and llvm::object::getELFRelocationTypeName().

◆ getRelSection()

template<class ELFT>
const Elf_Shdr * llvm::object::ELFObjectFile< ELFT >::getRelSection ( DataRefImpl Rel) const
inline

Get the relocation section that contains Rel.

Definition at line 469 of file ELFObjectFile.h.

Referenced by getCrel(), getRel(), getRela(), getRelocationAddend(), getRelocationOffset(), getRelocationSymbol(), getRelocationType(), and section_rel_end().

◆ getSection()

template<class ELFT>
const Elf_Shdr * llvm::object::ELFObjectFile< ELFT >::getSection ( DataRefImpl Sec) const
inline

Definition at line 477 of file ELFObjectFile.h.

◆ getSectionAddress()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSectionAddress ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 907 of file ELFObjectFile.h.

References llvm::object::getSection().

◆ getSectionAlignment()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSectionAlignment ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 941 of file ELFObjectFile.h.

References llvm::object::getSection().

◆ getSectionContents()

◆ getSectionFlags()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSectionFlags ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ELFObjectFileBase.

Definition at line 590 of file ELFObjectFile.h.

References llvm::object::getSection().

◆ getSectionIndex()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSectionIndex ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ getSectionName()

template<class ELFT>
Expected< StringRef > llvm::object::ELFObjectFile< ELFT >::getSectionName ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 902 of file ELFObjectFile.h.

References EF, and llvm::object::getSection().

◆ getSectionOffset()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSectionOffset ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ELFObjectFileBase.

Definition at line 600 of file ELFObjectFile.h.

References llvm::object::getSection().

◆ getSectionSize()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSectionSize ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 923 of file ELFObjectFile.h.

References llvm::object::getSection().

◆ getSectionType()

template<class ELFT>
uint32_t llvm::object::ELFObjectFile< ELFT >::getSectionType ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ELFObjectFileBase.

Definition at line 595 of file ELFObjectFile.h.

References llvm::object::getSection().

◆ getStartAddress()

template<class ELFT>
Expected< uint64_t > llvm::object::ELFObjectFile< ELFT >::getStartAddress ( ) const
overridevirtual

Reimplemented from llvm::object::ObjectFile.

Definition at line 1496 of file ELFObjectFile.h.

References EF.

◆ getSymbol()

◆ getSymbolAddress()

◆ getSymbolAlignment()

template<class ELFT>
uint32_t llvm::object::ELFObjectFile< ELFT >::getSymbolAlignment ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ getSymbolBinding()

template<class ELFT>
uint8_t llvm::object::ELFObjectFile< ELFT >::getSymbolBinding ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ getSymbolELFType()

template<class ELFT>
uint8_t llvm::object::ELFObjectFile< ELFT >::getSymbolELFType ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ getSymbolFlags()

◆ getSymbolName()

template<class ELFT>
Expected< StringRef > llvm::object::ELFObjectFile< ELFT >::getSymbolName ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ getSymbolOther()

template<class ELFT>
uint8_t llvm::object::ELFObjectFile< ELFT >::getSymbolOther ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ getSymbolSection() [1/2]

template<class ELFT>
Expected< section_iterator > llvm::object::ELFObjectFile< ELFT >::getSymbolSection ( const Elf_Sym * Symb,
const Elf_Shdr * SymTab ) const
protected

◆ getSymbolSection() [2/2]

template<class ELFT>
Expected< section_iterator > llvm::object::ELFObjectFile< ELFT >::getSymbolSection ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ getSymbolType()

◆ getSymbolValueImpl()

template<class ELFT>
uint64_t llvm::object::ELFObjectFile< ELFT >::getSymbolValueImpl ( DataRefImpl Symb) const
overrideprotectedvirtual

◆ initContent()

template<class ELFT>
Error llvm::object::ELFObjectFile< ELFT >::initContent ( )
overrideprotectedvirtual

◆ is64Bit()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::is64Bit ( ) const
inlineoverridevirtual

Implements llvm::object::SymbolicFile.

Definition at line 484 of file ELFObjectFile.h.

◆ isBerkeleyData()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isBerkeleyData ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ isBerkeleyText()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isBerkeleyText ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ IsContentValid()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::IsContentValid ( ) const
inline

Definition at line 285 of file ELFObjectFile.h.

◆ isDebugSection()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isDebugSection ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ isDyldType()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isDyldType ( ) const
inline

Definition at line 504 of file ELFObjectFile.h.

◆ isExportedToOtherDSO()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isExportedToOtherDSO ( const Elf_Sym * ESym) const
inlineprotected

Definition at line 397 of file ELFObjectFile.h.

Referenced by getSymbolFlags().

◆ isRelocatableObject()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isRelocatableObject ( ) const
overridevirtual

True if this is a relocatable object (.o/.obj).

Implements llvm::object::ObjectFile.

Definition at line 1506 of file ELFObjectFile.h.

References EF, and llvm::ELF::ET_REL.

◆ isSectionBSS()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isSectionBSS ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ isSectionCompressed()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isSectionCompressed ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 946 of file ELFObjectFile.h.

References llvm::object::getSection(), and llvm::ELF::SHF_COMPRESSED.

◆ isSectionData()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isSectionData ( DataRefImpl Sec) const
overrideprotectedvirtual

◆ isSectionText()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isSectionText ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 951 of file ELFObjectFile.h.

References llvm::object::getSection(), and llvm::ELF::SHF_EXECINSTR.

◆ isSectionVirtual()

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isSectionVirtual ( DataRefImpl Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 999 of file ELFObjectFile.h.

References llvm::object::getSection(), and llvm::ELF::SHT_NOBITS.

◆ moveRelocationNext()

template<class ELFT>
void llvm::object::ELFObjectFile< ELFT >::moveRelocationNext ( DataRefImpl & Rel) const
overrideprotectedvirtual

◆ moveSectionNext()

template<class ELFT>
void llvm::object::ELFObjectFile< ELFT >::moveSectionNext ( DataRefImpl & Sec) const
overrideprotectedvirtual

Implements llvm::object::ObjectFile.

Definition at line 896 of file ELFObjectFile.h.

References llvm::object::getSection(), and toDRI().

◆ moveSymbolNext()

template<class ELFT>
void llvm::object::ELFObjectFile< ELFT >::moveSymbolNext ( DataRefImpl & Symb) const
overrideprotectedvirtual

◆ section_begin()

template<class ELFT>
section_iterator llvm::object::ELFObjectFile< ELFT >::section_begin ( ) const
overridevirtual

Implements llvm::object::ObjectFile.

Definition at line 1266 of file ELFObjectFile.h.

References EF, and toDRI().

◆ section_end()

template<class ELFT>
section_iterator llvm::object::ELFObjectFile< ELFT >::section_end ( ) const
overridevirtual

Implements llvm::object::ObjectFile.

Definition at line 1274 of file ELFObjectFile.h.

References EF, and toDRI().

Referenced by getRelocatedSection(), and getSymbolSection().

◆ section_rel_begin()

◆ section_rel_end()

◆ symbol_begin()

template<class ELFT>
basic_symbol_iterator llvm::object::ELFObjectFile< ELFT >::symbol_begin ( ) const
overridevirtual

Implements llvm::object::SymbolicFile.

Definition at line 1230 of file ELFObjectFile.h.

References DotSymtabSec, and toDRI().

Referenced by symbol_end().

◆ symbol_end()

template<class ELFT>
basic_symbol_iterator llvm::object::ELFObjectFile< ELFT >::symbol_end ( ) const
overridevirtual

Implements llvm::object::SymbolicFile.

Definition at line 1238 of file ELFObjectFile.h.

References DotSymtabSec, symbol_begin(), and toDRI().

Referenced by getRelocationSymbol().

◆ toDRI() [1/3]

template<class ELFT>
DataRefImpl llvm::object::ELFObjectFile< ELFT >::toDRI ( const Elf_Dyn * Dyn) const
inlineprotected

Definition at line 391 of file ELFObjectFile.h.

◆ toDRI() [2/3]

template<class ELFT>
DataRefImpl llvm::object::ELFObjectFile< ELFT >::toDRI ( const Elf_Shdr * Sec) const
inlineprotected

Definition at line 385 of file ELFObjectFile.h.

◆ toDRI() [3/3]

◆ toELFShdrIter()

template<class ELFT>
const Elf_Shdr * llvm::object::ELFObjectFile< ELFT >::toELFShdrIter ( DataRefImpl Sec) const
inlineprotected

Definition at line 381 of file ELFObjectFile.h.

◆ toSectionRef()

template<class ELFT>
SectionRef llvm::object::ELFObjectFile< ELFT >::toSectionRef ( const Elf_Shdr * Sec) const
inline

Definition at line 277 of file ELFObjectFile.h.

◆ toSymbolRef()

template<class ELFT>
ELFSymbolRef llvm::object::ELFObjectFile< ELFT >::toSymbolRef ( const Elf_Shdr * SymTable,
unsigned SymbolNum ) const
inline

Definition at line 281 of file ELFObjectFile.h.

Member Data Documentation

◆ CrelDecodeProblems

template<class ELFT>
SmallVector<std::string, 0> llvm::object::ELFObjectFile< ELFT >::CrelDecodeProblems
mutableprotected

Definition at line 303 of file ELFObjectFile.h.

Referenced by getCrelDecodeProblem(), and section_rel_begin().

◆ Crels

template<class ELFT>
SmallVector<SmallVector<Elf_Crel, 0>, 0> llvm::object::ELFObjectFile< ELFT >::Crels
mutableprotected

Definition at line 302 of file ELFObjectFile.h.

Referenced by getCrel(), section_rel_begin(), and section_rel_end().

◆ DotDynSymSec

template<class ELFT>
const Elf_Shdr* llvm::object::ELFObjectFile< ELFT >::DotDynSymSec = nullptr
protected

◆ DotSymtabSec

template<class ELFT>
const Elf_Shdr* llvm::object::ELFObjectFile< ELFT >::DotSymtabSec = nullptr
protected

Definition at line 298 of file ELFObjectFile.h.

Referenced by ELFObjectFile(), getSymbolFlags(), initContent(), symbol_begin(), and symbol_end().

◆ DotSymtabShndxSec

template<class ELFT>
const Elf_Shdr* llvm::object::ELFObjectFile< ELFT >::DotSymtabShndxSec = nullptr
protected

Definition at line 299 of file ELFObjectFile.h.

Referenced by ELFObjectFile(), getSymbolAddress(), getSymbolSection(), and initContent().

◆ EF

◆ isDyldELFObject

template<class ELFT>
bool llvm::object::ELFObjectFile< ELFT >::isDyldELFObject = false
protected

Definition at line 453 of file ELFObjectFile.h.


The documentation for this class was generated from the following file: