LLVM
8.0.1
|
Context object for machine code objects. More...
#include "llvm/MC/MCContext.h"
Public Types | |
using | SymbolTable = StringMap< MCSymbol *, BumpPtrAllocator & > |
Public Member Functions | |
MCContext (const MCAsmInfo *MAI, const MCRegisterInfo *MRI, const MCObjectFileInfo *MOFI, const SourceMgr *Mgr=nullptr, bool DoAutoReset=true) | |
MCContext (const MCContext &)=delete | |
MCContext & | operator= (const MCContext &)=delete |
~MCContext () | |
const SourceMgr * | getSourceManager () const |
void | setInlineSourceManager (SourceMgr *SM) |
const MCAsmInfo * | getAsmInfo () const |
const MCRegisterInfo * | getRegisterInfo () const |
const MCObjectFileInfo * | getObjectFileInfo () const |
CodeViewContext & | getCVContext () |
void | setAllowTemporaryLabels (bool Value) |
void | setUseNamesOnTempLabels (bool Value) |
char * | getSecureLogFile () |
raw_fd_ostream * | getSecureLog () |
void | setSecureLog (std::unique_ptr< raw_fd_ostream > Value) |
bool | getSecureLogUsed () |
void | setSecureLogUsed (bool Value) |
void * | allocate (unsigned Size, unsigned Align=8) |
void | deallocate (void *Ptr) |
bool | hadError () |
void | reportError (SMLoc L, const Twine &Msg) |
LLVM_ATTRIBUTE_NORETURN void | reportFatalError (SMLoc L, const Twine &Msg) |
const MCAsmMacro * | lookupMacro (StringRef Name) |
void | defineMacro (StringRef Name, MCAsmMacro Macro) |
void | undefineMacro (StringRef Name) |
Module Lifetime Management | |
void | reset () |
reset - return object to right after construction state to prepare to process a new module More... | |
Symbol Management | |
MCSymbol * | createLinkerPrivateTempSymbol () |
Create and return a new linker temporary symbol with a unique but unspecified name. More... | |
MCSymbol * | createTempSymbol (bool CanBeUnnamed=true) |
Create and return a new assembler temporary symbol with a unique but unspecified name. More... | |
MCSymbol * | createTempSymbol (const Twine &Name, bool AlwaysAddSuffix, bool CanBeUnnamed=true) |
MCSymbol * | createDirectionalLocalSymbol (unsigned LocalLabelVal) |
Create the definition of a directional local symbol for numbered label (used for "1:" definitions). More... | |
MCSymbol * | getDirectionalLocalSymbol (unsigned LocalLabelVal, bool Before) |
Create and return a directional local symbol for numbered label (used for "1b" or 1f" references). More... | |
MCSymbol * | getOrCreateSymbol (const Twine &Name) |
Lookup the symbol inside with the specified Name . More... | |
MCSymbol * | getOrCreateFrameAllocSymbol (StringRef FuncName, unsigned Idx) |
Gets a symbol that will be defined to the final stack offset of a local variable after codegen. More... | |
MCSymbol * | getOrCreateParentFrameOffsetSymbol (StringRef FuncName) |
MCSymbol * | getOrCreateLSDASymbol (StringRef FuncName) |
MCSymbol * | lookupSymbol (const Twine &Name) const |
Get the symbol for Name , or null. More... | |
void | setSymbolValue (MCStreamer &Streamer, StringRef Sym, uint64_t Val) |
Set value for a symbol. More... | |
const SymbolTable & | getSymbols () const |
getSymbols - Get a reference for the symbol table for clients that want to, for example, iterate over all symbols. More... | |
Dwarf Management | |
StringRef | getCompilationDir () const |
Get the compilation directory for DW_AT_comp_dir The compilation directory should be set with setCompilationDir before calling this function. More... | |
void | setCompilationDir (StringRef S) |
Set the compilation directory for DW_AT_comp_dir. More... | |
const std::map< const std::string, const std::string > & | getDebugPrefixMap () const |
Get the debug prefix map. More... | |
void | addDebugPrefixMapEntry (const std::string &From, const std::string &To) |
Add an entry to the debug prefix map. More... | |
void | RemapDebugPaths () |
const std::string & | getMainFileName () const |
Get the main file name for use in error messages and debug info. More... | |
void | setMainFileName (StringRef S) |
Set the main file name and override the default. More... | |
Expected< unsigned > | getDwarfFile (StringRef Directory, StringRef FileName, unsigned FileNumber, MD5::MD5Result *Checksum, Optional< StringRef > Source, unsigned CUID) |
Creates an entry in the dwarf file and directory tables. More... | |
bool | isValidDwarfFileNumber (unsigned FileNumber, unsigned CUID=0) |
isValidDwarfFileNumber - takes a dwarf file number and returns true if it currently is assigned and false otherwise. More... | |
const std::map< unsigned, MCDwarfLineTable > & | getMCDwarfLineTables () const |
MCDwarfLineTable & | getMCDwarfLineTable (unsigned CUID) |
const MCDwarfLineTable & | getMCDwarfLineTable (unsigned CUID) const |
const SmallVectorImpl< MCDwarfFile > & | getMCDwarfFiles (unsigned CUID=0) |
const SmallVectorImpl< std::string > & | getMCDwarfDirs (unsigned CUID=0) |
bool | hasMCLineSections () const |
unsigned | getDwarfCompileUnitID () |
void | setDwarfCompileUnitID (unsigned CUIndex) |
void | setMCLineTableRootFile (unsigned CUID, StringRef CompilationDir, StringRef Filename, MD5::MD5Result *Checksum, Optional< StringRef > Source) |
Specifies the "root" file and directory of the compilation unit. More... | |
bool | isDwarfMD5UsageConsistent (unsigned CUID) const |
Reports whether MD5 checksum usage is consistent (all-or-none). More... | |
void | setCurrentDwarfLoc (unsigned FileNum, unsigned Line, unsigned Column, unsigned Flags, unsigned Isa, unsigned Discriminator) |
Saves the information from the currently parsed dwarf .loc directive and sets DwarfLocSeen. More... | |
void | clearDwarfLocSeen () |
bool | getDwarfLocSeen () |
const MCDwarfLoc & | getCurrentDwarfLoc () |
bool | getGenDwarfForAssembly () |
void | setGenDwarfForAssembly (bool Value) |
unsigned | getGenDwarfFileNumber () |
void | setGenDwarfFileNumber (unsigned FileNumber) |
const SetVector< MCSection * > & | getGenDwarfSectionSyms () |
bool | addGenDwarfSection (MCSection *Sec) |
void | finalizeDwarfSections (MCStreamer &MCOS) |
Remove empty sections from SectionsForRanges, to avoid generating useless debug info for them. More... | |
const std::vector< MCGenDwarfLabelEntry > & | getMCGenDwarfLabelEntries () const |
void | addMCGenDwarfLabelEntry (const MCGenDwarfLabelEntry &E) |
void | setDwarfDebugFlags (StringRef S) |
StringRef | getDwarfDebugFlags () |
void | setDwarfDebugProducer (StringRef S) |
StringRef | getDwarfDebugProducer () |
dwarf::DwarfFormat | getDwarfFormat () const |
void | setDwarfVersion (uint16_t v) |
uint16_t | getDwarfVersion () const |
Context object for machine code objects.
This class owns all of the sections that it creates.
Definition at line 63 of file MCContext.h.
using llvm::MCContext::SymbolTable = StringMap<MCSymbol *, BumpPtrAllocator &> |
Definition at line 65 of file MCContext.h.
anonymous enum : unsigned |
Enumerator | |
---|---|
GenericSectionID | Pass this value as the UniqueID during section creation to get the generic section with the given name and characteristics. The usual sections such as .text use this ID. |
Definition at line 368 of file MCContext.h.
|
explicit |
Definition at line 57 of file MCContext.cpp.
References AsSecureLogFileName, llvm::SourceMgr::getMainFileID(), llvm::SourceMgr::getMemoryBuffer(), and llvm::SourceMgr::getNumBuffers().
MCContext::~MCContext | ( | ) |
Definition at line 71 of file MCContext.cpp.
References reset().
Add an entry to the debug prefix map.
Definition at line 538 of file MCContext.cpp.
Referenced by getDebugPrefixMap().
Definition at line 602 of file MCContext.h.
References finalizeDwarfSections(), and llvm::SetVector< T, Vector, Set >::insert().
|
inline |
Definition at line 612 of file MCContext.h.
Referenced by llvm::MCGenDwarfLabelEntry::Make().
Definition at line 642 of file MCContext.h.
References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, and llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Allocate().
Referenced by llvm::CodeViewDebug::CodeViewDebug(), and parseHexOcta().
|
inline |
Definition at line 585 of file MCContext.h.
Referenced by llvm::MCObjectStreamer::changeSectionImpl(), and llvm::MCDwarfLineEntry::Make().
Create the definition of a directional local symbol for numbered label (used for "1:" definitions).
Definition at line 243 of file MCContext.cpp.
Referenced by getGNUBinOpPrecedence(), and setUseNamesOnTempLabels().
MCSectionELF * MCContext::createELFGroupSection | ( | const MCSymbolELF * | Group | ) |
Definition at line 416 of file MCContext.cpp.
References llvm::SectionKind::getReadOnly(), and llvm::ELF::SHT_GROUP.
Referenced by getELFSection(), and isWeak().
MCSectionELF * MCContext::createELFRelSection | ( | const Twine & | Name, |
unsigned | Type, | ||
unsigned | Flags, | ||
unsigned | EntrySize, | ||
const MCSymbolELF * | Group, | ||
const MCSectionELF * | RelInfoSection | ||
) |
Definition at line 352 of file MCContext.cpp.
References llvm::MCSection::getBeginSymbol(), llvm::SectionKind::getReadOnly(), I, llvm::StringMap< ValueTy, AllocatorTy >::insert(), and llvm::Twine::str().
Referenced by getELFSection(), and isWeak().
MCSymbol * MCContext::createLinkerPrivateTempSymbol | ( | ) |
Create and return a new linker temporary symbol with a unique but unspecified name.
Definition at line 211 of file MCContext.cpp.
References llvm::MCAsmInfo::getLinkerPrivateGlobalPrefix().
Referenced by llvm::AsmPrinter::EmitDebugValue(), and setUseNamesOnTempLabels().
Create and return a new assembler temporary symbol with a unique but unspecified name.
Definition at line 217 of file MCContext.cpp.
References llvm::MCLabel::getInstance(), and llvm::MCLabel::incInstance().
Referenced by llvm::ConstantPool::addEntry(), llvm::CodeViewContext::addFile(), ARM64EmitUnwindInfo(), llvm::DebugHandlerBase::beginInstruction(), llvm::BTFDebug::beginInstruction(), llvm::CodeViewDebug::beginInstruction(), convertFPR32ToFPR64(), llvm::AsmPrinter::createTempSymbol(), llvm::createX86RetpolineThunksPass(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::MCDwarfFrameEmitter::Emit(), llvm::MCStreamer::emitAbsoluteSymbolDiff(), llvm::MipsELFStreamer::EmitCFIEndProcImpl(), llvm::MipsELFStreamer::EmitCFILabel(), llvm::MipsELFStreamer::EmitCFIStartProcImpl(), llvm::MCObjectStreamer::EmitCVLocDirective(), llvm::AsmPrinter::EmitDebugValue(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), emitDirectiveRelocJalr(), llvm::MipsAsmPrinter::EmitEndOfAsmFile(), llvm::CodeViewContext::emitFileChecksums(), EmitGenDwarfInfo(), llvm::SystemZAsmPrinter::EmitInstruction(), llvm::ARMAsmPrinter::EmitInstruction(), llvm::X86AsmPrinter::EmitInstruction(), llvm::CodeViewContext::emitLineTableForFunction(), llvm::ARMAsmPrinter::EmitMachineConstantPoolValue(), EmitNop(), EmitNops(), llvm::AArch64FrameLowering::emitPrologue(), llvm::MipsAsmPrinter::EmitStartOfAsmFile(), llvm::CodeViewContext::emitStringTable(), EmitUnwindInfo(), llvm::MCObjectStreamer::EmitValueImpl(), llvm::AsmPrinter::emitXRayTable(), llvm::DebugHandlerBase::endInstruction(), forceExpAbs(), getCIEVersion(), getCOFFSection(), getDwarfRegNum(), llvm::MCSection::getEndSymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::AArch64_MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), getMachOSection(), getSymbolName(), llvm::AArch64_MachoTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFile::getTTypeReference(), getUnderlyingArgReg(), INITIALIZE_PASS(), llvm::HexagonFrameLowering::insertCFIInstructions(), isEFLAGSLive(), IsSmallMemAccess(), llvm::LowerARMMachineInstrToMCInst(), llvm::SelectionDAGBuilder::lowerInvokable(), llvm::MCDwarfLineEntry::Make(), llvm::MCGenDwarfLabelEntry::Make(), nextReg(), printFPOReg(), printMCExpr(), llvm::FaultMaps::recordFaultingOp(), and setUseNamesOnTempLabels().
MCSymbol * MCContext::createTempSymbol | ( | const Twine & | Name, |
bool | AlwaysAddSuffix, | ||
bool | CanBeUnnamed = true |
||
) |
Definition at line 204 of file MCContext.cpp.
References llvm::MCAsmInfo::getPrivateGlobalPrefix(), and Name.
|
inline |
Definition at line 646 of file MCContext.h.
|
inline |
Definition at line 661 of file MCContext.h.
References llvm::StringMap< ValueTy, AllocatorTy >::insert().
void MCContext::finalizeDwarfSections | ( | MCStreamer & | MCOS | ) |
Remove empty sections from SectionsForRanges, to avoid generating useless debug info for them.
Definition at line 597 of file MCContext.cpp.
References llvm::MCStreamer::mayHaveInstructions().
Referenced by addGenDwarfSection(), and llvm::MCGenDwarfInfo::Emit().
Definition at line 293 of file MCContext.h.
Referenced by llvm::DwarfCFIException::beginFunction(), canUseLocalRelocation(), llvm::MCTargetStreamer::changeSection(), createPPCMCAsmInfo(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::MCDwarfFrameEmitter::Emit(), llvm::MCStreamer::emitAbsoluteSymbolDiff(), llvm::MCStreamer::EmitCFIStartProc(), EmitDwarfLineTable(), emitFDESymbol(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), EmitGenDwarfRanges(), llvm::ARMTargetStreamer::emitInst(), llvm::MCStreamer::EmitIntValue(), EmitPersonality(), llvm::NVPTXTargetStreamer::emitRawBytes(), llvm::MCTargetStreamer::emitRawBytes(), llvm::MCTargetStreamer::emitValue(), llvm::MCStreamer::EmitWinCFIStartProc(), llvm::MCDwarfFrameEmitter::EncodeAdvanceLoc(), llvm::MCStreamer::EnsureValidWinFrameInfo(), llvm::MCDwarfLineAddr::FixedEncode(), forceExpAbs(), llvm::MCAssembler::getAtom(), getCIEVersion(), getDataAlignmentFactor(), llvm::MCStreamer::getDwarfLineTableSymbol(), getFixupKindLog2Size(), getRelocType32(), getRelocType64(), llvm::TargetLoweringObjectFileCOFF::getSectionForConstant(), getSizeForEncoding(), llvm::MachineBasicBlock::getSymbol(), getWinCFISection(), llvm::TargetLoweringObjectFileELF::Initialize(), llvm::MCELFStreamer::InitSections(), isWeak(), llvm::MCDwarfLineStr::MCDwarfLineStr(), ScaleAddrDelta(), and useCompactUnwind().
MCSectionCOFF * MCContext::getAssociativeCOFFSection | ( | MCSectionCOFF * | Sec, |
const MCSymbol * | KeySym, | ||
unsigned | UniqueID = GenericSectionID |
||
) |
Gets or creates a section equivalent to Sec that is associated with the section containing KeySym.
For example, to create a debug info section associated with an inline function, pass the normal debug info section as Sec and the function symbol as KeySym.
Definition at line 470 of file MCContext.cpp.
References Characteristics, GenericSectionID, llvm::MCSectionCOFF::getCharacteristics(), getCOFFSection(), llvm::MCSection::getKind(), llvm::MCSymbol::getName(), llvm::MCSectionCOFF::getSectionName(), llvm::COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE, and llvm::COFF::IMAGE_SCN_LNK_COMDAT.
Referenced by getCOFFStaticStructorSection(), getELFSection(), and getWinCFISection().
MCSectionCOFF * MCContext::getCOFFSection | ( | StringRef | Section, |
unsigned | Characteristics, | ||
SectionKind | Kind, | ||
StringRef | COMDATSymName, | ||
int | Selection, | ||
unsigned | UniqueID = GenericSectionID , |
||
const char * | BeginSymName = nullptr |
||
) |
Definition at line 422 of file MCContext.cpp.
References createTempSymbol(), llvm::StringRef::empty(), llvm::MCSymbol::getName(), getOrCreateSymbol(), llvm::ARMBuildAttrs::Section, and Selection.
Referenced by llvm::AsmPrinter::doFinalization(), encodeBase64StringEntry(), getAssociativeCOFFSection(), getCOFFSection(), getCOFFStaticStructorSection(), getELFSection(), llvm::TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(), llvm::TargetLoweringObjectFileCOFF::getSectionForConstant(), llvm::TargetLoweringObjectFileCOFF::getSectionForJumpTable(), getWinCFISection(), llvm::TargetLoweringObjectFileCOFF::Initialize(), llvm::TargetLoweringObjectFileCOFF::SelectSectionForGlobal(), and useCompactUnwind().
MCSectionCOFF * MCContext::getCOFFSection | ( | StringRef | Section, |
unsigned | Characteristics, | ||
SectionKind | Kind, | ||
const char * | BeginSymName = nullptr |
||
) |
Definition at line 454 of file MCContext.cpp.
References GenericSectionID, and getCOFFSection().
MCSectionCOFF * MCContext::getCOFFSection | ( | StringRef | Section | ) |
Definition at line 462 of file MCContext.cpp.
References GenericSectionID, and llvm::ARMBuildAttrs::Section.
|
inline |
Get the compilation directory for DW_AT_comp_dir The compilation directory should be set with setCompilationDir
before calling this function.
If it is unset, an empty string will be returned.
Definition at line 487 of file MCContext.h.
Referenced by llvm::MCDwarfLineTableHeader::Emit(), and EmitGenDwarfAbbrev().
|
inline |
Definition at line 588 of file MCContext.h.
Referenced by llvm::MCDwarfLineEntry::Make().
CodeViewContext & MCContext::getCVContext | ( | ) |
Definition at line 602 of file MCContext.cpp.
Referenced by llvm::MCStreamer::checkCVLocSection(), llvm::MCObjectStreamer::EmitCVDefRangeDirective(), llvm::MCObjectStreamer::EmitCVFileChecksumOffsetDirective(), llvm::MCObjectStreamer::EmitCVFileChecksumsDirective(), llvm::MCStreamer::EmitCVFileDirective(), llvm::MCStreamer::EmitCVFuncIdDirective(), llvm::MCObjectStreamer::EmitCVInlineLinetableDirective(), llvm::MCStreamer::EmitCVInlineSiteIdDirective(), llvm::MCObjectStreamer::EmitCVLocDirective(), llvm::MCObjectStreamer::EmitCVStringTableDirective(), llvm::MCAssembler::Finish(), getObjectFileInfo(), and printFPOReg().
|
inline |
Get the debug prefix map.
Definition at line 494 of file MCContext.h.
References addDebugPrefixMapEntry(), From, and RemapDebugPaths().
Create and return a directional local symbol for numbered label (used for "1b" or 1f" references).
Definition at line 248 of file MCContext.cpp.
Referenced by setUseNamesOnTempLabels().
|
inline |
Definition at line 549 of file MCContext.h.
Referenced by llvm::MCDwarfLineEntry::Make().
|
inline |
Definition at line 617 of file MCContext.h.
Referenced by EmitGenDwarfAbbrev().
|
inline |
Definition at line 620 of file MCContext.h.
Expected< unsigned > MCContext::getDwarfFile | ( | StringRef | Directory, |
StringRef | FileName, | ||
unsigned | FileNumber, | ||
MD5::MD5Result * | Checksum, | ||
Optional< StringRef > | Source, | ||
unsigned | CUID | ||
) |
Creates an entry in the dwarf file and directory tables.
getDwarfFile - takes a file name and number to place in the dwarf file and directory tables.
If the file number has already been allocated it is an error and zero is returned and the client reports the error, else the allocated file number is returned. The file numbers may be in any order.
Definition at line 573 of file MCContext.cpp.
References llvm::MCDwarfLineTable::tryGetFile().
Referenced by setMainFileName(), and llvm::MCStreamer::tryEmitDwarfFileDirective().
|
inline |
Definition at line 622 of file MCContext.h.
References llvm::dwarf::DWARF32.
|
inline |
Definition at line 587 of file MCContext.h.
Referenced by llvm::MCDwarfLineEntry::Make().
|
inline |
Definition at line 628 of file MCContext.h.
Referenced by llvm::MCDwarfLineTableHeader::Emit(), llvm::MCDwarfLineTable::Emit(), llvm::MCGenDwarfInfo::Emit(), EmitDwarfLineTable(), EmitGenDwarfAbbrev(), EmitGenDwarfInfo(), getCIEVersion(), isValidDwarfFileNumber(), and parseHexOcta().
MCSectionELF * MCContext::getELFNamedSection | ( | const Twine & | Prefix, |
const Twine & | Suffix, | ||
unsigned | Type, | ||
unsigned | Flags, | ||
unsigned | EntrySize = 0 |
||
) |
Get a section with the provided group identifier.
This section is named by concatenating Prefix
with '.' then Suffix
. The Type
describes the type of the section and Flags
are used to further configure this named section.
Definition at line 366 of file MCContext.cpp.
References getELFSection().
Referenced by getELFSection().
|
inline |
Definition at line 389 of file MCContext.h.
Referenced by llvm::BTFDebug::BTFDebug(), llvm::AsmPrinter::doFinalization(), llvm::MCELFStreamer::EmitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MCELFStreamer::EmitIdent(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::MipsRegInfoRecord::EmitMipsOptionRecord(), llvm::X86AsmPrinter::EmitStartOfAsmFile(), llvm::MipsAsmPrinter::EmitStartOfAsmFile(), llvm::AsmPrinter::emitXRayTable(), getELFNamedSection(), getELFSection(), llvm::HexagonTargetObjectFile::getExplicitSectionGlobal(), llvm::XCoreTargetObjectFile::getExplicitSectionGlobal(), llvm::MCObjectFileInfo::getStackSizesSection(), getStaticStructorSection(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::HexagonTargetObjectFile::Initialize(), llvm::AVRTargetObjectFile::Initialize(), llvm::ARMElfTargetObjectFile::Initialize(), llvm::XCoreTargetObjectFile::Initialize(), llvm::LanaiTargetObjectFile::Initialize(), llvm::MipsTargetObjectFile::Initialize(), llvm::TargetLoweringObjectFileELF::InitializeELF(), llvm::MCObjectFileInfo::InitMCObjectFileInfo(), isWeak(), llvm::MSP430TargetELFStreamer::MSP430TargetELFStreamer(), llvm::R600AsmPrinter::runOnMachineFunction(), selectELFSectionForGlobal(), llvm::HexagonTargetObjectFile::shouldPutJumpTableInFunctionSection(), smallData(), and useCompactUnwind().
|
inline |
Definition at line 394 of file MCContext.h.
References getELFSection().
|
inline |
Definition at line 400 of file MCContext.h.
References Characteristics, createELFGroupSection(), createELFRelSection(), GenericSectionID, getAssociativeCOFFSection(), getCOFFSection(), getELFNamedSection(), getELFSection(), Kind, llvm::cl::Prefix, renameELFSection(), llvm::ARMBuildAttrs::Section, and Selection.
MCSectionELF * MCContext::getELFSection | ( | const Twine & | Section, |
unsigned | Type, | ||
unsigned | Flags, | ||
unsigned | EntrySize, | ||
const Twine & | Group, | ||
unsigned | UniqueID, | ||
const MCSymbolELF * | Associated | ||
) |
Definition at line 373 of file MCContext.cpp.
References getELFSection(), getOrCreateSymbol(), llvm::Twine::isTriviallyEmpty(), and llvm::Twine::str().
MCSectionELF * MCContext::getELFSection | ( | const Twine & | Section, |
unsigned | Type, | ||
unsigned | Flags, | ||
unsigned | EntrySize, | ||
const MCSymbolELF * | Group, | ||
unsigned | UniqueID, | ||
const MCSymbolELF * | Associated | ||
) |
Definition at line 385 of file MCContext.cpp.
References llvm::SectionKind::getExecuteOnly(), llvm::MCSymbol::getName(), llvm::SectionKind::getReadOnly(), llvm::SectionKind::getText(), Kind, llvm::ELF::SHF_ARM_PURECODE, llvm::ELF::SHF_EXECINSTR, and llvm::Twine::str().
|
inline |
Definition at line 592 of file MCContext.h.
Referenced by llvm::MCGenDwarfLabelEntry::Make().
|
inline |
Definition at line 590 of file MCContext.h.
Referenced by parseHexOcta().
Definition at line 598 of file MCContext.h.
Referenced by llvm::MCGenDwarfInfo::Emit(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), EmitGenDwarfRanges(), and llvm::MCGenDwarfLabelEntry::Make().
MCSectionMachO * MCContext::getMachOSection | ( | StringRef | Segment, |
StringRef | Section, | ||
unsigned | TypeAndAttributes, | ||
unsigned | Reserved2, | ||
SectionKind | K, | ||
const char * | BeginSymName = nullptr |
||
) |
Return the MCSection for the specified mach-o section.
This requires the operands to be valid.
Definition at line 273 of file MCContext.cpp.
References createTempSymbol(), Name, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::ARMBuildAttrs::Section.
Referenced by llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), emitNonLazyStubs(), llvm::AsmPrinter::emitXRayTable(), llvm::TargetLoweringObjectFileMachO::getExplicitSectionGlobal(), getMachOSection(), llvm::TargetLoweringObjectFileMachO::Initialize(), and useCompactUnwind().
|
inline |
Definition at line 382 of file MCContext.h.
References getMachOSection().
|
inline |
Get the main file name for use in error messages and debug info.
This can be set to ensure we've got the correct file name after preprocessing or for -save-temps.
Definition at line 507 of file MCContext.h.
|
inline |
Definition at line 538 of file MCContext.h.
References llvm::MCDwarfLineTable::getMCDwarfDirs(), and getMCDwarfLineTable().
|
inline |
Definition at line 534 of file MCContext.h.
References llvm::MCDwarfLineTable::getMCDwarfFiles(), and getMCDwarfLineTable().
|
inline |
Definition at line 524 of file MCContext.h.
Referenced by llvm::MCStreamer::getDwarfLineTableSymbol(), getMCDwarfDirs(), getMCDwarfFiles(), isDwarfMD5UsageConsistent(), isValidDwarfFileNumber(), llvm::MCDwarfLineEntry::Make(), parseHexOcta(), and setMCLineTableRootFile().
|
inline |
Definition at line 528 of file MCContext.h.
|
inline |
Definition at line 520 of file MCContext.h.
Referenced by llvm::MCDwarfLineTable::Emit().
|
inline |
Definition at line 608 of file MCContext.h.
|
inline |
Definition at line 297 of file MCContext.h.
References getCVContext().
Referenced by llvm::NVPTXTargetStreamer::changeSection(), llvm::MCTargetStreamer::changeSection(), llvm::createMachOStreamer(), llvm::MCDwarfLineTable::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::MCDwarfFrameEmitter::Emit(), llvm::MCWinCOFFStreamer::EmitCOFFSafeSEH(), llvm::MCWinCOFFStreamer::EmitCommonSymbol(), EmitDwarfLineTable(), emitEncodingByte(), llvm::MipsAsmPrinter::EmitEndOfAsmFile(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), EmitGenDwarfRanges(), llvm::MCWinCOFFStreamer::EmitLocalCommonSymbol(), llvm::MCDwarfLineStr::emitSection(), llvm::MipsAsmPrinter::EmitStartOfAsmFile(), llvm::WinCFGuard::endModule(), llvm::MipsTargetELFStreamer::finish(), getCIEVersion(), getWinCFISection(), llvm::MCELFStreamer::InitSections(), llvm::MCDwarfLineStr::MCDwarfLineStr(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), llvm::FaultMaps::serializeToFaultMapSection(), and llvm::StackMaps::serializeToStackMapSection().
Gets a symbol that will be defined to the final stack offset of a local variable after codegen.
Idx | - The index of a local variable passed to @llvm.localescape. |
Definition at line 136 of file MCContext.cpp.
References getOrCreateSymbol(), and llvm::MCAsmInfo::getPrivateGlobalPrefix().
Referenced by getUnderlyingArgReg(), and setUseNamesOnTempLabels().
Definition at line 147 of file MCContext.cpp.
References assert(), llvm::MCObjectFileInfo::getObjectFileType(), getOrCreateSymbol(), llvm::MCAsmInfo::getPrivateGlobalPrefix(), llvm::MCObjectFileInfo::IsCOFF, llvm::MCObjectFileInfo::IsELF, llvm::MCObjectFileInfo::IsMachO, llvm::MCObjectFileInfo::IsWasm, llvm_unreachable, llvm::ISD::MCSymbol, Name, llvm::SmallVectorImpl< T >::resize(), llvm::StringRef::size(), llvm::StringRef::startswith(), and llvm::MCSymbol::SymbolKindUnset.
Referenced by recoverFramePointer(), and setUseNamesOnTempLabels().
Definition at line 142 of file MCContext.cpp.
References getOrCreateSymbol(), and llvm::MCAsmInfo::getPrivateGlobalPrefix().
Referenced by recoverFramePointer(), and setUseNamesOnTempLabels().
Lookup the symbol inside with the specified Name
.
If it exists, return it. If not, create a forward reference and return it.
Name | - The symbol name, which must be unique across all symbols. |
Definition at line 123 of file MCContext.cpp.
References assert(), llvm::StringRef::empty(), and llvm::Twine::toStringRef().
Referenced by llvm::AsmPrinter::doFinalization(), llvm::AMDGPUTargetELFStreamer::EmitAMDGPUSymbolType(), EmitCamlGlobal(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::X86AsmPrinter::EmitEndOfAsmFile(), llvm::EHStreamer::emitExceptionTable(), llvm::AsmPrinter::EmitGlobalVariable(), EmitNops(), llvm::X86AsmPrinter::EmitStartOfAsmFile(), llvm::MipsAsmPrinter::EmitStartOfAsmFile(), llvm::WinException::endFunclet(), llvm::AVRTargetStreamer::finish(), llvm::SparcMCExpr::fixELFSymbolsInTLSFixups(), llvm::RecordStreamer::flushSymverDirectives(), getCOFFSection(), llvm::MSP430MCInstLower::GetConstantPoolIndexSymbol(), llvm::LanaiMCInstLower::GetConstantPoolIndexSymbol(), llvm::ARMAsmPrinter::GetCPISymbol(), llvm::AsmPrinter::GetCPISymbol(), llvm::MCStreamer::getDwarfLineTableSymbol(), getELFSection(), llvm::AsmPrinter::GetExternalSymbolSymbol(), llvm::NVPTXAsmPrinter::getFunctionFrameSymbol(), llvm::AArch64MCInstLower::GetGlobalAddressSymbol(), llvm::PPCFunctionInfo::getGlobalEPSymbol(), getGlobalOffsetTable(), llvm::MachineFunction::getJTISymbol(), llvm::AsmPrinter::GetJTSetSymbol(), llvm::MSP430MCInstLower::GetJumpTableSymbol(), llvm::LanaiMCInstLower::GetJumpTableSymbol(), llvm::PPCFunctionInfo::getLocalEPSymbol(), getModifierVariantKind(), getOrCreateFrameAllocSymbol(), getOrCreateLSDASymbol(), getOrCreateParentFrameOffsetSymbol(), getPICLabel(), llvm::PPCFunctionInfo::getPICOffsetSymbol(), getRetOpcode(), llvm::TargetMachine::getSymbol(), llvm::MachineBasicBlock::getSymbol(), GetSymbolFromOperand(), llvm::TargetLoweringObjectFile::getSymbolWithGlobalValueBase(), getTLSGetOffset(), llvm::PPCFunctionInfo::getTOCOffsetSymbol(), getWasmSection(), initSlots2Values(), isInSymtab(), IsSmallMemAccess(), isWeak(), llvm::FastISel::lowerCallTo(), llvm::MCParserUtils::parseAssignmentExpression(), printMCExpr(), printSymbolOperand(), llvm::FaultMaps::serializeToFaultMapSection(), llvm::StackMaps::serializeToStackMapSection(), llvm::FastISel::CallLoweringInfo::setCallee(), setSymbolValue(), setUseNamesOnTempLabels(), smallData(), llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), llvm::MCExternalSymbolizer::tryAddingSymbolicOperand(), and VisitGlobalVariableForEmission().
|
inline |
Definition at line 295 of file MCContext.h.
Referenced by llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), llvm::MipsTargetELFStreamer::emitFrame(), llvm::MipsELFStreamer::EmitInstruction(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::MSP430MCCodeEmitter::encodeInstruction(), llvm::PPCMCCodeEmitter::get_crbitm_encoding(), getCIEVersion(), llvm::X86AsmInstrumentation::GetFrameRegGeneric(), llvm::PPCMCCodeEmitter::getMachineOpValue(), llvm::MipsMCCodeEmitter::getMachineOpValue(), llvm::AMDGPUDisassembler::getRegClassName(), llvm::MipsMCCodeEmitter::getRegisterListOpValue(), llvm::PPCMCCodeEmitter::getTLSRegEncoding(), HasConditionalBranch(), IsSmallMemAccess(), LowerLargeShift(), llvm::MipsRegInfoRecord::MipsRegInfoRecord(), printFPOReg(), and llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand().
|
inline |
Definition at line 633 of file MCContext.h.
|
inline |
Definition at line 632 of file MCContext.h.
|
inline |
Definition at line 639 of file MCContext.h.
Definition at line 289 of file MCContext.h.
Referenced by llvm::MCObjectStreamer::emitFill(), llvm::HexagonShuffler::reportError(), llvm::HexagonMCChecker::reportNote(), and llvm::HexagonMCChecker::reportWarning().
MCSubtargetInfo & MCContext::getSubtargetCopy | ( | const MCSubtargetInfo & | STI | ) |
Definition at line 534 of file MCContext.cpp.
Referenced by llvm::MCTargetAsmParser::copySTI(), llvm::AsmPrinter::doInitialization(), and getWasmSection().
|
inline |
getSymbols - Get a reference for the symbol table for clients that want to, for example, iterate over all symbols.
'const' because we still want any modifications to the table itself to use the MCContext APIs.
Definition at line 361 of file MCContext.h.
Referenced by llvm::WebAssemblyAsmPrinter::EmitEndOfAsmFile().
|
inline |
Definition at line 454 of file MCContext.h.
Referenced by llvm::WebAssemblyAsmPrinter::EmitEndOfAsmFile(), llvm::TargetLoweringObjectFileWasm::getExplicitSectionGlobal(), llvm::TargetLoweringObjectFileWasm::getStaticCtorSection(), getWasmSection(), llvm::TargetLoweringObjectFileWasm::InitializeWasm(), selectWasmSectionForGlobal(), and useCompactUnwind().
|
inline |
Definition at line 458 of file MCContext.h.
References getWasmSection().
|
inline |
Definition at line 463 of file MCContext.h.
References getSubtargetCopy(), and getWasmSection().
MCSectionWasm * MCContext::getWasmSection | ( | const Twine & | Section, |
SectionKind | K, | ||
const Twine & | Group, | ||
unsigned | UniqueID, | ||
const char * | BeginSymName | ||
) |
Definition at line 491 of file MCContext.cpp.
References getOrCreateSymbol(), getWasmSection(), llvm::Twine::isTriviallyEmpty(), llvm::MCSymbolWasm::setComdat(), and llvm::Twine::str().
MCSectionWasm * MCContext::getWasmSection | ( | const Twine & | Section, |
SectionKind | K, | ||
const MCSymbolWasm * | Group, | ||
unsigned | UniqueID, | ||
const char * | BeginSymName | ||
) |
Definition at line 503 of file MCContext.cpp.
References llvm::MCSection::begin(), F(), llvm::MCSection::getFragmentList(), llvm::MCSymbol::getName(), llvm::iplist_impl< IntrusiveListT, TraitsT >::insert(), llvm::MCSymbol::setFragment(), llvm::Twine::str(), and llvm::wasm::WASM_SYMBOL_TYPE_SECTION.
|
inline |
Definition at line 648 of file MCContext.h.
References LLVM_ATTRIBUTE_NORETURN, reportError(), and reportFatalError().
|
inline |
Definition at line 542 of file MCContext.h.
Reports whether MD5 checksum usage is consistent (all-or-none).
Definition at line 565 of file MCContext.h.
References getMCDwarfLineTable(), and llvm::MCDwarfLineTable::isMD5UsageConsistent().
Referenced by parseHexOcta().
isValidDwarfFileNumber - takes a dwarf file number and returns true if it currently is assigned and false otherwise.
Definition at line 585 of file MCContext.cpp.
References getDwarfVersion(), llvm::MCDwarfLineTable::getMCDwarfFiles(), getMCDwarfLineTable(), and llvm::MCDwarfLineTable::hasRootFile().
Referenced by setMainFileName().
|
inline |
Definition at line 656 of file MCContext.h.
References llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::StringMap< ValueTy, AllocatorTy >::find(), and I.
Get the symbol for Name
, or null.
Definition at line 256 of file MCContext.cpp.
References llvm::StringMap< ValueTy, AllocatorTy >::lookup(), and llvm::Twine::toStringRef().
Referenced by llvm::WasmException::endModule(), llvm::MCParserUtils::parseAssignmentExpression(), and setUseNamesOnTempLabels().
void MCContext::RemapDebugPaths | ( | ) |
Definition at line 543 of file MCContext.cpp.
References llvm::StringRef::startswith(), and llvm::SmallString< InternalLen >::str().
Referenced by llvm::MCObjectStreamer::FinishImpl(), and getDebugPrefixMap().
void MCContext::renameELFSection | ( | MCSectionELF * | Section, |
StringRef | Name | ||
) |
Definition at line 301 of file MCContext.cpp.
References F(), llvm::MCSection::getBeginSymbol(), llvm::MCSectionELF::getGroup(), llvm::MCSymbol::getSection(), llvm::MCSectionELF::getSectionName(), llvm::MCSectionELF::getUniqueID(), I, llvm::MCSymbol::isDefined(), llvm::MCSymbol::isInSection(), llvm::MCSymbol::isUndefined(), Name, reportError(), llvm::MipsISD::Ret, llvm::ARMBuildAttrs::Section, llvm::MCSymbolELF::setBinding(), llvm::MCSymbol::setFragment(), llvm::MCSymbolELF::setType(), llvm::ELF::STB_LOCAL, and llvm::ELF::STT_SECTION.
Referenced by getELFSection().
Definition at line 612 of file MCContext.cpp.
References llvm::SourceMgr::DK_Error, llvm::SourceMgr::PrintMessage(), and llvm::report_fatal_error().
Referenced by llvm::ARMAsmBackend::adjustFixupValue(), adjustFixupValue(), canUseLocalRelocation(), llvm::MCStreamer::checkCVLocSection(), checkIs32(), llvm::MCAssembler::computeFragmentSize(), dumpRelocs(), llvm::MCStreamer::EmitCFIStartProc(), llvm::MCStreamer::EmitCVInlineSiteIdDirective(), llvm::MCELFStreamer::EmitIdent(), llvm::MCStreamer::EmitLabel(), llvm::MCObjectStreamer::EmitValueImpl(), llvm::MCStreamer::EmitWinCFIAllocStack(), llvm::MCStreamer::EmitWinCFIEndChained(), llvm::MCStreamer::EmitWinCFIEndProc(), llvm::MCStreamer::EmitWinCFIFuncletOrFuncEnd(), llvm::MCStreamer::EmitWinCFIPushFrame(), llvm::MCStreamer::EmitWinCFISaveReg(), llvm::MCStreamer::EmitWinCFISaveXMM(), llvm::MCStreamer::EmitWinCFISetFrame(), llvm::MCStreamer::EmitWinCFIStartProc(), llvm::MCStreamer::EmitWinEHHandler(), llvm::MCStreamer::EmitWinEHHandlerData(), encodeBase64StringEntry(), llvm::MCStreamer::EnsureValidWinFrameInfo(), llvm::MCStreamer::Finish(), llvm::MCWinCOFFStreamer::FinishImpl(), llvm::MCObjectStreamer::flushPendingLabels(), getARMFixupKindMachOInfo(), llvm::MCAssembler::getAtom(), llvm::MCAsmLayout::getBaseSymbol(), getFixupKindLog2Size(), getFixupOffset(), hadError(), llvm::MCStreamer::hasUnfinishedDwarfFrameInfo(), isAssociative(), isNonILP32reloc(), isWeak(), printFPOReg(), renameELFSection(), llvm::HexagonMCChecker::reportError(), llvm::HexagonShuffler::reportError(), reportFatalError(), and llvm::RISCVAsmBackend::shouldForceRelocation().
Definition at line 626 of file MCContext.cpp.
References reportError(), and llvm::sys::RunInterruptHandlers().
Referenced by adjustFixupValue(), and hadError().
void MCContext::reset | ( | ) |
reset - return object to right after construction state to prepare to process a new module
Definition at line 83 of file MCContext.cpp.
References llvm::SmallVectorImpl< T >::clear(), llvm::StringMap< ValueTy, AllocatorTy >::clear(), DWARF2_FLAG_IS_STMT, and llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold >::Reset().
Referenced by llvm::MachineModuleInfo::doFinalization(), setUseNamesOnTempLabels(), and ~MCContext().
|
inline |
Definition at line 301 of file MCContext.h.
Referenced by llvm::LLVMTargetMachine::addAsmPrinter(), and llvm::LLVMTargetMachine::addPassesToEmitMC().
|
inline |
Set the compilation directory for DW_AT_comp_dir.
Definition at line 490 of file MCContext.h.
References llvm::StringRef::str().
|
inline |
Saves the information from the currently parsed dwarf .loc directive and sets DwarfLocSeen.
When the next instruction is assembled an entry in the line number table with this information and the address of the instruction will be created.
Definition at line 573 of file MCContext.h.
References llvm::MCDwarfLoc::setColumn(), llvm::MCDwarfLoc::setDiscriminator(), llvm::MCDwarfLoc::setFileNum(), llvm::MCDwarfLoc::setFlags(), llvm::MCDwarfLoc::setIsa(), and llvm::MCDwarfLoc::setLine().
Referenced by llvm::MCStreamer::EmitDwarfLocDirective().
|
inline |
Definition at line 551 of file MCContext.h.
|
inline |
Definition at line 616 of file MCContext.h.
|
inline |
Definition at line 619 of file MCContext.h.
|
inline |
Definition at line 627 of file MCContext.h.
|
inline |
Definition at line 594 of file MCContext.h.
|
inline |
Definition at line 591 of file MCContext.h.
Referenced by parseHexOcta().
|
inline |
Definition at line 291 of file MCContext.h.
Referenced by srcMgrDiagHandler().
|
inline |
Set the main file name and override the default.
Definition at line 510 of file MCContext.h.
References getDwarfFile(), isValidDwarfFileNumber(), and llvm::Sched::Source.
|
inline |
Specifies the "root" file and directory of the compilation unit.
These are "file 0" and "directory 0" in DWARF v5.
Definition at line 557 of file MCContext.h.
References getMCDwarfLineTable(), and llvm::MCDwarfLineTable::setRootFile().
Referenced by llvm::MCStreamer::emitDwarfFile0Directive().
|
inline |
Definition at line 635 of file MCContext.h.
|
inline |
Definition at line 640 of file MCContext.h.
void MCContext::setSymbolValue | ( | MCStreamer & | Streamer, |
StringRef | Sym, | ||
uint64_t | Val | ||
) |
Set value for a symbol.
Definition at line 262 of file MCContext.cpp.
References llvm::MCConstantExpr::create(), llvm::MCStreamer::EmitAssignment(), getOrCreateSymbol(), and llvm::ARMBuildAttrs::Symbol.
Referenced by setUseNamesOnTempLabels().
|
inline |
Definition at line 302 of file MCContext.h.
References createDirectionalLocalSymbol(), createLinkerPrivateTempSymbol(), createTempSymbol(), getDirectionalLocalSymbol(), getOrCreateFrameAllocSymbol(), getOrCreateLSDASymbol(), getOrCreateParentFrameOffsetSymbol(), getOrCreateSymbol(), lookupSymbol(), Name, reset(), and setSymbolValue().
Referenced by llvm::LLVMTargetMachine::addAsmPrinter().
|
inline |
Definition at line 665 of file MCContext.h.
References llvm::StringMap< ValueTy, AllocatorTy >::erase().