aboutsummaryrefslogtreecommitdiff
path: root/lib/ReaderWriter/ELF/AMDGPU/AMDGPUExecutableWriter.h
blob: accc00b8a054874fe014b026f0f4e80ba061282f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//===- lib/ReaderWriter/ELF/AMDGPU/AMDGPUExecutableWriter.h ---------------===//
//
//                             The LLVM Linker
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef AMDGPU_EXECUTABLE_WRITER_H
#define AMDGPU_EXECUTABLE_WRITER_H

#include "ExecutableWriter.h"
#include "AMDGPULinkingContext.h"
#include "AMDGPUSymbolTable.h"
#include "AMDGPUTargetHandler.h"

namespace lld {
namespace elf {

class AMDGPUTargetLayout;

class AMDGPUExecutableWriter : public ExecutableWriter<ELF64LE> {
public:
  AMDGPUExecutableWriter(AMDGPULinkingContext &ctx, AMDGPUTargetLayout &layout);

  unique_bump_ptr<SymbolTable<ELF64LE>> createSymbolTable() override {
    return unique_bump_ptr<SymbolTable<ELF64LE>>(new (this->_alloc)
                                                     AMDGPUSymbolTable(_ctx));
  }

  void createImplicitFiles(std::vector<std::unique_ptr<File>> &Result) override;
  void finalizeDefaultAtomValues() override;

private:
  AMDGPULinkingContext &_ctx;
};

} // namespace elf
} // namespace lld

#endif // AMDGPU_EXECUTABLE_WRITER_H