[lld] r258583 - Fix bug in handling of quoted linker script tokens and update tests to use it.

Pete Cooper via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 22 15:46:38 PST 2016


Author: pete
Date: Fri Jan 22 17:46:37 2016
New Revision: 258583

URL: http://llvm.org/viewvc/llvm-project?rev=258583&view=rev
Log:
Fix bug in handling of quoted linker script tokens and update tests to use it.

There was an off by one error because the StringRef.substr functions
second argument is a length, not the end index.

Also updated a few ELF files which failed when run on Jenkins with paths
including the @ character.  This is often used in Jenkins for shared
workspace plugin.

Reviewed by Rui Ueyama

Modified:
    lld/trunk/ELF/LinkerScript.cpp
    lld/trunk/test/ELF/as-needed.s
    lld/trunk/test/ELF/linkerscript.s
    lld/trunk/test/ELF/linkerscript2.s

Modified: lld/trunk/ELF/LinkerScript.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=258583&r1=258582&r2=258583&view=diff
==============================================================================
--- lld/trunk/ELF/LinkerScript.cpp (original)
+++ lld/trunk/ELF/LinkerScript.cpp Fri Jan 22 17:46:37 2016
@@ -104,7 +104,7 @@ std::vector<StringRef> LinkerScript::tok
       size_t E = S.find("\"", 1);
       if (E == StringRef::npos)
         error("unclosed quote");
-      Ret.push_back(S.substr(1, E));
+      Ret.push_back(S.substr(1, E - 1));
       S = S.substr(E + 1);
       continue;
     }

Modified: lld/trunk/test/ELF/as-needed.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/as-needed.s?rev=258583&r1=258582&r2=258583&view=diff
==============================================================================
--- lld/trunk/test/ELF/as-needed.s (original)
+++ lld/trunk/test/ELF/as-needed.s Fri Jan 22 17:46:37 2016
@@ -20,11 +20,11 @@
 
 /// GROUP directive is the same as --as-needed.
 
-// RUN: echo "GROUP(" %t2.so %t3.so %t4.so ")" > %t.script
+// RUN: echo 'GROUP("'%t2.so'" "'%t3.so'" "'%t4.so'")' > %t.script
 // RUN: ld.lld %t.o %t.script -o %t2
 // RUN: llvm-readobj -dynamic-table %t2 | FileCheck %s
 
-// RUN: echo "GROUP(AS_NEEDED(" %t2.so %t3.so %t4.so "))" > %t.script
+// RUN: echo 'GROUP(AS_NEEDED("'%t2.so'" "'%t3.so'" "'%t4.so'"))' > %t.script
 // RUN: ld.lld %t.o %t.script -o %t2
 // RUN: llvm-readobj -dynamic-table %t2 | FileCheck -check-prefix=CHECK2 %s
 

Modified: lld/trunk/test/ELF/linkerscript.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript.s?rev=258583&r1=258582&r2=258583&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript.s (original)
+++ lld/trunk/test/ELF/linkerscript.s Fri Jan 22 17:46:37 2016
@@ -10,43 +10,43 @@
 # RUN: ld.lld %t -o %t2 %t.script
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t ")" > %t.script
+# RUN: echo 'GROUP("'%t'")' > %t.script
 # RUN: ld.lld -o %t2 %t.script
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "INPUT(" %t ")" > %t.script
+# RUN: echo 'INPUT("'%t'")' > %t.script
 # RUN: ld.lld -o %t2 %t.script
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t libxyz.a ")" > %t.script
+# RUN: echo 'GROUP("'%t'" libxyz.a )' > %t.script
 # RUN: not ld.lld -o %t2 %t.script
 # RUN: ld.lld -o %t2 %t.script -L%t.dir
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t =libxyz.a ")" > %t.script
+# RUN: echo 'GROUP("'%t'" =libxyz.a )' > %t.script
 # RUN: not ld.lld -o %t2 %t.script
 # RUN: ld.lld -o %t2 %t.script --sysroot=%t.dir
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t -lxyz ")" > %t.script
+# RUN: echo 'GROUP("'%t'" -lxyz )' > %t.script
 # RUN: not ld.lld -o %t2 %t.script
 # RUN: ld.lld -o %t2 %t.script -L%t.dir
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t libxyz.a ")" > %t.script
+# RUN: echo 'GROUP("'%t'" libxyz.a )' > %t.script
 # RUN: not ld.lld -o %t2 %t.script
 # RUN: ld.lld -o %t2 %t.script -L%t.dir
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t /libxyz.a ")" > %t.script
-# RUN: echo "GROUP(" %t /libxyz.a ")" > %t.dir/xyz.script
+# RUN: echo 'GROUP("'%t'" /libxyz.a )' > %t.script
+# RUN: echo 'GROUP("'%t'" /libxyz.a )' > %t.dir/xyz.script
 # RUN: not ld.lld -o %t2 %t.script
 # RUN: not ld.lld -o %t2 %t.script --sysroot=%t.dir
 # RUN: ld.lld -o %t2 %t.dir/xyz.script --sysroot=%t.dir
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(" %t.script2 ")" > %t.script1
-# RUN: echo "GROUP(" %t ")" > %t.script2
+# RUN: echo 'GROUP("'%t.script2'")' > %t.script1
+# RUN: echo 'GROUP("'%t'")' > %t.script2
 # RUN: ld.lld -o %t2 %t.script1
 # RUN: llvm-readobj %t2 > /dev/null
 
@@ -70,16 +70,16 @@
 # ENTRY-OVERLOAD: Name: _start
 # ENTRY-OVERLOAD-NEXT: Value: [[ENTRY]]
 
-# RUN: echo "OUTPUT_FORMAT(\"elf64-x86-64\") /*/*/ GROUP(" %t ")" > %t.script
+# RUN: echo 'OUTPUT_FORMAT("elf64-x86-64") /*/*/ GROUP("'%t'" )' > %t.script
 # RUN: ld.lld -o %t2 %t.script
 # RUN: llvm-readobj %t2 > /dev/null
 
-# RUN: echo "GROUP(AS_NEEDED(" %t "))" > %t.script
+# RUN: echo 'GROUP(AS_NEEDED("'%t'"))' > %t.script
 # RUN: ld.lld -o %t2 %t.script
 # RUN: llvm-readobj %t2 > /dev/null
 
 # RUN: rm -f %t.out
-# RUN: echo "OUTPUT(" %t.out ")" > %t.script
+# RUN: echo 'OUTPUT("'%t.out'")' > %t.script
 # RUN: ld.lld %t.script %t
 # RUN: llvm-readobj %t.out > /dev/null
 
@@ -95,8 +95,8 @@
 # RUN: ld.lld %t.script %t
 # RUN: llvm-readobj %t.out > /dev/null
 
-# RUN: echo "INCLUDE " %t.script2 "OUTPUT(" %t.out ")" > %t.script1
-# RUN: echo "GROUP(" %t ")" > %t.script2
+# RUN: echo 'INCLUDE "'%t.script2'" OUTPUT("'%t.out'")' > %t.script1
+# RUN: echo 'GROUP("'%t'")' > %t.script2
 # RUN: ld.lld %t.script1
 # RUN: llvm-readobj %t2 > /dev/null
 

Modified: lld/trunk/test/ELF/linkerscript2.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript2.s?rev=258583&r1=258582&r2=258583&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript2.s (original)
+++ lld/trunk/test/ELF/linkerscript2.s Fri Jan 22 17:46:37 2016
@@ -4,7 +4,7 @@
 # RUN:   %p/Inputs/libsearch-dyn.s -o %tdyn.o
 # RUN: mkdir -p %t.dir
 # RUN: ld.lld -shared %tdyn.o -o %t.dir/libls.so
-# RUN: echo "SEARCH_DIR(" %t.dir ")" > %t.script
+# RUN: echo 'SEARCH_DIR("'%t.dir'")' > %t.script
 # RUN: ld.lld -o %t2 --script %t.script -lls %t
 
 .globl _start,_bar




More information about the llvm-commits mailing list