diff options
Diffstat (limited to 'lld/test/elf2/shared.s')
| -rw-r--r-- | lld/test/elf2/shared.s | 68 |
1 files changed, 29 insertions, 39 deletions
diff --git a/lld/test/elf2/shared.s b/lld/test/elf2/shared.s index 4c7f5c37d34..5a796d2ce25 100644 --- a/lld/test/elf2/shared.s +++ b/lld/test/elf2/shared.s @@ -3,48 +3,16 @@ // RUN: lld -flavor gnu2 -shared %t2.o -o %t2.so // RUN: llvm-readobj -s %t2.so | FileCheck --check-prefix=SO %s // RUN: lld -flavor gnu2 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -rpath foo -rpath bar %t.o %t2.so -o %t -// RUN: llvm-readobj --program-headers --dynamic-table -t -s -dyn-symbols -section-data %t | FileCheck %s +// RUN: llvm-readobj --program-headers --dynamic-table -t -s -dyn-symbols -section-data -hash-table %t | FileCheck %s // REQUIRES: x86 - -// test that .hash is linked to .dynsym -// SO: Index: 4 -// SO-NEXT: Name: .dynsym -// SO-NEXT: Type: SHT_DYNSYM -// SO-NEXT: Flags [ -// SO-NEXT: SHF_ALLOC -// SO-NEXT: ] -// SO-NEXT: Address: -// SO-NEXT: Offset: -// SO-NEXT: Size: -// SO-NEXT: Link: -// SO-NEXT: Info: -// SO-NEXT: AddressAlignment: 4 -// SO-NEXT: EntrySize: 16 -// SO-NEXT: } -// SO-NEXT: Section { -// SO-NEXT: Index: 5 -// SO-NEXT: Name: .hash -// SO-NEXT: Type: SHT_HASH -// SO-NEXT: Flags [ -// SO-NEXT: SHF_ALLOC -// SO-NEXT: ] -// SO-NEXT: Address: -// SO-NEXT: Offset: -// SO-NEXT: Size: 0 -// SO-NEXT: Link: 4 -// SO-NEXT: Info: 0 -// SO-NEXT: AddressAlignment: 4 -// SO-NEXT: EntrySize: 4 -// SO-NEXT: } - // Make sure .symtab is properly aligned. // SO: Name: .symtab // SO-NEXT: Type: SHT_SYMTAB // SO-NEXT: Flags [ // SO-NEXT: ] // SO-NEXT: Address: -// SO-NEXT: Offset: 0x300C +// SO-NEXT: Offset: 0x400C // SO-NEXT: Size: // SO-NEXT: Link: // SO-NEXT: Info: @@ -68,7 +36,9 @@ // CHECK-NEXT: ) // CHECK-NEXT: } -// CHECK: Name: .dynsym +// test that .hash is linked to .dynsym +// CHECK: Index: 5 +// CHECK-NEXT: Name: .dynsym // CHECK-NEXT: Type: SHT_DYNSYM // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -86,6 +56,21 @@ // CHECK-NEXT: 0020: // CHECK-NEXT: ) // CHECK-NEXT: } +// CHECK-NEXT: Section { +// CHECK-NEXT: Index: 6 +// CHECK-NEXT: Name: .hash +// CHECK-NEXT: Type: SHT_HASH +// CHECK-NEXT: Flags [ +// CHECK-NEXT: SHF_ALLOC +// CHECK-NEXT: ] +// CHECK-NEXT: Address: [[HASHADDR:.*]] +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: +// CHECK-NEXT: Link: 5 +// CHECK-NEXT: Info: 0 +// CHECK-NEXT: AddressAlignment: 4 +// CHECK-NEXT: EntrySize: 4 + // CHECK: Name: .dynamic // CHECK-NEXT: Type: SHT_DYNAMIC @@ -101,10 +86,7 @@ // CHECK-NEXT: AddressAlignment: [[ALIGN:.*]] // CHECK-NEXT: EntrySize: 8 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: -// CHECK-NEXT: 0010: -// CHECK-NEXT: 0020: -// CHECK-NEXT: ) +// CHECK: ) // CHECK-NEXT: } // CHECK: Index: [[DYNSTR]] @@ -190,6 +172,7 @@ // CHECK-NEXT: 0x00000006 SYMTAB [[DYNSYMADDR]] // CHECK-NEXT: 0x00000005 STRTAB [[DYNSTRADDR]] // CHECK-NEXT: 0x0000000A STRSZ +// CHECK-NEXT: 0x00000004 HASH [[HASHADDR]] // CHECK-NEXT: 0x0000001D RUNPATH foo:bar // CHECK-NEXT: 0x00000001 NEEDED SharedLibrary ({{.*}}2.so) // CHECK-NEXT: 0x00000000 NULL 0x0 @@ -221,6 +204,13 @@ // CHECK-NEXT: Alignment: [[ALIGN]] // CHECK-NEXT: } +// CHECK: HashTable { +// CHECK-NEXT: Num Buckets: 3 +// CHECK-NEXT: Num Chains: 3 +// CHECK-NEXT: Buckets: [2, 0, 1] +// CHECK-NEXT: Chains: [0, 0, 0] +// CHECK-NEXT: } + .global _start _start: .long bar |

