Skip to content

Commit

Permalink
[llvm-readobj][test] - Simplify hash-symbols test.
Browse files Browse the repository at this point in the history
We are able to reduce `-DBITS=32/64` to reduce this test case.
I've rewrote the comments we had to generalize them and
fix wrong computations they contained.

Differential revision: https://reviews.llvm.org/D76924
  • Loading branch information
Georgii Rymar committed Mar 30, 2020
1 parent e95d04f commit 821439a
Showing 1 changed file with 17 additions and 83 deletions.
100 changes: 17 additions & 83 deletions llvm/test/tools/llvm-readobj/ELF/hash-symbols.test
Expand Up @@ -2,10 +2,13 @@

## Check the output when both .hash and .gnu.hash sections are present.

# RUN: yaml2obj --docnum=1 %s -o %t1-32.so
# RUN: yaml2obj --docnum=1 -DBITS=32 %s -o %t1-32.so
# RUN: llvm-readelf --hash-symbols %t1-32.so \
# RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix HASH-32

# RUN: yaml2obj --docnum=1 -DBITS=64 %s -o %t1-64.so
# RUN: llvm-readelf --hash-symbols %t1-64.so | FileCheck %s --check-prefix HASH-64

# HASH-32: Symbol table of .hash for image:
# HASH-32-NEXT: Num Buc: Value Size Type Bind Vis Ndx Name
# HASH-32-NEXT: 1 0: 00000000 0 NOTYPE GLOBAL DEFAULT UND ccc
Expand All @@ -22,75 +25,6 @@
# HASH-32-NEXT: 5 2: 00001001 0 NOTYPE WEAK DEFAULT 1 bbb
# HASH-32-NOT: {{.}}

--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_386
Sections:
- Name: .hash
Type: SHT_HASH
Flags: [ SHF_ALLOC ]
Link: .dynsym
Bucket: [ 1, 0, 0 ]
Chain: [ 0, 5, 4, 2, 0, 3 ]
- Name: .gnu.hash
Type: SHT_GNU_HASH
Flags: [ SHF_ALLOC ]
Link: .dynsym
Header:
SymNdx: 0x2
Shift2: 0x0
BloomFilter: [ 0x0 ]
HashBuckets: [ 0x0, 0x2, 0x4 ]
HashValues: [ 0x0B885C68, 0x0B886991, 0x0B886DF4, 0x0B8860CB ]
- Name: .dynamic
Type: SHT_DYNAMIC
Flags: [ SHF_ALLOC ]
Link: .dynstr
Entries:
## PT_LOAD's p_vaddr is 0x0. PT_LOAD's p_offset = 0x1bc. DT_HASH value is 0x0.
## llvm-readelf will read .hash content from p_offset + (p_vaddr - DT_HASH value) = 0x1bc.
## This matches the file offset of the .hash section.
- Tag: DT_HASH
Value: 0x0000000000000000
- Tag: DT_GNU_HASH
## PT_LOAD's p_vaddr is 0x0. PT_LOAD's p_offset = 0x1bc. DT_GNU_HASH value is 0x2c (size of .hash = 0x2c).
## llvm-readelf will read .gnu.hash content from p_offset + (p_vaddr - DT_GNU_HASH value) = 0x1e8.
## This matches the file offset of the .gnu.hash section.
Value: 0x000000000000002C
- Tag: DT_NULL
Value: 0x0000000000000000
DynamicSymbols:
- Name: ccc
Binding: STB_GLOBAL
- Name: aaa
Section: .hash
Binding: STB_GLOBAL
Value: 0x0000000000001000
- Name: ddd
Index: SHN_ABS
Binding: STB_GLOBAL
Value: 0x0000000000000001
- Name: eee
Section: .gnu.hash
Binding: STB_GLOBAL
- Name: bbb
Section: .hash
Binding: STB_WEAK
Value: 0x0000000000001001
ProgramHeaders:
- Type: PT_LOAD
Flags: [ PF_R, PF_X ]
Sections:
- Section: .hash
- Section: .gnu.hash
- Section: .dynamic

# RUN: yaml2obj --docnum=2 %s -o %t1-64.so
# RUN: llvm-readelf --hash-symbols %t1-64.so | FileCheck %s --check-prefix HASH-64

# HASH-64: Symbol table of .hash for image:
# HASH-64-NEXT: Num Buc: Value Size Type Bind Vis Ndx Name
# HASH-64-NEXT: 1 0: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND ccc
Expand All @@ -109,7 +43,7 @@ ProgramHeaders:

--- !ELF
FileHeader:
Class: ELFCLASS64
Class: ELFCLASS[[BITS]]
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_X86_64
Expand All @@ -128,23 +62,23 @@ Sections:
SymNdx: 0x2
Shift2: 0x0
BloomFilter: [ 0x0 ]
HashBuckets: [ 0x00000000, 0x00000002, 0x00000004 ]
HashBuckets: [ 0x0, 0x2, 0x4 ]
HashValues: [ 0x0B885C68, 0x0B886991, 0x0B886DF4, 0x0B8860CB ]
- Name: .dynamic
Type: SHT_DYNAMIC
Flags: [ SHF_ALLOC ]
Link: .dynstr
Entries:
## PT_LOAD's p_vaddr is 0x0. DT_HASH value is 0x0.
## llvm-readelf will read .hash content from PT_LOAD's p_offset + (DT_HASH value - p_vaddr).
## This matches the file offset of the .hash section.
- Tag: DT_HASH
## PT_LOAD's p_vaddr is 0x0. PT_LOAD's p_offset = 0x2b8. DT_HASH value is 0x0.
## llvm-readelf will read .hash content from p_offset + (p_vaddr - DT_HASH value) = 0x2b8.
## This matches the file offset of the .hash section.
Value: 0x0000000000000000
- Tag: DT_GNU_HASH
## PT_LOAD's p_vaddr is 0x0. PT_LOAD's p_offset = 0x2b8. DT_GNU_HASH value is 0x2c (size of .hash = 0x2c).
## llvm-readelf will read .gnu.hash content from p_offset + (p_vaddr - DT_GNU_HASH value) = 0x2e4.
## PT_LOAD's p_vaddr is 0x0. DT_GNU_HASH value is 0x2c (size of .hash = 0x2c).
## llvm-readelf will read .gnu.hash content from PT_LOAD's p_offset + (DT_GNU_HASH value - p_vaddr).
## This matches the file offset of the .gnu.hash section.
Value: 0x000000000000002c
Value: 0x000000000000002C
- Tag: DT_NULL
Value: 0x0000000000000000
DynamicSymbols:
Expand Down Expand Up @@ -175,7 +109,7 @@ ProgramHeaders:

## Check the output when only .hash section is present.

# RUN: yaml2obj --docnum=3 %s -o %t2-32.so
# RUN: yaml2obj --docnum=2 %s -o %t2-32.so
# RUN: llvm-readelf --hash-symbols %t2-32.so \
# RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix ONLY-HASH-32

Expand Down Expand Up @@ -237,7 +171,7 @@ ProgramHeaders:

## Check the output when only .gnu.hash section is present.

# RUN: yaml2obj --docnum=4 %s -o %t3-32.so
# RUN: yaml2obj --docnum=3 %s -o %t3-32.so
# RUN: llvm-readelf --hash-symbols %t3-32.so \
# RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix ONLY-GNUHASH-32

Expand Down Expand Up @@ -301,7 +235,7 @@ ProgramHeaders:
- Section: .dynamic

## Show that if there are no hash sections, we do not print anything.
# RUN: yaml2obj --docnum=5 %s -o %t4.so
# RUN: yaml2obj --docnum=4 %s -o %t4.so
# RUN: llvm-readelf --hash-symbols %t4.so \
# RUN: | FileCheck %s --check-prefix NO-HASH --allow-empty

Expand Down Expand Up @@ -377,8 +311,8 @@ ProgramHeaders:
## Show that we report a warning for a hash table which contains an entry of
## the bucket array pointing to a cycle.

# RUN: yaml2obj --docnum=6 %s -o %t6.so
# RUN: llvm-readelf --hash-symbols %t6.so 2>&1 | FileCheck %s -DFILE=%t6.so --check-prefix=BROKEN
# RUN: yaml2obj --docnum=5 %s -o %t5.so
# RUN: llvm-readelf --hash-symbols %t5.so 2>&1 | FileCheck %s -DFILE=%t5.so --check-prefix=BROKEN

# BROKEN: Symbol table of .hash for image:
# BROKEN-NEXT: Num Buc: Value Size Type Bind Vis Ndx Name
Expand Down

0 comments on commit 821439a

Please sign in to comment.