Index: llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp =================================================================== --- llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp +++ llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp @@ -136,6 +136,11 @@ uint64_t SymbolSize, DataExtractor *OpdExtractor, uint64_t OpdAddress) { + // Avoid adding symbols from an unknown/undefined section. + const ObjectFile *Obj = Symbol.getObject(); + Expected Sec = Symbol.getSection(); + if (!Sec || (Obj && Obj->section_end() == *Sec)) + return std::error_code(); Expected SymbolTypeOrErr = Symbol.getType(); if (!SymbolTypeOrErr) return errorToErrorCode(SymbolTypeOrErr.takeError()); Index: llvm/trunk/test/tools/llvm-symbolizer/ignore-undefined-symbols.s =================================================================== --- llvm/trunk/test/tools/llvm-symbolizer/ignore-undefined-symbols.s +++ llvm/trunk/test/tools/llvm-symbolizer/ignore-undefined-symbols.s @@ -0,0 +1,12 @@ +# REQUIRES: x86-registered-target +# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s -o %t.o -g +# RUN: llvm-symbolizer --obj=%t.o 0 | FileCheck %s --implicit-check-not=bar + +# CHECK: foo +# CHECK-NEXT: ignore-undefined-symbols.s:12:0 + +.type bar,@function +.type foo,@function +.global foo +foo: + call bar