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 { 14251662Sdim class MCFixup; 15249423Sdim class MCObjectWriter; 16251662Sdim class MCValue; 17249423Sdim class raw_ostream; 18249423Sdim 19234285Sdim class MCWinCOFFObjectTargetWriter { 20263508Sdim 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; } 30251662Sdim virtual unsigned getRelocType(const MCValue &Target, 31251662Sdim const MCFixup &Fixup, 32251662Sdim 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