LLVM
15.0.0git
|
This class is the base class for all object file types. More...
#include "llvm/Object/ObjectFile.h"
Public Types | |
using | symbol_iterator_range = iterator_range< symbol_iterator > |
using | section_iterator_range = iterator_range< section_iterator > |
![]() | |
using | basic_symbol_iterator_range = iterator_range< basic_symbol_iterator > |
Friends | |
class | SymbolRef |
class | SectionRef |
class | RelocationRef |
Additional Inherited Members | |
![]() | |
enum | { ID_Archive, ID_MachOUniversalBinary, ID_COFFImportFile, ID_IR, ID_TapiUniversal, ID_TapiFile, ID_Minidump, ID_WinRes, 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_Wasm, ID_EndObjects } |
![]() | |
static unsigned int | getELFType (bool isLE, bool is64Bits) |
static unsigned int | getMachOType (bool isLE, bool is64Bits) |
![]() | |
MemoryBufferRef | Data |
This class is the base class for all object file types.
Concrete instances of this object are created by createObjectFile, which figures out which type to create.
Definition at line 228 of file ObjectFile.h.
Definition at line 326 of file ObjectFile.h.
Definition at line 318 of file ObjectFile.h.
|
protected |
Definition at line 43 of file ObjectFile.cpp.
|
delete |
|
delete |
|
inlineprotected |
Definition at line 234 of file ObjectFile.h.
References llvm::object::Binary::Data, and llvm::MemoryBufferRef::getBufferStart().
Referenced by llvm::object::COFFObjectFile::getDOSHeader(), llvm::object::COFFObjectFile::getRelocations(), llvm::object::COFFObjectFile::getRvaAndSizeAsBytes(), llvm::object::COFFObjectFile::getRvaPtr(), llvm::object::COFFObjectFile::getSectionContents(), llvm::object::COFFObjectFile::getSymbolAuxData(), llvm::object::COFFObjectFile::section_rel_begin(), llvm::object::COFFObjectFile::section_rel_end(), and llvm::object::COFFObjectFile::toSymb().
Definition at line 373 of file ObjectFile.h.
References llvm::object::Binary::isObject().
|
static |
Definition at line 1683 of file COFFObjectFile.cpp.
References llvm::object::COFFObjectFile::create(), and llvm::Object.
|
static |
Definition at line 70 of file ELFObjectFile.cpp.
References llvm::countTrailingZeros(), llvm::object::createError(), llvm::ELF::ELFCLASS32, llvm::ELF::ELFCLASS64, llvm::ELF::ELFDATA2LSB, llvm::ELF::ELFDATA2MSB, llvm::MemoryBufferRef::getBuffer(), llvm::MemoryBufferRef::getBufferStart(), and llvm::object::getElfArchType().
Referenced by llvm::jitlink::createLinkGraphFromELFObject_aarch64(), llvm::jitlink::createLinkGraphFromELFObject_riscv(), and llvm::jitlink::createLinkGraphFromELFObject_x86_64().
|
static |
Definition at line 4896 of file MachOObjectFile.cpp.
References llvm::object::MachOObjectFile::create(), llvm::MemoryBufferRef::getBuffer(), llvm::object::invalid_file_type, llvm::msf::Magic, and llvm::StringRef::slice().
Referenced by llvm::jitlink::createLinkGraphFromMachOObject_arm64(), llvm::jitlink::createLinkGraphFromMachOObject_x86_64(), and llvm::object::MachOUniversalBinary::ObjectForArch::getAsObjectFile().
|
inlinestatic |
Definition at line 369 of file ObjectFile.h.
References createObjectFile(), llvm::Object, and llvm::file_magic::unknown.
|
static |
|
static |
ObjectPath | The path to the object file. ObjectPath.isObject must return true. Create ObjectFile from path. |
Definition at line 187 of file ObjectFile.cpp.
References llvm::errorCodeToError(), llvm::ErrorOr< T >::get(), llvm::ErrorOr< T >::getError(), llvm::MemoryBuffer::getFile(), and move.
Referenced by createObjectFile(), llvm::NewArchiveMember::detectKindFromObject(), llvm::orc::RTDyldObjectLinkingLayer::emit(), llvm::MCJIT::generateCodeForModule(), llvm::orc::getObjectFileInterface(), LLVMCreateObjectFile(), llvm::xray::loadInstrumentationMap(), llvm::orc::SimpleCompiler::operator()(), and llvm::yaml::yaml2ObjectFile().
|
static |
Definition at line 56 of file WasmObjectFile.cpp.
|
static |
Definition at line 1125 of file XCOFFObjectFile.cpp.
|
inlinevirtual |
Reimplemented in llvm::object::ELFObjectFile< ELFT >.
Definition at line 314 of file ObjectFile.h.
|
pure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by llvm::symbolize::SymbolizableObjectFile::create(), llvm::DWARFContext::getArch(), llvm::object::getRelocationResolver(), loadObj(), llvm::RuntimeDyld::loadObject(), llvm::RuntimeDyldImpl::loadObjectImpl(), llvm::DWARFContext::loadRegisterInfo(), and makeTriple().
|
pure virtual |
The number of bytes used to represent an address in this object file format.
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by llvm::symbolize::SymbolizableObjectFile::create(), and llvm::object::getRelocationResolver().
|
inline |
Definition at line 305 of file ObjectFile.h.
References assert(), getCommonSymbolSizeImpl(), llvm::object::SymbolicFile::getSymbolFlags(), llvm::report_fatal_error(), llvm::object::BasicSymbolRef::SF_Common, and llvm::Expected< T >::takeError().
Referenced by llvm::object::SymbolRef::getCommonSize(), and getSymbolValue().
|
protectedpure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by getCommonSymbolSize().
|
pure virtual |
|
pure virtual |
|
protectedvirtual |
Reimplemented in llvm::object::ELFObjectFile< ELFT >.
Definition at line 100 of file ObjectFile.cpp.
References SectionRef.
Referenced by llvm::object::SectionRef::getRelocatedSection().
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
Reimplemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, and llvm::object::ELFObjectFile< ELFT >.
Definition at line 340 of file ObjectFile.h.
References llvm::errorCodeToError(), and llvm::object::parse_failed.
|
protectedpure virtual |
|
protectedvirtual |
Reimplemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Definition at line 77 of file ObjectFile.cpp.
Referenced by llvm::object::SymbolRef::getAlignment().
|
protectedpure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by llvm::object::SymbolRef::getName(), and printSymbolName().
|
protectedpure virtual |
|
protectedpure virtual |
|
protected |
Definition at line 56 of file ObjectFile.cpp.
References E, getCommonSymbolSize(), llvm::object::SymbolicFile::getSymbolFlags(), getSymbolValueImpl(), move, llvm::Ref, llvm::object::BasicSymbolRef::SF_Common, and llvm::object::BasicSymbolRef::SF_Undefined.
Referenced by llvm::object::WasmObjectFile::getSymbolAddress(), llvm::object::MachOObjectFile::getSymbolAddress(), llvm::object::COFFObjectFile::getSymbolAddress(), and llvm::object::SymbolRef::getValue().
|
protectedpure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by getSymbolValue().
|
protectedvirtual |
Reimplemented in llvm::object::ELFObjectFile< ELFT >.
Definition at line 93 of file ObjectFile.cpp.
References isSectionData().
Referenced by llvm::object::SectionRef::isBerkeleyData().
|
protectedvirtual |
Reimplemented in llvm::object::ELFObjectFile< ELFT >.
Definition at line 89 of file ObjectFile.cpp.
References isSectionText().
Referenced by llvm::object::SectionRef::isBerkeleyText().
|
protectedvirtual |
Reimplemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, and llvm::object::ELFObjectFile< ELFT >.
Definition at line 97 of file ObjectFile.cpp.
Referenced by llvm::object::SectionRef::isDebugSection().
bool ObjectFile::isReflectionSectionStrippable | ( | llvm::binaryformat::Swift5ReflectionSectionKind | ReflectionSectionKind | ) | const |
True if the reflection section can be stripped by the linker.
Definition at line 203 of file ObjectFile.cpp.
|
pure virtual |
True if this is a relocatable object (.o/.obj).
Implemented in llvm::object::COFFObjectFile, llvm::object::MachOObjectFile, llvm::object::XCOFFObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
|
protectedvirtual |
Reimplemented in llvm::object::MachOObjectFile.
Definition at line 79 of file ObjectFile.cpp.
References llvm::consumeError(), getSectionName(), and llvm::Expected< T >::takeError().
Referenced by llvm::object::SectionRef::isBitcode().
|
protectedpure virtual |
|
protectedpure virtual |
|
protectedpure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by isBerkeleyData(), and llvm::object::SectionRef::isData().
|
protectedvirtual |
Reimplemented in llvm::object::MachOObjectFile.
Definition at line 87 of file ObjectFile.cpp.
Referenced by llvm::object::SectionRef::isStripped().
|
protectedpure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by isBerkeleyText(), and llvm::object::SectionRef::isText().
|
protectedpure virtual |
Triple ObjectFile::makeTriple | ( | ) | const |
Create a triple from the data in this object file.
Definition at line 104 of file ObjectFile.cpp.
References llvm::Triple::AIX, llvm::Triple::arm, llvm::Triple::armeb, getArch(), llvm::object::Binary::isCOFF(), llvm::object::Binary::isMachO(), llvm::object::Binary::isXCOFF(), llvm::Triple::MachO, llvm::Triple::setArch(), setARMSubArch(), llvm::Triple::setObjectFormat(), llvm::Triple::setOS(), llvm::Triple::setTriple(), llvm::Triple::thumb, and llvm::Triple::XCOFF.
|
inlinevirtual |
Maps a debug section name to a standard DWARF section name.
Reimplemented in llvm::object::COFFObjectFile, llvm::object::MachOObjectFile, and llvm::object::XCOFFObjectFile.
Definition at line 348 of file ObjectFile.h.
|
inlineprotectedvirtual |
Reimplemented in llvm::object::MachOObjectFile.
Definition at line 295 of file ObjectFile.h.
References llvm::binaryformat::unknown.
|
protectedpure virtual |
|
protectedpure virtual |
|
overrideprotectedvirtual |
Implements llvm::object::SymbolicFile.
Definition at line 69 of file ObjectFile.cpp.
References getSymbolName(), and llvm::Error::success().
|
pure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by llvm::RuntimeDyldImpl::computeGOTSize(), llvm::RuntimeDyldImpl::computeSectionStubBufSize(), llvm::RuntimeDyldImpl::computeTotalAllocSize(), llvm::RuntimeDyldELF::finalizeLoad(), and sections().
|
pure virtual |
Implemented in llvm::object::COFFObjectFile, llvm::object::XCOFFObjectFile, llvm::object::MachOObjectFile, llvm::object::ELFObjectFile< ELFT >, and llvm::object::WasmObjectFile.
Referenced by llvm::RuntimeDyldImpl::computeGOTSize(), llvm::RuntimeDyldImpl::computeSectionStubBufSize(), llvm::RuntimeDyldImpl::computeTotalAllocSize(), llvm::RuntimeDyldELF::finalizeLoad(), getSymbolInfo(), llvm::RuntimeDyldCOFFI386::processRelocationRef(), llvm::RuntimeDyldCOFFThumb::processRelocationRef(), llvm::RuntimeDyldCOFFAArch64::processRelocationRef(), llvm::RuntimeDyldCOFFX86_64::processRelocationRef(), llvm::RuntimeDyldELF::processRelocationRef(), and sections().
|
protectedpure virtual |
|
protectedpure virtual |
|
inline |
Definition at line 327 of file ObjectFile.h.
References section_begin(), and section_end().
Referenced by llvm::object::BindRebaseSegInfo::BindRebaseSegInfo(), llvm::symbolize::SymbolizableObjectFile::create(), llvm::RuntimeDyldMachOCRTPBase< RuntimeDyldMachOX86_64 >::finalizeLoad(), llvm::object::IRObjectFile::findBitcodeInObject(), getCountersSection(), llvm::orc::getELFObjectFileSymbolInfo(), llvm::orc::getMachOObjectFileSymbolInfo(), llvm::remarks::getRemarksSectionContents(), llvm::object::COFFObjectFile::getRvaAndSizeAsBytes(), llvm::object::COFFObjectFile::getRvaPtr(), llvm::object::MachOObjectFile::getSection(), getUUID(), and loadObj().
|
inlinevirtual |
Reimplemented in llvm::object::ELFObjectFileBase.
Definition at line 339 of file ObjectFile.h.
Referenced by makeTriple().
|
inline |
Definition at line 319 of file ObjectFile.h.
References llvm::object::SymbolicFile::symbol_begin(), and llvm::object::SymbolicFile::symbol_end().
Referenced by llvm::object::MachOObjectFile::checkSymbolTable(), llvm::gsym::ObjectFileTransformer::convert(), llvm::orc::getGenericObjectFileSymbolInfo(), and llvm::orc::getMachOObjectFileSymbolInfo().
Reimplemented in llvm::object::ELFObjectFileBase.
Definition at line 338 of file ObjectFile.h.
References None.
|
friend |
Definition at line 286 of file ObjectFile.h.
Referenced by llvm::object::MachOObjectFile::extrel_begin(), llvm::object::MachOObjectFile::extrel_end(), llvm::object::MachOObjectFile::locrel_begin(), llvm::object::MachOObjectFile::locrel_end(), llvm::object::WasmObjectFile::section_rel_begin(), llvm::object::COFFObjectFile::section_rel_begin(), llvm::object::WasmObjectFile::section_rel_end(), and llvm::object::COFFObjectFile::section_rel_end().
|
friend |
Definition at line 260 of file ObjectFile.h.
Referenced by llvm::object::MachOObjectFile::getAnyRelocationSection(), getRelocatedSection(), llvm::object::MachOObjectFile::getRelocationRelocatedSection(), llvm::object::MachOObjectFile::getSection(), llvm::object::WasmObjectFile::getSymbolSection(), llvm::object::COFFObjectFile::getSymbolSection(), llvm::object::WasmObjectFile::section_begin(), llvm::object::MachOObjectFile::section_begin(), llvm::object::COFFObjectFile::section_begin(), llvm::object::WasmObjectFile::section_end(), llvm::object::MachOObjectFile::section_end(), llvm::object::COFFObjectFile::section_end(), and llvm::object::ELFObjectFile< ELFT >::toSectionRef().
|
friend |
Definition at line 246 of file ObjectFile.h.
Referenced by llvm::object::WasmObjectFile::getRelocationSymbol(), llvm::object::MachOObjectFile::getRelocationSymbol(), llvm::object::COFFObjectFile::getRelocationSymbol(), llvm::object::MachOObjectFile::getSymbolByIndex(), llvm::object::MachOObjectFile::symbol_begin(), llvm::object::COFFObjectFile::symbol_begin(), llvm::object::MachOObjectFile::symbol_end(), and llvm::object::COFFObjectFile::symbol_end().