blob: 820f17df896000166285c7e89685ac986207347c [file] [log] [blame]
Tom Stellard99916592013-04-15 17:51:21 +00001//===-- 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"
Tom Stellard067c8152014-07-21 14:01:14 +000013#include "llvm/MC/MCFixup.h"
Tom Stellard99916592013-04-15 17:51:21 +000014
15using namespace llvm;
16
17namespace {
18
19class AMDGPUELFObjectWriter : public MCELFObjectTargetWriter {
20public:
Tom Stellardf0296ce2015-06-22 21:03:54 +000021 AMDGPUELFObjectWriter(bool Is64Bit);
Tom Stellard99916592013-04-15 17:51:21 +000022protected:
Rafael Espindola9ab38012014-03-27 20:41:17 +000023 unsigned GetRelocType(const MCValue &Target, const MCFixup &Fixup,
Rafael Espindolac03f44c2014-03-27 20:49:35 +000024 bool IsPCRel) const override {
Tom Stellard067c8152014-07-21 14:01:14 +000025 return Fixup.getKind();
Tom Stellard99916592013-04-15 17:51:21 +000026 }
27
28};
29
30
31} // End anonymous namespace
32
Tom Stellardf0296ce2015-06-22 21:03:54 +000033AMDGPUELFObjectWriter::AMDGPUELFObjectWriter(bool Is64Bit)
Tom Stellard91efe9c2015-06-26 21:15:11 +000034 : MCELFObjectTargetWriter(Is64Bit, ELF::ELFOSABI_AMDGPU_HSA,
35 ELF::EM_AMDGPU, false) { }
Tom Stellard99916592013-04-15 17:51:21 +000036
Tom Stellardf0296ce2015-06-22 21:03:54 +000037MCObjectWriter *llvm::createAMDGPUELFObjectWriter(bool Is64Bit, raw_pwrite_stream &OS) {
38 MCELFObjectTargetWriter *MOTW = new AMDGPUELFObjectWriter(Is64Bit);
Tom Stellard99916592013-04-15 17:51:21 +000039 return createELFObjectWriter(MOTW, OS, true);
40}