diff --git a/llvm/include/llvm/Object/ELFObjectFile.h b/llvm/include/llvm/Object/ELFObjectFile.h --- a/llvm/include/llvm/Object/ELFObjectFile.h +++ b/llvm/include/llvm/Object/ELFObjectFile.h @@ -530,10 +530,10 @@ // If the symbol name is empty use the section name. if ((*SymOrErr)->getType() == ELF::STT_SECTION) { - if (Expected SecOrErr = getSymbolSection(Sym)) { - consumeError(Name.takeError()); + Expected SecOrErr = getSymbolSection(Sym); + if (SecOrErr) return (*SecOrErr)->getName(); - } + return SecOrErr.takeError(); } return Name; } diff --git a/llvm/test/tools/llvm-objdump/ELF/section-symbols.test b/llvm/test/tools/llvm-objdump/ELF/section-symbols.test --- a/llvm/test/tools/llvm-objdump/ELF/section-symbols.test +++ b/llvm/test/tools/llvm-objdump/ELF/section-symbols.test @@ -19,6 +19,11 @@ # CHECK-NEXT: 00000003 R_X86_64_NONE {{$}} # CHECK-NEXT: 00000004 R_X86_64_NONE {{$}} +## Test that we consume an error in ELFObjectFile::getSectionName when disassembling. +# RUN: llvm-objdump -d --syms %t1 2>&1 | \ +# RUN: FileCheck %s -DFILE=%t1 --check-prefix=CHECK-DISAS +# CHECK-DISAS: warning: '[[FILE]]': invalid section index: 67 + --- !ELF FileHeader: Class: ELFCLASS32