diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-28 16:22:59 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-28 16:22:59 +0000 |
| commit | 1679580cc94fd814f33efff5d93245769bc992c1 (patch) | |
| tree | 1c1762d4de0796c6f7df62334b56a4e9ca65dd54 /llvm/lib/MC/WinCOFFStreamer.cpp | |
| parent | d4b3feb3f7efabac49369683d97cbac642118728 (diff) | |
| download | bcm5719-llvm-1679580cc94fd814f33efff5d93245769bc992c1.tar.gz bcm5719-llvm-1679580cc94fd814f33efff5d93245769bc992c1.zip | |
Revert previous patch while I debug the darwin bootstrap failure.
llvm-svn: 120246
Diffstat (limited to 'llvm/lib/MC/WinCOFFStreamer.cpp')
| -rw-r--r-- | llvm/lib/MC/WinCOFFStreamer.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/MC/WinCOFFStreamer.cpp b/llvm/lib/MC/WinCOFFStreamer.cpp index 1754ed30957..cba71882676 100644 --- a/llvm/lib/MC/WinCOFFStreamer.cpp +++ b/llvm/lib/MC/WinCOFFStreamer.cpp @@ -49,6 +49,7 @@ public: // MCStreamer interface virtual void InitSections(); + virtual void EmitLabel(MCSymbol *Symbol); virtual void EmitAssemblerFlag(MCAssemblerFlag Flag); virtual void EmitThumbFunc(MCSymbol *Func); virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value); @@ -174,6 +175,28 @@ void WinCOFFStreamer::InitSections() { SetSectionText(); } +void WinCOFFStreamer::EmitLabel(MCSymbol *Symbol) { + // TODO: This is copied almost exactly from the MachOStreamer. Consider + // merging into MCObjectStreamer? + assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); + assert(!Symbol->isVariable() && "Cannot emit a variable symbol!"); + assert(CurSection && "Cannot emit before setting section!"); + + Symbol->setSection(*CurSection); + + MCSymbolData &SD = getAssembler().getOrCreateSymbolData(*Symbol); + + // FIXME: This is wasteful, we don't necessarily need to create a data + // fragment. Instead, we should mark the symbol as pointing into the data + // fragment if it exists, otherwise we should just queue the label and set its + // fragment pointer when we emit the next fragment. + MCDataFragment *DF = getOrCreateDataFragment(); + + assert(!SD.getFragment() && "Unexpected fragment on symbol data!"); + SD.setFragment(DF); + SD.setOffset(DF->getContents().size()); +} + void WinCOFFStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) { llvm_unreachable("not implemented"); } |

