1 //===-- AMDGPUELFObjectWriter.cpp - AMDGPU ELF Writer ----------------------==// 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 /// \file 9 //===----------------------------------------------------------------------===// 10 11 #include "AMDGPUMCTargetDesc.h" 12 #include "llvm/MC/MCELFObjectWriter.h" 13 #include "llvm/MC/MCFixup.h" 14 15 using namespace llvm; 16 17 namespace { 18 19 class AMDGPUELFObjectWriter : public MCELFObjectTargetWriter { 20 public: 21 AMDGPUELFObjectWriter(bool Is64Bit, bool HasRelocationAddend); 22 protected: 23 unsigned getRelocType(MCContext &Ctx, const MCValue &Target, 24 const MCFixup &Fixup, bool IsPCRel) const override { 25 return Fixup.getKind(); 26 } 27 28 }; 29 30 31 } // End anonymous namespace 32 33 AMDGPUELFObjectWriter::AMDGPUELFObjectWriter(bool Is64Bit, 34 bool HasRelocationAddend) 35 : MCELFObjectTargetWriter(Is64Bit, 36 ELF::ELFOSABI_AMDGPU_HSA, 37 ELF::EM_AMDGPU, 38 HasRelocationAddend) { } 39 40 41 MCObjectWriter *llvm::createAMDGPUELFObjectWriter(bool Is64Bit, 42 bool HasRelocationAddend, 43 raw_pwrite_stream &OS) { 44 MCELFObjectTargetWriter *MOTW = 45 new AMDGPUELFObjectWriter(Is64Bit, HasRelocationAddend); 46 return createELFObjectWriter(MOTW, OS, true); 47 } 48