diff options
-rw-r--r-- | lld/ELF/Driver.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index a567cce8174..285fe4a795d 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -479,9 +479,10 @@ static SortSectionPolicy getSortKind(opt::InputArgList &Args) { } static std::vector<StringRef> getLines(MemoryBufferRef MB) { - std::vector<StringRef> Ret; SmallVector<StringRef, 0> Arr; MB.getBuffer().split(Arr, '\n'); + + std::vector<StringRef> Ret; for (StringRef S : Arr) { S = S.trim(); if (!S.empty()) @@ -500,15 +501,6 @@ static void parseSymbolOrderingList(MemoryBufferRef MB) { Config->SymbolOrderingFile.insert({S, I++}); } -// Parse the --retain-symbols-file argument. File has form: -// symbolName1 -// [...] -// symbolNameN -static void parseRetainSymbolsList(MemoryBufferRef MB) { - for (StringRef S : getLines(MB)) - Config->RetainSymbolsFile.insert(S); -} - // Initializes Config members by the command line options. void LinkerDriver::readConfigs(opt::InputArgList &Args) { for (auto *Arg : Args.filtered(OPT_L)) @@ -660,7 +652,8 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) { if (auto *Arg = Args.getLastArg(OPT_retain_symbols_file)) { Config->Discard = DiscardPolicy::RetainFile; if (Optional<MemoryBufferRef> Buffer = readFile(Arg->getValue())) - parseRetainSymbolsList(*Buffer); + for (StringRef S : getLines(*Buffer)) + Config->RetainSymbolsFile.insert(S); } for (auto *Arg : Args.filtered(OPT_export_dynamic_symbol)) |