diff options
author | George Rimar <grimar@accesssoftek.com> | 2019-05-30 10:14:41 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2019-05-30 10:14:41 +0000 |
commit | e3406c42a42153781935e6dcf9d2561aa316dff5 (patch) | |
tree | b46d134f49cabed9f97f8e727955de2881d1cb49 /llvm/test | |
parent | 3a34bccd206483c04e24e5ae91a3848b749dd72b (diff) | |
download | bcm5719-llvm-e3406c42a42153781935e6dcf9d2561aa316dff5.tar.gz bcm5719-llvm-e3406c42a42153781935e6dcf9d2561aa316dff5.zip |
[llvm-readobj/llvm-readelf] - Implement GNU style dumper of the SHT_GNU_verneed section.
It was not implemented yet, we had only LLVM style dumper implemented.
Section description is here: https://refspecs.linuxfoundation.org/LSB_2.0.1/LSB-Core/LSB-Core/symverrqmts.html
Differential revision: https://reviews.llvm.org/D62516
llvm-svn: 362080
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/tools/llvm-readobj/elf-verneed-flags.yaml | 107 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/elf-versioninfo.test | 13 |
2 files changed, 117 insertions, 3 deletions
diff --git a/llvm/test/tools/llvm-readobj/elf-verneed-flags.yaml b/llvm/test/tools/llvm-readobj/elf-verneed-flags.yaml new file mode 100644 index 00000000000..e121e38ec75 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/elf-verneed-flags.yaml @@ -0,0 +1,107 @@ +## Check how llvm-readobj/llvm-readelf tools dump the flags of SHT_GNU_verneed +## section entries. + +# RUN: yaml2obj %s -o %t +# RUN: llvm-readobj -V %t | FileCheck %s --check-prefix=LLVM-VERDEF +# RUN: llvm-readelf -V %t | FileCheck %s --check-prefix=GNU-VERDEF + +# LLVM-VERDEF: SHT_GNU_verneed { +# LLVM-VERDEF-NEXT: Dependency { +# LLVM-VERDEF-NEXT: Version: 1 +# LLVM-VERDEF-NEXT: Count: 6 +# LLVM-VERDEF-NEXT: FileName: dso.so.0 +# LLVM-VERDEF-NEXT: Entries [ +# LLVM-VERDEF-NEXT: Entry { +# LLVM-VERDEF-NEXT: Hash: 0 +# LLVM-VERDEF-NEXT: Flags: Base (0x1) +# LLVM-VERDEF-NEXT: Index: 0 +# LLVM-VERDEF-NEXT: Name: base +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: Entry { +# LLVM-VERDEF-NEXT: Hash: 0 +# LLVM-VERDEF-NEXT: Flags: Weak (0x2) +# LLVM-VERDEF-NEXT: Index: 0 +# LLVM-VERDEF-NEXT: Name: weak +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: Entry { +# LLVM-VERDEF-NEXT: Hash: 0 +# LLVM-VERDEF-NEXT: Flags: Info (0x4) +# LLVM-VERDEF-NEXT: Index: 0 +# LLVM-VERDEF-NEXT: Name: info +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: Entry { +# LLVM-VERDEF-NEXT: Hash: 0 +# LLVM-VERDEF-NEXT: Flags: 0x7 +# LLVM-VERDEF-NEXT: Index: 0 +# LLVM-VERDEF-NEXT: Name: all +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: Entry { +# LLVM-VERDEF-NEXT: Hash: 0 +# LLVM-VERDEF-NEXT: Flags: 0x8 +# LLVM-VERDEF-NEXT: Index: 0 +# LLVM-VERDEF-NEXT: Name: unknown +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: Entry { +# LLVM-VERDEF-NEXT: Hash: 0 +# LLVM-VERDEF-NEXT: Flags: 0xF +# LLVM-VERDEF-NEXT: Index: 0 +# LLVM-VERDEF-NEXT: Name: all_and_unknown +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: ] +# LLVM-VERDEF-NEXT: } +# LLVM-VERDEF-NEXT: } + +# GNU-VERDEF: Version needs section '.gnu.version_r' contains 1 entries: +# GNU-VERDEF-NEXT: Addr: 0000000000000000 Offset: 0x000200 Link: 6 (.dynstr) +# GNU-VERDEF-NEXT: 0x0000: Version: 1 File: dso.so.0 Cnt: 6 +# GNU-VERDEF-NEXT: 0x0010: Name: base Flags: BASE Version: 0 +# GNU-VERDEF-NEXT: 0x0020: Name: weak Flags: WEAK Version: 0 +# GNU-VERDEF-NEXT: 0x0030: Name: info Flags: INFO Version: 0 +# GNU-VERDEF-NEXT: 0x0040: Name: all Flags: BASE | WEAK | INFO Version: 0 +# GNU-VERDEF-NEXT: 0x0050: Name: unknown Flags: <unknown> Version: 0 +# GNU-VERDEF-NEXT: 0x0060: Name: all_and_unknown Flags: BASE | WEAK | INFO | <unknown> Version: 0 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 + Entry: 0x0000000000201000 +Sections: + - Name: .gnu.version_r + Type: SHT_GNU_verneed + Link: .dynstr + Info: 0x0000000000000001 + Dependencies: + - Version: 1 + File: dso.so.0 + Entries: + - Name: base + Hash: 0 + Flags: 0x1 + Other: 0 + - Name: weak + Hash: 0 + Flags: 0x2 + Other: 0 + - Name: info + Hash: 0 + Flags: 0x4 + Other: 0 + - Name: all + Hash: 0 + Flags: 0x7 + Other: 0 + - Name: unknown + Hash: 0 + Flags: 0x8 + Other: 0 + - Name: all_and_unknown + Hash: 0 + Flags: 0xf + Other: 0 +## Needed to trigger .dynstr creation, which is required by .gnu.version_r +DynamicSymbols: + - Name: f1 + Binding: STB_GLOBAL diff --git a/llvm/test/tools/llvm-readobj/elf-versioninfo.test b/llvm/test/tools/llvm-readobj/elf-versioninfo.test index 42c158693d8..cca5bb1b409 100644 --- a/llvm/test/tools/llvm-readobj/elf-versioninfo.test +++ b/llvm/test/tools/llvm-readobj/elf-versioninfo.test @@ -173,6 +173,13 @@ DynamicSymbols: # GNU-NEXT: Addr: 0000000000000000 Offset: 0x000280 Link: 7 (.dynsym) # GNU-NEXT: 000: 0 (*local*) 2 (VERSION1) 3 (VERSION2) 4 (v1) # GNU-NEXT: 004: 5 (v2) 6 (v3) - -# GNU: Dumper for .gnu.version_d is not implemented -# GNU: Dumper for .gnu.version_r is not implemented +# GNU-EMPTY: +# GNU-NEXT: Dumper for .gnu.version_d is not implemented +# GNU-EMPTY: +# GNU-NEXT: Version needs section '.gnu.version_r' contains 2 entries: +# GNU-NEXT: Addr: 0000000000000000 Offset: 0x0002cc Link: 8 (.dynstr) +# GNU-NEXT: 0x0000: Version: 1 File: verneed1.so.0 Cnt: 2 +# GNU-NEXT: 0x0010: Name: v1 Flags: none Version: 4 +# GNU-NEXT: 0x0020: Name: v2 Flags: none Version: 5 +# GNU-NEXT: 0x0030: Version: 1 File: verneed2.so.0 Cnt: 1 +# GNU-NEXT: 0x0040: Name: v3 Flags: none Version: 6 |