3 ;; Test weak symbols are supported in LTO. The first definition should be
4 ;; used regardless of whether it is from a bitcode file or native object.
6 ; RUN: split-file %s %t
8 ; RUN: llvm-as %t/size1.ll -o %t-size1.bc
9 ; RUN: llvm-as %t/size2.ll -o %t-size2.bc
10 ; RUN: llc %t/size4.ll -o %t-size4.o -filetype=obj
12 ; RUN: ld.lld %t-size1.bc %t-size2.bc -o %t.so -shared
13 ; RUN: llvm-readobj --symbols %t.so | FileCheck %s -DSIZE=1
15 ; RUN: ld.lld %t-size2.bc %t-size1.bc -o %t2.so -shared
16 ; RUN: llvm-readobj --symbols %t2.so | FileCheck %s -DSIZE=2
18 ; RUN: ld.lld %t-size1.bc %t-size4.o -o %t3.so -shared
19 ; RUN: llvm-readobj --symbols %t3.so | FileCheck %s -DSIZE=1
21 ; RUN: ld.lld %t-size4.o %t-size1.bc -o %t4.so -shared
22 ; RUN: llvm-readobj --symbols %t4.so | FileCheck %s -DSIZE=4
26 ; CHECK-NEXT: Size: [[SIZE]]
27 ; CHECK-NEXT: Binding: Weak
28 ; CHECK-NEXT: Type: Object
29 ; CHECK-NEXT: Other: 0
30 ; CHECK-NEXT: Section: .data
33 target triple = "x86_64-unknown-linux-gnu"
34 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
39 target triple = "x86_64-unknown-linux-gnu"
40 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
42 @a = weak global i16 1
45 target triple = "x86_64-unknown-linux-gnu"
46 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
48 @a = weak global i32 1