LLVM
15.0.0git
|
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
Static Public Member Functions | |
static bool | ShouldEmitEHBlock (const MachineFunction *MF) |
static bool | ShouldSetSSPCanaryBitInTB (const MachineFunction *MF) |
static MCSymbol * | getEHInfoTableSymbol (const MachineFunction *MF) |
static XCOFF::StorageClass | getStorageClassForGlobal (const GlobalValue *GV) |
![]() | |
static SectionKind | getKindForGlobal (const GlobalObject *GO, const TargetMachine &TM) |
Classify the specified global variable into a set of target independent categories embodied in SectionKind. More... | |
Additional Inherited Members | |
![]() | |
bool | SupportIndirectSymViaGOTPCRel = false |
bool | SupportGOTPCRelWithOffset = true |
bool | SupportDebugThreadLocalLocation = true |
bool | SupportDSOLocalEquivalentLowering = false |
unsigned | PersonalityEncoding = 0 |
PersonalityEncoding, LSDAEncoding, TTypeEncoding - Some encoding values for EH. More... | |
unsigned | LSDAEncoding = 0 |
unsigned | TTypeEncoding = 0 |
unsigned | CallSiteEncoding = 0 |
MCSection * | StaticCtorSection = nullptr |
This section contains the static constructor pointer list. More... | |
MCSection * | StaticDtorSection = nullptr |
This section contains the static destructor pointer list. More... | |
const TargetMachine * | TM = nullptr |
![]() | |
bool | CommDirectiveSupportsAlignment = false |
True if .comm supports alignment. More... | |
bool | SupportsWeakOmittedEHFrame = false |
True if target object file supports a weak_definition of constant 0 for an omitted EH frame. More... | |
bool | SupportsCompactUnwindWithoutEHFrame = false |
True if the target object file supports emitting a compact unwind section without an associated EH frame section. More... | |
bool | OmitDwarfIfHaveCompactUnwind = false |
OmitDwarfIfHaveCompactUnwind - True if the target object file supports having some functions with compact unwind and other with dwarf unwind. More... | |
unsigned | FDECFIEncoding = 0 |
FDE CFI encoding. More... | |
unsigned | CompactUnwindDwarfEHFrameOnly = 0 |
Compact unwind encoding indicating that we should emit only an EH frame. More... | |
MCSection * | TextSection = nullptr |
Section directive for standard text. More... | |
MCSection * | DataSection = nullptr |
Section directive for standard data. More... | |
MCSection * | BSSSection = nullptr |
Section that is default initialized to zero. More... | |
MCSection * | ReadOnlySection = nullptr |
Section that is readonly and can contain arbitrary initialized data. More... | |
MCSection * | LSDASection = nullptr |
If exception handling is supported by the target, this is the section the Language Specific Data Area information is emitted to. More... | |
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. More... | |
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. More... | |
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. More... | |
MCSection * | DwarfAddrSection = nullptr |
MCSection * | DwarfRnglistsSection = nullptr |
The DWARF v5 range list section. More... | |
MCSection * | DwarfLoclistsSection = nullptr |
The DWARF v5 locations list section. More... | |
MCSection * | DwarfRnglistsDWOSection = nullptr |
The DWARF v5 range and location list sections for fission. More... | |
MCSection * | DwarfLoclistsDWOSection = nullptr |
MCSection * | DwarfCUIndexSection = nullptr |
MCSection * | DwarfTUIndexSection = nullptr |
MCSection * | DwarfGnuPubNamesSection = nullptr |
Section for newer gnu pubnames. More... | |
MCSection * | DwarfGnuPubTypesSection = nullptr |
Section for newer gnu pubtypes. More... | |
MCSection * | DwarfSwiftASTSection = nullptr |
MCSection * | COFFDebugSymbolsSection = nullptr |
MCSection * | COFFDebugTypesSection = nullptr |
MCSection * | COFFGlobalTypeHashesSection = nullptr |
MCSection * | TLSExtraDataSection = nullptr |
Extra TLS Variable Data section. More... | |
MCSection * | TLSDataSection = nullptr |
Section directive for Thread Local data. ELF, MachO, COFF, and Wasm. More... | |
MCSection * | TLSBSSSection = nullptr |
Section directive for Thread Local uninitialized data. More... | |
MCSection * | StackMapSection = nullptr |
StackMap section. More... | |
MCSection * | FaultMapSection = nullptr |
FaultMap section. More... | |
MCSection * | RemarksSection = nullptr |
Remarks section. More... | |
MCSection * | EHFrameSection = nullptr |
EH frame section. More... | |
MCSection * | StackSizesSection = nullptr |
Section containing metadata on function stack sizes. More... | |
MCSection * | PseudoProbeSection = nullptr |
Section for pseudo probe information used by AutoFDO. More... | |
MCSection * | PseudoProbeDescSection = 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. More... | |
const MCSection * | TLSThreadInitSection = nullptr |
Section for thread local data initialization functions. More... | |
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. More... | |
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 * | TOCBaseSection = nullptr |
MCSection * | ReadOnly8Section = nullptr |
MCSection * | ReadOnly16Section = nullptr |
std::array< MCSection *, binaryformat::Swift5ReflectionSectionKind::last > | Swift5ReflectionSections = {} |
Definition at line 230 of file TargetLoweringObjectFileImpl.h.
|
default |
|
overridedefault |
|
static |
Definition at line 2231 of file TargetLoweringObjectFileImpl.cpp.
References llvm::MachineModuleInfo::getContext(), llvm::MachineFunction::getFunctionNumber(), llvm::MachineFunction::getMMI(), and llvm::MCContext::getOrCreateSymbol().
|
overridevirtual |
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.
Implements llvm::TargetLoweringObjectFile.
Definition at line 2273 of file TargetLoweringObjectFileImpl.cpp.
References llvm::GlobalObject::getSection(), llvm::GlobalObject::hasSection(), llvm::report_fatal_error(), llvm::XCOFF::XMC_PR, llvm::XCOFF::XMC_RO, llvm::XCOFF::XMC_RW, llvm::XCOFF::XMC_TD, and llvm::XCOFF::XTY_SD.
|
overridevirtual |
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.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2516 of file TargetLoweringObjectFileImpl.cpp.
References assert(), llvm::SectionKind::getText(), TM, llvm::XCOFF::XMC_PR, llvm::XCOFF::XTY_ER, and llvm::XCOFF::XTY_SD.
|
overridevirtual |
Given a constant with the SectionKind, return a section that it should be placed in.
Given a mergeable constant with the specified size and relocation information, return a section that it should be placed in.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2442 of file TargetLoweringObjectFileImpl.cpp.
References Align, assert(), and llvm::report_fatal_error().
|
overridevirtual |
For external functions, this will always return a function descriptor csect.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2303 of file TargetLoweringObjectFileImpl.cpp.
References assert(), llvm::SectionKind::getMetadata(), llvm::GlobalValue::isDeclarationForLinker(), llvm::GlobalValue::isThreadLocal(), TM, llvm::XCOFF::XMC_DS, llvm::XCOFF::XMC_UA, llvm::XCOFF::XMC_UL, and llvm::XCOFF::XTY_ER.
|
overridevirtual |
On targets that use separate function descriptor symbols, return a section for the descriptor given its symbol.
Use only with defined functions.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2548 of file TargetLoweringObjectFileImpl.cpp.
References F, llvm::SectionKind::getData(), TM, llvm::XCOFF::XMC_DS, and llvm::XCOFF::XTY_SD.
|
overridevirtual |
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2419 of file TargetLoweringObjectFileImpl.cpp.
References assert(), F, llvm::SectionKind::getReadOnly(), TM, llvm::XCOFF::XMC_RO, and llvm::XCOFF::XTY_SD.
|
overridevirtual |
For functions, this will return the LSDA section.
If option -ffunction-sections is on, this will return a unique csect with the function name appended to .gcc_except_table as a suffix of the LSDA section name.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2568 of file TargetLoweringObjectFileImpl.cpp.
|
overridevirtual |
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.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2557 of file TargetLoweringObjectFileImpl.cpp.
References llvm::SectionKind::getData(), llvm::CodeModel::Large, TM, llvm::XCOFF::XMC_TC, llvm::XCOFF::XMC_TE, and llvm::XCOFF::XTY_SD.
|
overridevirtual |
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2474 of file TargetLoweringObjectFileImpl.cpp.
References llvm::report_fatal_error().
|
overridevirtual |
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2479 of file TargetLoweringObjectFileImpl.cpp.
References llvm::report_fatal_error().
|
static |
Definition at line 2492 of file TargetLoweringObjectFileImpl.cpp.
References llvm::GlobalValue::AppendingLinkage, assert(), llvm::GlobalValue::AvailableExternallyLinkage, llvm::XCOFF::C_EXT, llvm::XCOFF::C_HIDEXT, llvm::XCOFF::C_WEAKEXT, llvm::GlobalValue::CommonLinkage, llvm::GlobalValue::ExternalLinkage, llvm::GlobalValue::ExternalWeakLinkage, llvm::GlobalValue::getLinkage(), llvm::GlobalValue::InternalLinkage, llvm::GlobalValue::LinkOnceAnyLinkage, llvm::GlobalValue::LinkOnceODRLinkage, llvm_unreachable, llvm::GlobalValue::PrivateLinkage, llvm::report_fatal_error(), llvm::GlobalValue::WeakAnyLinkage, and llvm::GlobalValue::WeakODRLinkage.
|
overridevirtual |
For functions, this will always return a function descriptor symbol.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2237 of file TargetLoweringObjectFileImpl.cpp.
References llvm::SectionKind::getData(), llvm::SectionKind::isBSSLocal(), llvm::SectionKind::isText(), llvm::SectionKind::isThreadBSSLocal(), and TM.
|
overridevirtual |
This method must be called before any actual lowering is done.
Initialize - 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.
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2462 of file TargetLoweringObjectFileImpl.cpp.
References llvm::dwarf::DW_EH_PE_datarel, llvm::dwarf::DW_EH_PE_indirect, llvm::dwarf::DW_EH_PE_sdata4, llvm::dwarf::DW_EH_PE_sdata8, llvm::dwarf::DW_EH_PE_udata4, llvm::TargetMachine::getTargetTriple(), llvm::TargetLoweringObjectFile::Initialize(), and llvm::Triple::isArch32Bit().
|
overridevirtual |
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2484 of file TargetLoweringObjectFileImpl.cpp.
|
overridevirtual |
Implements llvm::TargetLoweringObjectFile.
Definition at line 2322 of file TargetLoweringObjectFileImpl.cpp.
References llvm::SectionKind::getData(), llvm::Module::getDataLayout(), getEntrySizeForKind(), llvm::GlobalValue::getParent(), llvm::DataLayout::getPreferredAlign(), llvm::SectionKind::getReadOnly(), llvm::GlobalValue::hasCommonLinkage(), llvm::report_fatal_error(), TM, llvm::XCOFF::XMC_BS, llvm::XCOFF::XMC_RO, llvm::XCOFF::XMC_RW, llvm::XCOFF::XMC_TD, llvm::XCOFF::XMC_TL, llvm::XCOFF::XMC_UL, llvm::XCOFF::XTY_CM, and llvm::XCOFF::XTY_SD.
|
static |
Definition at line 2201 of file TargetLoweringObjectFileImpl.cpp.
References assert(), llvm::classifyEHPersonality(), F, llvm::MachineFunction::getFunction(), llvm::MachineFunction::getLandingPads(), and llvm::isNoOpWithoutInvoke().
Referenced by llvm::AIXException::endFunction().
|
overridevirtual |
Reimplemented from llvm::TargetLoweringObjectFile.
Definition at line 2435 of file TargetLoweringObjectFileImpl.cpp.
|
static |
Definition at line 2219 of file TargetLoweringObjectFileImpl.cpp.
References F, and llvm::MachineFunction::getFunction().