File indexing completed on 2026-05-10 08:44:13
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_MC_MCDXCONTAINERWRITER_H
0010 #define LLVM_MC_MCDXCONTAINERWRITER_H
0011
0012 #include "llvm/MC/MCObjectWriter.h"
0013 #include "llvm/MC/MCValue.h"
0014 #include "llvm/Support/EndianStream.h"
0015 #include "llvm/TargetParser/Triple.h"
0016
0017 namespace llvm {
0018
0019 class raw_pwrite_stream;
0020
0021 class MCDXContainerTargetWriter : public MCObjectTargetWriter {
0022 protected:
0023 MCDXContainerTargetWriter() {}
0024
0025 public:
0026 virtual ~MCDXContainerTargetWriter();
0027
0028 Triple::ObjectFormatType getFormat() const override {
0029 return Triple::DXContainer;
0030 }
0031 static bool classof(const MCObjectTargetWriter *W) {
0032 return W->getFormat() == Triple::DXContainer;
0033 }
0034 };
0035
0036 class DXContainerObjectWriter final : public MCObjectWriter {
0037 support::endian::Writer W;
0038 std::unique_ptr<MCDXContainerTargetWriter> TargetObjectWriter;
0039
0040 public:
0041 DXContainerObjectWriter(std::unique_ptr<MCDXContainerTargetWriter> MOTW,
0042 raw_pwrite_stream &OS)
0043 : W(OS, llvm::endianness::little), TargetObjectWriter(std::move(MOTW)) {}
0044
0045 void recordRelocation(MCAssembler &Asm, const MCFragment *Fragment,
0046 const MCFixup &Fixup, MCValue Target,
0047 uint64_t &FixedValue) override {}
0048
0049 uint64_t writeObject(MCAssembler &Asm) override;
0050 };
0051 }
0052
0053 #endif