diff options
Diffstat (limited to 'test/ELF/gnu-hash-table.s')
-rw-r--r-- | test/ELF/gnu-hash-table.s | 79 |
1 files changed, 66 insertions, 13 deletions
diff --git a/test/ELF/gnu-hash-table.s b/test/ELF/gnu-hash-table.s index 0e37574aaa7c..fa68ba250131 100644 --- a/test/ELF/gnu-hash-table.s +++ b/test/ELF/gnu-hash-table.s @@ -1,15 +1,34 @@ # REQUIRES: x86,ppc -# RUN: echo ".globl foo" > %te.s +# RUN: echo ".globl foo; .data; .dc.a foo" > %te.s # RUN: llvm-mc -filetype=obj -triple=i386-pc-linux %te.s -o %te-i386.o # RUN: llvm-mc -filetype=obj -triple=i386-pc-linux %s -o %t-i386.o # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t-x86_64.o # RUN: llvm-mc -filetype=obj -triple=powerpc64-pc-linux %s -o %t-ppc64.o +# RUN: echo ".global zed; zed:" > %t2.s +# RUN: llvm-mc -filetype=obj -triple=i386-pc-linux %t2.s -o %t2-i386.o +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %t2.s -o %t2-x86_64.o +# RUN: llvm-mc -filetype=obj -triple=powerpc64-pc-linux %t2.s -o %t2-ppc64.o + +# RUN: rm -f %t2-i386.a %t2-x86_64.a %t2-ppc64.a +# RUN: llvm-ar rc %t2-i386.a %t2-i386.o +# RUN: llvm-ar rc %t2-x86_64.a %t2-x86_64.o +# RUN: llvm-ar rc %t2-ppc64.a %t2-ppc64.o + +# RUN: echo ".global xyz; xyz:" > %t3.s +# RUN: llvm-mc -filetype=obj -triple=i386-pc-linux %t3.s -o %t3-i386.o +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %t3.s -o %t3-x86_64.o +# RUN: llvm-mc -filetype=obj -triple=powerpc64-pc-linux %t3.s -o %t3-ppc64.o + +# RUN: ld.lld -shared %t3-i386.o -o %t3-i386.so +# RUN: ld.lld -shared %t3-x86_64.o -o %t3-x86_64.so +# RUN: ld.lld -shared %t3-ppc64.o -o %t3-ppc64.so + # RUN: ld.lld -shared --hash-style=gnu -o %te-i386.so %te-i386.o -# RUN: ld.lld -shared -hash-style=gnu -o %t-i386.so %t-i386.o -# RUN: ld.lld -shared -hash-style=gnu -o %t-x86_64.so %t-x86_64.o -# RUN: ld.lld -shared --hash-style both -o %t-ppc64.so %t-ppc64.o +# RUN: ld.lld -shared -hash-style=gnu -o %t-i386.so %t-i386.o %t2-i386.a %t3-i386.so +# RUN: ld.lld -shared -hash-style=gnu -o %t-x86_64.so %t-x86_64.o %t2-x86_64.a %t3-x86_64.so +# RUN: ld.lld -shared --hash-style both -o %t-ppc64.so %t-ppc64.o %t2-ppc64.a %t3-ppc64.so # RUN: llvm-readobj -dyn-symbols -gnu-hash-table %te-i386.so \ # RUN: | FileCheck %s -check-prefix=EMPTY @@ -70,6 +89,16 @@ # I386: Section: Undefined # I386: } # I386: Symbol { +# I386: Name: xyz@ +# I386: Binding: Global +# I386: Section: Undefined +# I386: } +# I386: Symbol { +# I386: Name: zed@ +# I386: Binding: Weak +# I386: Section: Undefined +# I386: } +# I386: Symbol { # I386: Name: bar@ # I386: Binding: Global # I386: Section: .text @@ -82,11 +111,11 @@ # I386: ] # I386: GnuHashTable { # I386-NEXT: Num Buckets: 1 -# I386-NEXT: First Hashed Symbol Index: 2 +# I386-NEXT: First Hashed Symbol Index: 4 # I386-NEXT: Num Mask Words: 1 # I386-NEXT: Shift Count: 5 # I386-NEXT: Bloom Filter: [0x14000220] -# I386-NEXT: Buckets: [2] +# I386-NEXT: Buckets: [4] # I386-NEXT: Values: [0xB8860BA, 0xB887389] # I386-NEXT: } @@ -120,6 +149,16 @@ # X86_64: Section: Undefined # X86_64: } # X86_64: Symbol { +# X86_64: Name: xyz@ +# X86_64: Binding: Global +# X86_64: Section: Undefined +# X86_64: } +# X86_64: Symbol { +# X86_64: Name: zed@ +# X86_64: Binding: Weak +# X86_64: Section: Undefined +# X86_64: } +# X86_64: Symbol { # X86_64: Name: bar@ # X86_64: Binding: Global # X86_64: Section: .text @@ -132,11 +171,11 @@ # X86_64: ] # X86_64: GnuHashTable { # X86_64-NEXT: Num Buckets: 1 -# X86_64-NEXT: First Hashed Symbol Index: 2 +# X86_64-NEXT: First Hashed Symbol Index: 4 # X86_64-NEXT: Num Mask Words: 1 # X86_64-NEXT: Shift Count: 6 # X86_64-NEXT: Bloom Filter: [0x400000000004204] -# X86_64-NEXT: Buckets: [2] +# X86_64-NEXT: Buckets: [4] # X86_64-NEXT: Values: [0xB8860BA, 0xB887389] # X86_64-NEXT: } @@ -149,10 +188,10 @@ # PPC64-NEXT: Flags [ # PPC64-NEXT: SHF_ALLOC # PPC64-NEXT: ] -# PPC64-NEXT: Address: 0x228 -# PPC64-NEXT: Offset: 0x228 +# PPC64-NEXT: Address: +# PPC64-NEXT: Offset: # PPC64-NEXT: Size: 36 -# PPC64-NEXT: Link: 1 +# PPC64-NEXT: Link: # PPC64-NEXT: Info: 0 # PPC64-NEXT: AddressAlignment: 8 # PPC64-NEXT: EntrySize: 0 @@ -170,6 +209,16 @@ # PPC64: Section: Undefined # PPC64: } # PPC64: Symbol { +# PPC64: Name: xyz@ +# PPC64: Binding: Global +# PPC64: Section: Undefined +# PPC64: } +# PPC64: Symbol { +# PPC64: Name: zed@ +# PPC64: Binding: Weak +# PPC64: Section: Undefined +# PPC64: } +# PPC64: Symbol { # PPC64: Name: bar@ # PPC64: Binding: Global # PPC64: Section: .text @@ -182,14 +231,18 @@ # PPC64: ] # PPC64: GnuHashTable { # PPC64-NEXT: Num Buckets: 1 -# PPC64-NEXT: First Hashed Symbol Index: 2 +# PPC64-NEXT: First Hashed Symbol Index: 4 # PPC64-NEXT: Num Mask Words: 1 # PPC64-NEXT: Shift Count: 6 # PPC64-NEXT: Bloom Filter: [0x400000000004204] -# PPC64-NEXT: Buckets: [2] +# PPC64-NEXT: Buckets: [4] # PPC64-NEXT: Values: [0xB8860BA, 0xB887389] # PPC64-NEXT: } .globl foo,bar,baz foo: bar: +.weak zed +.global xyz +.data + .dc.a baz |