diff options
| author | Pete Cooper <peter_cooper@apple.com> | 2016-01-22 23:46:37 +0000 |
|---|---|---|
| committer | Pete Cooper <peter_cooper@apple.com> | 2016-01-22 23:46:37 +0000 |
| commit | 602593378936c969e2dc7e7924f744943d129ba6 (patch) | |
| tree | 96464c1ee999ad5706fe320269311e09a08e5b5e | |
| parent | 3a2d4947a69ff4731d2adb9862552fc8a003d295 (diff) | |
| download | bcm5719-llvm-602593378936c969e2dc7e7924f744943d129ba6.tar.gz bcm5719-llvm-602593378936c969e2dc7e7924f744943d129ba6.zip | |
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
llvm-svn: 258583
| -rw-r--r-- | lld/ELF/LinkerScript.cpp | 2 | ||||
| -rw-r--r-- | lld/test/ELF/as-needed.s | 4 | ||||
| -rw-r--r-- | lld/test/ELF/linkerscript.s | 30 | ||||
| -rw-r--r-- | lld/test/ELF/linkerscript2.s | 2 |
4 files changed, 19 insertions, 19 deletions
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp index a6df9ed48cd..1345bd4f973 100644 --- a/lld/ELF/LinkerScript.cpp +++ b/lld/ELF/LinkerScript.cpp @@ -104,7 +104,7 @@ std::vector<StringRef> LinkerScript::tokenize(StringRef S) { 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; } diff --git a/lld/test/ELF/as-needed.s b/lld/test/ELF/as-needed.s index 2c5174d5407..eb91dd625a1 100644 --- a/lld/test/ELF/as-needed.s +++ b/lld/test/ELF/as-needed.s @@ -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 diff --git a/lld/test/ELF/linkerscript.s b/lld/test/ELF/linkerscript.s index bff285b9761..74dbc2553dc 100644 --- a/lld/test/ELF/linkerscript.s +++ b/lld/test/ELF/linkerscript.s @@ -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 diff --git a/lld/test/ELF/linkerscript2.s b/lld/test/ELF/linkerscript2.s index f83198f759f..86fb638ee0f 100644 --- a/lld/test/ELF/linkerscript2.s +++ b/lld/test/ELF/linkerscript2.s @@ -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 |

