summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/include/lld/ReaderWriter/ELFTargets.h40
-rw-r--r--lld/lib/Driver/CMakeLists.txt7
-rw-r--r--lld/lib/Driver/GnuLdDriver.cpp32
-rw-r--r--lld/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h1
-rw-r--r--lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp5
-rw-r--r--lld/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h5
-rw-r--r--lld/lib/ReaderWriter/ELF/AArch64/AArch64Target.h10
-rw-r--r--lld/lib/ReaderWriter/ELF/AArch64/CMakeLists.txt2
-rw-r--r--lld/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h1
-rw-r--r--lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp5
-rw-r--r--lld/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h7
-rw-r--r--lld/lib/ReaderWriter/ELF/ARM/ARMTarget.h10
-rw-r--r--lld/lib/ReaderWriter/ELF/ARM/CMakeLists.txt3
-rw-r--r--lld/lib/ReaderWriter/ELF/CMakeLists.txt11
-rw-r--r--lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp35
-rw-r--r--lld/lib/ReaderWriter/ELF/Hexagon/CMakeLists.txt2
-rw-r--r--lld/lib/ReaderWriter/ELF/Hexagon/HexagonTarget.h10
-rw-r--r--lld/lib/ReaderWriter/ELF/Makefile5
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/CMakeLists.txt2
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/MipsTarget.h10
-rw-r--r--lld/lib/ReaderWriter/ELF/PPC/CMakeLists.txt2
-rw-r--r--lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp5
-rw-r--r--lld/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h5
-rw-r--r--lld/lib/ReaderWriter/ELF/PPC/PPCTarget.h10
-rw-r--r--lld/lib/ReaderWriter/ELF/Targets.h21
-rw-r--r--lld/lib/ReaderWriter/ELF/X86/CMakeLists.txt2
-rw-r--r--lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp4
-rw-r--r--lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h5
-rw-r--r--lld/lib/ReaderWriter/ELF/X86/X86Target.h10
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt2
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h1
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp5
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h5
-rw-r--r--lld/lib/ReaderWriter/ELF/X86_64/X86_64Target.h10
-rw-r--r--lld/lib/ReaderWriter/MachO/CMakeLists.txt4
-rw-r--r--lld/lib/ReaderWriter/MachO/Makefile2
-rw-r--r--lld/lib/ReaderWriter/PECOFF/CMakeLists.txt3
-rw-r--r--lld/lib/ReaderWriter/PECOFF/Makefile2
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
OpenPOWER on IntegriCloud