1c4ccfb5dSGeorge Rimar# REQUIRES: x86 2c4ccfb5dSGeorge Rimar# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o 3c4ccfb5dSGeorge Rimar 4c4ccfb5dSGeorge Rimar# RUN: echo "bar = foo; VERSION { V { global: foo; bar; local: *; }; }" > %t.script 5c4ccfb5dSGeorge Rimar# RUN: ld.lld -T %t.script -shared --no-undefined-version %t.o -o %t.so 6c4ccfb5dSGeorge Rimar# RUN: llvm-readobj -V %t.so | FileCheck %s 7c4ccfb5dSGeorge Rimar 8c844524eSIgor Kudrin# RUN: echo "SECTIONS { .text : { bar = foo; *(.text) } }" > %t.script 9c844524eSIgor Kudrin# RUN: echo "VERSION { V { global: foo; bar; local: *; }; }" >> %t.script 10c844524eSIgor Kudrin# RUN: ld.lld -T %t.script -shared --no-undefined-version %t.o -o %t.so 11c844524eSIgor Kudrin# RUN: llvm-readobj -V %t.so | FileCheck %s 12c844524eSIgor Kudrin 13c4ccfb5dSGeorge Rimar## Check that we are able to version symbols defined in script. 14938db706SGeorge Rimar# CHECK: VersionSymbols [ 15c4ccfb5dSGeorge Rimar# CHECK-NEXT: Symbol { 16c4ccfb5dSGeorge Rimar# CHECK-NEXT: Version: 0 174ba1777aSJames Henderson# CHECK-NEXT: Name: 18c4ccfb5dSGeorge Rimar# CHECK-NEXT: } 19c4ccfb5dSGeorge Rimar# CHECK-NEXT: Symbol { 20e28a70daSFangrui Song# CHECK-NEXT: Version: 1 214ba1777aSJames Henderson# CHECK-NEXT: Name: und 22c4ccfb5dSGeorge Rimar# CHECK-NEXT: } 23c4ccfb5dSGeorge Rimar# CHECK-NEXT: Symbol { 24c4ccfb5dSGeorge Rimar# CHECK-NEXT: Version: 2 25c4ccfb5dSGeorge Rimar# CHECK-NEXT: Name: foo@@V 26c4ccfb5dSGeorge Rimar# CHECK-NEXT: } 27c4ccfb5dSGeorge Rimar# CHECK-NEXT: Symbol { 28c4ccfb5dSGeorge Rimar# CHECK-NEXT: Version: 2 29c4ccfb5dSGeorge Rimar# CHECK-NEXT: Name: bar@@V 30c4ccfb5dSGeorge Rimar# CHECK-NEXT: } 31c4ccfb5dSGeorge Rimar# CHECK-NEXT: ] 32c4ccfb5dSGeorge Rimar 33c4ccfb5dSGeorge Rimar# RUN: echo "bar = und; VERSION { V { global: foo; bar; local: *; }; }" > %t.script 34*81cebfd0SFangrui Song# RUN: not ld.lld -T %t.script -shared --no-undefined-version %t.o -o /dev/null \ 35c4ccfb5dSGeorge Rimar# RUN: 2>&1 | FileCheck --check-prefix=ERR %s 36c4ccfb5dSGeorge Rimar# ERR: symbol not found: und 37c4ccfb5dSGeorge Rimar 38c4ccfb5dSGeorge Rimar# RUN: echo "und = 0x1; VERSION { V { global: und; local: *; }; }" > %t.script 39c4ccfb5dSGeorge Rimar# RUN: ld.lld -T %t.script -shared --no-undefined-version %t.o -o %t.so 40c4ccfb5dSGeorge Rimar# RUN: llvm-readobj -V %t.so | FileCheck %s --check-prefix=UNDEF 41938db706SGeorge Rimar# UNDEF: VersionSymbols [ 42c4ccfb5dSGeorge Rimar# UNDEF-NEXT: Symbol { 43c4ccfb5dSGeorge Rimar# UNDEF-NEXT: Version: 0 444ba1777aSJames Henderson# UNDEF-NEXT: Name: 45c4ccfb5dSGeorge Rimar# UNDEF-NEXT: } 46c4ccfb5dSGeorge Rimar# UNDEF-NEXT: Symbol { 47c4ccfb5dSGeorge Rimar# UNDEF-NEXT: Version: 2 48c4ccfb5dSGeorge Rimar# UNDEF-NEXT: Name: und@@V 49c4ccfb5dSGeorge Rimar# UNDEF-NEXT: } 50c4ccfb5dSGeorge Rimar# UNDEF-NEXT: ] 51c4ccfb5dSGeorge Rimar 52c4ccfb5dSGeorge Rimar.global und 53c4ccfb5dSGeorge Rimar 54c4ccfb5dSGeorge Rimar.text 55c4ccfb5dSGeorge Rimar.globl foo 56c4ccfb5dSGeorge Rimar.type foo,@function 57c4ccfb5dSGeorge Rimarfoo: 58