MCNullStreamer.cpp revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1//===- lib/MC/MCNullStreamer.cpp - Dummy Streamer Implementation ----------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "llvm/MC/MCStreamer.h" 11#include "llvm/MC/MCContext.h" 12#include "llvm/MC/MCInst.h" 13#include "llvm/MC/MCSectionMachO.h" 14#include "llvm/MC/MCSymbol.h" 15 16using namespace llvm; 17 18namespace { 19 20 class MCNullStreamer : public MCStreamer { 21 public: 22 MCNullStreamer(MCContext &Context) : MCStreamer(Context) {} 23 24 /// @name MCStreamer Interface 25 /// @{ 26 27 void ChangeSection(const MCSection *Section, 28 const MCExpr *Subsection) override { 29 } 30 31 void EmitLabel(MCSymbol *Symbol) override { 32 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); 33 assert(getCurrentSection().first &&"Cannot emit before setting section!"); 34 AssignSection(Symbol, getCurrentSection().first); 35 } 36 void EmitDebugLabel(MCSymbol *Symbol) override { 37 EmitLabel(Symbol); 38 } 39 void EmitAssemblerFlag(MCAssemblerFlag Flag) override {} 40 void EmitThumbFunc(MCSymbol *Func) override {} 41 42 void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) override {} 43 void EmitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol) override {} 44 void EmitDwarfAdvanceLineAddr(int64_t LineDelta, 45 const MCSymbol *LastLabel, 46 const MCSymbol *Label, 47 unsigned PointerSize) override {} 48 49 bool EmitSymbolAttribute(MCSymbol *Symbol, 50 MCSymbolAttr Attribute) override { 51 return true; 52 } 53 54 void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) override {} 55 56 void BeginCOFFSymbolDef(const MCSymbol *Symbol) override {} 57 void EmitCOFFSymbolStorageClass(int StorageClass) override {} 58 void EmitCOFFSymbolType(int Type) override {} 59 void EndCOFFSymbolDef() override {} 60 void EmitCOFFSecRel32(MCSymbol const *Symbol) override {} 61 62 void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) override {} 63 void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, 64 unsigned ByteAlignment) override {} 65 void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, 66 unsigned ByteAlignment) override {} 67 void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0, 68 uint64_t Size = 0, unsigned ByteAlignment = 0) override {} 69 void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol, 70 uint64_t Size, unsigned ByteAlignment) override {} 71 void EmitBytes(StringRef Data) override {} 72 73 void EmitValueImpl(const MCExpr *Value, unsigned Size) override {} 74 void EmitULEB128Value(const MCExpr *Value) override {} 75 void EmitSLEB128Value(const MCExpr *Value) override {} 76 void EmitGPRel32Value(const MCExpr *Value) override {} 77 void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0, 78 unsigned ValueSize = 1, 79 unsigned MaxBytesToEmit = 0) override {} 80 81 void EmitCodeAlignment(unsigned ByteAlignment, 82 unsigned MaxBytesToEmit = 0) override {} 83 84 bool EmitValueToOffset(const MCExpr *Offset, 85 unsigned char Value = 0) override { return false; } 86 87 void EmitFileDirective(StringRef Filename) override {} 88 unsigned EmitDwarfFileDirective(unsigned FileNo, StringRef Directory, 89 StringRef Filename, 90 unsigned CUID = 0) override { 91 return 0; 92 } 93 void EmitDwarfLocDirective(unsigned FileNo, unsigned Line, 94 unsigned Column, unsigned Flags, 95 unsigned Isa, unsigned Discriminator, 96 StringRef FileName) override {} 97 void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo&) override {} 98 99 void EmitBundleAlignMode(unsigned AlignPow2) override {} 100 void EmitBundleLock(bool AlignToEnd) override {} 101 void EmitBundleUnlock() override {} 102 103 void FinishImpl() override {} 104 105 void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override { 106 RecordProcEnd(Frame); 107 } 108 }; 109 110} 111 112MCStreamer *llvm::createNullStreamer(MCContext &Context) { 113 return new MCNullStreamer(Context); 114} 115