mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-04 12:15:46 +00:00
[ELF][test] Improve reproduce tests and enable for Windows
This patch changes the reproduce tests so that they no longer extract the "long" paths of the generated reproduce tar archives. This extraction prevented them from being run on Windows due to potential issues relating to the Windows path length limit. This patch also reduces the use of diff in these tests, as this was raised as a performance concern in review D77659 and deemed unnecessary. Differential Revision: https://reviews.llvm.org/D77750
This commit is contained in:
parent
1678489234
commit
d08105482e
@ -1,8 +1,4 @@
|
||||
# REQUIRES: x86, shell
|
||||
|
||||
## The 'shell' requirement is to prevent this test from running by default on
|
||||
## Windows as the extraction of the tar archive can cause problems related to
|
||||
## path length limits.
|
||||
# REQUIRES: x86
|
||||
|
||||
# RUN: rm -rf %t.dir
|
||||
# RUN: mkdir -p %t.dir
|
||||
@ -13,8 +9,9 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o bar.o
|
||||
|
||||
# RUN: ld.lld bar.o -o /dev/null --reproduce repro.tar
|
||||
# RUN: tar xf repro.tar
|
||||
# RUN: cmp foo.a repro/%:t.dir/foo.a
|
||||
# RUN: tar tf repro.tar | FileCheck -DPATH='%:t.dir' %s
|
||||
|
||||
# CHECK: [[PATH]]/foo.a
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
@ -1,6 +1,3 @@
|
||||
# REQUIRES: shell
|
||||
# Extracting the tar archive can get over the path limit on windows.
|
||||
|
||||
# RUN: rm -rf %t.dir
|
||||
# RUN: mkdir -p %t.dir
|
||||
# RUN: cd %t.dir
|
||||
@ -8,7 +5,6 @@
|
||||
# RUN: not ld.lld --reproduce repro.tar abc -o t 2>&1 | FileCheck %s
|
||||
# CHECK: cannot open abc: {{N|n}}o such file or directory
|
||||
|
||||
# RUN: tar xf repro.tar
|
||||
# RUN: FileCheck --check-prefix=RSP %s < repro/response.txt
|
||||
# RUN: tar xOf repro.tar repro/response.txt | FileCheck --check-prefix=RSP %s
|
||||
# RSP: abc
|
||||
# RSP: -o t
|
||||
|
@ -1,4 +1,4 @@
|
||||
# REQUIRES: x86, shell
|
||||
# REQUIRES: x86
|
||||
|
||||
# RUN: rm -rf %t.dir
|
||||
# RUN: mkdir -p %t.dir/build
|
||||
@ -7,11 +7,12 @@
|
||||
# RUN: echo "INCLUDE \"%t.dir/build/bar.script\"" >> %t.dir/build/foo.script
|
||||
# RUN: echo "/* empty */" > %t.dir/build/bar.script
|
||||
# RUN: cd %t.dir
|
||||
# RUN: ld.lld build/foo.script -o bar --reproduce repro.tar
|
||||
# RUN: tar xf repro.tar
|
||||
# RUN: diff build/foo.script repro/%:t.dir/build/foo.script
|
||||
# RUN: diff build/bar.script repro/%:t.dir/build/bar.script
|
||||
# RUN: diff build/foo.o repro/%:t.dir/build/foo.o
|
||||
# RUN: ld.lld build/foo.script -o /dev/null --reproduce repro.tar
|
||||
# RUN: tar tf repro.tar | FileCheck -DPATH='%:t.dir' %s
|
||||
|
||||
# CHECK: [[PATH]]/build/foo.script
|
||||
# CHECK: [[PATH]]/build/foo.o
|
||||
# CHECK: [[PATH]]/build/bar.script
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
@ -1,4 +1,4 @@
|
||||
# REQUIRES: x86, shell
|
||||
# REQUIRES: x86
|
||||
|
||||
# RUN: rm -rf %t.dir
|
||||
# RUN: mkdir -p %t.dir
|
||||
@ -6,15 +6,17 @@
|
||||
# RUN: cd %t.dir
|
||||
# RUN: llvm-ar --format=gnu rcT foo.a foo.o
|
||||
|
||||
# RUN: ld.lld -m elf_x86_64 foo.a -o bar --reproduce repro.tar
|
||||
# RUN: tar xf repro.tar
|
||||
# RUN: diff foo.a repro/%:t.dir/foo.a
|
||||
# RUN: diff foo.o repro/%:t.dir/foo.o
|
||||
# RUN: ld.lld -m elf_x86_64 foo.a -o /dev/null --reproduce repro.tar
|
||||
# RUN: tar tf repro.tar | FileCheck -DPATH='repro/%:t.dir' %s
|
||||
|
||||
# RUN: ld.lld -m elf_x86_64 --whole-archive foo.a -o bar --reproduce repro2.tar
|
||||
# RUN: tar xf repro2.tar
|
||||
# RUN: diff foo.a repro2/%:t.dir/foo.a
|
||||
# RUN: diff foo.o repro2/%:t.dir/foo.o
|
||||
# CHECK: [[PATH]]/foo.a
|
||||
# CHECK: [[PATH]]/foo.o
|
||||
|
||||
# RUN: ld.lld -m elf_x86_64 --whole-archive foo.a -o /dev/null --reproduce repro2.tar
|
||||
# RUN: tar tf repro2.tar | FileCheck -DPATH='repro2/%:t.dir' --check-prefix=CHECK2 %s
|
||||
|
||||
# CHECK2: [[PATH]]/foo.a
|
||||
# CHECK2: [[PATH]]/foo.o
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
@ -6,7 +6,7 @@
|
||||
# RUN: llvm-mc %s -o %t.dir/build/foo.o -filetype=obj -triple=x86_64-pc-linux
|
||||
# RUN: cd %t.dir
|
||||
# RUN: ld.lld build/foo.o --reproduce repro.tar
|
||||
# RUN: tar tf repro.tar | FileCheck %s
|
||||
# RUN: tar tf repro.tar | FileCheck -DPATH='repro/%:t.dir' %s
|
||||
|
||||
# CHECK: repro/response.txt
|
||||
# CHECK: repro/{{.*}}/build/foo.o
|
||||
# CHECK: [[PATH]]/build/foo.o
|
||||
|
@ -6,5 +6,6 @@
|
||||
# RUN: llvm-mc %s -o %t.dir/build/foo.o -filetype=obj -triple=x86_64-pc-linux
|
||||
# RUN: cd %t.dir
|
||||
# RUN: ld.lld build/foo.o --reproduce repro.tar
|
||||
# RUN: tar -O -x -f repro.tar repro/response.txt | FileCheck %s
|
||||
# CHECK: {{.*}}/build/foo.o
|
||||
# RUN: tar xOf repro.tar repro/response.txt | FileCheck -DPATH='%:t.dir' %s
|
||||
|
||||
# CHECK: [[PATH]]/build/foo.o
|
||||
|
@ -1,34 +1,34 @@
|
||||
# REQUIRES: x86
|
||||
# REQUIRES: shell
|
||||
|
||||
# Extracting the tar archive can get over the path limit on windows.
|
||||
|
||||
# RUN: rm -rf %t.dir
|
||||
# RUN: mkdir -p %t.dir/build1
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.dir/build1/foo.o
|
||||
# RUN: cd %t.dir
|
||||
# RUN: ld.lld --hash-style=gnu build1/foo.o -o bar -shared --as-needed --reproduce repro.tar
|
||||
# RUN: tar xf repro.tar
|
||||
# RUN: diff build1/foo.o repro/%:t.dir/build1/foo.o
|
||||
# RUN: ld.lld --hash-style=gnu build1/foo.o -o bar -shared --as-needed --reproduce repro1.tar
|
||||
# RUN: tar xOf repro1.tar repro1/%:t.dir/build1/foo.o > build1-foo.o
|
||||
# RUN: cmp build1/foo.o build1-foo.o
|
||||
|
||||
# RUN: FileCheck %s --check-prefix=RSP < repro/response.txt
|
||||
# RSP: {{^}}--hash-style gnu{{$}}
|
||||
# RSP-NOT: {{^}}repro{{[/\\]}}
|
||||
# RSP-NEXT: {{[/\\]}}foo.o
|
||||
# RSP-NEXT: -o bar
|
||||
# RSP-NEXT: -shared
|
||||
# RSP-NEXT: --as-needed
|
||||
# RUN: tar xf repro1.tar repro1/response.txt repro1/version.txt
|
||||
# RUN: FileCheck %s --check-prefix=RSP1 < repro1/response.txt
|
||||
# RSP1: {{^}}--hash-style gnu{{$}}
|
||||
# RSP1-NOT: {{^}}repro1{{[/\\]}}
|
||||
# RSP1-NEXT: {{[/\\]}}foo.o
|
||||
# RSP1-NEXT: -o bar
|
||||
# RSP1-NEXT: -shared
|
||||
# RSP1-NEXT: --as-needed
|
||||
|
||||
# RUN: FileCheck %s --check-prefix=VERSION < repro/version.txt
|
||||
# RUN: FileCheck %s --check-prefix=VERSION < repro1/version.txt
|
||||
# VERSION: LLD
|
||||
|
||||
# RUN: mkdir -p %t.dir/build2/a/b/c
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.dir/build2/foo.o
|
||||
# RUN: cd %t.dir/build2/a/b/c
|
||||
# RUN: env LLD_REPRODUCE=repro.tar ld.lld ./../../../foo.o -o bar -shared --as-needed
|
||||
# RUN: tar xf repro.tar
|
||||
# RUN: diff %t.dir/build2/foo.o repro/%:t.dir/build2/foo.o
|
||||
# RUN: env LLD_REPRODUCE=repro2.tar ld.lld ./../../../foo.o -o /dev/null -shared --as-needed
|
||||
# RUN: tar xOf repro2.tar repro2/%:t.dir/build2/foo.o > build2-foo.o
|
||||
# RUN: cmp %t.dir/build2/foo.o build2-foo.o
|
||||
|
||||
# RUN: mkdir -p %t.dir/build3
|
||||
# RUN: cd %t.dir/build3
|
||||
# RUN: echo "{ local: *; };" > ver
|
||||
# RUN: echo "{};" > dyn
|
||||
# RUN: echo > file
|
||||
@ -36,46 +36,44 @@
|
||||
# RUN: echo "_start" > order
|
||||
# RUN: mkdir "sysroot with spaces"
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o 'foo bar'
|
||||
# RUN: ld.lld --reproduce repro2.tar 'foo bar' -L"foo bar" -Lfile -Tfile2 \
|
||||
# RUN: ld.lld --reproduce repro3.tar 'foo bar' -L"foo bar" -Lfile -Tfile2 \
|
||||
# RUN: --dynamic-list dyn -rpath file --script=file --symbol-ordering-file order \
|
||||
# RUN: --sysroot "sysroot with spaces" --sysroot="sysroot with spaces" \
|
||||
# RUN: --version-script ver --dynamic-linker "some unusual/path" -soname 'foo bar' \
|
||||
# RUN: -soname='foo bar'
|
||||
# RUN: tar xf repro2.tar
|
||||
# RUN: FileCheck %s --check-prefix=RSP2 < repro2/response.txt
|
||||
# RSP2: --chroot .
|
||||
# RSP2: "{{.*}}foo bar"
|
||||
# RSP2-NEXT: --library-path "[[BASEDIR:.+]]/foo bar"
|
||||
# RSP2-NEXT: --library-path [[BASEDIR]]/file
|
||||
# RSP2-NEXT: --script [[BASEDIR]]/file2
|
||||
# RSP2-NEXT: --dynamic-list [[BASEDIR]]/dyn
|
||||
# RSP2-NEXT: -rpath [[BASEDIR]]/file
|
||||
# RSP2-NEXT: --script [[BASEDIR]]/file
|
||||
# RSP2-NEXT: --symbol-ordering-file [[BASEDIR]]/order
|
||||
# RSP2-NEXT: --sysroot "[[BASEDIR]]/sysroot with spaces"
|
||||
# RSP2-NEXT: --sysroot "[[BASEDIR]]/sysroot with spaces"
|
||||
# RSP2-NEXT: --version-script [[BASEDIR]]/ver
|
||||
# RSP2-NEXT: --dynamic-linker "some unusual/path"
|
||||
# RSP2-NEXT: -soname "foo bar"
|
||||
# RSP2-NEXT: -soname "foo bar"
|
||||
# RUN: tar xOf repro3.tar repro3/response.txt | FileCheck %s --check-prefix=RSP3
|
||||
# RSP3: --chroot .
|
||||
# RSP3: "{{.*}}foo bar"
|
||||
# RSP3-NEXT: --library-path "[[BASEDIR:.+]]/foo bar"
|
||||
# RSP3-NEXT: --library-path [[BASEDIR]]/file
|
||||
# RSP3-NEXT: --script [[BASEDIR]]/file2
|
||||
# RSP3-NEXT: --dynamic-list [[BASEDIR]]/dyn
|
||||
# RSP3-NEXT: -rpath [[BASEDIR]]/file
|
||||
# RSP3-NEXT: --script [[BASEDIR]]/file
|
||||
# RSP3-NEXT: --symbol-ordering-file [[BASEDIR]]/order
|
||||
# RSP3-NEXT: --sysroot "[[BASEDIR]]/sysroot with spaces"
|
||||
# RSP3-NEXT: --sysroot "[[BASEDIR]]/sysroot with spaces"
|
||||
# RSP3-NEXT: --version-script [[BASEDIR]]/ver
|
||||
# RSP3-NEXT: --dynamic-linker "some unusual/path"
|
||||
# RSP3-NEXT: -soname "foo bar"
|
||||
# RSP3-NEXT: -soname "foo bar"
|
||||
|
||||
# RUN: tar tf repro2.tar | FileCheck %s
|
||||
# CHECK: repro2/response.txt
|
||||
# CHECK-NEXT: repro2/version.txt
|
||||
# CHECK-NEXT: repro2/{{.*}}/order
|
||||
# CHECK-NEXT: repro2/{{.*}}/dyn
|
||||
# CHECK-NEXT: repro2/{{.*}}/ver
|
||||
# CHECK-NEXT: repro2/{{.*}}/foo bar
|
||||
# CHECK-NEXT: repro2/{{.*}}/file2
|
||||
# CHECK-NEXT: repro2/{{.*}}/file
|
||||
# RUN: tar tf repro3.tar | FileCheck %s
|
||||
# CHECK: repro3/response.txt
|
||||
# CHECK-NEXT: repro3/version.txt
|
||||
# CHECK-NEXT: repro3/{{.*}}/order
|
||||
# CHECK-NEXT: repro3/{{.*}}/dyn
|
||||
# CHECK-NEXT: repro3/{{.*}}/ver
|
||||
# CHECK-NEXT: repro3/{{.*}}/foo bar
|
||||
# CHECK-NEXT: repro3/{{.*}}/file2
|
||||
# CHECK-NEXT: repro3/{{.*}}/file
|
||||
|
||||
## Check that directory path is stripped from -o <file-path>
|
||||
# RUN: mkdir -p %t.dir/build3/a/b/c
|
||||
# RUN: mkdir -p %t.dir/build4/a/b/c
|
||||
# RUN: cd %t.dir
|
||||
# RUN: ld.lld build1/foo.o -o build3/a/b/c/bar -shared --as-needed --reproduce=repro3.tar
|
||||
# RUN: tar xf repro3.tar
|
||||
# RUN: FileCheck %s --check-prefix=RSP3 < repro3/response.txt
|
||||
# RSP3: -o bar
|
||||
# RUN: ld.lld build1/foo.o -o build4/a/b/c/bar -shared --as-needed --reproduce=repro4.tar
|
||||
# RUN: tar xOf repro4.tar repro4/response.txt | FileCheck %s --check-prefix=RSP4
|
||||
# RSP4: -o bar
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
Loading…
Reference in New Issue
Block a user