LLVM 22.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
llvm::object::ELFObjectFileBase Class Referenceabstract

#include "llvm/Object/ELFObjectFile.h"

Inheritance diagram for llvm::object::ELFObjectFileBase:
[フレーム]
[legend]

Public Types

Public Types inherited from llvm::object::ObjectFile
Public Types inherited from llvm::object::SymbolicFile

Public Member Functions

  Returns platform-specific object flags, if any.
std::optional< StringReftryGetCPUName () const override
void  setARMSubArch (Triple &TheTriple) const override
virtual uint16_t  getEType () const =0
virtual uint16_t  getEMachine () const =0
  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.
Public Member Functions inherited from llvm::object::ObjectFile
  ObjectFile ()=delete
  ObjectFile (const ObjectFile &other)=delete
ObjectFileoperator= (const ObjectFile &other)=delete
virtual std::vector< SectionRefdynamic_relocation_sections () const
virtual bool  hasDebugInfo () const
  The number of bytes used to represent an address in this object file format.
virtual Triple::ArchType  getArch () const =0
virtual Triple::OSType  getOS () const
  Create a triple from the data in this object file.
  Maps a debug section name to a standard DWARF section name.
virtual bool  isRelocatableObject () const =0
  True if this is a relocatable object (.o/.obj).
  True if the reflection section can be stripped by the linker.
Public Member Functions inherited from llvm::object::SymbolicFile
  ~SymbolicFile () override
virtual void  moveSymbolNext (DataRefImpl &Symb) const =0
virtual bool  is64Bit () const =0
Public Member Functions inherited from llvm::object::Binary
  Binary ()=delete
  Binary (const Binary &other)=delete
virtual  ~Binary ()
virtual Error  initContent ()
bool  isIR () const

Static Public Member Functions

static bool  classof (const Binary *v)
Static Public Member Functions inherited from llvm::object::ObjectFile
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 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 Public Member Functions inherited from llvm::object::Binary
static Error  checkOffset (MemoryBufferRef M, uintptr_t Addr, const uint64_t Size)

Protected Member Functions

virtual Expected< int64_t >  getRelocationAddend (DataRefImpl Rel) const =0
Protected Member Functions inherited from llvm::object::ObjectFile
virtual void  moveSectionNext (DataRefImpl &Sec) const =0
virtual bool  isSectionText (DataRefImpl Sec) const =0
virtual bool  isSectionData (DataRefImpl Sec) const =0
virtual bool  isSectionBSS (DataRefImpl Sec) const =0
virtual void  moveRelocationNext (DataRefImpl &Rel) const =0
virtual void  getRelocationTypeName (DataRefImpl Rel, SmallVectorImpl< char > &Result) const =0
Protected Member Functions inherited from llvm::object::Binary

Friends

class  ELFSectionRef
class  ELFSymbolRef

Additional Inherited Members

Protected Types inherited from llvm::object::Binary
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)
Protected Attributes inherited from llvm::object::Binary

Detailed Description

Definition at line 60 of file ELFObjectFile.h.

Member Typedef Documentation

◆  elf_symbol_iterator_range

Definition at line 90 of file ELFObjectFile.h.

Constructor & Destructor Documentation

◆  ELFObjectFileBase()

ELFObjectFileBase::ELFObjectFileBase ( unsigned int Type,
MemoryBufferRef Source )
protected

Definition at line 59 of file ELFObjectFile.cpp.

References llvm::object::ObjectFile::ObjectFile().

Referenced by ELFSymbolRef.

Member Function Documentation

◆  classof()

bool llvm::object::ELFObjectFileBase::classof ( const Binary * v )
inlinestatic

Definition at line 99 of file ELFObjectFile.h.

◆  getBuildAttributes()

virtual Error llvm::object::ELFObjectFileBase::getBuildAttributes ( ELFAttributeParser & Attributes ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by setARMSubArch().

◆  getCrelDecodeProblem()

StringRef ELFObjectFileBase::getCrelDecodeProblem ( SectionRef Sec ) const

Definition at line 1067 of file ELFObjectFile.cpp.

References llvm::cast(), llvm::object::Binary::Data, llvm::dyn_cast(), llvm::object::SectionRef::getRawDataRefImpl(), and llvm::object::ObjectFile::SectionRef.

Referenced by getEIdentABIVersion().

◆  getDynamicSymbolIterators()

virtual elf_symbol_iterator_range llvm::object::ELFObjectFileBase::getDynamicSymbolIterators ( ) const
pure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by readDynsymVersions().

◆  getEIdentABIVersion()

virtual uint8_t llvm::object::ELFObjectFileBase::getEIdentABIVersion ( ) const
pure virtual

References getCrelDecodeProblem(), getPltEntries(), readBBAddrMap(), readDynsymVersions(), and llvm::object::ObjectFile::SectionRef.

◆  getEMachine()

virtual uint16_t llvm::object::ELFObjectFileBase::getEMachine ( ) const
pure virtual

Referenced by llvm::object::ELFObjectFile< ELF32LE >::getBuildAttributes(), getFeatures(), getPltEntries(), and tryGetCPUName().

◆  getEType()

virtual uint16_t llvm::object::ELFObjectFileBase::getEType ( ) const
pure virtual

◆  getFeatures()

Expected< SubtargetFeatures > ELFObjectFileBase::getFeatures ( ) const
overridevirtual

Implements llvm::object::ObjectFile.

Definition at line 419 of file ELFObjectFile.cpp.

References llvm::ELF::EM_ARM, llvm::ELF::EM_HEXAGON, llvm::ELF::EM_LOONGARCH, llvm::ELF::EM_MIPS, llvm::ELF::EM_RISCV, and getEMachine().

◆  getPlatformFlags()

virtual unsigned llvm::object::ELFObjectFileBase::getPlatformFlags ( ) const
pure virtual

Returns platform-specific object flags, if any.

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

References symbols().

Referenced by llvm::RuntimeDyldELF::processRelocationRef().

◆  getPltEntries()

std::vector< ELFPltEntry > ELFObjectFileBase::getPltEntries ( const MCSubtargetInfo & STI ) const

Definition at line 813 of file ELFObjectFile.cpp.

References llvm::Triple::aarch64, llvm::Triple::aarch64_be, llvm::append_range(), llvm::Triple::arm, llvm::Triple::armeb, llvm::arrayRefFromStringRef(), llvm::consumeError(), llvm::ELF::EM_386, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::Triple::getArch(), getEMachine(), llvm::object::BasicSymbolRef::getRawDataRefImpl(), llvm::Triple::hexagon, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::TargetRegistry::lookupTarget(), llvm::object::ObjectFile::makeTriple(), llvm::Triple::riscv32, llvm::Triple::riscv64, llvm::object::ObjectFile::SectionRef, llvm::object::ObjectFile::sections(), llvm::object::SymbolicFile::symbol_end(), T, llvm::Expected< T >::takeError(), llvm::Triple::thumb, llvm::Triple::thumbeb, llvm::Triple::x86, and llvm::Triple::x86_64.

Referenced by getEIdentABIVersion().

◆  getRelocationAddend()

virtual Expected< int64_t > llvm::object::ELFObjectFileBase::getRelocationAddend ( DataRefImpl Rel ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFRelocationRef::getAddend().

◆  getSectionFlags()

virtual uint64_t llvm::object::ELFObjectFileBase::getSectionFlags ( DataRefImpl Sec ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFSectionRef::getFlags().

◆  getSectionOffset()

virtual uint64_t llvm::object::ELFObjectFileBase::getSectionOffset ( DataRefImpl Sec ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFSectionRef::getOffset().

◆  getSectionType()

virtual uint32_t llvm::object::ELFObjectFileBase::getSectionType ( DataRefImpl Sec ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFSectionRef::getType().

◆  getSymbolBinding()

virtual uint8_t llvm::object::ELFObjectFileBase::getSymbolBinding ( DataRefImpl Symb ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFSymbolRef::getBinding().

◆  getSymbolELFType()

virtual uint8_t llvm::object::ELFObjectFileBase::getSymbolELFType ( DataRefImpl Symb ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFSymbolRef::getELFType().

◆  getSymbolOther()

virtual uint8_t llvm::object::ELFObjectFileBase::getSymbolOther ( DataRefImpl Symb ) const
protectedpure virtual

Implemented in ELFObjectFile< ELFT >, llvm::objcopy::elf::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELFT >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32BE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF32LE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64BE >, llvm::object::ELFObjectFile< ELF64LE >, llvm::object::ELFObjectFile< ELF64LE >, and llvm::object::ELFObjectFile< ELF64LE >.

Referenced by llvm::object::ELFSymbolRef::getOther().

◆  getSymbolSize()

virtual uint64_t llvm::object::ELFObjectFileBase::getSymbolSize ( DataRefImpl Symb ) const
protectedpure virtual

Referenced by llvm::object::ELFSymbolRef::getSize().

◆  readBBAddrMap()

Expected< std::vector< BBAddrMap > > ELFObjectFileBase::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.

When TextSectionIndex is specified, only returns the BB address maps corresponding to the section with that index. When PGOAnalysesis specified (PGOAnalyses is not nullptr), the vector is cleared then filled with extra PGO data. PGOAnalyses will always be the same length as the return value when it is requested assuming no error occurs. Upon failure, PGOAnalyses will be emptied.

Definition at line 1054 of file ELFObjectFile.cpp.

References llvm::cast(), llvm::dyn_cast(), and readBBAddrMapImpl().

Referenced by getEIdentABIVersion().

◆  readDynsymVersions()

Expected< std::vector< VersionEntry > > ELFObjectFileBase::readDynsymVersions ( ) const

Returns a vector containing a symbol version for each dynamic symbol.

Returns an empty vector if version sections do not exist.

Definition at line 1042 of file ELFObjectFile.cpp.

References llvm::cast(), llvm::dyn_cast(), getDynamicSymbolIterators(), and readDynsymVersionsImpl().

Referenced by getEIdentABIVersion().

◆  setARMSubArch()

void ELFObjectFileBase::setARMSubArch ( Triple & TheTriple ) const
overridevirtual

Reimplemented from llvm::object::ObjectFile.

Definition at line 719 of file ELFObjectFile.cpp.

References llvm::consumeError(), llvm::ARMBuildAttrs::CPU_arch, llvm::ARMBuildAttrs::CPU_arch_profile, getBuildAttributes(), llvm::Triple::getSubArch(), llvm::object::Binary::isLittleEndian(), llvm::Triple::isThumb(), llvm::ARMBuildAttrs::MicroControllerProfile, llvm::Triple::NoSubArch, llvm::Triple::setArchName(), llvm::ARMBuildAttrs::v4, llvm::ARMBuildAttrs::v4T, llvm::ARMBuildAttrs::v5T, llvm::ARMBuildAttrs::v5TE, llvm::ARMBuildAttrs::v5TEJ, llvm::ARMBuildAttrs::v6, llvm::ARMBuildAttrs::v6_M, llvm::ARMBuildAttrs::v6K, llvm::ARMBuildAttrs::v6KZ, llvm::ARMBuildAttrs::v6S_M, llvm::ARMBuildAttrs::v6T2, llvm::ARMBuildAttrs::v7, llvm::ARMBuildAttrs::v7E_M, llvm::ARMBuildAttrs::v8_1_M_Main, llvm::ARMBuildAttrs::v8_A, llvm::ARMBuildAttrs::v8_M_Base, llvm::ARMBuildAttrs::v8_M_Main, llvm::ARMBuildAttrs::v8_R, and llvm::ARMBuildAttrs::v9_A.

◆  symbols()

ELFObjectFileBase::elf_symbol_iterator_range llvm::object::ELFObjectFileBase::symbols ( ) const
inline

Definition at line 264 of file ELFObjectFile.h.

References llvm::object::SymbolicFile::symbol_begin(), and llvm::object::SymbolicFile::symbol_end().

Referenced by llvm::orc::getELFObjectFileSymbolInfo(), and getPlatformFlags().

◆  tryGetCPUName()

std::optional< StringRef > ELFObjectFileBase::tryGetCPUName ( ) const
overridevirtual

Reimplemented from llvm::object::ObjectFile.

Definition at line 436 of file ELFObjectFile.cpp.

References llvm::ELF::EM_AMDGPU, llvm::ELF::EM_BPF, llvm::ELF::EM_CUDA, llvm::ELF::EM_PPC, llvm::ELF::EM_PPC64, and getEMachine().

◆  ELFRelocationRef

friend class ELFRelocationRef
friend

Definition at line 61 of file ELFObjectFile.h.

References ELFRelocationRef.

Referenced by ELFRelocationRef.

◆  ELFSectionRef

friend class ELFSectionRef
friend

Definition at line 62 of file ELFObjectFile.h.

References ELFSectionRef.

Referenced by ELFSectionRef.

◆  ELFSymbolRef

friend class ELFSymbolRef
friend

Definition at line 63 of file ELFObjectFile.h.

References ELFObjectFileBase(), and ELFSymbolRef.

Referenced by ELFSymbolRef, and llvm::object::ELFObjectFile< ELF32LE >::toSymbolRef().


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

Generated on for LLVM by doxygen 1.14.0

AltStyle によって変換されたページ (->オリジナル) /