[PATCH] D104894: [ELF] --sysroot: change sysrooted script to not fall back for an absolute path

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 25 12:53:01 PDT 2021


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG2508733e1be2: [ELF] --sysroot: change sysrooted script to not fall back for an absolute path (authored by MaskRay).

Changed prior to commit:
  https://reviews.llvm.org/D104894?vs=354421&id=354586#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104894/new/

https://reviews.llvm.org/D104894

Files:
  lld/ELF/ScriptParser.cpp
  lld/test/ELF/linkerscript/group.s


Index: lld/test/ELF/linkerscript/group.s
===================================================================
--- lld/test/ELF/linkerscript/group.s
+++ lld/test/ELF/linkerscript/group.s
@@ -1,4 +1,5 @@
 # REQUIRES: x86
+# UNSUPPORTED: system-windows
 
 # RUN: mkdir -p %t.dir
 # RUN: rm -f %t.dir/libxyz.a
@@ -37,10 +38,15 @@
 
 # RUN: echo "GROUP(\"%t\" /libxyz.a )" > %t.script
 # RUN: echo "GROUP(\"%t\" /libxyz.a )" > %t.dir/xyz.script
-# RUN: not ld.lld -o /dev/null %t.script 2>/dev/null
-# RUN: not ld.lld -o /dev/null %t.script --sysroot=%t.dir  2>/dev/null
-# RUN: ld.lld -o %t2 %t.dir/xyz.script --sysroot=%t.dir
-# RUN: llvm-readobj %t2 > /dev/null
+# RUN: not ld.lld -o /dev/null %t.script 2>&1 | FileCheck %s --check-prefix=CANNOT_OPEN -DFILE=/libxyz.a
+# RUN: not ld.lld -o /dev/null %t.script --sysroot=%t.dir 2>&1 | FileCheck %s --check-prefix=CANNOT_OPEN -DFILE=/libxyz.a
+
+## Since %t.dir/%t does not exist, report an error, instead of falling back to %t
+## without the syroot prefix.
+# RUN: not ld.lld -o /dev/null %t.dir/xyz.script --sysroot=%t.dir 2>&1 | FileCheck %s --check-prefix=CANNOT_FIND_SYSROOT -DTMP=%t
+
+# CANNOT_FIND_SYSROOT:      error: {{.*}}xyz.script:1: cannot find [[TMP]] inside [[TMP]].dir
+# CANNOT_FIND_SYSROOT-NEXT: >>> GROUP({{.*}}
 
 # RUN: echo "GROUP(\"%t.script2\")" > %t.script1
 # RUN: echo "GROUP(\"%t\")" > %t.script2
@@ -51,6 +57,8 @@
 # RUN: ld.lld -o %t2 %t.script
 # RUN: llvm-readobj %t2 > /dev/null
 
+# CANNOT_OPEN: error: cannot open [[FILE]]: {{.*}}
+
 .globl _start
 _start:
   ret
Index: lld/ELF/ScriptParser.cpp
===================================================================
--- lld/ELF/ScriptParser.cpp
+++ lld/ELF/ScriptParser.cpp
@@ -288,10 +288,11 @@
   if (isUnderSysroot && s.startswith("/")) {
     SmallString<128> pathData;
     StringRef path = (config->sysroot + s).toStringRef(pathData);
-    if (sys::fs::exists(path)) {
+    if (sys::fs::exists(path))
       driver->addFile(saver.save(path), /*withLOption=*/false);
-      return;
-    }
+    else
+      setError("cannot find " + s + " inside " + config->sysroot);
+    return;
   }
 
   if (s.startswith("/")) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D104894.354586.patch
Type: text/x-patch
Size: 2150 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210625/3ea62cfa/attachment.bin>


More information about the llvm-commits mailing list