diff options
Diffstat (limited to 'llvm/lib/MC/MCObjectStreamer.cpp')
| -rw-r--r-- | llvm/lib/MC/MCObjectStreamer.cpp | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index 683f2c6..7d3006a7 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -12,10 +12,12 @@  #include "llvm/Support/ErrorHandling.h"  #include "llvm/MC/MCAssembler.h"  #include "llvm/MC/MCCodeEmitter.h" +#include "llvm/MC/MCContext.h"  #include "llvm/MC/MCDwarf.h"  #include "llvm/MC/MCExpr.h"  #include "llvm/MC/MCSymbol.h"  #include "llvm/Target/TargetAsmBackend.h" +#include "llvm/Target/TargetAsmInfo.h"  using namespace llvm;  MCObjectStreamer::MCObjectStreamer(MCContext &Context, TargetAsmBackend &TAB, @@ -74,8 +76,8 @@ const MCExpr *MCObjectStreamer::AddValueSymbols(const MCExpr *Value) {    return Value;  } -void MCObjectStreamer::EmitValue(const MCExpr *Value, unsigned Size, -                                 unsigned AddrSpace) { +void MCObjectStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size, +                                     bool isPCRel, unsigned AddrSpace) {    assert(AddrSpace == 0 && "Address space must be 0!");    MCDataFragment *DF = getOrCreateDataFragment(); @@ -87,7 +89,7 @@ void MCObjectStreamer::EmitValue(const MCExpr *Value, unsigned Size,    }    DF->addFixup(MCFixup::Create(DF->getContents().size(),                                 AddValueSymbols(Value), -                               MCFixup::getKindForSize(Size, false))); +                               MCFixup::getKindForSize(Size, isPCRel)));    DF->getContents().resize(DF->getContents().size() + Size, 0);  } @@ -189,7 +191,7 @@ void MCObjectStreamer::EmitDwarfAdvanceLineAddr(int64_t LineDelta,                                                  const MCSymbol *LastLabel,                                                  const MCSymbol *Label) {    if (!LastLabel) { -    int PointerSize = getAssembler().getBackend().getPointerSize(); +    int PointerSize = getContext().getTargetAsmInfo().getPointerSize();      EmitDwarfSetLineAddr(LineDelta, Label, PointerSize);      return;    } @@ -215,5 +217,9 @@ void MCObjectStreamer::EmitValueToOffset(const MCExpr *Offset,  }  void MCObjectStreamer::Finish() { +  // Dump out the dwarf file & directory tables and line tables. +  if (getContext().hasDwarfFiles()) +    MCDwarfFileTable::Emit(this); +    getAssembler().Finish();  }  | 
