183 lines · plain
1# REQUIRES: x862# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %S/Inputs/verneed1.s -o %t1.o3# RUN: echo "v1 {}; v2 {}; v3 { global: f1; local: *; };" > %t.script4# RUN: ld.lld -shared %t1.o --version-script %t.script --undefined-version -o %t1.so -soname verneed1.so.05# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %S/Inputs/verneed2.s -o %t2.o6# RUN: ld.lld -shared %t2.o --version-script %t.script --undefined-version -o %t2.so -soname verneed2.so.07 8# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o9# RUN: ld.lld --hash-style=sysv %t.o %t1.so %t2.so -o %t10# RUN: llvm-readobj -S -d --section-data --dyn-syms -V %t | FileCheck %s11 12# CHECK: Section {13# CHECK: Index: 114# CHECK-NEXT: Name: .dynsym15# CHECK-NEXT: Type: SHT_DYNSYM (0xB)16# CHECK-NEXT: Flags [ (0x2)17# CHECK-NEXT: SHF_ALLOC (0x2)18# CHECK-NEXT: ]19# CHECK-NEXT: Address: 0x20020020# CHECK-NEXT: Offset: 0x20021# CHECK-NEXT: Size: 9622# CHECK-NEXT: Link: [[DYNSTR:.*]]23# CHECK-NEXT: Info: 124# CHECK-NEXT: AddressAlignment: 825# CHECK-NEXT: EntrySize: 2426 27# CHECK: Section {28# CHECK-NEXT: Index: 229# CHECK-NEXT: Name: .gnu.version30# CHECK-NEXT: Type: SHT_GNU_versym (0x6FFFFFFF)31# CHECK-NEXT: Flags [ (0x2)32# CHECK-NEXT: SHF_ALLOC (0x2)33# CHECK-NEXT: ]34# CHECK-NEXT: Address: [[VERSYM:.*]]35# CHECK-NEXT: Offset: [[VERSYM_OFFSET:.*]]36# CHECK-NEXT: Size: 837# CHECK-NEXT: Link: 138# CHECK-NEXT: Info: 039# CHECK-NEXT: AddressAlignment: 240# CHECK-NEXT: EntrySize: 241 42# CHECK: Section {43# CHECK-NEXT: Index: 344# CHECK-NEXT: Name: .gnu.version_r45# CHECK-NEXT: Type: SHT_GNU_verneed (0x6FFFFFFE)46# CHECK-NEXT: Flags [ (0x2)47# CHECK-NEXT: SHF_ALLOC (0x2)48# CHECK-NEXT: ]49# CHECK-NEXT: Address: [[VERNEED:.*]]50# CHECK-NEXT: Offset: 0x26851# CHECK-NEXT: Size: 8052# CHECK-NEXT: Link: 553# CHECK-NEXT: Info: 254# CHECK-NEXT: AddressAlignment: 455# CHECK-NEXT: EntrySize: 056 57# CHECK: Index: [[DYNSTR]]58# CHECK-NEXT: Name: .dynstr59# CHECK-NEXT: Type: SHT_STRTAB (0x3)60# CHECK-NEXT: Flags [ (0x2)61# CHECK-NEXT: SHF_ALLOC (0x2)62# CHECK-NEXT: ]63# CHECK-NEXT: Address: 0x2002E064# CHECK-NEXT: Offset: 0x2E065# CHECK-NEXT: Size: 4766# CHECK-NEXT: Link: 067# CHECK-NEXT: Info: 068# CHECK-NEXT: AddressAlignment: 169# CHECK-NEXT: EntrySize: 070# CHECK-NEXT: SectionData (71# CHECK-NEXT: 0000: 00663100 66320067 31007665 726E6565 |.f1.f2.g1.vernee|72# CHECK-NEXT: 0010: 64312E73 6F2E3000 76320076 33007665 |d1.so.0.v2.v3.ve|73# CHECK-NEXT: 0020: 726E6565 64322E73 6F2E3000 763100 |rneed2.so.0.v1.|74# CHECK-NEXT: )75# CHECK-NEXT: }76 77# CHECK: 0x000000006FFFFFF0 VERSYM [[VERSYM]]78# CHECK-NEXT: 0x000000006FFFFFFE VERNEED [[VERNEED]]79# CHECK-NEXT: 0x000000006FFFFFFF VERNEEDNUM 280 81# CHECK: DynamicSymbols [82# CHECK-NEXT: Symbol {83# CHECK-NEXT: Name:84# CHECK-NEXT: Value: 0x085# CHECK-NEXT: Size: 086# CHECK-NEXT: Binding: Local (0x0)87# CHECK-NEXT: Type: None (0x0)88# CHECK-NEXT: Other: 089# CHECK-NEXT: Section: Undefined (0x0)90# CHECK-NEXT: }91# CHECK-NEXT: Symbol {92# CHECK-NEXT: Name: f1@v393# CHECK-NEXT: Value: 0x094# CHECK-NEXT: Size: 095# CHECK-NEXT: Binding: Global (0x1)96# CHECK-NEXT: Type: None (0x0)97# CHECK-NEXT: Other: 098# CHECK-NEXT: Section: Undefined (0x0)99# CHECK-NEXT: }100# CHECK-NEXT: Symbol {101# CHECK-NEXT: Name: f2@v2102# CHECK-NEXT: Value: 0x0103# CHECK-NEXT: Size: 0104# CHECK-NEXT: Binding: Global (0x1)105# CHECK-NEXT: Type: None (0x0)106# CHECK-NEXT: Other: 0107# CHECK-NEXT: Section: Undefined (0x0)108# CHECK-NEXT: }109# CHECK-NEXT: Symbol {110# CHECK-NEXT: Name: g1@v1111# CHECK-NEXT: Value: 0x0112# CHECK-NEXT: Size: 0113# CHECK-NEXT: Binding: Global (0x1)114# CHECK-NEXT: Type: None (0x0)115# CHECK-NEXT: Other: 0116# CHECK-NEXT: Section: Undefined (0x0)117# CHECK-NEXT: }118# CHECK-NEXT: ]119 120# CHECK: VersionSymbols [121# CHECK-NEXT: Symbol {122# CHECK-NEXT: Version: 0123# CHECK-NEXT: Name:124# CHECK-NEXT: }125# CHECK-NEXT: Symbol {126# CHECK-NEXT: Version: 2127# CHECK-NEXT: Name: f1@v3128# CHECK-NEXT: }129# CHECK-NEXT: Symbol {130# CHECK-NEXT: Version: 3131# CHECK-NEXT: Name: f2@v2132# CHECK-NEXT: }133# CHECK-NEXT: Symbol {134# CHECK-NEXT: Version: 4135# CHECK-NEXT: Name: g1@v1136# CHECK-NEXT: }137# CHECK-NEXT: ]138# CHECK-NEXT: VersionDefinitions [139# CHECK-NEXT: ]140# CHECK-NEXT: VersionRequirements [141# CHECK-NEXT: Dependency {142# CHECK-NEXT: Version: 1143# CHECK-NEXT: Count: 2144# CHECK-NEXT: FileName: verneed1.so.0145# CHECK-NEXT: Entries [146# CHECK-NEXT: Entry {147# CHECK-NEXT: Hash: 1938148# CHECK-NEXT: Flags [ (0x0)149# CHECK-NEXT: ]150# CHECK-NEXT: Index: 3151# CHECK-NEXT: Name: v2152# CHECK-NEXT: }153# CHECK-NEXT: Entry {154# CHECK-NEXT: Hash: 1939155# CHECK-NEXT: Flags [ (0x0)156# CHECK-NEXT: ]157# CHECK-NEXT: Index: 2158# CHECK-NEXT: Name: v3159# CHECK-NEXT: }160# CHECK-NEXT: ]161# CHECK-NEXT: }162# CHECK-NEXT: Dependency {163# CHECK-NEXT: Version: 1164# CHECK-NEXT: Count: 1165# CHECK-NEXT: FileName: verneed2.so.0166# CHECK-NEXT: Entries [167# CHECK-NEXT: Entry {168# CHECK-NEXT: Hash: 1937169# CHECK-NEXT: Flags [ (0x0)170# CHECK-NEXT: ]171# CHECK-NEXT: Index: 4172# CHECK-NEXT: Name: v1173# CHECK-NEXT: }174# CHECK-NEXT: ]175# CHECK-NEXT: }176# CHECK-NEXT: ]177 178.globl _start179_start:180call f1@plt181call f2@plt182call g1@plt183