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 | 0823ea636ed82153c726acf557796ed9cea42040 (patch) | |
tree | 44a56e83b1122d2d24dafe2809895085d7f4bce3 /lld/lib/ReaderWriter | |
parent | 69fe98da1402e12d68379ca2d7415dbfd9fb2b0e (diff) | |
download | bcm5719-llvm-0823ea636ed82153c726acf557796ed9cea42040.tar.gz bcm5719-llvm-0823ea636ed82153c726acf557796ed9cea42040.zip |
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
llvm-svn: 226922
Diffstat (limited to 'lld/lib/ReaderWriter')
35 files changed, 61 insertions, 161 deletions
diff --git a/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h b/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h index 20e6ca48df8..12ba52a38f3 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp b/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp index 6f3146f5f5d..72e693df7f1 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp +++ b/lld/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/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h b/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h index 3156201d075..c4f396342fd 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/AArch64/AArch64Target.h b/lld/lib/ReaderWriter/ELF/AArch64/AArch64Target.h deleted file mode 100644 index 4692fe72ec2..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt index 1578c7f5130..cd8e5fabb4d 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h b/lld/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h index f2733d2fe8c..b45cfd25f0c 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp index 269f3f8f8a7..4b8b4ccc04e 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp +++ b/lld/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/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h b/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h index 783eca62eae..0853343b067 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/ARM/ARMTarget.h b/lld/lib/ReaderWriter/ELF/ARM/ARMTarget.h deleted file mode 100644 index 5b9478f8cbc..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/ARM/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/ARM/CMakeLists.txt index 35a1f78675e..7323f528a43 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/CMakeLists.txt index 38c4e735121..ce3c99a400a 100644 --- a/lld/lib/ReaderWriter/ELF/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp index ff80e30bb5a..058173ce027 100644 --- a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp +++ b/lld/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/lld/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt index 7d168c8bf36..f6106249013 100644 --- a/lld/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h deleted file mode 100644 index af989964294..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/Makefile b/lld/lib/ReaderWriter/ELF/Makefile index 666a737d3bd..037be4e1c62 100644 --- a/lld/lib/ReaderWriter/ELF/Makefile +++ b/lld/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/lld/lib/ReaderWriter/ELF/Mips/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/Mips/CMakeLists.txt index 7878c313794..6d597bab4a7 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/Mips/MipsTarget.h b/lld/lib/ReaderWriter/ELF/Mips/MipsTarget.h deleted file mode 100644 index fe7012a84c1..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/PPC/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/PPC/CMakeLists.txt index 08b127ce65e..71d52ee5596 100644 --- a/lld/lib/ReaderWriter/ELF/PPC/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp index 0ac6e5370bb..c315456653e 100644 --- a/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp +++ b/lld/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/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h b/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h index cd7a9f58c70..e5ea947a8b0 100644 --- a/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/PPC/PPCTarget.h b/lld/lib/ReaderWriter/ELF/PPC/PPCTarget.h deleted file mode 100644 index 004f12ff87c..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/Targets.h b/lld/lib/ReaderWriter/ELF/Targets.h deleted file mode 100644 index 94d7b6c8f1f..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/X86/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/X86/CMakeLists.txt index fb1c25357e9..dab4251d9a5 100644 --- a/lld/lib/ReaderWriter/ELF/X86/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp b/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp index 6158780a1cb..eee7bf67afd 100644 --- a/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h b/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h index 8792566b0a0..a1af12f6595 100644 --- a/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86/X86Target.h b/lld/lib/ReaderWriter/ELF/X86/X86Target.h deleted file mode 100644 index c738395be85..00000000000 --- a/lld/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/lld/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt b/lld/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt index e20aee708c6..0f15275ed0b 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h b/lld/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h index 5dea59ed87a..aec229b68c7 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp b/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp index 566e1528165..698937f8400 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h b/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h index 900a0d59e45..f54ff592906 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h +++ b/lld/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/lld/lib/ReaderWriter/ELF/X86_64/X86_64Target.h b/lld/lib/ReaderWriter/ELF/X86_64/X86_64Target.h deleted file mode 100644 index 8f761e1847c..00000000000 --- a/lld/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/lld/lib/ReaderWriter/MachO/CMakeLists.txt b/lld/lib/ReaderWriter/MachO/CMakeLists.txt index 95e95fff3b3..30605e74c29 100644 --- a/lld/lib/ReaderWriter/MachO/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/MachO/Makefile b/lld/lib/ReaderWriter/MachO/Makefile index 619b9eacd69..1acd578ba9d 100644 --- a/lld/lib/ReaderWriter/MachO/Makefile +++ b/lld/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/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt b/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt index a37097dc9b2..561f2d63b68 100644 --- a/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt +++ b/lld/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/lld/lib/ReaderWriter/PECOFF/Makefile b/lld/lib/ReaderWriter/PECOFF/Makefile index 8e473767677..3ad16969bba 100644 --- a/lld/lib/ReaderWriter/PECOFF/Makefile +++ b/lld/lib/ReaderWriter/PECOFF/Makefile @@ -9,6 +9,6 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldPECOFF -USEDLIBS = lldReaderWriter.a lldCore.a +USEDLIBS = lldCore.a include $(LLD_LEVEL)/Makefile |