; REQUIRES: x86 ;; 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: split-file %s %t ; 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 ; 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: a ; CHECK-NEXT: Value: ; CHECK-NEXT: Size: [[SIZE]] ; CHECK-NEXT: Binding: Weak ; CHECK-NEXT: Type: Object ; CHECK-NEXT: Other: 0 ; 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