MCWinCOFFObjectWriter.h revision 263508
190075Sobrien//===-- llvm/MC/MCWinCOFFObjectWriter.h - Win COFF Object Writer *- C++ -*-===//
290075Sobrien//
3132718Skan//                     The LLVM Compiler Infrastructure
490075Sobrien//
590075Sobrien// This file is distributed under the University of Illinois Open Source
6132718Skan// License. See LICENSE.TXT for details.
790075Sobrien//
8132718Skan//===----------------------------------------------------------------------===//
9132718Skan
10132718Skan#ifndef LLVM_MC_MCWINCOFFOBJECTWRITER_H
11132718Skan#define LLVM_MC_MCWINCOFFOBJECTWRITER_H
1290075Sobrien
13132718Skannamespace llvm {
14132718Skan  class MCFixup;
15132718Skan  class MCObjectWriter;
16132718Skan  class MCValue;
1790075Sobrien  class raw_ostream;
18132718Skan
19132718Skan  class MCWinCOFFObjectTargetWriter {
20132718Skan    virtual void anchor();
21132718Skan    const unsigned Machine;
2290075Sobrien
2390075Sobrien  protected:
2490075Sobrien    MCWinCOFFObjectTargetWriter(unsigned Machine_);
2590075Sobrien
2690075Sobrien  public:
2790075Sobrien    virtual ~MCWinCOFFObjectTargetWriter() {}
2890075Sobrien
2990075Sobrien    unsigned getMachine() const { return Machine; }
3090075Sobrien    virtual unsigned getRelocType(const MCValue &Target,
3190075Sobrien                                  const MCFixup &Fixup,
3290075Sobrien                                  bool IsCrossSection) const = 0;
3390075Sobrien  };
3490075Sobrien
3590075Sobrien  /// \brief Construct a new Win COFF writer instance.
3690075Sobrien  ///
3790075Sobrien  /// \param MOTW - The target specific WinCOFF writer subclass.
3890075Sobrien  /// \param OS - The stream to write to.
3990075Sobrien  /// \returns The constructed object writer.
4090075Sobrien  MCObjectWriter *createWinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW,
4190075Sobrien                                            raw_ostream &OS);
4290075Sobrien} // End llvm namespace
4390075Sobrien
4490075Sobrien#endif
4590075Sobrien