forked from OSchip/llvm-project
49 lines
1.5 KiB
LLVM
49 lines
1.5 KiB
LLVM
; 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
|