1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00

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
This commit is contained in:
George Rimar 2019-09-02 14:57:35 +00:00
parent 6a053c6ace
commit 2e52b72fcb
2 changed files with 30 additions and 4 deletions

View File

@ -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;
}

View File

@ -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