LLVM 19.0.0git
|
Defines the object file and target independent interfaces used by the assembler backend to write native file format object files. More...
#include "llvm/MC/MCObjectWriter.h"
Public Member Functions | |
MCObjectWriter (const MCObjectWriter &)=delete | |
MCObjectWriter & | operator= (const MCObjectWriter &)=delete |
virtual | ~MCObjectWriter () |
virtual void | reset () |
lifetime management | |
High-Level API | |
virtual void | executePostLayoutBinding (MCAssembler &Asm) |
Perform any late binding of symbols (for example, to assign symbol indices for use when generating relocations). | |
virtual void | recordRelocation (MCAssembler &Asm, const MCFragment *Fragment, const MCFixup &Fixup, MCValue Target, uint64_t &FixedValue)=0 |
Record a relocation entry. | |
bool | isSymbolRefDifferenceFullyResolved (const MCAssembler &Asm, const MCSymbolRefExpr *A, const MCSymbolRefExpr *B, bool InSet) const |
Check whether the difference (A - B) between two symbol references is fully resolved. | |
virtual bool | isSymbolRefDifferenceFullyResolvedImpl (const MCAssembler &Asm, const MCSymbol &SymA, const MCFragment &FB, bool InSet, bool IsPCRel) const |
virtual void | markGnuAbi () |
ELF only. Mark that we have seen GNU ABI usage (e.g. SHF_GNU_RETAIN). | |
virtual void | setOverrideABIVersion (uint8_t ABIVersion) |
ELF only, override the default ABIVersion in the ELF header. | |
void | emitAddrsigSection () |
Tell the object writer to emit an address-significance table during writeObject(). | |
bool | getEmitAddrsigSection () |
void | addAddrsigSymbol (const MCSymbol *Sym) |
Record the given symbol in the address-significance table to be written diring writeObject(). | |
std::vector< const MCSymbol * > & | getAddrsigSyms () |
virtual void | addExceptionEntry (const MCSymbol *Symbol, const MCSymbol *Trap, unsigned LanguageCode, unsigned ReasonCode, unsigned FunctionSize, bool hasDebug) |
virtual void | addCInfoSymEntry (StringRef Name, StringRef Metadata) |
virtual uint64_t | writeObject (MCAssembler &Asm)=0 |
Write the object file and returns the number of bytes written. | |
Protected Member Functions | |
MCObjectWriter ()=default | |
Protected Attributes | |
std::vector< const MCSymbol * > | AddrsigSyms |
bool | EmitAddrsigSection = false |
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().
Definition at line 33 of file MCObjectWriter.h.
|
protecteddefault |
|
delete |
|
virtualdefault |
Record the given symbol in the address-significance table to be written diring writeObject().
Definition at line 99 of file MCObjectWriter.h.
References AddrsigSyms, and Sym.
Referenced by llvm::MCObjectStreamer::emitAddrsigSym().
|
inlinevirtual |
Definition at line 108 of file MCObjectWriter.h.
References llvm::report_fatal_error().
Referenced by llvm::MCXCOFFStreamer::emitXCOFFCInfoSym().
|
inlinevirtual |
Definition at line 103 of file MCObjectWriter.h.
References llvm::report_fatal_error().
Referenced by llvm::MCXCOFFStreamer::emitXCOFFExceptDirective().
|
inline |
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.
Definition at line 93 of file MCObjectWriter.h.
References EmitAddrsigSection.
Referenced by llvm::MCObjectStreamer::emitAddrsig().
|
inlinevirtual |
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.
Reimplemented in llvm::MachObjectWriter.
Definition at line 56 of file MCObjectWriter.h.
Referenced by llvm::MCAssembler::layout().
Definition at line 101 of file MCObjectWriter.h.
References AddrsigSyms.
Referenced by llvm::MachObjectWriter::populateAddrSigSection().
|
inline |
Definition at line 95 of file MCObjectWriter.h.
References EmitAddrsigSection.
bool MCObjectWriter::isSymbolRefDifferenceFullyResolved | ( | const MCAssembler & | Asm, |
const MCSymbolRefExpr * | A, | ||
const MCSymbolRefExpr * | B, | ||
bool | InSet | ||
) | const |
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.
Definition at line 21 of file MCObjectWriter.cpp.
References A, assert(), B, llvm::MCSymbol::getFragment(), isSymbolRefDifferenceFullyResolvedImpl(), llvm::MCSymbol::isUndefined(), and llvm::MCSymbolRefExpr::VK_None.
|
virtual |
Reimplemented in llvm::MachObjectWriter.
Definition at line 39 of file MCObjectWriter.cpp.
References llvm::MCFragment::getParent(), and llvm::MCSymbol::getSection().
Referenced by isSymbolRefDifferenceFullyResolved().
|
inlinevirtual |
ELF only. Mark that we have seen GNU ABI usage (e.g. SHF_GNU_RETAIN).
Definition at line 85 of file MCObjectWriter.h.
Referenced by llvm::MCELFStreamer::emitSymbolAttribute().
|
delete |
|
pure virtual |
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().
Implemented in llvm::MachObjectWriter.
|
inlinevirtual |
lifetime management
Reimplemented in llvm::MachObjectWriter.
Definition at line 46 of file MCObjectWriter.h.
Referenced by llvm::MCAssembler::reset(), and llvm::MachObjectWriter::reset().
|
inlinevirtual |
ELF only, override the default ABIVersion in the ELF header.
Definition at line 88 of file MCObjectWriter.h.
Referenced by llvm::AMDGPUTargetELFStreamer::finish().
|
pure virtual |
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.
Implemented in llvm::MachObjectWriter.
Referenced by llvm::MCAssembler::Finish().
Definition at line 35 of file MCObjectWriter.h.
Referenced by addAddrsigSymbol(), and getAddrsigSyms().
|
protected |
Definition at line 36 of file MCObjectWriter.h.
Referenced by emitAddrsigSection(), and getEmitAddrsigSection().