From: George Rimar Date: Mon, 2 Sep 2019 13:54:45 +0000 (+0000) Subject: [llvm-nm] - Add a test case for case when we dump a symbol that belongs to a section... X-Git-Tag: llvmorg-11-init~10247 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b9233cafbde08dc9ff3b491621be37bad20a52a;p=platform%2Fupstream%2Fllvm.git [llvm-nm] - Add a test case for case when we dump a symbol that belongs 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 llvm-svn: 370661 --- diff --git a/llvm/test/tools/llvm-nm/format-sysv-section.test b/llvm/test/tools/llvm-nm/format-sysv-section.test index 1ebfa93..67ed1a8 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