[PATCH] D13024: [llvm-readobj] Avoid SEGFAULT if a requested symbol section is absent

Igor Kudrin via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 21 08:39:53 PDT 2015


ikudrin created this revision.
ikudrin added a reviewer: rafael.
ikudrin added a subscriber: llvm-commits.

Some files can have no dynamic symbols section. Others can even have no regular symbol section. The tool shouldn't crash if it's requested to show such sections.

http://reviews.llvm.org/D13024

Files:
  test/Object/readobj-absent.test
  tools/llvm-readobj/ELFDumper.cpp

Index: tools/llvm-readobj/ELFDumper.cpp
===================================================================
--- tools/llvm-readobj/ELFDumper.cpp
+++ tools/llvm-readobj/ELFDumper.cpp
@@ -1152,6 +1152,8 @@
 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;
Index: test/Object/readobj-absent.test
===================================================================
--- /dev/null
+++ 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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13024.35259.patch
Type: text/x-patch
Size: 835 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150921/849b9fcd/attachment.bin>


More information about the llvm-commits mailing list