LLVM
8.0.1
|
Collects and handles line tables information in a CodeView format. More...
#include "CodeGen/AsmPrinter/CodeViewDebug.h"
Classes | |
struct | TypeLoweringScope |
Public Member Functions | |
CodeViewDebug (AsmPrinter *AP) | |
void | setSymbolSize (const MCSymbol *, uint64_t) override |
For symbols that have a size designated (e.g. More... | |
void | endModule () override |
Emit the COFF section that holds the line table information. More... | |
void | beginInstruction (const MachineInstr *MI) override |
Process beginning of an instruction. More... | |
Public Member Functions inherited from llvm::DebugHandlerBase | |
void | endInstruction () override |
Process end of an instruction. More... | |
void | beginFunction (const MachineFunction *MF) override |
Gather pre-function debug information. More... | |
void | endFunction (const MachineFunction *MF) override |
Gather post-function debug information. More... | |
MCSymbol * | getLabelBeforeInsn (const MachineInstr *MI) |
Return Label preceding the instruction. More... | |
MCSymbol * | getLabelAfterInsn (const MachineInstr *MI) |
Return Label immediately following the instruction. More... | |
const MCExpr * | getFunctionLocalOffsetAfterInsn (const MachineInstr *MI) |
Return the function-local offset of an instruction. More... | |
Public Member Functions inherited from llvm::AsmPrinterHandler | |
virtual | ~AsmPrinterHandler () |
Pin vtable to this file. More... | |
virtual void | markFunctionEnd () |
virtual void | beginFragment (const MachineBasicBlock *MBB, ExceptionSymbolProvider ESP) |
virtual void | endFragment () |
virtual void | beginFunclet (const MachineBasicBlock &MBB, MCSymbol *Sym=nullptr) |
Emit target-specific EH funclet machinery. More... | |
virtual void | endFunclet () |
Protected Member Functions | |
void | beginFunctionImpl (const MachineFunction *MF) override |
Gather pre-function debug information. More... | |
void | endFunctionImpl (const MachineFunction *) override |
Gather post-function debug information. More... | |
Protected Member Functions inherited from llvm::DebugHandlerBase | |
DebugHandlerBase (AsmPrinter *A) | |
void | identifyScopeMarkers () |
Indentify instructions that are marking the beginning of or ending of a scope. More... | |
void | requestLabelBeforeInsn (const MachineInstr *MI) |
Ensure that a label will be emitted before MI. More... | |
void | requestLabelAfterInsn (const MachineInstr *MI) |
Ensure that a label will be emitted after MI. More... | |
virtual void | skippedNonDebugFunction () |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::DebugHandlerBase | |
static uint64_t | getBaseTypeSize (const DITypeRef TyRef) |
If this type is derived from a base type then return base type size. More... | |
Protected Attributes inherited from llvm::DebugHandlerBase | |
AsmPrinter * | Asm |
Target of debug info emission. More... | |
MachineModuleInfo * | MMI |
Collected machine module information. More... | |
DebugLoc | PrevInstLoc |
Previous instruction's location information. More... | |
MCSymbol * | PrevLabel = nullptr |
const MachineBasicBlock * | PrevInstBB = nullptr |
DebugLoc | PrologEndLoc |
This location indicates end of function prologue and beginning of function body. More... | |
const MachineInstr * | CurMI = nullptr |
If nonnull, stores the current machine instruction we're processing. More... | |
LexicalScopes | LScopes |
DbgValueHistoryMap | DbgValues |
History of DBG_VALUE and clobber instructions for each user variable. More... | |
DbgLabelInstrMap | DbgLabels |
Mapping of inlined labels and DBG_LABEL machine instruction. More... | |
DenseMap< const MachineInstr *, MCSymbol * > | LabelsBeforeInsn |
Maps instruction with label emitted before instruction. More... | |
DenseMap< const MachineInstr *, MCSymbol * > | LabelsAfterInsn |
Maps instruction with label emitted after instruction. More... | |
Collects and handles line tables information in a CodeView format.
Definition at line 52 of file CodeViewDebug.h.
CodeViewDebug::CodeViewDebug | ( | AsmPrinter * | AP | ) |
Definition at line 111 of file CodeViewDebug.cpp.
References llvm::MCContext::allocate(), llvm::DebugHandlerBase::Asm, assert(), llvm::StringRef::back(), llvm::DIFile::CSK_MD5, llvm::DIFile::CSK_SHA1, llvm::MCStreamer::EmitCVFileDirective(), llvm::MCStreamer::EmitCVInlineSiteIdDirective(), F(), llvm::ARMBuildAttrs::File, llvm::fromHex(), llvm::MCObjectFileInfo::getCOFFDebugSymbolsSection(), llvm::MCStreamer::getContext(), llvm::DIScope::getDirectory(), llvm::DIScope::getFilename(), llvm::MachineModuleInfo::getModule(), llvm::Module::getModuleFlag(), llvm::Module::getNamedMetadata(), llvm::AsmPrinter::getObjFileLowering(), llvm::Module::getTargetTriple(), llvm::sys::path::is_absolute(), llvm::ConstantInt::isZero(), mapArchToCVCPUType(), llvm::Intrinsic::memcpy, llvm::DebugHandlerBase::MMI, llvm::None, llvm::sys::path::posix, replace(), llvm::MachineModuleInfo::setDebugInfoAvailability(), llvm::StringRef::startswith(), and Success.
|
overrideprotectedvirtual |
Gather pre-function debug information.
Implements llvm::DebugHandlerBase.
Definition at line 1278 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, assert(), llvm::classifyEHPersonality(), llvm::MachineFunction::exposesReturnsTwice(), FramePtr, llvm::MachineInstr::FrameSetup, llvm::MachineFrameInfo::getCVBytesOfCalleeSavedRegisters(), llvm::DebugLoc::getFnDebugLoc(), llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::MachineFunction::getFunction(), llvm::AsmPrinter::getFunctionBegin(), llvm::MachineFrameInfo::getOffsetAdjustment(), llvm::TargetMachine::getOptLevel(), llvm::Function::getPersonalityFn(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFrameInfo::getStackSize(), llvm::MachineFunction::getSubtarget(), llvm::Function::hasFnAttribute(), llvm::TargetFrameLowering::hasFP(), llvm::MachineFunction::hasInlineAsm(), llvm::Function::hasPersonalityFn(), llvm::MachineFrameInfo::hasStackProtectorIndex(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::Attribute::InlineHint, llvm::isAsynchronousEHPersonality(), MI, llvm::Attribute::Naked, llvm::TargetRegisterInfo::needsStackRealignment(), llvm::None, llvm::CodeGenOpt::None, llvm::Function::optForSize(), llvm::Attribute::OptimizeNone, llvm::DebugHandlerBase::PrologEndLoc, llvm::AsmPrinter::TM, and TRI.
|
overridevirtual |
Process beginning of an instruction.
Reimplemented from llvm::DebugHandlerBase.
Definition at line 2811 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, llvm::DebugHandlerBase::beginInstruction(), llvm::MCContext::createTempSymbol(), llvm::MachineInstr::FrameSetup, llvm::MachineModuleInfo::getContext(), llvm::MachineInstr::getDebugLoc(), llvm::MachineInstr::getFlag(), llvm::MachineInstr::getParent(), llvm::MachineInstr::isDebugInstr(), Kind, llvm::AsmPrinter::MF, llvm::DebugHandlerBase::MMI, and llvm::DebugHandlerBase::PrevInstBB.
|
overrideprotectedvirtual |
Gather post-function debug information.
Implements llvm::DebugHandlerBase.
Definition at line 2777 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, assert(), llvm::MachineFunction::getCodeViewAnnotations(), llvm::LexicalScopes::getCurrentFunctionScope(), llvm::MachineFunction::getFunction(), llvm::AsmPrinter::getFunctionEnd(), llvm::Function::getSubprogram(), and llvm::DebugHandlerBase::LScopes.
|
overridevirtual |
Emit the COFF section that holds the line table information.
Implements llvm::AsmPrinterHandler.
Definition at line 518 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, assert(), llvm::MachineModuleInfo::hasDebugInfo(), llvm::DebugHandlerBase::MMI, and P.
|
inlineoverridevirtual |
For symbols that have a size designated (e.g.
common symbols), this tracks that size.
Implements llvm::AsmPrinterHandler.
Definition at line 457 of file CodeViewDebug.h.
References MI.