class COFFObjectFile

Declaration

class COFFObjectFile : public ObjectFile { /* full declaration omitted */ };

Description

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.

Declared at: llvm/include/llvm/Object/COFF.h:799

Inherits from: ObjectFile

Member Variables

private const llvm::object::coff_file_header* COFFHeader
private const llvm::object::coff_bigobj_file_header* COFFBigObjHeader
private const llvm::object::pe32_header* PE32Header
private const llvm::object::pe32plus_header* PE32PlusHeader
private const llvm::object::data_directory* DataDirectory
private const llvm::object::coff_section* SectionTable
private const llvm::object::coff_symbol16* SymbolTable16
private const llvm::object::coff_symbol32* SymbolTable32
private const char* StringTable
private uint32_t StringTableSize
private const llvm::object:: coff_import_directory_table_entry* ImportDirectory
private const llvm::object:: delay_import_directory_table_entry* DelayImportDirectory
private uint32_t NumberOfDelayImportDirectory
private const llvm::object::export_directory_table_entry* ExportDirectory
private const llvm::object::coff_base_reloc_block_header* BaseRelocHeader
private const llvm::object::coff_base_reloc_block_header* BaseRelocEnd
private const llvm::object::debug_directory* DebugDirectoryBegin
private const llvm::object::debug_directory* DebugDirectoryEnd
private const llvm::object::coff_tls_directory32* TLSDirectory32
private const llvm::object::coff_tls_directory64* TLSDirectory64
private const void* LoadConfig = nullptr

Inherited from Binary:

protected Data

Method Overview

Inherited from ObjectFile:

Inherited from SymbolicFile:

Inherited from Binary:

Methods

COFFObjectFile(llvm::MemoryBufferRef Object)

Declared at: llvm/include/llvm/Object/COFF.h:801

Parameters

llvm::MemoryBufferRef Object

llvm::object::base_reloc_iterator
base_reloc_begin() const

Declared at: llvm/include/llvm/Object/COFF.h:998

llvm::object::base_reloc_iterator base_reloc_end()
    const

Declared at: llvm/include/llvm/Object/COFF.h:999

iterator_range<llvm::object::base_reloc_iterator>
base_relocs() const

Declared at: llvm/include/llvm/Object/COFF.h:1011

static bool classof(const llvm::object::Binary* v)

Declared at: llvm/include/llvm/Object/COFF.h:1112

Parameters

const llvm::object::Binary* v

static Expected<std::unique_ptr<COFFObjectFile>>
create(llvm::MemoryBufferRef Object)

Declared at: llvm/include/llvm/Object/COFF.h:849

Parameters

llvm::MemoryBufferRef Object

iterator_range<
    const llvm::object::debug_directory*>
debug_directories() const

Declared at: llvm/include/llvm/Object/COFF.h:1012

const llvm::object::debug_directory*
debug_directory_begin() const

Declared at: llvm/include/llvm/Object/COFF.h:1000

const llvm::object::debug_directory*
debug_directory_end() const

Declared at: llvm/include/llvm/Object/COFF.h:1003

iterator_range<
    llvm::object::delay_import_directory_iterator>
delay_import_directories() const

Declared at: llvm/include/llvm/Object/COFF.h:1009

llvm::object::delay_import_directory_iterator
delay_import_directory_begin() const

Declared at: llvm/include/llvm/Object/COFF.h:994

llvm::object::delay_import_directory_iterator
delay_import_directory_end() const

Declared at: llvm/include/llvm/Object/COFF.h:995

iterator_range<
    llvm::object::export_directory_iterator>
export_directories() const

Declared at: llvm/include/llvm/Object/COFF.h:1010

llvm::object::export_directory_iterator
export_directory_begin() const

Declared at: llvm/include/llvm/Object/COFF.h:996

llvm::object::export_directory_iterator
export_directory_end() const

Declared at: llvm/include/llvm/Object/COFF.h:997

Triple::ArchType getArch() const

Declared at: llvm/include/llvm/Object/COFF.h:988

template <typename T>
llvm::Error getAuxSymbol(uint32_t index,
                         const T*& Res) const

Declared at: llvm/include/llvm/Object/COFF.h:1050

Templates

T

Parameters

uint32_t index
const T*& Res

uint8_t getBytesInAddress() const

Description

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

Declared at: llvm/include/llvm/Object/COFF.h:986

const llvm::object::coff_bigobj_file_header*
getCOFFBigObjHeader() const

Declared at: llvm/include/llvm/Object/COFF.h:1030

const llvm::object::coff_file_header*
getCOFFHeader() const

Declared at: llvm/include/llvm/Object/COFF.h:1029

const llvm::object::coff_relocation*
getCOFFRelocation(
    const llvm::object::RelocationRef& Reloc)
    const

Declared at: llvm/include/llvm/Object/COFF.h:982

Parameters

const llvm::object::RelocationRef& Reloc

const llvm::object::coff_section* getCOFFSection(
    const llvm::object::SectionRef& Section) const

Declared at: llvm/include/llvm/Object/COFF.h:979

Parameters

const llvm::object::SectionRef& Section

llvm::object::COFFSymbolRef getCOFFSymbol(
    const llvm::object::DataRefImpl& Ref) const

Declared at: llvm/include/llvm/Object/COFF.h:980

Parameters

const llvm::object::DataRefImpl& Ref

llvm::object::COFFSymbolRef getCOFFSymbol(
    const llvm::object::SymbolRef& Symbol) const

Declared at: llvm/include/llvm/Object/COFF.h:981

Parameters

const llvm::object::SymbolRef& Symbol

uint16_t getCharacteristics() const

Declared at: llvm/include/llvm/Object/COFF.h:877

uint64_t getCommonSymbolSizeImpl(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:945

Parameters

llvm::object::DataRefImpl Symb

const llvm::object::dos_header* getDOSHeader()
    const

Declared at: llvm/include/llvm/Object/COFF.h:1023

const llvm::object::data_directory*
getDataDirectory(uint32_t index) const

Declared at: llvm/include/llvm/Object/COFF.h:1036

Parameters

uint32_t index

llvm::Error getDebugPDBInfo(
    const codeview::DebugInfo*& Info,
    llvm::StringRef& PDBFileName) const

Description

Get PDB information from an executable. If the information is not present, Info will be set to nullptr and PDBFileName will be empty. An error is returned only on corrupt object files. Convenience accessor that can be used if the debug directory is not already handy.

Declared at: llvm/include/llvm/Object/COFF.h:1104

Parameters

const codeview::DebugInfo*& Info
llvm::StringRef& PDBFileName

llvm::Error getDebugPDBInfo(
    const llvm::object::debug_directory* DebugDir,
    const codeview::DebugInfo*& Info,
    llvm::StringRef& PDBFileName) const

Description

Get PDB information out of a codeview debug directory entry.

Declared at: llvm/include/llvm/Object/COFF.h:1096

Parameters

const llvm::object::debug_directory* DebugDir
const codeview::DebugInfo*& Info
llvm::StringRef& PDBFileName

llvm::SubtargetFeatures getFeatures() const

Declared at: llvm/include/llvm/Object/COFF.h:990

llvm::StringRef getFileFormatName() const

Declared at: llvm/include/llvm/Object/COFF.h:987

llvm::Error getHintName(
    uint32_t Rva,
    uint16_t& Hint,
    llvm::StringRef& Name) const

Declared at: llvm/include/llvm/Object/COFF.h:1092

Parameters

uint32_t Rva
uint16_t& Hint
llvm::StringRef& Name

uint64_t getImageBase() const

Declared at: llvm/include/llvm/Object/COFF.h:1080

const llvm::object::coff_load_configuration32*
getLoadConfig32() const

Declared at: llvm/include/llvm/Object/COFF.h:928

const llvm::object::coff_load_configuration64*
getLoadConfig64() const

Declared at: llvm/include/llvm/Object/COFF.h:933

uint16_t getMachine() const

Declared at: llvm/include/llvm/Object/COFF.h:859

uint32_t getNumberOfSections() const

Declared at: llvm/include/llvm/Object/COFF.h:895

uint32_t getNumberOfSymbols() const

Declared at: llvm/include/llvm/Object/COFF.h:920

const llvm::object::pe32_header* getPE32Header()
    const

Declared at: llvm/include/llvm/Object/COFF.h:1033

const llvm::object::pe32plus_header*
getPE32PlusHeader() const

Declared at: llvm/include/llvm/Object/COFF.h:1034

uint32_t getPointerToSymbolTable() const

Declared at: llvm/include/llvm/Object/COFF.h:903

uint32_t getRawNumberOfSymbols() const

Declared at: llvm/include/llvm/Object/COFF.h:912

uint64_t getRelocationOffset(
    llvm::object::DataRefImpl Rel) const

Declared at: llvm/include/llvm/Object/COFF.h:967

Parameters

llvm::object::DataRefImpl Rel

llvm::object::symbol_iterator getRelocationSymbol(
    llvm::object::DataRefImpl Rel) const

Declared at: llvm/include/llvm/Object/COFF.h:968

Parameters

llvm::object::DataRefImpl Rel

uint64_t getRelocationType(
    llvm::object::DataRefImpl Rel) const

Declared at: llvm/include/llvm/Object/COFF.h:969

Parameters

llvm::object::DataRefImpl Rel

llvm::StringRef getRelocationTypeName(
    uint16_t Type) const

Declared at: llvm/include/llvm/Object/COFF.h:937

Parameters

uint16_t Type

void getRelocationTypeName(
    llvm::object::DataRefImpl Rel,
    SmallVectorImpl<char>& Result) const

Declared at: llvm/include/llvm/Object/COFF.h:970

Parameters

llvm::object::DataRefImpl Rel
SmallVectorImpl<char>& Result

ArrayRef<llvm::object::coff_relocation>
getRelocations(
    const llvm::object::coff_section* Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:1073

Parameters

const llvm::object::coff_section* Sec

llvm::Error getRvaAndSizeAsBytes(
    uint32_t RVA,
    uint32_t Size,
    ArrayRef<uint8_t>& Contents,
    const char* ErrorContext = nullptr) const

Description

Given an RVA base and size, returns a valid array of bytes or an error code if the RVA and size is not contained completely within a valid section.

Declared at: llvm/include/llvm/Object/COFF.h:1088

Parameters

uint32_t RVA
uint32_t Size
ArrayRef<uint8_t>& Contents
const char* ErrorContext = nullptr

llvm::Error getRvaPtr(
    uint32_t Rva,
    uintptr_t& Res,
    const char* ErrorContext = nullptr) const

Declared at: llvm/include/llvm/Object/COFF.h:1082

Parameters

uint32_t Rva
uintptr_t& Res
const char* ErrorContext = nullptr

Expected<const llvm::object::coff_section*>
getSection(int32_t index) const

Declared at: llvm/include/llvm/Object/COFF.h:1037

Parameters

int32_t index

uint64_t getSectionAddress(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:951

Parameters

llvm::object::DataRefImpl Sec

uint64_t getSectionAlignment(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:956

Parameters

llvm::object::DataRefImpl Sec

Expected<ArrayRef<uint8_t>> getSectionContents(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:955

Parameters

llvm::object::DataRefImpl Sec

llvm::Error getSectionContents(
    const llvm::object::coff_section* Sec,
    ArrayRef<uint8_t>& Res) const

Declared at: llvm/include/llvm/Object/COFF.h:1077

Parameters

const llvm::object::coff_section* Sec
ArrayRef<uint8_t>& Res

unsigned int getSectionID(
    llvm::object::SectionRef Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:983

Parameters

llvm::object::SectionRef Sec

uint64_t getSectionIndex(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:952

Parameters

llvm::object::DataRefImpl Sec

Expected<llvm::StringRef> getSectionName(
    const llvm::object::coff_section* Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:1075

Parameters

const llvm::object::coff_section* Sec

Expected<llvm::StringRef> getSectionName(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:950

Parameters

llvm::object::DataRefImpl Sec

uint64_t getSectionSize(
    const llvm::object::coff_section* Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:1076

Parameters

const llvm::object::coff_section* Sec

uint64_t getSectionSize(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:953

Parameters

llvm::object::DataRefImpl Sec

uint16_t getSizeOfOptionalHeader() const

Declared at: llvm/include/llvm/Object/COFF.h:867

Expected<uint64_t> getStartAddress() const

Declared at: llvm/include/llvm/Object/COFF.h:989

Expected<llvm::StringRef> getString(
    uint32_t offset) const

Declared at: llvm/include/llvm/Object/COFF.h:828

Parameters

uint32_t offset

uint32_t getStringTableSize() const

Declared at: llvm/include/llvm/Object/COFF.h:926

Expected<llvm::object::COFFSymbolRef> getSymbol(
    uint32_t index) const

Declared at: llvm/include/llvm/Object/COFF.h:1039

Parameters

uint32_t index

Expected<uint64_t> getSymbolAddress(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:942

Parameters

llvm::object::DataRefImpl Symb

uint32_t getSymbolAlignment(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:943

Parameters

llvm::object::DataRefImpl Symb

ArrayRef<uint8_t> getSymbolAuxData(
    llvm::object::COFFSymbolRef Symbol) const

Declared at: llvm/include/llvm/Object/COFF.h:1061

Parameters

llvm::object::COFFSymbolRef Symbol

Expected<uint32_t> getSymbolFlags(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:946

Parameters

llvm::object::DataRefImpl Symb

uint32_t getSymbolIndex(
    llvm::object::COFFSymbolRef Symbol) const

Declared at: llvm/include/llvm/Object/COFF.h:1063

Parameters

llvm::object::COFFSymbolRef Symbol

Expected<llvm::StringRef> getSymbolName(
    const llvm::object::coff_symbol_generic*
        Symbol) const

Declared at: llvm/include/llvm/Object/COFF.h:1059

Parameters

const llvm::object::coff_symbol_generic* Symbol

Expected<llvm::StringRef> getSymbolName(
    llvm::object::COFFSymbolRef Symbol) const

Declared at: llvm/include/llvm/Object/COFF.h:1058

Parameters

llvm::object::COFFSymbolRef Symbol

Expected<llvm::StringRef> getSymbolName(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:941

Parameters

llvm::object::DataRefImpl Symb

Expected<llvm::object::section_iterator>
getSymbolSection(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:948

Parameters

llvm::object::DataRefImpl Symb

unsigned int getSymbolSectionID(
    llvm::object::SymbolRef Sym) const

Declared at: llvm/include/llvm/Object/COFF.h:984

Parameters

llvm::object::SymbolRef Sym

uintptr_t getSymbolTable() const

Declared at: llvm/include/llvm/Object/COFF.h:851

size_t getSymbolTableEntrySize() const

Declared at: llvm/include/llvm/Object/COFF.h:1065

Expected<SymbolRef::Type> getSymbolType(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:947

Parameters

llvm::object::DataRefImpl Symb

uint64_t getSymbolValueImpl(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:944

Parameters

llvm::object::DataRefImpl Symb

const llvm::object::coff_tls_directory32*
getTLSDirectory32() const

Declared at: llvm/include/llvm/Object/COFF.h:1016

const llvm::object::coff_tls_directory64*
getTLSDirectory64() const

Declared at: llvm/include/llvm/Object/COFF.h:1019

uint32_t getTimeDateStamp() const

Declared at: llvm/include/llvm/Object/COFF.h:887

llvm::Error getVaPtr(uint64_t VA,
                     uintptr_t& Res) const

Declared at: llvm/include/llvm/Object/COFF.h:1081

Parameters

uint64_t VA
uintptr_t& Res

iterator_range<
    llvm::object::import_directory_iterator>
import_directories() const

Declared at: llvm/include/llvm/Object/COFF.h:1007

llvm::object::import_directory_iterator
import_directory_begin() const

Declared at: llvm/include/llvm/Object/COFF.h:992

llvm::object::import_directory_iterator
import_directory_end() const

Declared at: llvm/include/llvm/Object/COFF.h:993

llvm::Error initBaseRelocPtr()

Declared at: llvm/include/llvm/Object/COFF.h:842

llvm::Error initDebugDirectoryPtr()

Declared at: llvm/include/llvm/Object/COFF.h:843

llvm::Error initDelayImportTablePtr()

Declared at: llvm/include/llvm/Object/COFF.h:840

llvm::Error initExportTablePtr()

Declared at: llvm/include/llvm/Object/COFF.h:841

llvm::Error initImportTablePtr()

Declared at: llvm/include/llvm/Object/COFF.h:839

llvm::Error initLoadConfigPtr()

Declared at: llvm/include/llvm/Object/COFF.h:845

llvm::Error initSymbolTablePtr()

Declared at: llvm/include/llvm/Object/COFF.h:838

llvm::Error initTLSDirectoryPtr()

Declared at: llvm/include/llvm/Object/COFF.h:844

llvm::Error initialize()

Declared at: llvm/include/llvm/Object/COFF.h:836

bool is64() const

Declared at: llvm/include/llvm/Object/COFF.h:1108

bool isDebugSection(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:962

Parameters

llvm::object::DataRefImpl Sec

bool isRelocatableObject() const

Description

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

Declared at: llvm/include/llvm/Object/COFF.h:1107

bool isSectionBSS(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:960

Parameters

llvm::object::DataRefImpl Sec

bool isSectionCompressed(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:957

Parameters

llvm::object::DataRefImpl Sec

bool isSectionData(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:959

Parameters

llvm::object::DataRefImpl Sec

bool isSectionText(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:958

Parameters

llvm::object::DataRefImpl Sec

bool isSectionVirtual(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:961

Parameters

llvm::object::DataRefImpl Sec

llvm::StringRef mapDebugSectionName(
    llvm::StringRef Name) const

Description

Maps a debug section name to a standard DWARF section name.

Declared at: llvm/include/llvm/Object/COFF.h:1110

Parameters

llvm::StringRef Name

void moveRelocationNext(
    llvm::object::DataRefImpl& Rel) const

Declared at: llvm/include/llvm/Object/COFF.h:966

Parameters

llvm::object::DataRefImpl& Rel

void moveSectionNext(
    llvm::object::DataRefImpl& Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:949

Parameters

llvm::object::DataRefImpl& Sec

void moveSymbolNext(
    llvm::object::DataRefImpl& Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:940

Parameters

llvm::object::DataRefImpl& Symb

llvm::object::section_iterator section_begin()
    const

Declared at: llvm/include/llvm/Object/COFF.h:976

llvm::object::section_iterator section_end() const

Declared at: llvm/include/llvm/Object/COFF.h:977

llvm::object::relocation_iterator
section_rel_begin(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:963

Parameters

llvm::object::DataRefImpl Sec

llvm::object::relocation_iterator section_rel_end(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:964

Parameters

llvm::object::DataRefImpl Sec

llvm::object::basic_symbol_iterator symbol_begin()
    const

Declared at: llvm/include/llvm/Object/COFF.h:974

llvm::object::basic_symbol_iterator symbol_end()
    const

Declared at: llvm/include/llvm/Object/COFF.h:975

const llvm::object::coff_relocation* toRel(
    llvm::object::DataRefImpl Rel) const

Declared at: llvm/include/llvm/Object/COFF.h:833

Parameters

llvm::object::DataRefImpl Rel

const llvm::object::coff_section* toSec(
    llvm::object::DataRefImpl Sec) const

Declared at: llvm/include/llvm/Object/COFF.h:832

Parameters

llvm::object::DataRefImpl Sec

template <typename coff_symbol_type>
const coff_symbol_type* toSymb(
    llvm::object::DataRefImpl Symb) const

Declared at: llvm/include/llvm/Object/COFF.h:831

Templates

coff_symbol_type

Parameters

llvm::object::DataRefImpl Symb