17d523365SDimitry Andric //===-------- AMDGPUELFStreamer.cpp - ELF Object Output -------------------===//
27d523365SDimitry Andric //
37d523365SDimitry Andric //                     The LLVM Compiler Infrastructure
47d523365SDimitry Andric //
57d523365SDimitry Andric // This file is distributed under the University of Illinois Open Source
67d523365SDimitry Andric // License. See LICENSE.TXT for details.
77d523365SDimitry Andric //
87d523365SDimitry Andric //===----------------------------------------------------------------------===//
97d523365SDimitry Andric 
107d523365SDimitry Andric #include "AMDGPUELFStreamer.h"
117d523365SDimitry Andric #include "Utils/AMDGPUBaseInfo.h"
122cab237bSDimitry Andric #include "llvm/BinaryFormat/ELF.h"
132cab237bSDimitry Andric #include "llvm/MC/MCAsmBackend.h"
142cab237bSDimitry Andric #include "llvm/MC/MCCodeEmitter.h"
15*4ba319b5SDimitry Andric #include "llvm/MC/MCObjectWriter.h"
167d523365SDimitry Andric 
177d523365SDimitry Andric using namespace llvm;
187d523365SDimitry Andric 
19*4ba319b5SDimitry Andric namespace {
202cab237bSDimitry Andric 
21*4ba319b5SDimitry Andric class AMDGPUELFStreamer : public MCELFStreamer {
22*4ba319b5SDimitry Andric public:
AMDGPUELFStreamer(const Triple & T,MCContext & Context,std::unique_ptr<MCAsmBackend> MAB,std::unique_ptr<MCObjectWriter> OW,std::unique_ptr<MCCodeEmitter> Emitter)23*4ba319b5SDimitry Andric   AMDGPUELFStreamer(const Triple &T, MCContext &Context,
24*4ba319b5SDimitry Andric                     std::unique_ptr<MCAsmBackend> MAB,
25*4ba319b5SDimitry Andric                     std::unique_ptr<MCObjectWriter> OW,
26*4ba319b5SDimitry Andric                     std::unique_ptr<MCCodeEmitter> Emitter)
27*4ba319b5SDimitry Andric       : MCELFStreamer(Context, std::move(MAB), std::move(OW),
28*4ba319b5SDimitry Andric                       std::move(Emitter)) {}
29*4ba319b5SDimitry Andric };
30*4ba319b5SDimitry Andric 
312cab237bSDimitry Andric }
322cab237bSDimitry Andric 
createAMDGPUELFStreamer(const Triple & T,MCContext & Context,std::unique_ptr<MCAsmBackend> MAB,std::unique_ptr<MCObjectWriter> OW,std::unique_ptr<MCCodeEmitter> Emitter,bool RelaxAll)332cab237bSDimitry Andric MCELFStreamer *llvm::createAMDGPUELFStreamer(
342cab237bSDimitry Andric     const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> MAB,
35*4ba319b5SDimitry Andric     std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
367d523365SDimitry Andric     bool RelaxAll) {
37*4ba319b5SDimitry Andric   return new AMDGPUELFStreamer(T, Context, std::move(MAB), std::move(OW),
382cab237bSDimitry Andric                                std::move(Emitter));
397d523365SDimitry Andric }
40