From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934367AbcHJSXL (ORCPT ); Wed, 10 Aug 2016 14:23:11 -0400 Received: from bastet.se.axis.com ([195.60.68.11]:46877 "EHLO bastet.se.axis.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932400AbcHJSXI (ORCPT ); Wed, 10 Aug 2016 14:23:08 -0400 From: Rabin Vincent To: acme@kernel.org Cc: linux-kernel@vger.kernel.org, Rabin Vincent Subject: [PATCH] perf unwind: check symsrc ELF for .debug_frame Date: Wed, 10 Aug 2016 15:36:16 +0200 Message-Id: <1470836176-29418-1-git-send-email-rabin.vincent@axis.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rabin Vincent When using split debug info, the file without debug info may not have a .debug_frame section, so we need to check the symsrc ELF also, since that's the file we actually read the unwind information from. Signed-off-by: Rabin Vincent --- tools/perf/util/unwind-libunwind-local.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c index 97c0f8f..d492192 100644 --- a/tools/perf/util/unwind-libunwind-local.c +++ b/tools/perf/util/unwind-libunwind-local.c @@ -308,6 +308,20 @@ static int read_unwind_spec_debug_frame(struct dso *dso, dso__data_put_fd(dso); } + /* + * With split debug info, the file without debug info may not have a + * .debug_frame, so check the symsrc too. + */ + if (ofs == 0 && dso->symsrc_filename) { + fd = open(dso->symsrc_filename, O_RDONLY); + if (fd < 0) + return -EINVAL; + + ofs = elf_section_offset(fd, ".debug_frame"); + dso->data.debug_frame_offset = ofs; + close(fd); + } + *offset = ofs; if (*offset) return 0; -- 2.1.4