Skip to content

Commit 1b6c3ca

Browse files
committed
[lld][test] Fix use of escape character in an lld test on Windows
Summary: Glob support was improved to accept `\` as an escape character in r375051, but reverted as r375052 due to a failure in this test on Windows. The reason this failure seems Windows specific is because the path separator `\` is currently being relied on to be interpreted literally instead of as an escape character. Per documentation on linker input section wildcard patterns, this seems to be a bug in lld accepting `\` as a literal instead of an escape character. For example: ``` SECTIONS{ .foo :{ /path/to/foo.o(.foo) }} # OK: standard UNIX path SECTIONS{ .foo :{ C:/path/to/foo.o(.foo) }} # OK: windows accepts slashes in either direction SECTIONS{ .foo :{ C:\\path\\to\\foo.o(.foo) }} # OK: escape character used to match a literal \ SECTIONS{ .foo :{ C:\path\to\foo.o(.foo) }} # BAD: this actually matches the path C:pathtofoo.o(.foo) ``` This avoids the problem in the test by using `%/T` in place of `%T` to normalize the path separator to `/`, which windows should also accept. This patch just fixes the test, and glob support will be be relanded separately. For a sample buildbot error, see: http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/11578/steps/stage%201%20check/logs/stdio Reviewers: evgeny777, ruiu, MaskRay, espindola Reviewed By: ruiu, MaskRay Subscribers: emaste, arichardson, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69074 llvm-svn: 375126
1 parent ccc4d83 commit 1b6c3ca

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

lld/test/ELF/linkerscript/filename-spec.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@
2929
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
3030
# RUN: %p/Inputs/filename-spec.s -o %T/filename-spec2.o
3131

32-
# RUN: echo "SECTIONS{.foo :{ %T/filename-spec2.o(.foo) %T/filename-spec1.o(.foo) }}" > %t5.script
32+
# RUN: echo "SECTIONS{.foo :{ %/T/filename-spec2.o(.foo) %/T/filename-spec1.o(.foo) }}" > %t5.script
3333
# RUN: ld.lld -o %t5 --script %t5.script \
3434
# RUN: %T/filename-spec1.o %T/filename-spec2.o
3535
# RUN: llvm-objdump -s %t5 | FileCheck --check-prefix=SECONDFIRST %s
3636

37-
# RUN: echo "SECTIONS{.foo :{ %T/filename-spec1.o(.foo) %T/filename-spec2.o(.foo) }}" > %t6.script
37+
# RUN: echo "SECTIONS{.foo :{ %/T/filename-spec1.o(.foo) %/T/filename-spec2.o(.foo) }}" > %t6.script
3838
# RUN: ld.lld -o %t6 --script %t6.script \
3939
# RUN: %T/filename-spec1.o %T/filename-spec2.o
4040
# RUN: llvm-objdump -s %t6 | FileCheck --check-prefix=FIRSTY %s

0 commit comments

Comments
 (0)