diff options
author | Greg Fitzgerald <garious@gmail.com> | 2015-01-23 18:52:44 +0000 |
---|---|---|
committer | Greg Fitzgerald <garious@gmail.com> | 2015-01-23 18:52:44 +0000 |
commit | 6a3f545b44cea46321e025d9ab773786af86cb51 (patch) | |
tree | 7bc4e784cb879f3e9fc39494d57ec57ccf725bca /lib | |
parent | 56c15acc97ba4b452a40f9d22c0a1cdd1dde42d2 (diff) |
Fix the ELF shared library build targets
lldELF is used by each ELF backend. lldELF's ELFLinkingContext
also held a reference to each backend, creating a link-time
cycle. This patch moves the backend references to lldDriver.
Differential Revision: http://reviews.llvm.org/D7119
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@226922 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
37 files changed, 99 insertions, 162 deletions
diff --git a/lib/Driver/CMakeLists.txt b/lib/Driver/CMakeLists.txt index 865e9a07..6cd113b9 100644 --- a/lib/Driver/CMakeLists.txt +++ b/lib/Driver/CMakeLists.txt @@ -24,6 +24,13 @@ add_llvm_library(lldDriver lldMachO lldPECOFF lldELF + lldAArch64ELFTarget + lldARMELFTarget + lldHexagonELFTarget + lldMipsELFTarget + lldPPCELFTarget + lldX86ELFTarget + lldX86_64ELFTarget lldCore lldNative lldReaderWriter diff --git a/lib/Driver/GnuLdDriver.cpp b/lib/Driver/GnuLdDriver.cpp index 612a5f25..fb58550f 100644 --- a/lib/Driver/GnuLdDriver.cpp +++ b/lib/Driver/GnuLdDriver.cpp @@ -15,6 +15,7 @@ #include "lld/Driver/Driver.h" #include "lld/ReaderWriter/ELFLinkingContext.h" +#include "lld/ReaderWriter/ELFTargets.h" #include "lld/ReaderWriter/LinkerScript.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/Optional.h" @@ -314,6 +315,35 @@ void GnuLdDriver::addPlatformSearchDirs(ELFLinkingContext &ctx, ctx.addSearchPath("=/usr/lib"); } +std::unique_ptr<ELFLinkingContext> +createELFLinkingContext(llvm::Triple triple) { + switch (triple.getArch()) { + case llvm::Triple::x86: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::X86LinkingContext(triple)); + case llvm::Triple::x86_64: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::X86_64LinkingContext(triple)); + case llvm::Triple::hexagon: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::HexagonLinkingContext(triple)); + case llvm::Triple::mipsel: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::MipsLinkingContext(triple)); + case llvm::Triple::ppc: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::PPCLinkingContext(triple)); + case llvm::Triple::aarch64: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::AArch64LinkingContext(triple)); + case llvm::Triple::arm: + return std::unique_ptr<ELFLinkingContext>( + new lld::elf::ARMLinkingContext(triple)); + default: + return nullptr; + } +} + bool GnuLdDriver::parse(int argc, const char *argv[], std::unique_ptr<ELFLinkingContext> &context, raw_ostream &diagnostics) { @@ -349,7 +379,7 @@ bool GnuLdDriver::parse(int argc, const char *argv[], if (!applyEmulation(triple, *parsedArgs, diagnostics)) return false; - std::unique_ptr<ELFLinkingContext> ctx(ELFLinkingContext::create(triple)); + std::unique_ptr<ELFLinkingContext> ctx(createELFLinkingContext(triple)); if (!ctx) { diagnostics << "unknown target triple\n"; diff --git a/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h b/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h index 20e6ca48..12ba52a3 100644 --- a/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h +++ b/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h @@ -10,6 +10,7 @@ #define AARCH64_DYNAMIC_LIBRARY_WRITER_H #include "AArch64LinkingContext.h" +#include "AArch64TargetHandler.h" #include "DynamicLibraryWriter.h" namespace lld { diff --git a/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp b/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp index 6f3146f5..72e693df 100644 --- a/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp +++ b/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp @@ -9,9 +9,14 @@ #include "AArch64LinkingContext.h" #include "AArch64RelocationPass.h" +#include "AArch64TargetHandler.h" using namespace lld; +elf::AArch64LinkingContext::AArch64LinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new AArch64TargetHandler(*this))) {} + void elf::AArch64LinkingContext::addPasses(PassManager &pm) { auto pass = createAArch64RelocationPass(*this); if (pass) diff --git a/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h b/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h index 3156201d..c4f39634 100644 --- a/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h +++ b/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h @@ -10,7 +10,6 @@ #ifndef LLD_READER_WRITER_ELF_AARCH64_AARCH64_LINKING_CONTEXT_H #define LLD_READER_WRITER_ELF_AARCH64_AARCH64_LINKING_CONTEXT_H -#include "AArch64TargetHandler.h" #include "lld/ReaderWriter/ELFLinkingContext.h" #include "llvm/Object/ELF.h" #include "llvm/Support/ELF.h" @@ -25,9 +24,7 @@ enum { class AArch64LinkingContext final : public ELFLinkingContext { public: - AArch64LinkingContext(llvm::Triple triple) - : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( - new AArch64TargetHandler(*this))) {} + AArch64LinkingContext(llvm::Triple); void addPasses(PassManager &) override; diff --git a/lib/ReaderWriter/ELF/AArch64/AArch64Target.h b/lib/ReaderWriter/ELF/AArch64/AArch64Target.h deleted file mode 100644 index 4692fe72..00000000 --- a/lib/ReaderWriter/ELF/AArch64/AArch64Target.h +++ /dev/null @@ -1,10 +0,0 @@ -//===- lib/ReaderWriter/ELF/AArch64/AArch64Target.h -----------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "AArch64LinkingContext.h" diff --git a/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt b/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt index 1578c7f5..cd8e5fab 100644 --- a/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt @@ -5,5 +5,7 @@ add_llvm_library(lldAArch64ELFTarget AArch64RelocationPass.cpp LINK_LIBS lldCore + lldELF + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h b/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h index f2733d2f..b45cfd25 100644 --- a/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h +++ b/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h @@ -11,6 +11,7 @@ #include "ExecutableWriter.h" #include "ARMLinkingContext.h" +#include "ARMTargetHandler.h" namespace lld { namespace elf { diff --git a/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp b/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp index 269f3f8f..4b8b4ccc 100644 --- a/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp +++ b/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp @@ -9,10 +9,15 @@ #include "ARMLinkingContext.h" #include "ARMRelocationPass.h" +#include "ARMTargetHandler.h" using namespace lld; using namespace lld::elf; +elf::ARMLinkingContext::ARMLinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new ARMTargetHandler(*this))) {} + void elf::ARMLinkingContext::addPasses(PassManager &pm) { auto pass = createARMRelocationPass(*this); if (pass) diff --git a/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h b/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h index 783eca62..0853343b 100644 --- a/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h +++ b/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h @@ -10,10 +10,7 @@ #ifndef LLD_READER_WRITER_ELF_ARM_ARM_LINKING_CONTEXT_H #define LLD_READER_WRITER_ELF_ARM_ARM_LINKING_CONTEXT_H -#include "ARMTargetHandler.h" - #include "lld/ReaderWriter/ELFLinkingContext.h" - #include "llvm/Object/ELF.h" #include "llvm/Support/ELF.h" @@ -22,9 +19,7 @@ namespace elf { class ARMLinkingContext final : public ELFLinkingContext { public: - ARMLinkingContext(llvm::Triple triple) - : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( - new ARMTargetHandler(*this))) {} + ARMLinkingContext(llvm::Triple); void addPasses(PassManager &) override; diff --git a/lib/ReaderWriter/ELF/ARM/ARMTarget.h b/lib/ReaderWriter/ELF/ARM/ARMTarget.h deleted file mode 100644 index 5b9478f8..00000000 --- a/lib/ReaderWriter/ELF/ARM/ARMTarget.h +++ /dev/null @@ -1,10 +0,0 @@ -//===--------- lib/ReaderWriter/ELF/ARM/ARMTarget.h -----------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "ARMLinkingContext.h" diff --git a/lib/ReaderWriter/ELF/ARM/CMakeLists.txt b/lib/ReaderWriter/ELF/ARM/CMakeLists.txt index 35a1f786..7323f528 100644 --- a/lib/ReaderWriter/ELF/ARM/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/ARM/CMakeLists.txt @@ -5,4 +5,7 @@ add_llvm_library(lldARMELFTarget ARMRelocationPass.cpp LINK_LIBS lldCore + lldELF + LLVMObject + LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/CMakeLists.txt b/lib/ReaderWriter/ELF/CMakeLists.txt index 38c4e735..ce3c99a4 100644 --- a/lib/ReaderWriter/ELF/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/CMakeLists.txt @@ -4,15 +4,10 @@ add_llvm_library(lldELF Reader.cpp Writer.cpp LINK_LIBS - lldHexagonELFTarget - lldMipsELFTarget - lldPPCELFTarget + lldCore lldPasses - lldReaderWriter - lldX86ELFTarget - lldX86_64ELFTarget - lldAArch64ELFTarget - lldARMELFTarget + lldYAML + LLVMSupport ) include_directories(.) diff --git a/lib/ReaderWriter/ELF/ELFLinkingContext.cpp b/lib/ReaderWriter/ELF/ELFLinkingContext.cpp index ff80e30b..058173ce 100644 --- a/lib/ReaderWriter/ELF/ELFLinkingContext.cpp +++ b/lib/ReaderWriter/ELF/ELFLinkingContext.cpp @@ -11,8 +11,8 @@ #include "ArrayOrderPass.h" #include "ELFFile.h" #include "TargetHandler.h" -#include "Targets.h" #include "lld/Core/Instrumentation.h" +#include "lld/Core/SharedLibraryFile.h" #include "lld/Passes/LayoutPass.h" #include "lld/Passes/RoundTripYAMLPass.h" #include "llvm/ADT/Triple.h" @@ -56,7 +56,7 @@ public: ELFLinkingContext::ELFLinkingContext( llvm::Triple triple, std::unique_ptr<TargetHandlerBase> targetHandler) - : _outputELFType(elf::ET_EXEC), _triple(triple), + : _outputELFType(llvm::ELF::ET_EXEC), _triple(triple), _targetHandler(std::move(targetHandler)), _baseAddress(0), _isStaticExecutable(false), _noInhibitExec(false), _exportDynamic(false), _mergeCommonStrings(false), _runLayoutPass(true), @@ -93,7 +93,7 @@ uint16_t ELFLinkingContext::getOutputMachine() const { } StringRef ELFLinkingContext::entrySymbolName() const { - if (_outputELFType == elf::ET_EXEC && _entrySymbolName.empty()) + if (_outputELFType == llvm::ELF::ET_EXEC && _entrySymbolName.empty()) return "_start"; return _entrySymbolName; } @@ -129,35 +129,6 @@ bool ELFLinkingContext::isRelativeReloc(const Reference &) const { Writer &ELFLinkingContext::writer() const { return *_writer; } -std::unique_ptr<ELFLinkingContext> -ELFLinkingContext::create(llvm::Triple triple) { - switch (triple.getArch()) { - case llvm::Triple::x86: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::X86LinkingContext(triple)); - case llvm::Triple::x86_64: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::X86_64LinkingContext(triple)); - case llvm::Triple::hexagon: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::HexagonLinkingContext(triple)); - case llvm::Triple::mipsel: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::MipsLinkingContext(triple)); - case llvm::Triple::ppc: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::PPCLinkingContext(triple)); - case llvm::Triple::aarch64: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::AArch64LinkingContext(triple)); - case llvm::Triple::arm: - return std::unique_ptr<ELFLinkingContext>( - new lld::elf::ARMLinkingContext(triple)); - default: - return nullptr; - } -} - static void buildSearchPath(SmallString<128> &path, StringRef dir, StringRef sysRoot) { if (!dir.startswith("=/")) diff --git a/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt b/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt index 7d168c8b..f6106249 100644 --- a/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt @@ -4,5 +4,7 @@ add_llvm_library(lldHexagonELFTarget HexagonTargetHandler.cpp LINK_LIBS lldCore + lldELF + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h b/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h deleted file mode 100644 index af989964..00000000 --- a/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h +++ /dev/null @@ -1,10 +0,0 @@ -//===- lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h -----------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "HexagonLinkingContext.h" diff --git a/lib/ReaderWriter/ELF/Makefile b/lib/ReaderWriter/ELF/Makefile index 666a737d..037be4e1 100644 --- a/lib/ReaderWriter/ELF/Makefile +++ b/lib/ReaderWriter/ELF/Makefile @@ -9,10 +9,7 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldELF -USEDLIBS = lldHexagonELFTarget.a lldPPCELFTarget.a lldMipsELFTarget.a \ - lldX86ELFTarget.a lldX86_64ELFTarget.a lldAArch64ELFTarget.a \ - lldARMELFTarget.a \ - lldReaderWriter.a lldPasses.a +USEDLIBS = lldPasses.a CPP.Flags += -I$(PROJ_SRC_DIR)/$(LLD_LEVEL)/lib/ReaderWriter/ELF diff --git a/lib/ReaderWriter/ELF/Mips/CMakeLists.txt b/lib/ReaderWriter/ELF/Mips/CMakeLists.txt index 7878c313..6d597bab 100644 --- a/lib/ReaderWriter/ELF/Mips/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/Mips/CMakeLists.txt @@ -7,5 +7,7 @@ add_llvm_library(lldMipsELFTarget MipsTargetHandler.cpp LINK_LIBS lldCore + lldELF + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/Mips/MipsTarget.h b/lib/ReaderWriter/ELF/Mips/MipsTarget.h deleted file mode 100644 index fe7012a8..00000000 --- a/lib/ReaderWriter/ELF/Mips/MipsTarget.h +++ /dev/null @@ -1,10 +0,0 @@ -//===- lib/ReaderWriter/ELF/Mips/MipsTarget.h -----------------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "MipsLinkingContext.h" diff --git a/lib/ReaderWriter/ELF/PPC/CMakeLists.txt b/lib/ReaderWriter/ELF/PPC/CMakeLists.txt index 08b127ce..71d52ee5 100644 --- a/lib/ReaderWriter/ELF/PPC/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/PPC/CMakeLists.txt @@ -3,5 +3,7 @@ add_llvm_library(lldPPCELFTarget PPCTargetHandler.cpp LINK_LIBS lldCore + lldELF + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp b/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp index 0ac6e537..c3154566 100644 --- a/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp +++ b/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp @@ -8,9 +8,14 @@ //===----------------------------------------------------------------------===// #include "PPCLinkingContext.h" +#include "PPCTargetHandler.h" #include "lld/Core/LLVM.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/ErrorOr.h" using namespace lld; +elf::PPCLinkingContext::PPCLinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new PPCTargetHandler(*this))) {} + diff --git a/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h b/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h index cd7a9f58..e5ea947a 100644 --- a/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h +++ b/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h @@ -10,7 +10,6 @@ #ifndef LLD_READER_WRITER_ELF_PPC_PPC_LINKING_CONTEXT_H #define LLD_READER_WRITER_ELF_PPC_PPC_LINKING_CONTEXT_H -#include "PPCTargetHandler.h" #include "lld/ReaderWriter/ELFLinkingContext.h" #include "llvm/Object/ELF.h" #include "llvm/Support/ELF.h" @@ -20,9 +19,7 @@ namespace elf { class PPCLinkingContext final : public ELFLinkingContext { public: - PPCLinkingContext(llvm::Triple triple) - : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( - new PPCTargetHandler(*this))) {} + PPCLinkingContext(llvm::Triple triple); /// \brief PPC has no relative relocations defined bool isRelativeReloc(const Reference &) const override { return false; } diff --git a/lib/ReaderWriter/ELF/PPC/PPCTarget.h b/lib/ReaderWriter/ELF/PPC/PPCTarget.h deleted file mode 100644 index 004f12ff..00000000 --- a/lib/ReaderWriter/ELF/PPC/PPCTarget.h +++ /dev/null @@ -1,10 +0,0 @@ -//===- lib/ReaderWriter/ELF/PPC/PPCTarget.h -------------------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "PPCLinkingContext.h" diff --git a/lib/ReaderWriter/ELF/Targets.h b/lib/ReaderWriter/ELF/Targets.h deleted file mode 100644 index 94d7b6c8..00000000 --- a/lib/ReaderWriter/ELF/Targets.h +++ /dev/null @@ -1,21 +0,0 @@ -//===- lib/ReaderWriter/ELF/Targets.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_TARGETS_H -#define LLD_READER_WRITER_ELF_TARGETS_H - -#include "AArch64/AArch64Target.h" -#include "ARM/ARMTarget.h" -#include "Hexagon/HexagonTarget.h" -#include "Mips/MipsTarget.h" -#include "PPC/PPCTarget.h" -#include "X86/X86Target.h" -#include "X86_64/X86_64Target.h" - -#endif diff --git a/lib/ReaderWriter/ELF/X86/CMakeLists.txt b/lib/ReaderWriter/ELF/X86/CMakeLists.txt index fb1c2535..dab4251d 100644 --- a/lib/ReaderWriter/ELF/X86/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/X86/CMakeLists.txt @@ -4,5 +4,7 @@ add_llvm_library(lldX86ELFTarget X86RelocationHandler.cpp LINK_LIBS lldCore + lldELF + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp b/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp index 6158780a..eee7bf67 100644 --- a/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp +++ b/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp @@ -8,9 +8,13 @@ //===----------------------------------------------------------------------===// #include "X86LinkingContext.h" +#include "X86TargetHandler.h" #include "lld/Core/LLVM.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/ErrorOr.h" using namespace lld; +elf::X86LinkingContext::X86LinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new X86TargetHandler(*this))) {} diff --git a/lib/ReaderWriter/ELF/X86/X86LinkingContext.h b/lib/ReaderWriter/ELF/X86/X86LinkingContext.h index 8792566b..a1af12f6 100644 --- a/lib/ReaderWriter/ELF/X86/X86LinkingContext.h +++ b/lib/ReaderWriter/ELF/X86/X86LinkingContext.h @@ -10,7 +10,6 @@ #ifndef LLD_READER_WRITER_ELF_X86_TARGETINFO_H #define LLD_READER_WRITER_ELF_X86_TARGETINFO_H -#include "X86TargetHandler.h" #include "lld/ReaderWriter/ELFLinkingContext.h" #include "llvm/Object/ELF.h" #include "llvm/Support/ELF.h" @@ -19,9 +18,7 @@ namespace lld { namespace elf { class X86LinkingContext final : public ELFLinkingContext { public: - X86LinkingContext(llvm::Triple triple) - : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( - new X86TargetHandler(*this))) {} + X86LinkingContext(llvm::Triple); /// \brief X86 has only two relative relocation /// a) for supporting IFUNC relocs - R_386_IRELATIVE diff --git a/lib/ReaderWriter/ELF/X86/X86Target.h b/lib/ReaderWriter/ELF/X86/X86Target.h deleted file mode 100644 index c738395b..00000000 --- a/lib/ReaderWriter/ELF/X86/X86Target.h +++ /dev/null @@ -1,10 +0,0 @@ -//===- lib/ReaderWriter/ELF/X86/X86Target.h -------------------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "X86LinkingContext.h" diff --git a/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt b/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt index e20aee70..0f15275e 100644 --- a/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt +++ b/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt @@ -5,5 +5,7 @@ add_llvm_library(lldX86_64ELFTarget X86_64RelocationPass.cpp LINK_LIBS lldCore + lldELF + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h b/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h index 5dea59ed..aec229b6 100644 --- a/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h +++ b/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h @@ -11,6 +11,7 @@ #include "DynamicLibraryWriter.h" #include "X86_64LinkingContext.h" +#include "X86_64TargetHandler.h" namespace lld { namespace elf { diff --git a/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp b/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp index 566e1528..698937f8 100644 --- a/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp +++ b/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp @@ -8,10 +8,15 @@ //===----------------------------------------------------------------------===// #include "X86_64LinkingContext.h" +#include "X86_64TargetHandler.h" #include "X86_64RelocationPass.h" using namespace lld; +elf::X86_64LinkingContext::X86_64LinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new X86_64TargetHandler(*this))) {} + void elf::X86_64LinkingContext::addPasses(PassManager &pm) { auto pass = createX86_64RelocationPass(*this); if (pass) diff --git a/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h b/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h index 900a0d59..f54ff592 100644 --- a/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h +++ b/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h @@ -10,7 +10,6 @@ #ifndef LLD_READER_WRITER_ELF_X86_64_X86_64_LINKING_CONTEXT_H #define LLD_READER_WRITER_ELF_X86_64_X86_64_LINKING_CONTEXT_H -#include "X86_64TargetHandler.h" #include "lld/ReaderWriter/ELFLinkingContext.h" #include "llvm/Object/ELF.h" #include "llvm/Support/ELF.h" @@ -27,9 +26,7 @@ enum { class X86_64LinkingContext final : public ELFLinkingContext { public: - X86_64LinkingContext(llvm::Triple triple) - : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( - new X86_64TargetHandler(*this))) {} + X86_64LinkingContext(llvm::Triple); void addPasses(PassManager &) override; diff --git a/lib/ReaderWriter/ELF/X86_64/X86_64Target.h b/lib/ReaderWriter/ELF/X86_64/X86_64Target.h deleted file mode 100644 index 8f761e18..00000000 --- a/lib/ReaderWriter/ELF/X86_64/X86_64Target.h +++ /dev/null @@ -1,10 +0,0 @@ -//===- lib/ReaderWriter/ELF/X86_64/X86_64Target.h -------------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "X86_64LinkingContext.h" diff --git a/lib/ReaderWriter/MachO/CMakeLists.txt b/lib/ReaderWriter/MachO/CMakeLists.txt index 95e95fff..30605e74 100644 --- a/lib/ReaderWriter/MachO/CMakeLists.txt +++ b/lib/ReaderWriter/MachO/CMakeLists.txt @@ -16,8 +16,10 @@ add_llvm_library(lldMachO StubsPass.cpp WriterMachO.cpp LINK_LIBS - lldReaderWriter + lldCore lldPasses + lldYAML + LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/MachO/Makefile b/lib/ReaderWriter/MachO/Makefile index 619b9eac..1acd578b 100644 --- a/lib/ReaderWriter/MachO/Makefile +++ b/lib/ReaderWriter/MachO/Makefile @@ -9,6 +9,6 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldMachO -USEDLIBS = lldReaderWriter.a lldCore.a +USEDLIBS = lldCore.a include $(LLD_LEVEL)/Makefile diff --git a/lib/ReaderWriter/PECOFF/CMakeLists.txt b/lib/ReaderWriter/PECOFF/CMakeLists.txt index a37097dc..561f2d63 100644 --- a/lib/ReaderWriter/PECOFF/CMakeLists.txt +++ b/lib/ReaderWriter/PECOFF/CMakeLists.txt @@ -10,7 +10,8 @@ add_llvm_library(lldPECOFF WriterImportLibrary.cpp WriterPECOFF.cpp LINK_LIBS - lldReaderWriter + lldCore + lldPasses LLVMObject LLVMSupport ) diff --git a/lib/ReaderWriter/PECOFF/Makefile b/lib/ReaderWriter/PECOFF/Makefile index 8e473767..3ad16969 100644 --- a/lib/ReaderWriter/PECOFF/Makefile +++ b/lib/ReaderWriter/PECOFF/Makefile @@ -9,6 +9,6 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldPECOFF -USEDLIBS = lldReaderWriter.a lldCore.a +USEDLIBS = lldCore.a include $(LLD_LEVEL)/Makefile |