1 //===- MCDXContainerStreamer.h - MCDXContainerStreamer Interface ---*- C++ ===// 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 // Overrides MCObjectStreamer to disable all unnecessary features with stubs. 10 // The DXContainer format isn't a fully featured object format. It doesn't 11 // support symbols, and initially it will not support instruction data since it 12 // is used as a bitcode container for DXIL. 13 // 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_MC_MCDXCONTAINERSTREAMER_H 17 #define LLVM_MC_MCDXCONTAINERSTREAMER_H 18 19 #include "llvm/MC/MCAsmBackend.h" 20 #include "llvm/MC/MCCodeEmitter.h" 21 #include "llvm/MC/MCObjectStreamer.h" 22 #include "llvm/MC/MCObjectWriter.h" 23 24 namespace llvm { 25 class MCInst; 26 class raw_ostream; 27 28 class MCDXContainerStreamer : public MCObjectStreamer { 29 public: 30 MCDXContainerStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB, 31 std::unique_ptr<MCObjectWriter> OW, 32 std::unique_ptr<MCCodeEmitter> Emitter) 33 : MCObjectStreamer(Context, std::move(TAB), std::move(OW), 34 std::move(Emitter)) {} 35 36 bool emitSymbolAttribute(MCSymbol *, MCSymbolAttr) override { return false; } 37 void emitCommonSymbol(MCSymbol *, uint64_t, unsigned) override {} 38 void emitZerofill(MCSection *, MCSymbol *Symbol = nullptr, uint64_t Size = 0, 39 unsigned ByteAlignment = 0, SMLoc Loc = SMLoc()) override {} 40 41 private: 42 void emitInstToData(const MCInst &, const MCSubtargetInfo &) override; 43 }; 44 45 } // end namespace llvm 46 47 #endif // LLVM_MC_MCDXCONTAINERSTREAMER_H 48