MCNullStreamer.cpp revision dce4a407a24b04eebc6a376f8e62b41aaa7b071f
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 bool EmitSymbolAttribute(MCSymbol *Symbol, 45 MCSymbolAttr Attribute) override { 46 return true; 47 } 48 49 void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) override {} 50 51 void BeginCOFFSymbolDef(const MCSymbol *Symbol) override {} 52 void EmitCOFFSymbolStorageClass(int StorageClass) override {} 53 void EmitCOFFSymbolType(int Type) override {} 54 void EndCOFFSymbolDef() override {} 55 void EmitCOFFSecRel32(MCSymbol const *Symbol) override {} 56 57 void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) override {} 58 void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, 59 unsigned ByteAlignment) override {} 60 void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, 61 unsigned ByteAlignment) override {} 62 void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = nullptr, 63 uint64_t Size = 0, unsigned ByteAlignment = 0) override {} 64 void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol, 65 uint64_t Size, unsigned ByteAlignment) override {} 66 void EmitBytes(StringRef Data) override {} 67 68 void EmitValueImpl(const MCExpr *Value, unsigned Size, 69 const SMLoc &Loc = SMLoc()) override {} 70 void EmitULEB128Value(const MCExpr *Value) override {} 71 void EmitSLEB128Value(const MCExpr *Value) override {} 72 void EmitGPRel32Value(const MCExpr *Value) override {} 73 void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0, 74 unsigned ValueSize = 1, 75 unsigned MaxBytesToEmit = 0) override {} 76 77 void EmitCodeAlignment(unsigned ByteAlignment, 78 unsigned MaxBytesToEmit = 0) override {} 79 80 bool EmitValueToOffset(const MCExpr *Offset, 81 unsigned char Value = 0) override { return false; } 82 83 void EmitFileDirective(StringRef Filename) override {} 84 unsigned EmitDwarfFileDirective(unsigned FileNo, StringRef Directory, 85 StringRef Filename, 86 unsigned CUID = 0) override { 87 return 0; 88 } 89 void EmitDwarfLocDirective(unsigned FileNo, unsigned Line, 90 unsigned Column, unsigned Flags, 91 unsigned Isa, unsigned Discriminator, 92 StringRef FileName) override {} 93 void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo&) override {} 94 95 void EmitBundleAlignMode(unsigned AlignPow2) override {} 96 void EmitBundleLock(bool AlignToEnd) override {} 97 void EmitBundleUnlock() override {} 98 99 void FinishImpl() override {} 100 101 void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override { 102 RecordProcEnd(Frame); 103 } 104 }; 105 106} 107 108MCStreamer *llvm::createNullStreamer(MCContext &Context) { 109 return new MCNullStreamer(Context); 110} 111