1234285Sdim//===-- llvm/MC/MCWinCOFFObjectWriter.h - Win COFF Object Writer *- C++ -*-===// 2234285Sdim// 3234285Sdim// The LLVM Compiler Infrastructure 4234285Sdim// 5234285Sdim// This file is distributed under the University of Illinois Open Source 6234285Sdim// License. See LICENSE.TXT for details. 7234285Sdim// 8234285Sdim//===----------------------------------------------------------------------===// 9234285Sdim 10234285Sdim#ifndef LLVM_MC_MCWINCOFFOBJECTWRITER_H 11234285Sdim#define LLVM_MC_MCWINCOFFOBJECTWRITER_H 12234285Sdim 13234285Sdimnamespace llvm { 14252723Sdim class MCFixup; 15252723Sdim class MCObjectWriter; 16252723Sdim class MCValue; 17252723Sdim class raw_ostream; 18252723Sdim 19234285Sdim class MCWinCOFFObjectTargetWriter { 20263509Sdim virtual void anchor(); 21234285Sdim const unsigned Machine; 22234285Sdim 23234285Sdim protected: 24234285Sdim MCWinCOFFObjectTargetWriter(unsigned Machine_); 25234285Sdim 26234285Sdim public: 27234285Sdim virtual ~MCWinCOFFObjectTargetWriter() {} 28234285Sdim 29234285Sdim unsigned getMachine() const { return Machine; } 30252723Sdim virtual unsigned getRelocType(const MCValue &Target, 31252723Sdim const MCFixup &Fixup, 32252723Sdim bool IsCrossSection) const = 0; 33234285Sdim }; 34234285Sdim 35234285Sdim /// \brief Construct a new Win COFF writer instance. 36234285Sdim /// 37234285Sdim /// \param MOTW - The target specific WinCOFF writer subclass. 38234285Sdim /// \param OS - The stream to write to. 39234285Sdim /// \returns The constructed object writer. 40234285Sdim MCObjectWriter *createWinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW, 41234285Sdim raw_ostream &OS); 42234285Sdim} // End llvm namespace 43234285Sdim 44234285Sdim#endif 45