AMDGPUELFObjectWriter.cpp revision 288943
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
15using namespace llvm;
16
17namespace {
18
19class AMDGPUELFObjectWriter : public MCELFObjectTargetWriter {
20public:
21  AMDGPUELFObjectWriter(bool Is64Bit);
22protected:
23  unsigned GetRelocType(const MCValue &Target, const MCFixup &Fixup,
24                        bool IsPCRel) const override {
25    return Fixup.getKind();
26  }
27
28};
29
30
31} // End anonymous namespace
32
33AMDGPUELFObjectWriter::AMDGPUELFObjectWriter(bool Is64Bit)
34  : MCELFObjectTargetWriter(Is64Bit, ELF::ELFOSABI_AMDGPU_HSA,
35                            ELF::EM_AMDGPU, false) { }
36
37MCObjectWriter *llvm::createAMDGPUELFObjectWriter(bool Is64Bit, raw_pwrite_stream &OS) {
38  MCELFObjectTargetWriter *MOTW = new AMDGPUELFObjectWriter(Is64Bit);
39  return createELFObjectWriter(MOTW, OS, true);
40}
41