diff options
-rw-r--r-- | llvm/test/Object/readobj-absent.test | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/llvm/test/Object/readobj-absent.test b/llvm/test/Object/readobj-absent.test new file mode 100644 index 00000000000..0968f3c3102 --- /dev/null +++ b/llvm/test/Object/readobj-absent.test @@ -0,0 +1,2 @@ +// Don't crash if required information is absent +RUN: llvm-readobj -dyn-symbols %p/Inputs/trivial-object-test.elf-x86-64 diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 31e200e436c..99311634403 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1152,6 +1152,8 @@ void ELFDumper<ELFT>::printRelocation(Elf_Rela Rel, const Elf_Shdr *SymTab) { template<class ELFT> void ELFDumper<ELFT>::printSymbolsHelper(bool IsDynamic) { const Elf_Shdr *Symtab = (IsDynamic) ? DotDynSymSec : DotSymtabSec; + if (!Symtab) + return; ErrorOr<StringRef> StrTableOrErr = Obj->getStringTableForSymtab(*Symtab); error(StrTableOrErr.getError()); StringRef StrTable = *StrTableOrErr; |