diff --git a/lld/test/ELF/lto/weak.ll b/lld/test/ELF/lto/weak.ll index d2891a998a1a68..4e9a17046c5b51 100644 --- a/lld/test/ELF/lto/weak.ll +++ b/lld/test/ELF/lto/weak.ll @@ -1,22 +1,48 @@ ; REQUIRES: x86 -;; Test weak symbols are supported in LTO. +;; Test weak symbols are supported in LTO. The first definition should be +;; used regardless of whether it is from a bitcode file or native object. -; RUN: llvm-as %s -o %t.o -; RUN: ld.lld %t.o %t.o -o %t.so -shared -; RUN: llvm-readobj --symbols %t.so | FileCheck %s +; RUN: split-file %s %t -target triple = "x86_64-unknown-linux-gnu" -target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +; RUN: llvm-as %t/size1.ll -o %t-size1.bc +; RUN: llvm-as %t/size2.ll -o %t-size2.bc +; RUN: llc %t/size4.ll -o %t-size4.o -filetype=obj + +; RUN: ld.lld %t-size1.bc %t-size2.bc -o %t.so -shared +; RUN: llvm-readobj --symbols %t.so | FileCheck %s -DSIZE=1 + +; RUN: ld.lld %t-size2.bc %t-size1.bc -o %t2.so -shared +; RUN: llvm-readobj --symbols %t2.so | FileCheck %s -DSIZE=2 + +; RUN: ld.lld %t-size1.bc %t-size4.o -o %t3.so -shared +; RUN: llvm-readobj --symbols %t3.so | FileCheck %s -DSIZE=1 -define weak void @f() { - ret void -} +; RUN: ld.lld %t-size4.o %t-size1.bc -o %t4.so -shared +; RUN: llvm-readobj --symbols %t4.so | FileCheck %s -DSIZE=4 -; CHECK: Name: f +; CHECK: Name: a ; CHECK-NEXT: Value: -; CHECK-NEXT: Size: 1 +; CHECK-NEXT: Size: [[SIZE]] ; CHECK-NEXT: Binding: Weak -; CHECK-NEXT: Type: Function +; CHECK-NEXT: Type: Object ; CHECK-NEXT: Other: 0 -; CHECK-NEXT: Section: .text +; CHECK-NEXT: Section: .data + +;--- size1.ll +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" + +@a = weak global i8 1 + +;--- size2.ll +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" + +@a = weak global i16 1 + +;--- size4.ll +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" + +@a = weak global i32 1 diff --git a/lld/test/ELF/reproduce-lto.s b/lld/test/ELF/reproduce-lto.s index e7c3ece61085d6..36838f21388ef6 100644 --- a/lld/test/ELF/reproduce-lto.s +++ b/lld/test/ELF/reproduce-lto.s @@ -1,4 +1,7 @@ # REQUIRES: x86 +## Show that bitcode files and inputs to LTO-related options are stored in the +## reproduce package and that intermediate files (such as the LTO-compiled +## object) are not. # RUN: rm -rf %t.dir # RUN: mkdir -p %t.dir/build1 @@ -6,5 +9,9 @@ # RUN: echo > %t.dir/build1/empty_profile.txt # RUN: cd %t.dir # RUN: ld.lld build1/foo.o -o /dev/null --reproduce repro1.tar --lto-sample-profile=%t.dir/build1/empty_profile.txt -# RUN: tar tvf repro1.tar | FileCheck %s -# CHECK: repro1/{{.*}}/empty_profile.txt +# RUN: tar tvf repro1.tar | FileCheck %s --implicit-check-not={{.}} + +# CHECK-DAG: {{.*}} repro1/{{.*}}/empty_profile.txt +# CHECK-DAG: {{.*}} repro1/response.txt +# CHECK-DAG: {{.*}} repro1/version.txt +# CHECK-DAG: {{.*}} repro1/{{.*}}/foo.o