1 //===-- llvm/MC/MCWinCOFFObjectWriter.h - Win COFF Object Writer *- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_MC_MCWINCOFFOBJECTWRITER_H 11 #define LLVM_MC_MCWINCOFFOBJECTWRITER_H 12 13 namespace llvm { 14 class MCFixup; 15 class MCObjectWriter; 16 class MCValue; 17 class raw_ostream; 18 19 class MCWinCOFFObjectTargetWriter { 20 virtual void anchor(); 21 const unsigned Machine; 22 23 protected: 24 MCWinCOFFObjectTargetWriter(unsigned Machine_); 25 26 public: ~MCWinCOFFObjectTargetWriter()27 virtual ~MCWinCOFFObjectTargetWriter() {} 28 getMachine()29 unsigned getMachine() const { return Machine; } 30 virtual unsigned getRelocType(const MCValue &Target, 31 const MCFixup &Fixup, 32 bool IsCrossSection) const = 0; recordRelocation(const MCFixup &)33 virtual bool recordRelocation(const MCFixup &) const { return true; } 34 }; 35 36 /// \brief Construct a new Win COFF writer instance. 37 /// 38 /// \param MOTW - The target specific WinCOFF writer subclass. 39 /// \param OS - The stream to write to. 40 /// \returns The constructed object writer. 41 MCObjectWriter *createWinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW, 42 raw_ostream &OS); 43 } // End llvm namespace 44 45 #endif 46