From: George Rimar Date: Wed, 31 Jul 2019 08:12:01 +0000 (+0000) Subject: [llvm/Object] - Add a test for "empty string table" error. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5f66502266315b5dbad775b4cdd42fe083ae6bb;p=llvm [llvm/Object] - Add a test for "empty string table" error. This error was never tested. In this patch I improved the error message, added the test case and also simplified the code that processes a similar error right below. Differential revision: https://reviews.llvm.org/D65396 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@367391 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h index 5638ea73935..c18453d1155 100644 --- a/include/llvm/Object/ELF.h +++ b/include/llvm/Object/ELF.h @@ -599,12 +599,10 @@ ELFFile::getStringTable(const Elf_Shdr *Section) const { return V.takeError(); ArrayRef Data = *V; if (Data.empty()) - // TODO: this error is untested. - return createError("empty string table"); + return createError("SHT_STRTAB string table section " + + getSecIndexForError(this, Section) + " is empty"); if (Data.back() != '\0') - return createError(object::getELFSectionTypeName(getHeader()->e_machine, - Section->sh_type) + - " string table section " + + return createError("SHT_STRTAB string table section " + getSecIndexForError(this, Section) + " is non-null terminated"); return StringRef(Data.begin(), Data.size()); diff --git a/test/Object/invalid.test b/test/Object/invalid.test index 5fe107ff268..7071dee98eb 100644 --- a/test/Object/invalid.test +++ b/test/Object/invalid.test @@ -606,3 +606,24 @@ FileHeader: Type: ET_REL Machine: EM_X86_64 SHOffset: 0xffffffffffffffff + +## Check that llvm-objdump reports an error when it tries to dump a +## symbol name and .strtab is empty. + +# RUN: yaml2obj %s --docnum=29 -o %t29 +# RUN: not llvm-objdump -syms %t29 2>&1 | FileCheck -DFILE=%t29 --check-prefix=STRTAB-EMPTY2 %s + +# STRTAB-EMPTY2: error: '[[FILE]]': SHT_STRTAB string table section [index 1] is empty + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_DYN + Machine: EM_X86_64 +Sections: + - Name: .strtab + Type: SHT_STRTAB + Content: "" +Symbols: + - Name: foo