217 lines · plain
1# REQUIRES: x862 3# RUN: rm -rf %t && split-file %s %t && cd %t4# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/verdef-defaultver.s -o %t15# RUN: echo "V1 { global: a; b; local: *; };" > %t.script6# RUN: echo "V2 { global: b; c; } V1;" >> %t.script7# RUN: ld.lld --hash-style=sysv -shared -soname shared %t1 --version-script %t.script --undefined-version -o %t.so8# RUN: llvm-readobj -V --dyn-syms %t.so | FileCheck --check-prefix=DSO %s9 10# DSO: DynamicSymbols [11# DSO-NEXT: Symbol {12# DSO-NEXT: Name:13# DSO-NEXT: Value: 0x014# DSO-NEXT: Size: 015# DSO-NEXT: Binding: Local16# DSO-NEXT: Type: None17# DSO-NEXT: Other: 018# DSO-NEXT: Section: Undefined19# DSO-NEXT: }20# DSO-NEXT: Symbol {21# DSO-NEXT: Name: b@V122# DSO-NEXT: Value: 0x12E923# DSO-NEXT: Size: 024# DSO-NEXT: Binding: Global25# DSO-NEXT: Type: Function26# DSO-NEXT: Other: 027# DSO-NEXT: Section: .text28# DSO-NEXT: }29# DSO-NEXT: Symbol {30# DSO-NEXT: Name: b@@V231# DSO-NEXT: Value: 0x12EA32# DSO-NEXT: Size: 033# DSO-NEXT: Binding: Global34# DSO-NEXT: Type: Function35# DSO-NEXT: Other: 036# DSO-NEXT: Section: .text37# DSO-NEXT: }38# DSO-NEXT: Symbol {39# DSO-NEXT: Name: a@@V140# DSO-NEXT: Value: 0x12E841# DSO-NEXT: Size: 042# DSO-NEXT: Binding: Global43# DSO-NEXT: Type: Function44# DSO-NEXT: Other: 045# DSO-NEXT: Section: .text46# DSO-NEXT: }47# DSO-NEXT: Symbol {48# DSO-NEXT: Name: c@@V249# DSO-NEXT: Value: 0x12EB50# DSO-NEXT: Size: 051# DSO-NEXT: Binding: Global52# DSO-NEXT: Type: Function53# DSO-NEXT: Other: 054# DSO-NEXT: Section: .text55# DSO-NEXT: }56# DSO-NEXT: ]57# DSO-NEXT: VersionSymbols [58# DSO-NEXT: Symbol {59# DSO-NEXT: Version: 060# DSO-NEXT: Name:61# DSO-NEXT: }62# DSO-NEXT: Symbol {63# DSO-NEXT: Version: 264# DSO-NEXT: Name: b@V165# DSO-NEXT: }66# DSO-NEXT: Symbol {67# DSO-NEXT: Version: 368# DSO-NEXT: Name: b@@V269# DSO-NEXT: }70# DSO-NEXT: Symbol {71# DSO-NEXT: Version: 272# DSO-NEXT: Name: a@@V173# DSO-NEXT: }74# DSO-NEXT: Symbol {75# DSO-NEXT: Version: 376# DSO-NEXT: Name: c@@V277# DSO-NEXT: }78# DSO-NEXT: ]79# DSO-NEXT: VersionDefinitions [80# DSO-NEXT: Definition {81# DSO-NEXT: Version: 182# DSO-NEXT: Flags [ (0x1)83# DSO-NEXT: Base (0x1)84# DSO-NEXT: ]85# DSO-NEXT: Index: 186# DSO-NEXT: Hash: 12783019687# DSO-NEXT: Name: shared88# DSO-NEXT: Predecessors: []89# DSO-NEXT: }90# DSO-NEXT: Definition {91# DSO-NEXT: Version: 192# DSO-NEXT: Flags [ (0x0)93# DSO-NEXT: ]94# DSO-NEXT: Index: 295# DSO-NEXT: Hash: 142596# DSO-NEXT: Name: V197# DSO-NEXT: Predecessors: []98# DSO-NEXT: }99# DSO-NEXT: Definition {100# DSO-NEXT: Version: 1101# DSO-NEXT: Flags [ (0x0)102# DSO-NEXT: ]103# DSO-NEXT: Index: 3104# DSO-NEXT: Hash: 1426105# DSO-NEXT: Name: V2106# DSO-NEXT: Predecessors: []107# DSO-NEXT: }108# DSO-NEXT: ]109 110## Check that we can link against DSO produced.111# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o112# RUN: ld.lld --hash-style=sysv a.o %t.so -o a113# RUN: llvm-readobj -V --dyn-syms a | FileCheck --check-prefix=EXE %s114 115# EXE: DynamicSymbols [116# EXE-NEXT: Symbol {117# EXE-NEXT: Name:118# EXE-NEXT: Value: 0x0119# EXE-NEXT: Size: 0120# EXE-NEXT: Binding: Local121# EXE-NEXT: Type: None122# EXE-NEXT: Other: 0123# EXE-NEXT: Section: Undefined124# EXE-NEXT: }125# EXE-NEXT: Symbol {126# EXE-NEXT: Name: a@V1127# EXE-NEXT: Value: 0x201340128# EXE-NEXT: Size: 0129# EXE-NEXT: Binding: Global130# EXE-NEXT: Type: Function131# EXE-NEXT: Other: 0132# EXE-NEXT: Section: Undefined133# EXE-NEXT: }134# EXE-NEXT: Symbol {135# EXE-NEXT: Name: b@V2136# EXE-NEXT: Value: 0x201350137# EXE-NEXT: Size: 0138# EXE-NEXT: Binding: Global139# EXE-NEXT: Type: Function140# EXE-NEXT: Other: 0141# EXE-NEXT: Section: Undefined142# EXE-NEXT: }143# EXE-NEXT: Symbol {144# EXE-NEXT: Name: c@V2145# EXE-NEXT: Value: 0x201360146# EXE-NEXT: Size: 0147# EXE-NEXT: Binding: Global148# EXE-NEXT: Type: Function149# EXE-NEXT: Other: 0150# EXE-NEXT: Section: Undefined151# EXE-NEXT: }152# EXE-NEXT: ]153# EXE-NEXT: VersionSymbols [154# EXE-NEXT: Symbol {155# EXE-NEXT: Version: 0156# EXE-NEXT: Name:157# EXE-NEXT: }158# EXE-NEXT: Symbol {159# EXE-NEXT: Version: 2160# EXE-NEXT: Name: a@V1161# EXE-NEXT: }162# EXE-NEXT: Symbol {163# EXE-NEXT: Version: 3164# EXE-NEXT: Name: b@V2165# EXE-NEXT: }166# EXE-NEXT: Symbol {167# EXE-NEXT: Version: 3168# EXE-NEXT: Name: c@V2169# EXE-NEXT: }170# EXE-NEXT: ]171# EXE-NEXT: VersionDefinitions [172# EXE-NEXT: ]173# EXE-NEXT: VersionRequirements [174# EXE-NEXT: Dependency {175# EXE-NEXT: Version: 1176# EXE-NEXT: Count: 2177# EXE-NEXT: FileName: shared178# EXE-NEXT: Entries [179# EXE-NEXT: Entry {180# EXE-NEXT: Hash: 1425181# EXE-NEXT: Flags [ (0x0)182# EXE-NEXT: ]183# EXE-NEXT: Index: 2184# EXE-NEXT: Name: V1185# EXE-NEXT: }186# EXE-NEXT: Entry {187# EXE-NEXT: Hash: 1426188# EXE-NEXT: Flags [ (0x0)189# EXE-NEXT: ]190# EXE-NEXT: Index: 3191# EXE-NEXT: Name: V2192# EXE-NEXT: }193# EXE-NEXT: ]194# EXE-NEXT: }195# EXE-NEXT: ]196 197# RUN: llvm-mc -filetype=obj -triple=x86_64 b.s -o b.o198# RUN: ld.lld -shared --version-script=%t.script --fatal-warnings --undefined-version %t.so b.o -o b.so199# RUN: llvm-readelf --dyn-syms b.so | FileCheck %s --check-prefix=PREEMPT200# RUN: ld.lld -shared --version-script=%t.script --fatal-warnings --undefined-version b.o %t.so -o b.so201# RUN: llvm-readelf --dyn-syms b.so | FileCheck %s --check-prefix=PREEMPT202 203# PREEMPT-DAG: a@@V1204# PREEMPT-DAG: c@@V2205 206#--- a.s207.globl _start208_start:209 .long a - .210 .long b - .211 .long c - .212 213#--- b.s214.globl a, c215a:216c:217