diff options
38 files changed, 162 insertions, 139 deletions
diff --git a/lld/include/lld/ReaderWriter/ELFTargets.h b/lld/include/lld/ReaderWriter/ELFTargets.h deleted file mode 100644 index 4216f622ae4..00000000000 --- a/lld/include/lld/ReaderWriter/ELFTargets.h +++ /dev/null @@ -1,40 +0,0 @@ -//===- lld/ReaderWriter/ELFTargets.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 "ELFLinkingContext.h" - -namespace lld { -namespace elf { - -#define LLVM_TARGET(TargetName) \ - class TargetName##LinkingContext final : public ELFLinkingContext { \ - public: \ - TargetName##LinkingContext(llvm::Triple); \ - }; -#include "llvm/Config/Targets.def" - -// X86 => X86,X86_64 -class X86_64LinkingContext final : public ELFLinkingContext { -public: - X86_64LinkingContext(llvm::Triple); -}; - -// PowerPC => PPC -class PPCLinkingContext final : public ELFLinkingContext { -public: - PPCLinkingContext(llvm::Triple); -}; - -} // end namespace elf -} // end namespace lld - -#endif diff --git a/lld/lib/Driver/CMakeLists.txt b/lld/lib/Driver/CMakeLists.txt index 6cd113b9fe3..865e9a0780a 100644 --- a/lld/lib/Driver/CMakeLists.txt +++ b/lld/lib/Driver/CMakeLists.txt @@ -24,13 +24,6 @@ add_llvm_library(lldDriver lldMachO lldPECOFF lldELF - lldAArch64ELFTarget - lldARMELFTarget - lldHexagonELFTarget - lldMipsELFTarget - lldPPCELFTarget - lldX86ELFTarget - lldX86_64ELFTarget lldCore lldNative lldReaderWriter diff --git a/lld/lib/Driver/GnuLdDriver.cpp b/lld/lib/Driver/GnuLdDriver.cpp index fb58550fc1d..612a5f256a2 100644 --- a/lld/lib/Driver/GnuLdDriver.cpp +++ b/lld/lib/Driver/GnuLdDriver.cpp @@ -15,7 +15,6 @@ #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" @@ -315,35 +314,6 @@ 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) { @@ -379,7 +349,7 @@ bool GnuLdDriver::parse(int argc, const char *argv[], if (!applyEmulation(triple, *parsedArgs, diagnostics)) return false; - std::unique_ptr<ELFLinkingContext> ctx(createELFLinkingContext(triple)); + std::unique_ptr<ELFLinkingContext> ctx(ELFLinkingContext::create(triple)); if (!ctx) { diagnostics << "unknown target triple\n"; diff --git a/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h b/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h index 12ba52a38f3..20e6ca48df8 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h +++ b/lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h @@ -10,7 +10,6 @@ #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 72e693df7f1..6f3146f5f5d 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp +++ b/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp @@ -9,14 +9,9 @@ #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 c4f396342fd..3156201d075 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h +++ b/lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h @@ -10,6 +10,7 @@ #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" @@ -24,7 +25,9 @@ enum { class AArch64LinkingContext final : public ELFLinkingContext { public: - AArch64LinkingContext(llvm::Triple); + AArch64LinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new AArch64TargetHandler(*this))) {} void addPasses(PassManager &) override; diff --git a/lld/lib/ReaderWriter/ELF/AArch64/AArch64Target.h b/lld/lib/ReaderWriter/ELF/AArch64/AArch64Target.h new file mode 100644 index 00000000000..4692fe72ec2 --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/AArch64/AArch64Target.h @@ -0,0 +1,10 @@ +//===- 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 cd8e5fabb4d..1578c7f5130 100644 --- a/lld/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt @@ -5,7 +5,5 @@ 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 b45cfd25f0c..f2733d2fe8c 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h +++ b/lld/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h @@ -11,7 +11,6 @@ #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 4b8b4ccc04e..269f3f8f8a7 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp +++ b/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp @@ -9,15 +9,10 @@ #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 0853343b067..783eca62eae 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h +++ b/lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h @@ -10,7 +10,10 @@ #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" @@ -19,7 +22,9 @@ namespace elf { class ARMLinkingContext final : public ELFLinkingContext { public: - ARMLinkingContext(llvm::Triple); + ARMLinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new ARMTargetHandler(*this))) {} void addPasses(PassManager &) override; diff --git a/lld/lib/ReaderWriter/ELF/ARM/ARMTarget.h b/lld/lib/ReaderWriter/ELF/ARM/ARMTarget.h new file mode 100644 index 00000000000..5b9478f8cbc --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/ARM/ARMTarget.h @@ -0,0 +1,10 @@ +//===--------- 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 7323f528a43..35a1f78675e 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/ARM/CMakeLists.txt @@ -5,7 +5,4 @@ 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 ce3c99a400a..38c4e735121 100644 --- a/lld/lib/ReaderWriter/ELF/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/CMakeLists.txt @@ -4,10 +4,15 @@ add_llvm_library(lldELF Reader.cpp Writer.cpp LINK_LIBS - lldCore + lldHexagonELFTarget + lldMipsELFTarget + lldPPCELFTarget lldPasses - lldYAML - LLVMSupport + lldReaderWriter + lldX86ELFTarget + lldX86_64ELFTarget + lldAArch64ELFTarget + lldARMELFTarget ) include_directories(.) diff --git a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp index 058173ce027..ff80e30bb5a 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(llvm::ELF::ET_EXEC), _triple(triple), + : _outputELFType(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 == llvm::ELF::ET_EXEC && _entrySymbolName.empty()) + if (_outputELFType == elf::ET_EXEC && _entrySymbolName.empty()) return "_start"; return _entrySymbolName; } @@ -129,6 +129,35 @@ 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 f6106249013..7d168c8bf36 100644 --- a/lld/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt @@ -4,7 +4,5 @@ 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 new file mode 100644 index 00000000000..af989964294 --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h @@ -0,0 +1,10 @@ +//===- 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 037be4e1c62..666a737d3bd 100644 --- a/lld/lib/ReaderWriter/ELF/Makefile +++ b/lld/lib/ReaderWriter/ELF/Makefile @@ -9,7 +9,10 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldELF -USEDLIBS = lldPasses.a +USEDLIBS = lldHexagonELFTarget.a lldPPCELFTarget.a lldMipsELFTarget.a \ + lldX86ELFTarget.a lldX86_64ELFTarget.a lldAArch64ELFTarget.a \ + lldARMELFTarget.a \ + lldReaderWriter.a 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 6d597bab4a7..7878c313794 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/Mips/CMakeLists.txt @@ -7,7 +7,5 @@ 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 new file mode 100644 index 00000000000..fe7012a84c1 --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/Mips/MipsTarget.h @@ -0,0 +1,10 @@ +//===- 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 71d52ee5596..08b127ce65e 100644 --- a/lld/lib/ReaderWriter/ELF/PPC/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/PPC/CMakeLists.txt @@ -3,7 +3,5 @@ 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 c315456653e..0ac6e5370bb 100644 --- a/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp +++ b/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp @@ -8,14 +8,9 @@ //===----------------------------------------------------------------------===// #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 e5ea947a8b0..cd7a9f58c70 100644 --- a/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h +++ b/lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h @@ -10,6 +10,7 @@ #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" @@ -19,7 +20,9 @@ namespace elf { class PPCLinkingContext final : public ELFLinkingContext { public: - PPCLinkingContext(llvm::Triple triple); + PPCLinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new PPCTargetHandler(*this))) {} /// \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 new file mode 100644 index 00000000000..004f12ff87c --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/PPC/PPCTarget.h @@ -0,0 +1,10 @@ +//===- 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 new file mode 100644 index 00000000000..94d7b6c8f1f --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/Targets.h @@ -0,0 +1,21 @@ +//===- 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 dab4251d9a5..fb1c25357e9 100644 --- a/lld/lib/ReaderWriter/ELF/X86/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/X86/CMakeLists.txt @@ -4,7 +4,5 @@ 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 eee7bf67afd..6158780a1cb 100644 --- a/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp +++ b/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp @@ -8,13 +8,9 @@ //===----------------------------------------------------------------------===// #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 a1af12f6595..8792566b0a0 100644 --- a/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h +++ b/lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h @@ -10,6 +10,7 @@ #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" @@ -18,7 +19,9 @@ namespace lld { namespace elf { class X86LinkingContext final : public ELFLinkingContext { public: - X86LinkingContext(llvm::Triple); + X86LinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new X86TargetHandler(*this))) {} /// \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 new file mode 100644 index 00000000000..c738395be85 --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/X86/X86Target.h @@ -0,0 +1,10 @@ +//===- 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 0f15275ed0b..e20aee708c6 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt +++ b/lld/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt @@ -5,7 +5,5 @@ 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 aec229b68c7..5dea59ed87a 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h +++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h @@ -11,7 +11,6 @@ #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 698937f8400..566e1528165 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp +++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp @@ -8,15 +8,10 @@ //===----------------------------------------------------------------------===// #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 f54ff592906..900a0d59e45 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h +++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h @@ -10,6 +10,7 @@ #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" @@ -26,7 +27,9 @@ enum { class X86_64LinkingContext final : public ELFLinkingContext { public: - X86_64LinkingContext(llvm::Triple); + X86_64LinkingContext(llvm::Triple triple) + : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>( + new X86_64TargetHandler(*this))) {} 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 new file mode 100644 index 00000000000..8f761e1847c --- /dev/null +++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64Target.h @@ -0,0 +1,10 @@ +//===- 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 30605e74c29..95e95fff3b3 100644 --- a/lld/lib/ReaderWriter/MachO/CMakeLists.txt +++ b/lld/lib/ReaderWriter/MachO/CMakeLists.txt @@ -16,10 +16,8 @@ add_llvm_library(lldMachO StubsPass.cpp WriterMachO.cpp LINK_LIBS - lldCore + lldReaderWriter lldPasses - lldYAML - LLVMObject LLVMSupport ) diff --git a/lld/lib/ReaderWriter/MachO/Makefile b/lld/lib/ReaderWriter/MachO/Makefile index 1acd578ba9d..619b9eacd69 100644 --- a/lld/lib/ReaderWriter/MachO/Makefile +++ b/lld/lib/ReaderWriter/MachO/Makefile @@ -9,6 +9,6 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldMachO -USEDLIBS = lldCore.a +USEDLIBS = lldReaderWriter.a lldCore.a include $(LLD_LEVEL)/Makefile diff --git a/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt b/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt index 561f2d63b68..a37097dc9b2 100644 --- a/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt +++ b/lld/lib/ReaderWriter/PECOFF/CMakeLists.txt @@ -10,8 +10,7 @@ add_llvm_library(lldPECOFF WriterImportLibrary.cpp WriterPECOFF.cpp LINK_LIBS - lldCore - lldPasses + lldReaderWriter LLVMObject LLVMSupport ) diff --git a/lld/lib/ReaderWriter/PECOFF/Makefile b/lld/lib/ReaderWriter/PECOFF/Makefile index 3ad16969bba..8e473767677 100644 --- a/lld/lib/ReaderWriter/PECOFF/Makefile +++ b/lld/lib/ReaderWriter/PECOFF/Makefile @@ -9,6 +9,6 @@ LLD_LEVEL := ../../.. LIBRARYNAME := lldPECOFF -USEDLIBS = lldCore.a +USEDLIBS = lldReaderWriter.a lldCore.a include $(LLD_LEVEL)/Makefile |

