1 //===- lib/MC/MCNullStreamer.cpp - Dummy Streamer Implementation ----------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/ADT/StringRef.h" 10 #include "llvm/MC/MCDirectives.h" 11 #include "llvm/MC/MCStreamer.h" 12 #include "llvm/Support/SMLoc.h" 13 namespace llvm { 14 class MCContext; 15 class MCExpr; 16 class MCSection; 17 class MCSymbol; 18 } // namespace llvm 19 20 using namespace llvm; 21 22 namespace { 23 24 class MCNullStreamer : public MCStreamer { 25 public: 26 MCNullStreamer(MCContext &Context) : MCStreamer(Context) {} 27 28 /// @name MCStreamer Interface 29 /// @{ 30 31 bool hasRawTextSupport() const override { return true; } 32 void emitRawTextImpl(StringRef String) override {} 33 34 bool emitSymbolAttribute(MCSymbol *Symbol, 35 MCSymbolAttr Attribute) override { 36 return true; 37 } 38 39 void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size, 40 Align ByteAlignment) override {} 41 void emitZerofill(MCSection *Section, MCSymbol *Symbol = nullptr, 42 uint64_t Size = 0, Align ByteAlignment = Align(1), 43 SMLoc Loc = SMLoc()) override {} 44 void emitGPRel32Value(const MCExpr *Value) override {} 45 void beginCOFFSymbolDef(const MCSymbol *Symbol) override {} 46 void emitCOFFSymbolStorageClass(int StorageClass) override {} 47 void emitCOFFSymbolType(int Type) override {} 48 void endCOFFSymbolDef() override {} 49 void 50 emitXCOFFSymbolLinkageWithVisibility(MCSymbol *Symbol, MCSymbolAttr Linkage, 51 MCSymbolAttr Visibility) override {} 52 }; 53 54 } 55 56 MCStreamer *llvm::createNullStreamer(MCContext &Context) { 57 return new MCNullStreamer(Context); 58 } 59