summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/CMakeLists.txt1
-rw-r--r--lld/ELF/Driver.cpp1
-rw-r--r--lld/ELF/Driver.h1
-rw-r--r--lld/ELF/DriverUtils.cpp29
-rw-r--r--lld/ELF/SymbolListFile.cpp58
-rw-r--r--lld/ELF/SymbolListFile.h24
6 files changed, 30 insertions, 84 deletions
diff --git a/lld/ELF/CMakeLists.txt b/lld/ELF/CMakeLists.txt
index 84a49e9e3d0..39cf8ec770a 100644
--- a/lld/ELF/CMakeLists.txt
+++ b/lld/ELF/CMakeLists.txt
@@ -20,7 +20,6 @@ add_lld_library(lldELF
Relocations.cpp
ScriptParser.cpp
Strings.cpp
- SymbolListFile.cpp
SymbolTable.cpp
Symbols.cpp
SyntheticSections.cpp
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index b3585e43d79..b337feada09 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -16,7 +16,6 @@
#include "LinkerScript.h"
#include "Memory.h"
#include "Strings.h"
-#include "SymbolListFile.h"
#include "SymbolTable.h"
#include "Target.h"
#include "Writer.h"
diff --git a/lld/ELF/Driver.h b/lld/ELF/Driver.h
index a3a3a84add8..74d465e2a52 100644
--- a/lld/ELF/Driver.h
+++ b/lld/ELF/Driver.h
@@ -69,6 +69,7 @@ enum {
void printHelp(const char *Argv0);
std::vector<uint8_t> parseHexstring(StringRef S);
+void parseDynamicList(MemoryBufferRef MB);
std::string createResponseFile(const llvm::opt::InputArgList &Args);
diff --git a/lld/ELF/DriverUtils.cpp b/lld/ELF/DriverUtils.cpp
index 3f483ac28e7..2f139371f06 100644
--- a/lld/ELF/DriverUtils.cpp
+++ b/lld/ELF/DriverUtils.cpp
@@ -16,6 +16,7 @@
#include "Driver.h"
#include "Error.h"
#include "Memory.h"
+#include "ScriptParser.h"
#include "lld/Config/Version.h"
#include "lld/Core/Reproduce.h"
#include "llvm/ADT/Optional.h"
@@ -89,6 +90,34 @@ opt::InputArgList ELFOptTable::parse(ArrayRef<const char *> Argv) {
return Args;
}
+// Parse the --dynamic-list argument. A dynamic list is in the form
+//
+// { symbol1; symbol2; [...]; symbolN };
+//
+// Multiple groups can be defined in the same file, and they are merged
+// into a single group.
+void elf::parseDynamicList(MemoryBufferRef MB) {
+ class Parser : public ScriptParserBase {
+ public:
+ Parser(StringRef S) : ScriptParserBase(S) {}
+
+ void run() {
+ while (!atEOF()) {
+ expect("{");
+ while (!Error) {
+ Config->DynamicList.push_back(unquote(next()));
+ expect(";");
+ if (consume("}"))
+ break;
+ }
+ expect(";");
+ }
+ }
+ };
+
+ Parser(MB.getBuffer()).run();
+}
+
void elf::printHelp(const char *Argv0) {
ELFOptTable Table;
Table.PrintHelp(outs(), Argv0, "lld", false);
diff --git a/lld/ELF/SymbolListFile.cpp b/lld/ELF/SymbolListFile.cpp
deleted file mode 100644
index 867dceb673d..00000000000
--- a/lld/ELF/SymbolListFile.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//===- SymbolListFile.cpp -------------------------------------------------===//
-//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains the parser/evaluator of the linker script.
-// It does not construct an AST but consume linker script directives directly.
-// Results are written to Driver or Config object.
-//
-//===----------------------------------------------------------------------===//
-
-#include "SymbolListFile.h"
-#include "Config.h"
-#include "ScriptParser.h"
-#include "Strings.h"
-#include "llvm/Support/MemoryBuffer.h"
-
-using namespace llvm;
-using namespace llvm::ELF;
-
-using namespace lld;
-using namespace lld::elf;
-
-// Parse the --dynamic-list argument. A dynamic list is in the form
-//
-// { symbol1; symbol2; [...]; symbolN };
-//
-// Multiple groups can be defined in the same file, and they are merged
-// into a single group.
-
-namespace {
-class DynamicListParser final : public ScriptParserBase {
-public:
- DynamicListParser(StringRef S) : ScriptParserBase(S) {}
- void run();
-};
-} // end anonymous namespace
-
-void DynamicListParser::run() {
- while (!atEOF()) {
- expect("{");
- while (!Error) {
- Config->DynamicList.push_back(unquote(next()));
- expect(";");
- if (consume("}"))
- break;
- }
- expect(";");
- }
-}
-
-void elf::parseDynamicList(MemoryBufferRef MB) {
- DynamicListParser(MB.getBuffer()).run();
-}
diff --git a/lld/ELF/SymbolListFile.h b/lld/ELF/SymbolListFile.h
deleted file mode 100644
index f095d881fbf..00000000000
--- a/lld/ELF/SymbolListFile.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//===- SymbolListFile.h -----------------------------------------*- C++ -*-===//
-//
-// The LLVM Linker
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLD_ELF_SYMBOL_LIST_FILE_H
-#define LLD_ELF_SYMBOL_LIST_FILE_H
-
-#include "lld/Core/LLVM.h"
-#include "llvm/Support/MemoryBuffer.h"
-
-namespace lld {
-namespace elf {
-
-void parseDynamicList(MemoryBufferRef MB);
-
-} // namespace elf
-} // namespace lld
-
-#endif
OpenPOWER on IntegriCloud