//===- lib/ReaderWriter/ELF/ReferenceKinds.cpp ----------------------------===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "ReferenceKinds.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/Triple.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/ELF.h" namespace lld { namespace elf { KindHandler::KindHandler() {} KindHandler::~KindHandler() {} std::unique_ptr KindHandler::makeHandler(llvm::Triple::ArchType arch, bool isLittleEndian) { switch(arch) { case llvm::Triple::hexagon: return std::unique_ptr(new HexagonKindHandler()); case llvm::Triple::x86: return std::unique_ptr(new X86KindHandler()); case llvm::Triple::x86_64: return std::unique_ptr(new X86_64KindHandler()); case llvm::Triple::ppc: return std::unique_ptr( new PPCKindHandler(isLittleEndian ? llvm::support::little : llvm::support::big)); default: llvm_unreachable("arch not supported"); } } } // namespace elf } // namespace lld