[PATCH] D27831: [ELF] - Linkerscript: Fall back to search paths when INCLUDE not found

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 21 01:53:02 PST 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL290247: [ELF] - Linkerscript: Fall back to search paths when INCLUDE not found (authored by grimar).

Changed prior to commit:
  https://reviews.llvm.org/D27831?vs=81938&id=82211#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D27831

Files:
  lld/trunk/ELF/LinkerScript.cpp
  lld/trunk/test/ELF/linkerscript/linkerscript.s


Index: lld/trunk/ELF/LinkerScript.cpp
===================================================================
--- lld/trunk/ELF/LinkerScript.cpp
+++ lld/trunk/ELF/LinkerScript.cpp
@@ -1171,8 +1171,14 @@
 }
 
 void ScriptParser::readInclude() {
-  StringRef Tok = next();
-  auto MBOrErr = MemoryBuffer::getFile(unquote(Tok));
+  StringRef Tok = unquote(next());
+  // https://sourceware.org/binutils/docs/ld/File-Commands.html:
+  // The file will be searched for in the current directory, and in any
+  // directory specified with the -L option.
+  auto MBOrErr = MemoryBuffer::getFile(Tok);
+  if (!MBOrErr)
+    if (Optional<std::string> Path = findFromSearchPaths(Tok))
+      MBOrErr = MemoryBuffer::getFile(*Path);
   if (!MBOrErr) {
     setError("cannot open " + Tok);
     return;
Index: lld/trunk/test/ELF/linkerscript/linkerscript.s
===================================================================
--- lld/trunk/test/ELF/linkerscript/linkerscript.s
+++ lld/trunk/test/ELF/linkerscript/linkerscript.s
@@ -33,6 +33,14 @@
 # RUN: ld.lld %t.script1
 # RUN: llvm-readobj %t2 > /dev/null
 
+# RUN: echo "INCLUDE \"foo.script\"" > %t.script
+# RUN: echo "OUTPUT(\"%t.out\")" > %T/foo.script
+# RUN: not ld.lld %t.script > %t.log 2>&1
+# RUN: FileCheck -check-prefix=INCLUDE_ERR %s < %t.log
+# INCLUDE_ERR: error: {{.+}}.script:1: cannot open foo.script
+# INCLUDE_ERR-NEXT: error: {{.+}}.script:1: INCLUDE "foo.script"
+# RUN: ld.lld -L %T %t.script %t
+
 # RUN: echo "FOO(BAR)" > %t.script
 # RUN: not ld.lld -o foo %t.script > %t.log 2>&1
 # RUN: FileCheck -check-prefix=ERR1 %s < %t.log


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27831.82211.patch
Type: text/x-patch
Size: 1593 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161221/270a1ffe/attachment.bin>


More information about the llvm-commits mailing list