diff options
author | Georgii Rymar <grimar@accesssoftek.com> | 2019-12-05 17:59:34 +0300 |
---|---|---|
committer | Georgii Rymar <grimar@accesssoftek.com> | 2019-12-10 13:08:18 +0300 |
commit | dac5ddb482361cde11ac43e94c43acc94a3b78aa (patch) | |
tree | 6d686f62af013b4ffb8fa76918845242c93abb17 /llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test | |
parent | bfb53c55b8a825f6ec6bb4170eb80afeaef0fab8 (diff) | |
download | bcm5719-llvm-dac5ddb482361cde11ac43e94c43acc94a3b78aa.tar.gz bcm5719-llvm-dac5ddb482361cde11ac43e94c43acc94a3b78aa.zip |
[llvm-readelf/llvm-readobj] - Improved the error reporting in a few method related to versioning.
I was investigating a change previously discussed that eliminates an excessive
empty lines from the output when we report warnings and errors
(https://reviews.llvm.org/D70826#inline-639055) and found
that we need this refactoring or alike to achieve that.
The problem is that some of our functions that finds symbol versions just
fail instead of returning errors or printing warnings. Another problem
is that they might print a warning on the same line with the regular output.
In this patch I've splitted getting of the version information and dumping of it
for GNU printVersionSymbolSection(). I had to change a few methods to return
Error or Expected<> to do that properly.
Differential revision: https://reviews.llvm.org/D71118
Diffstat (limited to 'llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test')
-rw-r--r-- | llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test b/llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test index e8d75afe1e6..66c2d833a3a 100644 --- a/llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test +++ b/llvm/test/tools/llvm-readobj/ELF/verneed-invalid.test @@ -10,7 +10,7 @@ # GNU-VERNEED-NAME: Version symbols section '.gnu.version' contains 2 entries: # GNU-VERNEED-NAME-NEXT: Addr: 0000000000200210 Offset: 0x000040 Link: 5 (.dynsym) -# GNU-VERNEED-NAME-NEXT: 000: 0 (*local*) 2 (*invalid*) +# GNU-VERNEED-NAME-NEXT: 000: 0 (*local*) 2 (<corrupt>) # GNU-VERNEED-NAME: Version needs section '.gnu.version_r' contains 1 entries: # GNU-VERNEED-NAME-NEXT: Addr: 0000000000000000 Offset: 0x000044 Link: 6 (.dynstr) @@ -86,9 +86,9 @@ DynamicSymbols: # GNU-NOLINK: Version symbols section '.gnu.version' contains 2 entries: # GNU-NOLINK-NEXT: Addr: 0000000000000000 Offset: 0x000040 Link: 5 (.dynsym) -# GNU-NOLINK-NEXT: 000: 0 (*local*) +# GNU-NOLINK-EMPTY: # GNU-NOLINK-NEXT: warning: '[[FILE]]': invalid string table linked to SHT_GNU_verneed section with index 2: invalid sh_type for string table section [index 0]: expected SHT_STRTAB, but got SHT_NULL -# GNU-NOLINK-NEXT: 2 (<corrupt>) +# GNU-NOLINK-NEXT: 000: 0 (*local*) 2 (<corrupt>) # GNU-NOLINK-EMPTY: # GNU-NOLINK: Version needs section '.gnu.version_r' contains 1 entries: # GNU-NOLINK-NEXT: Addr: 0000000000000000 Offset: 0x000044 Link: 0 () @@ -158,10 +158,23 @@ DynamicSymbols: ## We can't parse misaligned auxiliary version records. # RUN: yaml2obj --docnum=3 %s -o %t3 -# RUN: not llvm-readelf -V %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=BROKEN-AUX -# RUN: not llvm-readobj -V %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=BROKEN-AUX - -# BROKEN-AUX: error: '[[FILE]]': invalid SHT_GNU_verneed section with index 2: found a misaligned auxiliary entry at offset 0x11 +# RUN: llvm-readelf -V %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=BROKEN-AUX-GNU +# RUN: llvm-readobj -V %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=BROKEN-AUX-LLVM + +# BROKEN-AUX-GNU: Version symbols section '.gnu.version' contains 1 entries: +# BROKEN-AUX-GNU-NEXT: Addr: 0000000000000000 Offset: 0x000040 Link: 5 (.dynsym) +# BROKEN-AUX-GNU-EMPTY: +# BROKEN-AUX-GNU-NEXT: warning: '[[FILE]]': unable to get a version for entry 0 of SHT_GNU_versym section with index 1: invalid SHT_GNU_verneed section with index 2: found a misaligned auxiliary entry at offset 0x11 +# BROKEN-AUX-GNU-NEXT: 000: 2 (<corrupt>) + +# BROKEN-AUX-LLVM: VersionSymbols [ +# BROKEN-AUX-LLVM-NEXT: Symbol { +# BROKEN-AUX-LLVM-NEXT: Version: 2 +# BROKEN-AUX-LLVM-EMPTY: +# BROKEN-AUX-LLVM-NEXT: warning: '[[FILE]]': invalid SHT_GNU_verneed section with index 2: found a misaligned auxiliary entry at offset 0x11 +# BROKEN-AUX-LLVM-NEXT: Name: @<corrupt> +# BROKEN-AUX-LLVM-NEXT: } +# BROKEN-AUX-LLVM-NEXT: ] --- !ELF FileHeader: |