93 lines · plain
1# REQUIRES: x862 3# RUN: rm -rf %t.dir4# RUN: mkdir -p %t.dir/build15# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.dir/build1/foo.o6# RUN: cd %t.dir7# RUN: ld.lld --hash-style=gnu build1/foo.o -o bar -shared --as-needed --reproduce repro1.tar8# RUN: tar xOf repro1.tar repro1/%:t.dir/build1/foo.o > build1-foo.o9# RUN: cmp build1/foo.o build1-foo.o10 11# RUN: tar xf repro1.tar repro1/response.txt repro1/version.txt12# RUN: FileCheck %s --check-prefix=RSP1 < repro1/response.txt13# RSP1: {{^}}--hash-style gnu{{$}}14# RSP1-NOT: {{^}}repro1{{[/\\]}}15# RSP1-NEXT: {{[/\\]}}foo.o16# RSP1-NEXT: -o bar17# RSP1-NEXT: -shared18# RSP1-NEXT: --as-needed19 20# RUN: FileCheck %s --check-prefix=VERSION < repro1/version.txt21# VERSION: LLD22 23# RUN: mkdir -p %t.dir/build2/a/b/c24# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.dir/build2/foo.o25# RUN: cd %t.dir/build2/a/b/c26# RUN: env LLD_REPRODUCE=repro2.tar ld.lld ./../../../foo.o -o /dev/null -shared --as-needed27# RUN: tar xOf repro2.tar repro2/%:t.dir/build2/foo.o > build2-foo.o28# RUN: cmp %t.dir/build2/foo.o build2-foo.o29 30# RUN: mkdir -p %t.dir/build331# RUN: cd %t.dir/build332# RUN: echo "{ local: *; };" > ver33# RUN: echo "{};" > dyn34# RUN: cp dyn dyn235# RUN: echo > file36# RUN: echo > file237# RUN: echo > file338# RUN: echo "_start" > order39# RUN: mkdir "sysroot with spaces"40# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o 'foo bar'41# RUN: ld.lld --reproduce repro3.tar 'foo bar' -L"foo bar" -Lfile -Tfile2 -dT file3 \42# RUN: --dynamic-list dyn --export-dynamic-symbol-list dyn2 -rpath file --script=file --symbol-ordering-file order \43# RUN: --sysroot "sysroot with spaces" --sysroot="sysroot with spaces" \44# RUN: --version-script ver --dynamic-linker "some unusual/path" -soname 'foo bar' \45# RUN: -soname='foo bar'46# RUN: tar xOf repro3.tar repro3/response.txt | FileCheck %s --check-prefix=RSP347# RSP3: --chroot .48# RSP3: "{{.*}}foo bar"49# RSP3-NEXT: -L "[[BASEDIR:.+]]/foo bar"50# RSP3-NEXT: -L [[BASEDIR]]/file51# RSP3-NEXT: --script [[BASEDIR]]/file252# RSP3-NEXT: --default-script [[BASEDIR]]/file353# RSP3-NEXT: --dynamic-list [[BASEDIR]]/dyn54# RSP3-NEXT: --export-dynamic-symbol-list [[BASEDIR]]/dyn255# RSP3-NEXT: -rpath [[BASEDIR]]/file56# RSP3-NEXT: --script [[BASEDIR]]/file57# RSP3-NEXT: --symbol-ordering-file [[BASEDIR]]/order58# RSP3-NEXT: --sysroot "[[BASEDIR]]/sysroot with spaces"59# RSP3-NEXT: --sysroot "[[BASEDIR]]/sysroot with spaces"60# RSP3-NEXT: --version-script [[BASEDIR]]/ver61# RSP3-NEXT: --dynamic-linker "some unusual/path"62# RSP3-NEXT: -soname "foo bar"63# RSP3-NEXT: -soname "foo bar"64 65# RUN: tar tf repro3.tar | FileCheck %s66# CHECK: repro3/response.txt67# CHECK-NEXT: repro3/version.txt68# CHECK-NEXT: repro3/{{.*}}/order69# CHECK-NEXT: repro3/{{.*}}/dyn70# CHECK-NEXT: repro3/{{.*}}/dyn271# CHECK-NEXT: repro3/{{.*}}/ver72# CHECK-NEXT: repro3/{{.*}}/foo bar73# CHECK-NEXT: repro3/{{.*}}/file274# CHECK-NEXT: repro3/{{.*}}/file75 76## Check that directory path is stripped from -o <file-path>77# RUN: mkdir -p %t.dir/build4/a/b/c78# RUN: cd %t.dir79# RUN: ld.lld build1/foo.o -o build4/a/b/c/bar -Map build4/map --dependency-file=build4/bar.d --print-archive-stats=build4/stats \80# RUN: --why-extract=build4/why -shared --as-needed --reproduce=repro4.tar81# RUN: tar xOf repro4.tar repro4/response.txt | FileCheck %s --check-prefix=RSP482# RSP4: -o bar83# RSP4-NEXT: -Map map84# RSP4-NEXT: --dependency-file bar.d85# RSP4-NEXT: --print-archive-stats=stats86# RSP4-NEXT: --why-extract=why87 88.globl _start89_start:90 mov $60, %rax91 mov $42, %rdi92 syscall93