mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Move EH/Debug frame handling to the object streamer.
Now that the asm streamer doesn't use it, the MCStreamer doesn't need to know about it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208562 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -27,12 +27,13 @@ MCObjectStreamer::MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB,
|
||||
: MCStreamer(Context),
|
||||
Assembler(new MCAssembler(Context, TAB, *Emitter_,
|
||||
*TAB.createObjectWriter(OS), OS)),
|
||||
CurSectionData(nullptr) {}
|
||||
CurSectionData(nullptr), EmitEHFrame(true), EmitDebugFrame(false) {}
|
||||
|
||||
MCObjectStreamer::MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB,
|
||||
raw_ostream &OS, MCCodeEmitter *Emitter_,
|
||||
MCAssembler *_Assembler)
|
||||
: MCStreamer(Context), Assembler(_Assembler), CurSectionData(nullptr) {}
|
||||
: MCStreamer(Context), Assembler(_Assembler), CurSectionData(nullptr),
|
||||
EmitEHFrame(true), EmitDebugFrame(false) {}
|
||||
|
||||
MCObjectStreamer::~MCObjectStreamer() {
|
||||
delete &Assembler->getBackend();
|
||||
@@ -46,9 +47,22 @@ void MCObjectStreamer::reset() {
|
||||
Assembler->reset();
|
||||
CurSectionData = nullptr;
|
||||
CurInsertionPoint = MCSectionData::iterator();
|
||||
EmitEHFrame = true;
|
||||
EmitDebugFrame = false;
|
||||
MCStreamer::reset();
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitFrames(MCAsmBackend *MAB) {
|
||||
if (!getNumFrameInfos())
|
||||
return;
|
||||
|
||||
if (EmitEHFrame)
|
||||
MCDwarfFrameEmitter::Emit(*this, MAB, true);
|
||||
|
||||
if (EmitDebugFrame)
|
||||
MCDwarfFrameEmitter::Emit(*this, MAB, false);
|
||||
}
|
||||
|
||||
MCFragment *MCObjectStreamer::getCurrentFragment() const {
|
||||
assert(getCurrentSectionData() && "No current section!");
|
||||
|
||||
@@ -97,6 +111,12 @@ const MCExpr *MCObjectStreamer::AddValueSymbols(const MCExpr *Value) {
|
||||
return Value;
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitCFISections(bool EH, bool Debug) {
|
||||
MCStreamer::EmitCFISections(EH, Debug);
|
||||
EmitEHFrame = EH;
|
||||
EmitDebugFrame = Debug;
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size,
|
||||
const SMLoc &Loc) {
|
||||
MCDataFragment *DF = getOrCreateDataFragment();
|
||||
|
Reference in New Issue
Block a user