From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752161AbdK2BUE (ORCPT ); Tue, 28 Nov 2017 20:20:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:43444 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751439AbdK2BUD (ORCPT ); Tue, 28 Nov 2017 20:20:03 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EEA03218DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=mhiramat@kernel.org Date: Wed, 29 Nov 2017 10:19:59 +0900 From: Masami Hiramatsu To: Andi Kleen Cc: acme@kernel.org, jolsa@kernel.org, mhiramat@kernel.org, adrian.hunter@intel.com, linux-kernel@vger.kernel.org, Andi Kleen Subject: Re: [PATCH 05/12] perf, tools, probe: Print location for resolved variables Message-Id: <20171129101959.3310bcecfc62ee598d8b64a7@kernel.org> In-Reply-To: <20171128002321.2878-6-andi@firstfloor.org> References: <20171128002321.2878-1-andi@firstfloor.org> <20171128002321.2878-6-andi@firstfloor.org> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 27 Nov 2017 16:23:14 -0800 Andi Kleen wrote: > From: Andi Kleen > > Print the location, e.g. the register, for resolved variables > with perf probe -V. This is useful for debugging, and manually > making sense of disassembly. I also have some scripts > which can make use of this information. > > Before: > > % perf probe -x ./tsrc/tstruct -V main+20 > Available variables at main+20 > @ > struct str* xp > > After: > > % perf probe -x ./tsrc/tstruct -V main+20 > Available variables at main+20 > @ > struct str* xp %ax > Sounds good :) For clearly separating it from variable name, I would like to see as below; % perf probe -x ./tsrc/tstruct -V main+20 Available variables at main+20 @ struct str* xp // %ax Thank you, > Signed-off-by: Andi Kleen > --- > tools/perf/util/probe-finder.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c > index 0149428d453e..699f29d8a28e 100644 > --- a/tools/perf/util/probe-finder.c > +++ b/tools/perf/util/probe-finder.c > @@ -1369,6 +1369,7 @@ static int collect_variables_cb(Dwarf_Die *die_mem, void *data) > if (tag == DW_TAG_formal_parameter || > tag == DW_TAG_variable) { > struct probe_trace_arg ta; > + struct probe_trace_arg_ref *ref; > > memset(&ta, 0, sizeof(struct probe_trace_arg)); > ret = convert_variable_location(die_mem, af->pf.addr, > @@ -1401,6 +1402,10 @@ static int collect_variables_cb(Dwarf_Die *die_mem, void *data) > die_mem, &buf); > } > > + strbuf_addf(&buf, "\t%s", ta.value); > + for (ref = ta.ref; ref; ref = ref->next) > + strbuf_addf(&buf, " off %ld", ref->offset); > + > pr_debug("Add new var: %s\n", buf.buf); > if (ret2 == 0) { > struct str_node *sn; > -- > 2.13.6 > -- Masami Hiramatsu