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/MCInst.h"
11#include "llvm/MC/MCStreamer.h"
12#include "llvm/MC/MCSymbol.h"
13
14using namespace llvm;
15
16namespace {
17
18  class MCNullStreamer : public MCStreamer {
19  public:
20    MCNullStreamer(MCContext &Context) : MCStreamer(Context) {}
21
22    /// @name MCStreamer Interface
23    /// @{
24
25    bool hasRawTextSupport() const override { return true; }
26    void EmitRawTextImpl(StringRef String) override {}
27
28    bool EmitSymbolAttribute(MCSymbol *Symbol,
29                             MCSymbolAttr Attribute) override {
30      return true;
31    }
32
33    void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
34                          unsigned ByteAlignment) override {}
35    void EmitZerofill(MCSection *Section, MCSymbol *Symbol = nullptr,
36                      uint64_t Size = 0, unsigned ByteAlignment = 0,
37                      SMLoc Loc = SMLoc()) override {}
38    void EmitGPRel32Value(const MCExpr *Value) override {}
39    void BeginCOFFSymbolDef(const MCSymbol *Symbol) override {}
40    void EmitCOFFSymbolStorageClass(int StorageClass) override {}
41    void EmitCOFFSymbolType(int Type) override {}
42    void EndCOFFSymbolDef() override {}
43  };
44
45}
46
47MCStreamer *llvm::createNullStreamer(MCContext &Context) {
48  return new MCNullStreamer(Context);
49}
50