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"
13namespace llvm {
14class MCContext;
15class MCExpr;
16class MCSection;
17class MCSymbol;
18} // namespace llvm
19
20using namespace llvm;
21
22namespace {
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
56MCStreamer *llvm::createNullStreamer(MCContext &Context) {
57  return new MCNullStreamer(Context);
58}
59