|
void | Initialize (MCContext &Ctx, const TargetMachine &TM) override |
| This method must be called before any actual lowering is done.
|
|
| TargetLoweringObjectFileELF () |
|
| ~TargetLoweringObjectFileELF () override=default |
|
void | Initialize (MCContext &Ctx, const TargetMachine &TM) override |
| This method must be called before any actual lowering is done.
|
|
void | getModuleMetadata (Module &M) override |
| Get the module-level metadata that the platform cares about.
|
|
void | emitModuleMetadata (MCStreamer &Streamer, Module &M) const override |
| Emit Obj-C garbage collection and linker options.
|
|
void | emitPersonalityValue (MCStreamer &Streamer, const DataLayout &DL, const MCSymbol *Sym) const override |
|
MCSection * | getSectionForConstant (const DataLayout &DL, SectionKind Kind, const Constant *C, Align &Alignment) const override |
| Given a constant with the SectionKind, return a section that it should be placed in.
|
|
MCSection * | getExplicitSectionGlobal (const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override |
| Targets should implement this method to assign a section to globals with an explicit section specfied.
|
|
MCSection * | SelectSectionForGlobal (const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override |
|
MCSection * | getSectionForJumpTable (const Function &F, const TargetMachine &TM) const override |
|
MCSection * | getSectionForLSDA (const Function &F, const MCSymbol &FnSym, const TargetMachine &TM) const override |
|
MCSection * | getSectionForMachineBasicBlock (const Function &F, const MachineBasicBlock &MBB, const TargetMachine &TM) const override |
| Returns a unique section for the given machine basic block.
|
|
MCSection * | getUniqueSectionForFunction (const Function &F, const TargetMachine &TM) const override |
|
bool | shouldPutJumpTableInFunctionSection (bool UsesLabelDifference, const Function &F) const override |
|
const MCExpr * | getTTypeGlobalReference (const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM, MachineModuleInfo *MMI, MCStreamer &Streamer) const override |
| Return an MCExpr to use for a reference to the specified type info global variable from exception handling information.
|
|
MCSymbol * | getCFIPersonalitySymbol (const GlobalValue *GV, const TargetMachine &TM, MachineModuleInfo *MMI) const override |
|
void | InitializeELF (bool UseInitArray_) |
|
MCSection * | getStaticCtorSection (unsigned Priority, const MCSymbol *KeySym) const override |
|
MCSection * | getStaticDtorSection (unsigned Priority, const MCSymbol *KeySym) const override |
|
const MCExpr * | lowerRelativeReference (const GlobalValue *LHS, const GlobalValue *RHS, const TargetMachine &TM) const override |
|
const MCExpr * | lowerDSOLocalEquivalent (const DSOLocalEquivalent *Equiv, const TargetMachine &TM) const override |
|
MCSection * | getSectionForCommandLines () const override |
| If supported, return the section to use for the llvm.commandline metadata.
|
|
| TargetLoweringObjectFile ()=default |
|
| TargetLoweringObjectFile (const TargetLoweringObjectFile &)=delete |
|
TargetLoweringObjectFile & | operator= (const TargetLoweringObjectFile &)=delete |
|
virtual | ~TargetLoweringObjectFile () |
|
Mangler & | getMangler () const |
|
virtual void | Initialize (MCContext &ctx, const TargetMachine &TM) |
| This method must be called before any actual lowering is done.
|
|
virtual void | emitPersonalityValue (MCStreamer &Streamer, const DataLayout &TM, const MCSymbol *Sym) const |
|
virtual void | emitModuleMetadata (MCStreamer &Streamer, Module &M) const |
| Emit the module-level metadata that the platform cares about.
|
|
void | emitCGProfileMetadata (MCStreamer &Streamer, Module &M) const |
| Emit Call Graph Profile metadata.
|
|
virtual void | getModuleMetadata (Module &M) |
| Get the module-level metadata that the platform cares about.
|
|
virtual MCSection * | getSectionForConstant (const DataLayout &DL, SectionKind Kind, const Constant *C, Align &Alignment) const |
| Given a constant with the SectionKind, return a section that it should be placed in.
|
|
virtual MCSection * | getSectionForMachineBasicBlock (const Function &F, const MachineBasicBlock &MBB, const TargetMachine &TM) const |
|
virtual MCSection * | getUniqueSectionForFunction (const Function &F, const TargetMachine &TM) const |
|
MCSection * | SectionForGlobal (const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const |
| This method computes the appropriate section to emit the specified global variable or function definition.
|
|
MCSection * | SectionForGlobal (const GlobalObject *GO, const TargetMachine &TM) const |
| This method computes the appropriate section to emit the specified global variable or function definition.
|
|
virtual void | getNameWithPrefix (SmallVectorImpl< char > &OutName, const GlobalValue *GV, const TargetMachine &TM) const |
|
virtual MCSection * | getSectionForJumpTable (const Function &F, const TargetMachine &TM) const |
|
virtual MCSection * | getSectionForLSDA (const Function &, const MCSymbol &, const TargetMachine &) const |
|
virtual bool | shouldPutJumpTableInFunctionSection (bool UsesLabelDifference, const Function &F) const |
|
virtual MCSection * | getExplicitSectionGlobal (const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const =0 |
| Targets should implement this method to assign a section to globals with an explicit section specfied.
|
|
virtual const MCExpr * | getTTypeGlobalReference (const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM, MachineModuleInfo *MMI, MCStreamer &Streamer) const |
| Return an MCExpr to use for a reference to the specified global variable from exception handling information.
|
|
MCSymbol * | getSymbolWithGlobalValueBase (const GlobalValue *GV, StringRef Suffix, const TargetMachine &TM) const |
| Return the MCSymbol for a private symbol with global value name as its base, with the specified suffix.
|
|
virtual MCSymbol * | getCFIPersonalitySymbol (const GlobalValue *GV, const TargetMachine &TM, MachineModuleInfo *MMI) const |
|
unsigned | getPersonalityEncoding () const |
|
unsigned | getLSDAEncoding () const |
|
unsigned | getTTypeEncoding () const |
|
unsigned | getCallSiteEncoding () const |
|
const MCExpr * | getTTypeReference (const MCSymbolRefExpr *Sym, unsigned Encoding, MCStreamer &Streamer) const |
|
virtual MCSection * | getStaticCtorSection (unsigned Priority, const MCSymbol *KeySym) const |
|
virtual MCSection * | getStaticDtorSection (unsigned Priority, const MCSymbol *KeySym) const |
|
virtual const MCExpr * | getDebugThreadLocalSymbol (const MCSymbol *Sym) const |
| Create a symbol reference to describe the given TLS variable when emitting the address in debug info.
|
|
virtual const MCExpr * | lowerRelativeReference (const GlobalValue *LHS, const GlobalValue *RHS, const TargetMachine &TM) const |
|
bool | supportDSOLocalEquivalentLowering () const |
| Target supports a native lowering of a dso_local_equivalent constant without needing to replace it with equivalent IR.
|
|
virtual const MCExpr * | lowerDSOLocalEquivalent (const DSOLocalEquivalent *Equiv, const TargetMachine &TM) const |
|
bool | supportIndirectSymViaGOTPCRel () const |
| Target supports replacing a data "PC"-relative access to a symbol through another symbol, by accessing the later via a GOT entry instead?
|
|
bool | supportGOTPCRelWithOffset () const |
| Target GOT "PC"-relative relocation supports encoding an additional binary expression with an offset?
|
|
bool | supportDebugThreadLocalLocation () const |
| Target supports TLS offset relocation in debug section?
|
|
virtual MCRegister | getStaticBase () const |
| Returns the register used as static base in RWPI variants.
|
|
virtual const MCExpr * | getIndirectSymViaRWPI (const MCSymbol *Sym) const |
| Get the target specific RWPI relocation.
|
|
virtual const MCExpr * | getIndirectSymViaGOTPCRel (const GlobalValue *GV, const MCSymbol *Sym, const MCValue &MV, int64_t Offset, MachineModuleInfo *MMI, MCStreamer &Streamer) const |
| Get the target specific PC relative GOT entry relocation.
|
|
virtual MCSection * | getSectionForCommandLines () const |
| If supported, return the section to use for the llvm.commandline metadata.
|
|
virtual MCSection * | getSectionForFunctionDescriptor (const Function *F, const TargetMachine &TM) const |
| On targets that use separate function descriptor symbols, return a section for the descriptor given its symbol.
|
|
virtual MCSection * | getSectionForTOCEntry (const MCSymbol *S, const TargetMachine &TM) const |
| On targets that support TOC entries, return a section for the entry given the symbol it refers to.
|
|
virtual MCSection * | getSectionForExternalReference (const GlobalObject *GO, const TargetMachine &TM) const |
| On targets that associate external references with a section, return such a section for the given external global.
|
|
virtual MCSymbol * | getTargetSymbol (const GlobalValue *GV, const TargetMachine &TM) const |
| Targets that have a special convention for their symbols could use this hook to return a specialized symbol.
|
|
virtual MCSymbol * | getFunctionEntryPointSymbol (const GlobalValue *Func, const TargetMachine &TM) const |
| If supported, return the function entry point symbol.
|
|
void | initMCObjectFileInfo (MCContext &MCCtx, bool PIC, bool LargeCodeModel=false) |
|
virtual | ~MCObjectFileInfo () |
|
MCContext & | getContext () const |
|
bool | getSupportsWeakOmittedEHFrame () const |
|
bool | getSupportsCompactUnwindWithoutEHFrame () const |
|
bool | getOmitDwarfIfHaveCompactUnwind () const |
|
unsigned | getFDEEncoding () const |
|
unsigned | getCompactUnwindDwarfEHFrameOnly () const |
|
virtual unsigned | getTextSectionAlignment () const |
|
MCSection * | getTextSection () const |
|
MCSection * | getDataSection () const |
|
MCSection * | getBSSSection () const |
|
MCSection * | getReadOnlySection () const |
|
MCSection * | getLSDASection () const |
|
MCSection * | getCompactUnwindSection () const |
|
MCSection * | getDwarfAbbrevSection () const |
|
MCSection * | getDwarfInfoSection () const |
|
MCSection * | getDwarfInfoSection (uint64_t Hash) const |
|
MCSection * | getDwarfLineSection () const |
|
MCSection * | getDwarfLineStrSection () const |
|
MCSection * | getDwarfFrameSection () const |
|
MCSection * | getDwarfPubNamesSection () const |
|
MCSection * | getDwarfPubTypesSection () const |
|
MCSection * | getDwarfGnuPubNamesSection () const |
|
MCSection * | getDwarfGnuPubTypesSection () const |
|
const MCSection * | getDwarfDebugInlineSection () const |
|
MCSection * | getDwarfStrSection () const |
|
MCSection * | getDwarfLocSection () const |
|
MCSection * | getDwarfARangesSection () const |
|
MCSection * | getDwarfRangesSection () const |
|
MCSection * | getDwarfRnglistsSection () const |
|
MCSection * | getDwarfLoclistsSection () const |
|
MCSection * | getDwarfMacinfoSection () const |
|
MCSection * | getDwarfMacroSection () const |
|
MCSection * | getDwarfDebugNamesSection () const |
|
MCSection * | getDwarfAccelNamesSection () const |
|
MCSection * | getDwarfAccelObjCSection () const |
|
MCSection * | getDwarfAccelNamespaceSection () const |
|
MCSection * | getDwarfAccelTypesSection () const |
|
MCSection * | getDwarfInfoDWOSection () const |
|
MCSection * | getDwarfTypesSection (uint64_t Hash) const |
|
MCSection * | getDwarfTypesDWOSection () const |
|
MCSection * | getDwarfAbbrevDWOSection () const |
|
MCSection * | getDwarfStrDWOSection () const |
|
MCSection * | getDwarfLineDWOSection () const |
|
MCSection * | getDwarfLocDWOSection () const |
|
MCSection * | getDwarfStrOffDWOSection () const |
|
MCSection * | getDwarfStrOffSection () const |
|
MCSection * | getDwarfAddrSection () const |
|
MCSection * | getDwarfRnglistsDWOSection () const |
|
MCSection * | getDwarfLoclistsDWOSection () const |
|
MCSection * | getDwarfMacroDWOSection () const |
|
MCSection * | getDwarfMacinfoDWOSection () const |
|
MCSection * | getDwarfCUIndexSection () const |
|
MCSection * | getDwarfTUIndexSection () const |
|
MCSection * | getDwarfSwiftASTSection () const |
|
MCSection * | getCOFFDebugSymbolsSection () const |
|
MCSection * | getCOFFDebugTypesSection () const |
|
MCSection * | getCOFFGlobalTypeHashesSection () const |
|
MCSection * | getTLSExtraDataSection () const |
|
const MCSection * | getTLSDataSection () const |
|
MCSection * | getTLSBSSSection () const |
|
MCSection * | getStackMapSection () const |
|
MCSection * | getFaultMapSection () const |
|
MCSection * | getRemarksSection () const |
|
MCSection * | getStackSizesSection (const MCSection &TextSec) const |
|
MCSection * | getBBAddrMapSection (const MCSection &TextSec) const |
|
MCSection * | getKCFITrapSection (const MCSection &TextSec) const |
|
MCSection * | getPseudoProbeSection (const MCSection &TextSec) const |
|
MCSection * | getPseudoProbeDescSection (StringRef FuncName) const |
|
MCSection * | getLLVMStatsSection () const |
|
MCSection * | getPCSection (StringRef Name, const MCSection *TextSec) const |
|
MCSection * | getDataRelROSection () const |
|
const MCSection * | getMergeableConst4Section () const |
|
const MCSection * | getMergeableConst8Section () const |
|
const MCSection * | getMergeableConst16Section () const |
|
const MCSection * | getMergeableConst32Section () const |
|
const MCSection * | getTLSTLVSection () const |
|
const MCSection * | getTLSThreadInitSection () const |
|
const MCSection * | getCStringSection () const |
|
const MCSection * | getUStringSection () const |
|
MCSection * | getTextCoalSection () const |
|
const MCSection * | getConstTextCoalSection () const |
|
const MCSection * | getConstDataSection () const |
|
const MCSection * | getDataCoalSection () const |
|
const MCSection * | getConstDataCoalSection () const |
|
const MCSection * | getDataCommonSection () const |
|
MCSection * | getDataBSSSection () const |
|
const MCSection * | getFourByteConstantSection () const |
|
const MCSection * | getEightByteConstantSection () const |
|
const MCSection * | getSixteenByteConstantSection () const |
|
MCSection * | getLazySymbolPointerSection () const |
|
MCSection * | getNonLazySymbolPointerSection () const |
|
MCSection * | getThreadLocalPointerSection () const |
|
MCSection * | getAddrSigSection () const |
|
MCSection * | getDrectveSection () const |
|
MCSection * | getPDataSection () const |
|
MCSection * | getXDataSection () const |
|
MCSection * | getSXDataSection () const |
|
MCSection * | getGEHContSection () const |
|
MCSection * | getGFIDsSection () const |
|
MCSection * | getGIATsSection () const |
|
MCSection * | getGLJMPSection () const |
|
MCSection * | getPPA1Section () const |
|
MCSection * | getPPA2Section () const |
|
MCSection * | getPPA2ListSection () const |
|
MCSection * | getADASection () const |
|
MCSection * | getIDRLSection () const |
|
MCSection * | getTOCBaseSection () const |
|
MCSection * | getEHFrameSection () const |
|
bool | isPositionIndependent () const |
|
MCSection * | getSwift5ReflectionSection (llvm::binaryformat::Swift5ReflectionSectionKind ReflSectionKind) |
|
|
static SectionKind | getKindForGlobal (const GlobalObject *GO, const TargetMachine &TM) |
| Classify the specified global variable into a set of target independent categories embodied in SectionKind.
|
|
virtual MCSection * | SelectSectionForGlobal (const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const =0 |
|
MCSymbolRefExpr::VariantKind | PLTRelativeVariantKind |
|
bool | SupportIndirectSymViaGOTPCRel = false |
|
bool | SupportGOTPCRelWithOffset = true |
|
bool | SupportDebugThreadLocalLocation = true |
|
bool | SupportDSOLocalEquivalentLowering = false |
|
unsigned | PersonalityEncoding = 0 |
| PersonalityEncoding, LSDAEncoding, TTypeEncoding - Some encoding values for EH.
|
|
unsigned | LSDAEncoding = 0 |
|
unsigned | TTypeEncoding = 0 |
|
unsigned | CallSiteEncoding = 0 |
|
MCSection * | StaticCtorSection = nullptr |
| This section contains the static constructor pointer list.
|
|
MCSection * | StaticDtorSection = nullptr |
| This section contains the static destructor pointer list.
|
|
const TargetMachine * | TM = nullptr |
|
bool | SupportsWeakOmittedEHFrame = false |
| True if target object file supports a weak_definition of constant 0 for an omitted EH frame.
|
|
bool | SupportsCompactUnwindWithoutEHFrame = false |
| True if the target object file supports emitting a compact unwind section without an associated EH frame section.
|
|
bool | OmitDwarfIfHaveCompactUnwind = false |
| OmitDwarfIfHaveCompactUnwind - True if the target object file supports having some functions with compact unwind and other with dwarf unwind.
|
|
unsigned | FDECFIEncoding = 0 |
| FDE CFI encoding.
|
|
unsigned | CompactUnwindDwarfEHFrameOnly = 0 |
| Compact unwind encoding indicating that we should emit only an EH frame.
|
|
MCSection * | TextSection = nullptr |
| Section directive for standard text.
|
|
MCSection * | DataSection = nullptr |
| Section directive for standard data.
|
|
MCSection * | BSSSection = nullptr |
| Section that is default initialized to zero.
|
|
MCSection * | ReadOnlySection = nullptr |
| Section that is readonly and can contain arbitrary initialized data.
|
|
MCSection * | LSDASection = nullptr |
| If exception handling is supported by the target, this is the section the Language Specific Data Area information is emitted to.
|
|
MCSection * | CompactUnwindSection = nullptr |
| If exception handling is supported by the target and the target can support a compact representation of the CIE and FDE, this is the section to emit them into.
|
|
MCSection * | DwarfAbbrevSection = nullptr |
|
MCSection * | DwarfInfoSection = nullptr |
|
MCSection * | DwarfLineSection = nullptr |
|
MCSection * | DwarfLineStrSection = nullptr |
|
MCSection * | DwarfFrameSection = nullptr |
|
MCSection * | DwarfPubTypesSection = nullptr |
|
const MCSection * | DwarfDebugInlineSection = nullptr |
|
MCSection * | DwarfStrSection = nullptr |
|
MCSection * | DwarfLocSection = nullptr |
|
MCSection * | DwarfARangesSection = nullptr |
|
MCSection * | DwarfRangesSection = nullptr |
|
MCSection * | DwarfMacinfoSection = nullptr |
|
MCSection * | DwarfMacroSection = nullptr |
|
MCSection * | DwarfPubNamesSection = nullptr |
|
MCSection * | DwarfDebugNamesSection = nullptr |
| Accelerator table sections.
|
|
MCSection * | DwarfAccelNamesSection = nullptr |
|
MCSection * | DwarfAccelObjCSection = nullptr |
|
MCSection * | DwarfAccelNamespaceSection = nullptr |
|
MCSection * | DwarfAccelTypesSection = nullptr |
|
MCSection * | DwarfInfoDWOSection = nullptr |
|
MCSection * | DwarfTypesDWOSection = nullptr |
|
MCSection * | DwarfAbbrevDWOSection = nullptr |
|
MCSection * | DwarfStrDWOSection = nullptr |
|
MCSection * | DwarfLineDWOSection = nullptr |
|
MCSection * | DwarfLocDWOSection = nullptr |
|
MCSection * | DwarfStrOffDWOSection = nullptr |
|
MCSection * | DwarfMacinfoDWOSection = nullptr |
|
MCSection * | DwarfMacroDWOSection = nullptr |
|
MCSection * | DwarfStrOffSection = nullptr |
| The DWARF v5 string offset and address table sections.
|
|
MCSection * | DwarfAddrSection = nullptr |
|
MCSection * | DwarfRnglistsSection = nullptr |
| The DWARF v5 range list section.
|
|
MCSection * | DwarfLoclistsSection = nullptr |
| The DWARF v5 locations list section.
|
|
MCSection * | DwarfRnglistsDWOSection = nullptr |
| The DWARF v5 range and location list sections for fission.
|
|
MCSection * | DwarfLoclistsDWOSection = nullptr |
|
MCSection * | DwarfCUIndexSection = nullptr |
|
MCSection * | DwarfTUIndexSection = nullptr |
|
MCSection * | DwarfGnuPubNamesSection = nullptr |
| Section for newer gnu pubnames.
|
|
MCSection * | DwarfGnuPubTypesSection = nullptr |
| Section for newer gnu pubtypes.
|
|
MCSection * | DwarfSwiftASTSection = nullptr |
|
MCSection * | COFFDebugSymbolsSection = nullptr |
|
MCSection * | COFFDebugTypesSection = nullptr |
|
MCSection * | COFFGlobalTypeHashesSection = nullptr |
|
MCSection * | TLSExtraDataSection = nullptr |
| Extra TLS Variable Data section.
|
|
MCSection * | TLSDataSection = nullptr |
| Section directive for Thread Local data. ELF, MachO, COFF, and Wasm.
|
|
MCSection * | TLSBSSSection = nullptr |
| Section directive for Thread Local uninitialized data.
|
|
MCSection * | StackMapSection = nullptr |
| StackMap section.
|
|
MCSection * | FaultMapSection = nullptr |
| FaultMap section.
|
|
MCSection * | RemarksSection = nullptr |
| Remarks section.
|
|
MCSection * | EHFrameSection = nullptr |
| EH frame section.
|
|
MCSection * | StackSizesSection = nullptr |
| Section containing metadata on function stack sizes.
|
|
MCSection * | PseudoProbeSection = nullptr |
| Section for pseudo probe information used by AutoFDO.
|
|
MCSection * | PseudoProbeDescSection = nullptr |
|
MCSection * | LLVMStatsSection = nullptr |
|
MCSection * | DataRelROSection = nullptr |
|
MCSection * | MergeableConst4Section = nullptr |
|
MCSection * | MergeableConst8Section = nullptr |
|
MCSection * | MergeableConst16Section = nullptr |
|
MCSection * | MergeableConst32Section = nullptr |
|
MCSection * | TLSTLVSection = nullptr |
| Section for thread local structure information.
|
|
const MCSection * | TLSThreadInitSection = nullptr |
| Section for thread local data initialization functions.
|
|
MCSection * | CStringSection = nullptr |
|
MCSection * | UStringSection = nullptr |
|
MCSection * | TextCoalSection = nullptr |
|
MCSection * | ConstTextCoalSection = nullptr |
|
MCSection * | ConstDataSection = nullptr |
|
MCSection * | DataCoalSection = nullptr |
|
MCSection * | ConstDataCoalSection = nullptr |
|
MCSection * | DataCommonSection = nullptr |
|
MCSection * | DataBSSSection = nullptr |
|
MCSection * | FourByteConstantSection = nullptr |
|
MCSection * | EightByteConstantSection = nullptr |
|
MCSection * | SixteenByteConstantSection = nullptr |
|
MCSection * | LazySymbolPointerSection = nullptr |
|
MCSection * | NonLazySymbolPointerSection = nullptr |
|
MCSection * | ThreadLocalPointerSection = nullptr |
|
MCSection * | AddrSigSection = nullptr |
|
MCSection * | DrectveSection = nullptr |
| COFF specific sections.
|
|
MCSection * | PDataSection = nullptr |
|
MCSection * | XDataSection = nullptr |
|
MCSection * | SXDataSection = nullptr |
|
MCSection * | GEHContSection = nullptr |
|
MCSection * | GFIDsSection = nullptr |
|
MCSection * | GIATsSection = nullptr |
|
MCSection * | GLJMPSection = nullptr |
|
MCSection * | PPA1Section = nullptr |
|
MCSection * | PPA2Section = nullptr |
|
MCSection * | PPA2ListSection = nullptr |
|
MCSection * | ADASection = nullptr |
|
MCSection * | IDRLSection = nullptr |
|
MCSection * | TOCBaseSection = nullptr |
|
MCSection * | ReadOnly8Section = nullptr |
|
MCSection * | ReadOnly16Section = nullptr |
|
std::array< MCSection *, binaryformat::Swift5ReflectionSectionKind::last > | Swift5ReflectionSections = {} |
|