[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