class TargetLoweringObjectFile

Declaration

class TargetLoweringObjectFile : public MCObjectFileInfo { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:45

Inherits from: MCObjectFileInfo

Member Variables

private llvm::Mangler* Mang = nullptr
Name-mangler for global names.
protected bool SupportIndirectSymViaGOTPCRel = false
protected bool SupportGOTPCRelWithOffset = true
protected bool SupportDebugThreadLocalLocation = true
protected bool SupportDSOLocalEquivalentLowering = false
protected unsigned int PersonalityEncoding = 0
PersonalityEncoding, LSDAEncoding, TTypeEncoding - Some encoding values for EH.
protected unsigned int LSDAEncoding = 0
protected unsigned int TTypeEncoding = 0
protected unsigned int CallSiteEncoding = 0
protected llvm::MCSection* StaticCtorSection = nullptr
This section contains the static constructor pointer list.
protected llvm::MCSection* StaticDtorSection = nullptr
This section contains the static destructor pointer list.
protected const llvm::TargetMachine* TM = nullptr

Inherited from MCObjectFileInfo:

protected CommDirectiveSupportsAlignment = false
protected SupportsWeakOmittedEHFrame = false
protected SupportsCompactUnwindWithoutEHFrame = false
protected OmitDwarfIfHaveCompactUnwind = false
protected FDECFIEncoding = 0
protected CompactUnwindDwarfEHFrameOnly = 0
protected TextSection = nullptr
protected DataSection = nullptr
protected BSSSection = nullptr
protected ReadOnlySection = nullptr
protected LSDASection = nullptr
protected CompactUnwindSection = nullptr
protected DwarfAbbrevSection = nullptr
protected DwarfInfoSection = nullptr
protected DwarfLineSection = nullptr
protected DwarfLineStrSection = nullptr
protected DwarfFrameSection = nullptr
protected DwarfPubTypesSection = nullptr
protected DwarfDebugInlineSection = nullptr
protected DwarfStrSection = nullptr
protected DwarfLocSection = nullptr
protected DwarfARangesSection = nullptr
protected DwarfRangesSection = nullptr
protected DwarfMacinfoSection = nullptr
protected DwarfMacroSection = nullptr
protected DwarfPubNamesSection = nullptr
protected DwarfDebugNamesSection = nullptr
protected DwarfAccelNamesSection = nullptr
protected DwarfAccelObjCSection = nullptr
protected DwarfAccelNamespaceSection = nullptr
protected DwarfAccelTypesSection = nullptr
protected DwarfInfoDWOSection = nullptr
protected DwarfTypesDWOSection = nullptr
protected DwarfAbbrevDWOSection = nullptr
protected DwarfStrDWOSection = nullptr
protected DwarfLineDWOSection = nullptr
protected DwarfLocDWOSection = nullptr
protected DwarfStrOffDWOSection = nullptr
protected DwarfMacinfoDWOSection = nullptr
protected DwarfMacroDWOSection = nullptr
protected DwarfStrOffSection = nullptr
protected DwarfAddrSection = nullptr
protected DwarfRnglistsSection = nullptr
protected DwarfLoclistsSection = nullptr
protected DwarfRnglistsDWOSection = nullptr
protected DwarfLoclistsDWOSection = nullptr
protected DwarfCUIndexSection = nullptr
protected DwarfTUIndexSection = nullptr
protected DwarfGnuPubNamesSection = nullptr
protected DwarfGnuPubTypesSection = nullptr
protected DwarfSwiftASTSection = nullptr
protected COFFDebugSymbolsSection = nullptr
protected COFFDebugTypesSection = nullptr
protected COFFGlobalTypeHashesSection = nullptr
protected TLSExtraDataSection = nullptr
protected TLSDataSection = nullptr
protected TLSBSSSection = nullptr
protected StackMapSection = nullptr
protected FaultMapSection = nullptr
protected RemarksSection = nullptr
protected EHFrameSection = nullptr
protected StackSizesSection = nullptr
protected PseudoProbeSection = nullptr
protected PseudoProbeDescSection = nullptr
protected DataRelROSection = nullptr
protected MergeableConst4Section = nullptr
protected MergeableConst8Section = nullptr
protected MergeableConst16Section = nullptr
protected MergeableConst32Section = nullptr
protected TLSTLVSection = nullptr
protected TLSThreadInitSection = nullptr
protected CStringSection = nullptr
protected UStringSection = nullptr
protected TextCoalSection = nullptr
protected ConstTextCoalSection = nullptr
protected ConstDataSection = nullptr
protected DataCoalSection = nullptr
protected ConstDataCoalSection = nullptr
protected DataCommonSection = nullptr
protected DataBSSSection = nullptr
protected FourByteConstantSection = nullptr
protected EightByteConstantSection = nullptr
protected SixteenByteConstantSection = nullptr
protected LazySymbolPointerSection = nullptr
protected NonLazySymbolPointerSection = nullptr
protected ThreadLocalPointerSection = nullptr
protected AddrSigSection = nullptr
protected DrectveSection = nullptr
protected PDataSection = nullptr
protected XDataSection = nullptr
protected SXDataSection = nullptr
protected GEHContSection = nullptr
protected GFIDsSection = nullptr
protected GIATsSection = nullptr
protected GLJMPSection = nullptr
protected PPA1Section = nullptr
protected TOCBaseSection = nullptr
protected ReadOnly8Section = nullptr
protected ReadOnly16Section = nullptr
protected Swift5ReflectionSections = {}

Method Overview

Inherited from MCObjectFileInfo:

Methods

virtual void Initialize(
    llvm::MCContext& ctx,
    const llvm::TargetMachine& TM)

Description

This method must be called before any actual lowering is done. This specifies the current context for codegen, and gives the lowering implementations a chance to set up their default sections.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:82

Parameters

llvm::MCContext& ctx
const llvm::TargetMachine& TM

llvm::MCSection* SectionForGlobal(
    const llvm::GlobalObject* GO,
    const llvm::TargetMachine& TM) const

Description

This method computes the appropriate section to emit the specified global variable or function definition. This should not be passed external (or available externally) globals.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:125

Parameters

const llvm::GlobalObject* GO
const llvm::TargetMachine& TM

llvm::MCSection* SectionForGlobal(
    const llvm::GlobalObject* GO,
    llvm::SectionKind Kind,
    const llvm::TargetMachine& TM) const

Description

This method computes the appropriate section to emit the specified global variable or function definition. This should not be passed external (or available externally) globals.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:119

Parameters

const llvm::GlobalObject* GO
llvm::SectionKind Kind
const llvm::TargetMachine& TM

virtual llvm::MCSection* SelectSectionForGlobal(
    const llvm::GlobalObject* GO,
    llvm::SectionKind Kind,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:288

Parameters

const llvm::GlobalObject* GO
llvm::SectionKind Kind
const llvm::TargetMachine& TM

TargetLoweringObjectFile(
    const llvm::TargetLoweringObjectFile&)

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:72

Parameters

const llvm::TargetLoweringObjectFile&

TargetLoweringObjectFile()

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:71

void emitCGProfileMetadata(
    llvm::MCStreamer& Streamer,
    llvm::Module& M) const

Description

Emit Call Graph Profile metadata.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:91

Parameters

llvm::MCStreamer& Streamer
llvm::Module& M

virtual void emitModuleMetadata(
    llvm::MCStreamer& Streamer,
    llvm::Module& M) const

Description

Emit the module-level metadata that the platform cares about.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:88

Parameters

llvm::MCStreamer& Streamer
llvm::Module& M

virtual void emitPersonalityValue(
    llvm::MCStreamer& Streamer,
    const llvm::DataLayout& TM,
    const llvm::MCSymbol* Sym) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:84

Parameters

llvm::MCStreamer& Streamer
const llvm::DataLayout& TM
const llvm::MCSymbol* Sym

virtual llvm::MCSymbol* getCFIPersonalitySymbol(
    const llvm::GlobalValue* GV,
    const llvm::TargetMachine& TM,
    llvm::MachineModuleInfo* MMI) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:164

Parameters

const llvm::GlobalValue* GV
const llvm::TargetMachine& TM
llvm::MachineModuleInfo* MMI

unsigned int getCallSiteEncoding() const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:171

virtual const llvm::MCExpr*
getDebugThreadLocalSymbol(
    const llvm::MCSymbol* Sym) const

Description

Create a symbol reference to describe the given TLS variable when emitting the address in debug info.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:188

Parameters

const llvm::MCSymbol* Sym

virtual llvm::MCSection* getExplicitSectionGlobal(
    const llvm::GlobalObject* GO,
    llvm::SectionKind Kind,
    const llvm::TargetMachine& TM) const

Description

Targets should implement this method to assign a section to globals with an explicit section specfied. The implementation of this method can assume that GO->hasSection() is true.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:146

Parameters

const llvm::GlobalObject* GO
llvm::SectionKind Kind
const llvm::TargetMachine& TM

virtual llvm::MCSymbol*
getFunctionEntryPointSymbol(
    const llvm::GlobalValue* Func,
    const llvm::TargetMachine& TM) const

Description

If supported, return the function entry point symbol. Otherwise, returns nullptr. Func must be a function or an alias which has a function as base object.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:282

Parameters

const llvm::GlobalValue* Func
const llvm::TargetMachine& TM

virtual const llvm::MCExpr*
getIndirectSymViaGOTPCRel(
    const llvm::GlobalValue* GV,
    const llvm::MCSymbol* Sym,
    const llvm::MCValue& MV,
    int64_t Offset,
    llvm::MachineModuleInfo* MMI,
    llvm::MCStreamer& Streamer) const

Description

Get the target specific PC relative GOT entry relocation

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:233

Parameters

const llvm::GlobalValue* GV
const llvm::MCSymbol* Sym
const llvm::MCValue& MV
int64_t Offset
llvm::MachineModuleInfo* MMI
llvm::MCStreamer& Streamer

virtual const llvm::MCExpr* getIndirectSymViaRWPI(
    const llvm::MCSymbol* Sym) const

Description

Get the target specific RWPI relocation.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:228

Parameters

const llvm::MCSymbol* Sym

static llvm::SectionKind getKindForGlobal(
    const llvm::GlobalObject* GO,
    const llvm::TargetMachine& TM)

Description

Classify the specified global variable into a set of target independent categories embodied in SectionKind.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:113

Parameters

const llvm::GlobalObject* GO
const llvm::TargetMachine& TM

unsigned int getLSDAEncoding() const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:169

llvm::Mangler& getMangler() const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:77

virtual void getModuleMetadata(llvm::Module& M)

Description

Get the module-level metadata that the platform cares about.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:94

Parameters

llvm::Module& M

virtual void getNameWithPrefix(
    SmallVectorImpl<char>& OutName,
    const llvm::GlobalValue* GV,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:128

Parameters

SmallVectorImpl<char>& OutName
const llvm::GlobalValue* GV
const llvm::TargetMachine& TM

unsigned int getPersonalityEncoding() const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:168

virtual llvm::MCSection*
getSectionForCommandLines() const

Description

If supported, return the section to use for the llvm.commandline metadata. Otherwise, return nullptr.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:244

virtual llvm::MCSection* getSectionForConstant(
    const llvm::DataLayout& DL,
    llvm::SectionKind Kind,
    const llvm::Constant* C,
    llvm::Align& Alignment) const

Description

Given a constant with the SectionKind, return a section that it should be placed in.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:98

Parameters

const llvm::DataLayout& DL
llvm::SectionKind Kind
const llvm::Constant* C
llvm::Align& Alignment

virtual llvm::MCSection*
getSectionForExternalReference(
    const llvm::GlobalObject* GO,
    const llvm::TargetMachine& TM) const

Description

On targets that associate external references with a section, return such a section for the given external global.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:267

Parameters

const llvm::GlobalObject* GO
const llvm::TargetMachine& TM

virtual llvm::MCSection*
getSectionForFunctionDescriptor(
    const llvm::Function* F,
    const llvm::TargetMachine& TM) const

Description

On targets that use separate function descriptor symbols, return a section for the descriptor given its symbol. Use only with defined functions.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:251

Parameters

const llvm::Function* F
const llvm::TargetMachine& TM

virtual llvm::MCSection* getSectionForJumpTable(
    const llvm::Function& F,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:132

Parameters

const llvm::Function& F
const llvm::TargetMachine& TM

virtual llvm::MCSection* getSectionForLSDA(
    const llvm::Function&,
    const llvm::MCSymbol&,
    const llvm::TargetMachine&) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:134

Parameters

const llvm::Function&
const llvm::MCSymbol&
const llvm::TargetMachine&

virtual llvm::MCSection*
getSectionForMachineBasicBlock(
    const llvm::Function& F,
    const llvm::MachineBasicBlock& MBB,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:103

Parameters

const llvm::Function& F
const llvm::MachineBasicBlock& MBB
const llvm::TargetMachine& TM

virtual llvm::MCSection* getSectionForTOCEntry(
    const llvm::MCSymbol* S,
    const llvm::TargetMachine& TM) const

Description

On targets that support TOC entries, return a section for the entry given the symbol it refers to. TODO: Implement this interface for existing ELF targets.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:259

Parameters

const llvm::MCSymbol* S
const llvm::TargetMachine& TM

virtual llvm::MCRegister getStaticBase() const

Description

Returns the register used as static base in RWPI variants.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:225

virtual llvm::MCSection* getStaticCtorSection(
    unsigned int Priority,
    const llvm::MCSymbol* KeySym) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:176

Parameters

unsigned int Priority
const llvm::MCSymbol* KeySym

virtual llvm::MCSection* getStaticDtorSection(
    unsigned int Priority,
    const llvm::MCSymbol* KeySym) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:181

Parameters

unsigned int Priority
const llvm::MCSymbol* KeySym

llvm::MCSymbol* getSymbolWithGlobalValueBase(
    const llvm::GlobalValue* GV,
    llvm::StringRef Suffix,
    const llvm::TargetMachine& TM) const

Description

Return the MCSymbol for a private symbol with global value name as its base, with the specified suffix.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:159

Parameters

const llvm::GlobalValue* GV
llvm::StringRef Suffix
const llvm::TargetMachine& TM

unsigned int getTTypeEncoding() const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:170

virtual const llvm::MCExpr*
getTTypeGlobalReference(
    const llvm::GlobalValue* GV,
    unsigned int Encoding,
    const llvm::TargetMachine& TM,
    llvm::MachineModuleInfo* MMI,
    llvm::MCStreamer& Streamer) const

Description

Return an MCExpr to use for a reference to the specified global variable from exception handling information.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:151

Parameters

const llvm::GlobalValue* GV
unsigned int Encoding
const llvm::TargetMachine& TM
llvm::MachineModuleInfo* MMI
llvm::MCStreamer& Streamer

const llvm::MCExpr* getTTypeReference(
    const llvm::MCSymbolRefExpr* Sym,
    unsigned int Encoding,
    llvm::MCStreamer& Streamer) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:173

Parameters

const llvm::MCSymbolRefExpr* Sym
unsigned int Encoding
llvm::MCStreamer& Streamer

virtual llvm::MCSymbol* getTargetSymbol(
    const llvm::GlobalValue* GV,
    const llvm::TargetMachine& TM) const

Description

Targets that have a special convention for their symbols could use this hook to return a specialized symbol.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:274

Parameters

const llvm::GlobalValue* GV
const llvm::TargetMachine& TM

virtual llvm::MCSection*
getUniqueSectionForFunction(
    const llvm::Function& F,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:108

Parameters

const llvm::Function& F
const llvm::TargetMachine& TM

virtual const llvm::MCExpr*
lowerDSOLocalEquivalent(
    const llvm::DSOLocalEquivalent* Equiv,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:202

Parameters

const llvm::DSOLocalEquivalent* Equiv
const llvm::TargetMachine& TM

virtual const llvm::MCExpr*
lowerRelativeReference(
    const llvm::GlobalValue* LHS,
    const llvm::GlobalValue* RHS,
    const llvm::TargetMachine& TM) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:190

Parameters

const llvm::GlobalValue* LHS
const llvm::GlobalValue* RHS
const llvm::TargetMachine& TM

virtual bool shouldPutJumpTableInFunctionSection(
    bool UsesLabelDifference,
    const llvm::Function& F) const

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:139

Parameters

bool UsesLabelDifference
const llvm::Function& F

bool supportDSOLocalEquivalentLowering() const

Description

Target supports a native lowering of a dso_local_equivalent constant without needing to replace it with equivalent IR.

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:198

bool supportDebugThreadLocalLocation() const

Description

Target supports TLS offset relocation in debug section?

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:220

bool supportGOTPCRelWithOffset() const

Description

Target GOT "PC"-relative relocation supports encoding an additional binary expression with an offset?

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:215

bool supportIndirectSymViaGOTPCRel() const

Description

Target supports replacing a data "PC"-relative access to a symbol through another symbol, by accessing the later via a GOT entry instead?

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:209

virtual ~TargetLoweringObjectFile()

Declared at: llvm/include/llvm/Target/TargetLoweringObjectFile.h:75