From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966673AbcIWPez (ORCPT ); Fri, 23 Sep 2016 11:34:55 -0400 Received: from mail.kernel.org ([198.145.29.136]:45096 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965311AbcIWPey (ORCPT ); Fri, 23 Sep 2016 11:34:54 -0400 From: Masami Hiramatsu To: Arnaldo Carvalho de Melo Cc: Masami Hiramatsu , linux-kernel@vger.kernel.org, Thomas Gleixner , Jiri Olsa , Peter Zijlstra , Ingo Molnar , Namhyung Kim , David Ahern Subject: [PATCH perf/core 0/4] perf-probe fixes for C++ Date: Sat, 24 Sep 2016 00:34:47 +0900 Message-Id: <147464488719.29804.13099016520754675018.stgit@devbox> X-Mailer: git-send-email 2.7.4 User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Here is a series of patches for fixing several issues when probing on C++ binaries. - Ignore inlined function definition if it has no instance [1/4] - Skip (inlined/normal) functions which entry address is 0 [2/4] - Cut off the filename for group name if it includes characters which can not be used for C symbol name [3/4] - Search mangled symbol name from debuginfo [4/4] So, with this series, perf-probe can handle "mangled symbol" or "method name" as below; ---- $ ./perf probe -x /usr/lib64/libstdc++.so.6 \ -D _ZNKSt15basic_fstreamXXIwSt11char_traitsIwEE7is_openEv p:probe_libstdc/_ZNKSt15basic_fstreamXXIwSt11char_traitsIwEE7is_openEv /usr/lib64/libstdc++.so.6.0.22:0x8ca60 $ ./perf probe -x /usr/lib64/libstdc++.so.6 -D is_open p:probe_libstdc/is_open /usr/lib64/libstdc++.so.6.0.22:0x8ca80 p:probe_libstdc/is_open_1 /usr/lib64/libstdc++.so.6.0.22:0x8ca70 p:probe_libstdc/is_open_2 /usr/lib64/libstdc++.so.6.0.22:0x8ca60 p:probe_libstdc/is_open_3 /usr/lib64/libstdc++.so.6.0.22:0xb0ad0 p:probe_libstdc/is_open_4 /usr/lib64/libstdc++.so.6.0.22:0xecca9 ---- Jiri and Thomas, could you try this if you need it? TODO: - Support demangled method name(in short), like std::basic_fstream::is_open. Thank you, --- Masami Hiramatsu (4): perf-probe: Ignore the error of finding inline instance perf-probe: Skip if the function address is 0 perf-probe: Fix to cut off incompatible chars from group name perf-probe: Match linkage name with mangled name tools/perf/util/dwarf-aux.c | 28 ++++++++++++++++++++++++++-- tools/perf/util/dwarf-aux.h | 3 +++ tools/perf/util/probe-event.c | 10 +++++++--- tools/perf/util/probe-finder.c | 17 ++++++++++++++--- 4 files changed, 50 insertions(+), 8 deletions(-) -- Masami Hiramatsu