diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-09-02 14:57:35 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-09-02 14:57:35 +0000 |
| commit | 78e8011a29d8c38af35da8e74c9d9ceaf2b0d1dd (patch) | |
| tree | 9d1e32ccb2781ac18f963b786fdb95b0312b3060 | |
| parent | 4e54cf3e0e71b38b2fde1a815e8460b14026762a (diff) | |
| download | bcm5719-llvm-78e8011a29d8c38af35da8e74c9d9ceaf2b0d1dd.tar.gz bcm5719-llvm-78e8011a29d8c38af35da8e74c9d9ceaf2b0d1dd.zip | |
Recommit r370661 "[llvm-nm] - Add a test case for case when we dump a symbol that belongs to a section with a broken sh_name."
Fix: add a 'consumeError()' call to ObjectFile.cpp.
This error was never checked.
Original commit message:
It adds a test case for a problem fixed by D66976 <https://reviews.llvm.org/D66976>.
It was introduced by me in D66089 <https://reviews.llvm.org/D66089>.
The error reported was never consumed because of a wrong variable name used,
so it could fail when LLVM_ENABLE_ABI_BREAKING_CHECKS is used.
Differential revision: https://reviews.llvm.org/D67002
llvm-svn: 370669
| -rw-r--r-- | llvm/lib/Object/ObjectFile.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-nm/format-sysv-section.test | 30 |
2 files changed, 30 insertions, 4 deletions
diff --git a/llvm/lib/Object/ObjectFile.cpp b/llvm/lib/Object/ObjectFile.cpp index 79812e3a10b..bcc44cd6ce3 100644 --- a/llvm/lib/Object/ObjectFile.cpp +++ b/llvm/lib/Object/ObjectFile.cpp @@ -67,8 +67,10 @@ Error ObjectFile::printSymbolName(raw_ostream &OS, DataRefImpl Symb) const { uint32_t ObjectFile::getSymbolAlignment(DataRefImpl DRI) const { return 0; } bool ObjectFile::isSectionBitcode(DataRefImpl Sec) const { - if (Expected<StringRef> NameOrErr = getSectionName(Sec)) + Expected<StringRef> NameOrErr = getSectionName(Sec); + if (NameOrErr) return *NameOrErr == ".llvmbc"; + consumeError(NameOrErr.takeError()); return false; } diff --git a/llvm/test/tools/llvm-nm/format-sysv-section.test b/llvm/test/tools/llvm-nm/format-sysv-section.test index 1ebfa93d141..67ed1a8f7db 100644 --- a/llvm/test/tools/llvm-nm/format-sysv-section.test +++ b/llvm/test/tools/llvm-nm/format-sysv-section.test @@ -1,7 +1,7 @@ -# RUN: yaml2obj %s > %t.o -# RUN: llvm-nm %t.o --format=sysv | FileCheck %s +# RUN: yaml2obj --docnum=1 %s > %t1.o +# RUN: llvm-nm %t1.o --format=sysv | FileCheck %s -!ELF +--- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB @@ -33,3 +33,27 @@ Symbols: # CHECK-NEXT: symbol_absolute {{.*}}| |*ABS* # CHECK-NEXT: symbol_common {{.*}}| |*COM* # CHECK-NEXT: symbol_undefined {{.*}}| |*UND* + +## Here we have a symbol that belongs to a section with a broken name +## (sh_name offset goes past the end of the sections name string table). +## We test that we can still print a reasonable output and don't crash/assert. + +# RUN: yaml2obj --docnum=2 %s > %t2.o +# RUN: llvm-nm %t2.o --format=sysv | FileCheck %s --check-prefix=ERR + +# ERR: foo |0000000000000000| ? | NOTYPE|0000000000000000| | + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .broken + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + ShName: 0xffff +Symbols: + - Name: foo + Section: .broken |

