Skip to content

Commit

Permalink
[llvm-nm] - Add a test case for case when we dump a symbol that belon…
Browse files Browse the repository at this point in the history
…gs to a section with a broken sh_name.

It adds a test case for a problem fixed by D66976.

It was introduced by me in 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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@370661 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
grimar committed Sep 2, 2019
1 parent f6905e8 commit 9d623b8
Showing 1 changed file with 27 additions and 3 deletions.
30 changes: 27 additions & 3 deletions test/tools/llvm-nm/format-sysv-section.test
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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

0 comments on commit 9d623b8

Please sign in to comment.