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/AArch64ELFReader.h | |
Notes
Diffstat (limited to 'lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h')
| -rw-r--r-- | lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h b/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h new file mode 100644 index 000000000000..05f312db3e7b --- /dev/null +++ b/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h @@ -0,0 +1,62 @@ +//===- lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.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_AARCH64_AARCH64_ELF_READER_H +#define LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H + +#include "AArch64ELFFile.h" +#include "ELFReader.h" + +namespace lld { +namespace elf { + +typedef llvm::object::ELFType<llvm::support::little, 2, true> AArch64ELFType; + +struct AArch64DynamicFileCreateELFTraits { + typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type; + + template <class ELFT> + static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb, + AArch64LinkingContext &ctx) { + return lld::elf::AArch64DynamicFile<ELFT>::create(std::move(mb), ctx); + } +}; + +struct AArch64ELFFileCreateELFTraits { + typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type; + + template <class ELFT> + static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb, + AArch64LinkingContext &ctx) { + return lld::elf::AArch64ELFFile<ELFT>::create(std::move(mb), ctx); + } +}; + +class AArch64ELFObjectReader + : public ELFObjectReader<AArch64ELFType, AArch64ELFFileCreateELFTraits, + AArch64LinkingContext> { +public: + AArch64ELFObjectReader(AArch64LinkingContext &ctx) + : ELFObjectReader<AArch64ELFType, AArch64ELFFileCreateELFTraits, + AArch64LinkingContext>(ctx, llvm::ELF::EM_AARCH64) {} +}; + +class AArch64ELFDSOReader + : public ELFDSOReader<AArch64ELFType, AArch64DynamicFileCreateELFTraits, + AArch64LinkingContext> { +public: + AArch64ELFDSOReader(AArch64LinkingContext &ctx) + : ELFDSOReader<AArch64ELFType, AArch64DynamicFileCreateELFTraits, + AArch64LinkingContext>(ctx, llvm::ELF::EM_AARCH64) {} +}; + +} // namespace elf +} // namespace lld + +#endif // LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H |
