diff options
-rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index 6f9b38dfb3f..ee55722dc13 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -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()); |