summaryrefslogtreecommitdiff
path: root/lib/ReaderWriter/ELF/Reader.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2015-03-24 21:31:36 +0000
committerDimitry Andric <dim@FreeBSD.org>2015-03-24 21:31:36 +0000
commitfb911942f1434f3d1750f83f25f5e42c80e60638 (patch)
tree1678c4a4f0182e4029a86d135aa4a1b7d09e3c41 /lib/ReaderWriter/ELF/Reader.cpp
Notes
Diffstat (limited to 'lib/ReaderWriter/ELF/Reader.cpp')
-rw-r--r--lib/ReaderWriter/ELF/Reader.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/ReaderWriter/ELF/Reader.cpp b/lib/ReaderWriter/ELF/Reader.cpp
new file mode 100644
index 000000000000..fc113d478913
--- /dev/null
+++ b/lib/ReaderWriter/ELF/Reader.cpp
@@ -0,0 +1,43 @@
+//===- lib/ReaderWriter/ELF/Reader.cpp ------------------------------------===//
+//
+// The LLVM Linker
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// \brief Defines the ELF Reader and all helper sub classes to consume an ELF
+/// file and produces atoms out of it.
+///
+//===----------------------------------------------------------------------===//
+
+#include "ELFReader.h"
+#include <map>
+#include <vector>
+
+using llvm::support::endianness;
+using namespace llvm::object;
+
+namespace lld {
+
+// This dynamic registration of a handler causes support for all ELF
+// architectures to be pulled into the linker. If we want to support making a
+// linker that only supports one ELF architecture, we'd need to change this
+// to have a different registration method for each architecture.
+void Registry::addSupportELFObjects(ELFLinkingContext &ctx) {
+
+ // Tell registry about the ELF object file parser.
+ add(std::move(ctx.targetHandler()->getObjReader()));
+
+ // Tell registry about the relocation name to number mapping for this arch.
+ ctx.targetHandler()->registerRelocationNames(*this);
+}
+
+void Registry::addSupportELFDynamicSharedObjects(ELFLinkingContext &ctx) {
+ // Tell registry about the ELF dynamic shared library file parser.
+ add(ctx.targetHandler()->getDSOReader());
+}
+
+} // end namespace lld