diff options
-rw-r--r-- | lld/ELF/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lld/ELF/Driver.cpp | 1 | ||||
-rw-r--r-- | lld/ELF/Driver.h | 1 | ||||
-rw-r--r-- | lld/ELF/DriverUtils.cpp | 29 | ||||
-rw-r--r-- | lld/ELF/SymbolListFile.cpp | 58 | ||||
-rw-r--r-- | lld/ELF/SymbolListFile.h | 24 |
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 |