Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===-- llvm/MC/MCXCOFFObjectWriter.h - XCOFF Object Writer ---------------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8.  
  9. #ifndef LLVM_MC_MCXCOFFOBJECTWRITER_H
  10. #define LLVM_MC_MCXCOFFOBJECTWRITER_H
  11.  
  12. #include "llvm/MC/MCObjectWriter.h"
  13.  
  14. namespace llvm {
  15.  
  16. class raw_pwrite_stream;
  17.  
  18. class MCXCOFFObjectTargetWriter : public MCObjectTargetWriter {
  19. protected:
  20.   MCXCOFFObjectTargetWriter(bool Is64Bit);
  21.  
  22. public:
  23.   ~MCXCOFFObjectTargetWriter() override;
  24.  
  25.   Triple::ObjectFormatType getFormat() const override { return Triple::XCOFF; }
  26.   static bool classof(const MCObjectTargetWriter *W) {
  27.     return W->getFormat() == Triple::XCOFF;
  28.   }
  29.   bool is64Bit() const { return Is64Bit; }
  30.  
  31.   // Returns relocation info such as type, sign and size.
  32.   // First element of the pair contains type,
  33.   // second element contains sign and size.
  34.   virtual std::pair<uint8_t, uint8_t>
  35.   getRelocTypeAndSignSize(const MCValue &Target, const MCFixup &Fixup,
  36.                           bool IsPCRel) const = 0;
  37.  
  38. private:
  39.   bool Is64Bit;
  40. };
  41.  
  42. std::unique_ptr<MCObjectWriter>
  43. createXCOFFObjectWriter(std::unique_ptr<MCXCOFFObjectTargetWriter> MOTW,
  44.                         raw_pwrite_stream &OS);
  45.  
  46. } // end namespace llvm
  47.  
  48. #endif // LLVM_MC_MCXCOFFOBJECTWRITER_H
  49.