1# REQUIRES: x86 2# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o 3 4# RUN: echo "bar = foo; VERSION { V { global: foo; bar; local: *; }; }" > %t.script 5# RUN: ld.lld -T %t.script -shared --no-undefined-version %t.o -o %t.so 6# RUN: llvm-readobj -V %t.so | FileCheck %s 7 8## Check that we are able to version symbols defined in script. 9# CHECK: Symbols [ 10# CHECK-NEXT: Symbol { 11# CHECK-NEXT: Version: 0 12# CHECK-NEXT: Name: @ 13# CHECK-NEXT: } 14# CHECK-NEXT: Symbol { 15# CHECK-NEXT: Version: 0 16# CHECK-NEXT: Name: und@ 17# CHECK-NEXT: } 18# CHECK-NEXT: Symbol { 19# CHECK-NEXT: Version: 2 20# CHECK-NEXT: Name: foo@@V 21# CHECK-NEXT: } 22# CHECK-NEXT: Symbol { 23# CHECK-NEXT: Version: 2 24# CHECK-NEXT: Name: bar@@V 25# CHECK-NEXT: } 26# CHECK-NEXT: ] 27 28# RUN: echo "bar = und; VERSION { V { global: foo; bar; local: *; }; }" > %t.script 29# RUN: not ld.lld -T %t.script -shared --no-undefined-version %t.o -o %t.so \ 30# RUN: 2>&1 | FileCheck --check-prefix=ERR %s 31# ERR: symbol not found: und 32 33# RUN: echo "und = 0x1; VERSION { V { global: und; local: *; }; }" > %t.script 34# RUN: ld.lld -T %t.script -shared --no-undefined-version %t.o -o %t.so 35# RUN: llvm-readobj -V %t.so | FileCheck %s --check-prefix=UNDEF 36# UNDEF: Symbols [ 37# UNDEF-NEXT: Symbol { 38# UNDEF-NEXT: Version: 0 39# UNDEF-NEXT: Name: @ 40# UNDEF-NEXT: } 41# UNDEF-NEXT: Symbol { 42# UNDEF-NEXT: Version: 2 43# UNDEF-NEXT: Name: und@@V 44# UNDEF-NEXT: } 45# UNDEF-NEXT: ] 46 47.global und 48 49.text 50.globl foo 51.type foo,@function 52foo: 53