diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-03-24 21:31:36 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-03-24 21:31:36 +0000 |
| commit | fb911942f1434f3d1750f83f25f5e42c80e60638 (patch) | |
| tree | 1678c4a4f0182e4029a86d135aa4a1b7d09e3c41 /lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h | |
Notes
Diffstat (limited to 'lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h')
| -rw-r--r-- | lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h b/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h new file mode 100644 index 000000000000..4eb6786cdf1f --- /dev/null +++ b/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h @@ -0,0 +1,64 @@ +//===- lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h ----------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_READER_WRITER_ELF_AARCH64_AARCH64_TARGET_HANDLER_H +#define LLD_READER_WRITER_ELF_AARCH64_AARCH64_TARGET_HANDLER_H + +#include "AArch64ELFFile.h" +#include "AArch64ELFReader.h" +#include "AArch64RelocationHandler.h" +#include "DefaultTargetHandler.h" +#include "TargetLayout.h" +#include "lld/Core/Simple.h" + +namespace lld { +namespace elf { +class AArch64LinkingContext; + +template <class ELFT> class AArch64TargetLayout : public TargetLayout<ELFT> { +public: + AArch64TargetLayout(AArch64LinkingContext &context) + : TargetLayout<ELFT>(context) {} +}; + +class AArch64TargetHandler final : public DefaultTargetHandler<AArch64ELFType> { +public: + AArch64TargetHandler(AArch64LinkingContext &context); + + AArch64TargetLayout<AArch64ELFType> &getTargetLayout() override { + return *(_AArch64TargetLayout.get()); + } + + void registerRelocationNames(Registry ®istry) override; + + const AArch64TargetRelocationHandler &getRelocationHandler() const override { + return *(_AArch64RelocationHandler.get()); + } + + std::unique_ptr<Reader> getObjReader() override { + return std::unique_ptr<Reader>(new AArch64ELFObjectReader(_context)); + } + + std::unique_ptr<Reader> getDSOReader() override { + return std::unique_ptr<Reader>(new AArch64ELFDSOReader(_context)); + } + + std::unique_ptr<Writer> getWriter() override; + +private: + static const Registry::KindStrings kindStrings[]; + AArch64LinkingContext &_context; + std::unique_ptr<AArch64TargetLayout<AArch64ELFType>> _AArch64TargetLayout; + std::unique_ptr<AArch64TargetRelocationHandler> _AArch64RelocationHandler; +}; + +} // end namespace elf +} // end namespace lld + +#endif |
