LLVM 22.0.0git
llvm::object::ELFObjectFileBase Class Referenceabstract

#include "llvm/Object/ELFObjectFile.h"

Inheritance diagram for llvm::object::ELFObjectFileBase:
[legend]

Public Types

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>

Public Member Functions

virtual elf_symbol_iterator_range getDynamicSymbolIterators () const =0
virtual unsigned getPlatformFlags () const =0
 Returns platform-specific object flags, if any.
elf_symbol_iterator_range symbols () const
Expected< SubtargetFeaturesgetFeatures () const override
std::optional< StringReftryGetCPUName () const override
void setARMSubArch (Triple &TheTriple) const override
virtual uint16_t getEType () const =0
virtual uint16_t getEMachine () const =0
virtual uint8_t getEIdentABIVersion () const =0
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
virtual std::vector< SectionRefdynamic_relocation_sections () const
symbol_iterator_range symbols () const
virtual section_iterator section_begin () const =0
virtual section_iterator section_end () const =0
section_iterator_range sections () const
virtual bool hasDebugInfo () const
virtual uint8_t getBytesInAddress () const =0
 The number of bytes used to represent an address in this object file format.
virtual StringRef getFileFormatName () const =0
virtual Triple::ArchType getArch () const =0
virtual Triple::OSType getOS () const
virtual Expected< uint64_tgetStartAddress () 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.
virtual bool isRelocatableObject () const =0
 True if this is a relocatable object (.o/.obj).
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
virtual void moveSymbolNext (DataRefImpl &Symb) const =0
virtual Expected< uint32_tgetSymbolFlags (DataRefImpl Symb) const =0
virtual basic_symbol_iterator symbol_begin () const =0
virtual basic_symbol_iterator symbol_end () const =0
virtual bool is64Bit () const =0
basic_symbol_iterator_range symbols () const
Public Member Functions inherited from llvm::object::Binary
 Binary ()=delete
 Binary (const Binary &other)=delete
virtual ~Binary ()
virtual Error initContent ()
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 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

 ELFObjectFileBase (unsigned int Type, MemoryBufferRef Source)
virtual uint64_t getSymbolSize (DataRefImpl Symb) const =0
virtual uint8_t getSymbolBinding (DataRefImpl Symb) const =0
virtual uint8_t getSymbolOther (DataRefImpl Symb) const =0
virtual uint8_t getSymbolELFType (DataRefImpl Symb) const =0
virtual uint32_t getSectionType (DataRefImpl Sec) const =0
virtual uint64_t getSectionFlags (DataRefImpl Sec) const =0
virtual uint64_t getSectionOffset (DataRefImpl Sec) const =0
virtual Expected< int64_t > getRelocationAddend (DataRefImpl Rel) const =0
virtual Error getBuildAttributes (ELFAttributeParser &Attributes) const =0
Protected Member Functions inherited from llvm::object::ObjectFile
 ObjectFile (unsigned int Type, MemoryBufferRef Source)
const uint8_tbase () const
virtual Expected< StringRefgetSymbolName (DataRefImpl Symb) const =0
Error printSymbolName (raw_ostream &OS, DataRefImpl Symb) const override
virtual Expected< uint64_tgetSymbolAddress (DataRefImpl Symb) const =0
virtual uint64_t getSymbolValueImpl (DataRefImpl Symb) const =0
virtual uint32_t getSymbolAlignment (DataRefImpl Symb) const
virtual uint64_t getCommonSymbolSizeImpl (DataRefImpl Symb) const =0
virtual Expected< SymbolRef::TypegetSymbolType (DataRefImpl Symb) const =0
virtual Expected< section_iteratorgetSymbolSection (DataRefImpl Symb) const =0
virtual void moveSectionNext (DataRefImpl &Sec) const =0
virtual Expected< StringRefgetSectionName (DataRefImpl Sec) const =0
virtual uint64_t getSectionAddress (DataRefImpl Sec) const =0
virtual uint64_t getSectionIndex (DataRefImpl Sec) const =0
virtual uint64_t getSectionSize (DataRefImpl Sec) const =0
virtual Expected< ArrayRef< uint8_t > > getSectionContents (DataRefImpl Sec) const =0
virtual uint64_t getSectionAlignment (DataRefImpl Sec) const =0
virtual bool isSectionCompressed (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 bool isSectionVirtual (DataRefImpl Sec) const =0
virtual bool isSectionBitcode (DataRefImpl Sec) const
virtual bool isSectionStripped (DataRefImpl Sec) const
virtual bool isBerkeleyText (DataRefImpl Sec) const
virtual bool isBerkeleyData (DataRefImpl Sec) const
virtual bool isDebugSection (DataRefImpl Sec) const
virtual relocation_iterator section_rel_begin (DataRefImpl Sec) const =0
virtual relocation_iterator section_rel_end (DataRefImpl Sec) const =0
virtual Expected< section_iteratorgetRelocatedSection (DataRefImpl Sec) const
virtual void moveRelocationNext (DataRefImpl &Rel) const =0
virtual uint64_t getRelocationOffset (DataRefImpl Rel) const =0
virtual symbol_iterator getRelocationSymbol (DataRefImpl Rel) const =0
virtual uint64_t getRelocationType (DataRefImpl Rel) const =0
virtual void getRelocationTypeName (DataRefImpl Rel, SmallVectorImpl< char > &Result) const =0
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)

Friends

class ELFRelocationRef
class ELFSectionRef
class ELFSymbolRef

Additional Inherited Members

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

Detailed Description

Definition at line 60 of file ELFObjectFile.h.

Member Typedef Documentation

◆ elf_symbol_iterator_range

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()

◆ getCrelDecodeProblem()

◆ getDynamicSymbolIterators()

◆ getEIdentABIVersion()

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

◆ getEMachine()

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

◆ getEType()

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

◆ getFeatures()

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

◆ getPlatformFlags()

◆ getPltEntries()

◆ getRelocationAddend()

◆ getSectionFlags()

◆ getSectionOffset()

◆ getSectionType()

◆ getSymbolBinding()

◆ getSymbolELFType()

◆ getSymbolOther()

◆ getSymbolSize()

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

◆ 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()

◆ symbols()

◆ tryGetCPUName()

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

◆ 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

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