MCWinCOFFObjectWriter.h revision 5a364c5561ec04e33a6f5d52c14f1bac6f247ea0
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
13namespace llvm {
14  class MCFixup;
15  class MCObjectWriter;
16  class MCValue;
17  class raw_ostream;
18
19  class MCWinCOFFObjectTargetWriter {
20    const unsigned Machine;
21
22    virtual void anchor();
23
24  protected:
25    MCWinCOFFObjectTargetWriter(unsigned Machine_);
26
27  public:
28    virtual ~MCWinCOFFObjectTargetWriter() {}
29
30    unsigned getMachine() const { return Machine; }
31    virtual unsigned getRelocType(const MCValue &Target,
32                                  const MCFixup &Fixup,
33                                  bool IsCrossSection) const = 0;
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