<div dir="ltr">Looks like you forgot to apply the change that I proposed.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 25, 2018 at 2:53 PM Fangrui Song via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This revision was automatically updated to reflect the committed changes.<br>
Closed by commit rL337969: [ELF] Use search paths for --version-script= (authored by MaskRay, committed by ).<br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="https://reviews.llvm.org/D49820" rel="noreferrer" target="_blank">https://reviews.llvm.org/D49820</a><br>
<br>
Files:<br>
  lld/trunk/ELF/Driver.cpp<br>
  lld/trunk/ELF/Driver.h<br>
  lld/trunk/ELF/DriverUtils.cpp<br>
  lld/trunk/ELF/ScriptParser.cpp<br>
  lld/trunk/test/ELF/version-script-in-search-path.s<br>
<br>
<br>
Index: lld/trunk/ELF/DriverUtils.cpp<br>
===================================================================<br>
--- lld/trunk/ELF/DriverUtils.cpp<br>
+++ lld/trunk/ELF/DriverUtils.cpp<br>
@@ -227,10 +227,10 @@<br>
   return None;<br>
 }<br>
<br>
-// If a linker script doesn't exist in the current directory, we also look for<br>
-// the script in the '-L' search paths. This matches the behaviour of both '-T'<br>
-// and linker script INPUT() directives in ld.bfd.<br>
-Optional<std::string> elf::searchLinkerScript(StringRef Name) {<br>
+// If a linker/version script doesn't exist in the current directory, we also<br>
+// look for the script in the '-L' search paths. This matches the behaviour of<br>
+// '-T', --version-script=, and linker script INPUT() command in ld.bfd.<br>
+Optional<std::string> elf::searchScript(StringRef Name) {<br>
   if (fs::exists(Name))<br>
     return Name.str();<br>
   return findFromSearchPaths(Name);<br>
Index: lld/trunk/ELF/Driver.cpp<br>
===================================================================<br>
--- lld/trunk/ELF/Driver.cpp<br>
+++ lld/trunk/ELF/Driver.cpp<br>
@@ -939,8 +939,12 @@<br>
     Config->Undefined.push_back(Arg->getValue());<br>
<br>
   for (auto *Arg : Args.filtered(OPT_version_script))<br>
-    if (Optional<MemoryBufferRef> Buffer = readFile(Arg->getValue()))<br>
-      readVersionScript(*Buffer);<br>
+    if (Optional<std::string> Path = searchScript(Arg->getValue())) {<br>
+      if (Optional<MemoryBufferRef> Buffer = readFile(*Path))<br>
+        readVersionScript(*Buffer);<br>
+    } else {<br>
+      error(Twine("cannot find version script ") + Arg->getValue());<br>
+    }<br>
 }<br>
<br>
 // Some Config members do not directly correspond to any particular<br>
@@ -1022,7 +1026,7 @@<br>
       break;<br>
     }<br>
     case OPT_script:<br>
-      if (Optional<std::string> Path = searchLinkerScript(Arg->getValue())) {<br>
+      if (Optional<std::string> Path = searchScript(Arg->getValue())) {<br>
         if (Optional<MemoryBufferRef> MB = readFile(*Path))<br>
           readLinkerScript(*MB);<br>
         break;<br>
Index: lld/trunk/ELF/ScriptParser.cpp<br>
===================================================================<br>
--- lld/trunk/ELF/ScriptParser.cpp<br>
+++ lld/trunk/ELF/ScriptParser.cpp<br>
@@ -344,7 +344,7 @@<br>
     return;<br>
   }<br>
<br>
-  if (Optional<std::string> Path = searchLinkerScript(Tok)) {<br>
+  if (Optional<std::string> Path = searchScript(Tok)) {<br>
     if (Optional<MemoryBufferRef> MB = readFile(*Path))<br>
       tokenize(*MB);<br>
     return;<br>
Index: lld/trunk/ELF/Driver.h<br>
===================================================================<br>
--- lld/trunk/ELF/Driver.h<br>
+++ lld/trunk/ELF/Driver.h<br>
@@ -67,7 +67,7 @@<br>
 std::string createResponseFile(const llvm::opt::InputArgList &Args);<br>
<br>
 llvm::Optional<std::string> findFromSearchPaths(StringRef Path);<br>
-llvm::Optional<std::string> searchLinkerScript(StringRef Path);<br>
+llvm::Optional<std::string> searchScript(StringRef Path);<br>
 llvm::Optional<std::string> searchLibrary(StringRef Path);<br>
<br>
 } // namespace elf<br>
Index: lld/trunk/test/ELF/version-script-in-search-path.s<br>
===================================================================<br>
--- lld/trunk/test/ELF/version-script-in-search-path.s<br>
+++ lld/trunk/test/ELF/version-script-in-search-path.s<br>
@@ -0,0 +1,10 @@<br>
+# REQUIRES: x86<br>
+# Check that we fall back to search paths if a version script was not found<br>
+# This behaviour matches ld.bfd.<br>
+<br>
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o<br>
+# RUN: mkdir -p %T/searchpath<br>
+# RUN: echo '{};' > %T/searchpath/t.script<br>
+# RUN: ld.lld -L%T/searchpath --version-script=t.script %t.o -o /dev/null<br>
+# RUN: not ld.lld --version-script=t.script %t.o 2>&1 | FileCheck -check-prefix ERROR %s<br>
+# ERROR: error: cannot find version script<br>
<br>
<br>
</blockquote></div>