class MCObjectWriter

Declaration

class MCObjectWriter { /* full declaration omitted */ };

Description

Defines the object file and target independent interfaces used by the assembler backend to write native file format object files. The object writer contains a few callbacks used by the assembler to allow the object writer to modify the assembler data structures at appropriate points. Once assembly is complete, the object writer is given the MCAssembler instance, which contains all the symbol and section data which should be emitted as part of writeObject().

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:34

Member Variables

protected std::vector<const MCSymbol*> AddrsigSyms
protected bool EmitAddrsigSection = false

Method Overview

Methods

MCObjectWriter()

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:39

MCObjectWriter(const llvm::MCObjectWriter&)

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:42

Parameters

const llvm::MCObjectWriter&

void addAddrsigSymbol(const llvm::MCSymbol* Sym)

Description

Record the given symbol in the address-significance table to be written diring writeObject().

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:104

Parameters

const llvm::MCSymbol* Sym

void emitAddrsigSection()

Description

Tell the object writer to emit an address-significance table during writeObject(). If this function is not called, all symbols are treated as address-significant.

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:98

virtual void executePostLayoutBinding(
    llvm::MCAssembler& Asm,
    const llvm::MCAsmLayout& Layout)

Description

Perform any late binding of symbols (for example, to assign symbol indices for use when generating relocations). This routine is called by the assembler after layout and relaxation is complete.

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:57

Parameters

llvm::MCAssembler& Asm
const llvm::MCAsmLayout& Layout

std::vector<const MCSymbol*>& getAddrsigSyms()

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:106

bool getEmitAddrsigSection()

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:100

bool isSymbolRefDifferenceFullyResolved(
    const llvm::MCAssembler& Asm,
    const llvm::MCSymbolRefExpr* A,
    const llvm::MCSymbolRefExpr* B,
    bool InSet) const

Description

Check whether the difference (A - B) between two symbol references is fully resolved. Clients are not required to answer precisely and may conservatively return false, even when a difference is fully resolved.

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:76

Parameters

const llvm::MCAssembler& Asm
const llvm::MCSymbolRefExpr* A
const llvm::MCSymbolRefExpr* B
bool InSet

virtual bool
isSymbolRefDifferenceFullyResolvedImpl(
    const llvm::MCAssembler& Asm,
    const llvm::MCSymbol& A,
    const llvm::MCSymbol& B,
    bool InSet) const

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:81

Parameters

const llvm::MCAssembler& Asm
const llvm::MCSymbol& A
const llvm::MCSymbol& B
bool InSet

virtual bool
isSymbolRefDifferenceFullyResolvedImpl(
    const llvm::MCAssembler& Asm,
    const llvm::MCSymbol& SymA,
    const llvm::MCFragment& FB,
    bool InSet,
    bool IsPCRel) const

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:86

Parameters

const llvm::MCAssembler& Asm
const llvm::MCSymbol& SymA
const llvm::MCFragment& FB
bool InSet
bool IsPCRel

virtual void markGnuAbi()

Description

ELF only. Mark that we have seen GNU ABI usage (e.g. SHF_GNU_RETAIN).

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:93

virtual void recordRelocation(
    llvm::MCAssembler& Asm,
    const llvm::MCAsmLayout& Layout,
    const llvm::MCFragment* Fragment,
    const llvm::MCFixup& Fixup,
    llvm::MCValue Target,
    uint64_t& FixedValue)

Description

Record a relocation entry. This routine is called by the assembler after layout and relaxation, and post layout binding. The implementation is responsible for storing information about the relocation so that it can be emitted during writeObject().

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:66

Parameters

llvm::MCAssembler& Asm
const llvm::MCAsmLayout& Layout
const llvm::MCFragment* Fragment
const llvm::MCFixup& Fixup
llvm::MCValue Target
uint64_t& FixedValue

virtual void reset()

Description

lifetime management

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:47

virtual uint64_t writeObject(
    llvm::MCAssembler& Asm,
    const llvm::MCAsmLayout& Layout)

Description

Write the object file and returns the number of bytes written. This routine is called by the assembler after layout and relaxation is complete, fixups have been evaluated and applied, and relocations generated.

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:113

Parameters

llvm::MCAssembler& Asm
const llvm::MCAsmLayout& Layout

virtual ~MCObjectWriter()

Declared at: llvm/include/llvm/MC/MCObjectWriter.h:44