[llvm-nm] - Fix a bug and unbreak ASan BB.
authorGeorge Rimar <grimar@accesssoftek.com>
Sat, 7 Sep 2019 19:45:27 +0000 (19:45 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Sat, 7 Sep 2019 19:45:27 +0000 (19:45 +0000)
BB: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/13820/steps/check-llvm%20asan/logs/stdio

rL371074 revealed a bug in llvm-nm.

This patch fixes it.

llvm-svn: 371318

llvm/tools/llvm-nm/llvm-nm.cpp

index 6f9b38d..ee55722 100644 (file)
@@ -1082,7 +1082,7 @@ static StringRef getNMTypeName(SymbolicFile &Obj, basic_symbol_iterator I) {
 static char getNMSectionTagAndName(SymbolicFile &Obj, basic_symbol_iterator I,
                                    StringRef &SecName) {
   uint32_t Symflags = I->getFlags();
-  if (isa<ELFObjectFileBase>(&Obj)) {
+  if (ELFObjectFileBase *ELFObj = dyn_cast<ELFObjectFileBase>(&Obj)) {
     if (Symflags & object::SymbolRef::SF_Absolute)
       SecName = "*ABS*";
     else if (Symflags & object::SymbolRef::SF_Common)
@@ -1097,6 +1097,9 @@ static char getNMSectionTagAndName(SymbolicFile &Obj, basic_symbol_iterator I,
         return '?';
       }
 
+      if (*SecIOrErr == ELFObj->section_end())
+        return '?';
+
       Expected<StringRef> NameOrErr = (*SecIOrErr)->getName();
       if (!NameOrErr) {
         consumeError(NameOrErr.takeError());