Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2676546ybb; Sun, 5 Apr 2020 13:40:27 -0700 (PDT) X-Google-Smtp-Source: APiQypJMpl3Wtizz0cM8+FZAh80Rla/UagzkdqaL38uh+yorAfwBb3/AVnlgMH5r0reVKaiepa1T X-Received: by 2002:a9d:3f2:: with SMTP id f105mr15728471otf.187.1586119226913; Sun, 05 Apr 2020 13:40:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586119226; cv=none; d=google.com; s=arc-20160816; b=EMgWW4Rzwy8Mi4q1CBvAXhTJZfq2xjdiqci18eqtK1U/xHPhV5ld7Mdc0DIZHsVeGz pbpoWPdMZyqOGtcvvzBZy4ksEOcjGAjbMG+FGIeggXhlVzWRU2jnyJXdwpTxyD1uHrIa /KwhXTxMP61vxwXtp2u2dJVG/FmpzwSxEHy3NMPB6BlU/FsOVOqAemFEtNJE58vBw/QY NdlBnQFL0k4Dg8KH0qY1Ny3BMoVF/GI3dpCGrKbExX5K3sCzMUrUKA+udXzEuivgAXe7 +5xoervwQLp5CDRauJGuv8RMq0AeCk06nx381C0kEuBZAU31ubnjmKw9+iFBAl5ncsvA 9oIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:organization:references:in-reply-to :message-id:date:subject:cc:to:from:ironport-sdr:ironport-sdr; bh=IEtHXSFIUMKdRvZxPz5F6j1tPFrLmpVW38X6xrTizco=; b=rIwhUjDXsXQm06Gv0jYu/U+eWEvFTleXtHgC5j/uhrZtp4fmGCNPCTN3RLC5sP3dMd XKx4w9WjaISVv6UYxYGRdPJoO2V/0QoK9JUwR6Apc28dfBcb8L5+1QOhPXzrHIuPSHB5 5RmgzFUE1aNKj0EFEv/6JbkhFocks2m+y/c4F0Ps7x03MIsP/fSIIUpVFCVXiQSlYmU9 2unxZdTXI8lWge4r0rjc70FRFMDmvQeusJosxWstk/D0Mocv+my/g/h2ddMQZxVwyuFz SOJV8ZzBk1+Rie93TvYTTuTY/225/w9M0U8a/+3w7nkw8TXaY0KGolBpiYuRy64DAktX Z0EQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e24si6910623otk.203.2020.04.05.13.40.14; Sun, 05 Apr 2020 13:40:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728061AbgDEUPV (ORCPT + 99 others); Sun, 5 Apr 2020 16:15:21 -0400 Received: from mga01.intel.com ([192.55.52.88]:62225 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727612AbgDEUPU (ORCPT ); Sun, 5 Apr 2020 16:15:20 -0400 IronPort-SDR: PXZ8KCEteAetootYes+dYhlB86PExdcB5lC41vGYrtipyhgERwWooGRsd9wNflPaJru/KitBrp lUhHDQBA535g== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2020 13:15:18 -0700 IronPort-SDR: dBXRgQldgR9pIeoVjT6ODwhazChjNxVoS965VypPWhsbDT9oV6mAAgxjkaM2IPcMmWUGs4Tg7N 96U3GT0TYfTQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,348,1580803200"; d="scan'208";a="329688521" Received: from ahunter-desktop.fi.intel.com ([10.237.72.87]) by orsmga001.jf.intel.com with ESMTP; 05 Apr 2020 13:15:15 -0700 From: Adrian Hunter To: Peter Zijlstra Cc: Ingo Molnar , Masami Hiramatsu , Steven Rostedt , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Mark Rutland , Alexander Shishkin , Mathieu Poirier , Leo Yan , Arnaldo Carvalho de Melo , Jiri Olsa , linux-kernel@vger.kernel.org Subject: [PATCH V6 15/15] perf script: Show text poke address symbol Date: Sun, 5 Apr 2020 23:13:27 +0300 Message-Id: <20200405201327.7332-16-adrian.hunter@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200405201327.7332-1-adrian.hunter@intel.com> References: <20200405201327.7332-1-adrian.hunter@intel.com> Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It is generally more useful to show the symbol with an address. In this case, the print function requires the 'machine' which means changing callers to provide it as a parameter. It is optional because most events do not need it and the callers that matter can provide it. Signed-off-by: Adrian Hunter --- tools/perf/builtin-script.c | 4 ++-- tools/perf/tests/perf-record.c | 4 ++-- tools/perf/util/event.c | 23 ++++++++++++++++++----- tools/perf/util/event.h | 6 ++++-- tools/perf/util/intel-pt.c | 2 +- tools/perf/util/machine.c | 2 +- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index e934bf46269d..f06470e8f07b 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -2168,7 +2168,7 @@ static int print_event_with_time(struct perf_tool *tool, event->header.type, stdout); } - perf_event__fprintf(event, stdout); + perf_event__fprintf(machine, event, stdout); thread__put(thread); @@ -2303,7 +2303,7 @@ process_finished_round_event(struct perf_tool *tool __maybe_unused, struct ordered_events *oe __maybe_unused) { - perf_event__fprintf(event, stdout); + perf_event__fprintf(NULL, event, stdout); return 0; } diff --git a/tools/perf/tests/perf-record.c b/tools/perf/tests/perf-record.c index 2195fc205e72..a187a70b4a98 100644 --- a/tools/perf/tests/perf-record.c +++ b/tools/perf/tests/perf-record.c @@ -185,14 +185,14 @@ int test__PERF_RECORD(struct test *test __maybe_unused, int subtest __maybe_unus err = perf_evlist__parse_sample(evlist, event, &sample); if (err < 0) { if (verbose > 0) - perf_event__fprintf(event, stderr); + perf_event__fprintf(NULL, event, stderr); pr_debug("Couldn't parse sample\n"); goto out_delete_evlist; } if (verbose > 0) { pr_info("%" PRIu64" %d ", sample.time, sample.cpu); - perf_event__fprintf(event, stderr); + perf_event__fprintf(NULL, event, stderr); } if (prev_time > sample.time) { diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index cdaf58734254..e151df9b28d7 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -440,14 +440,26 @@ static int text_poke_printer(enum binary_printer_ops op, unsigned int val, } } -size_t perf_event__fprintf_text_poke(union perf_event *event, FILE *fp) +size_t perf_event__fprintf_text_poke(struct machine *machine, + union perf_event *event, FILE *fp) { struct perf_record_text_poke_event *tp = &event->text_poke; size_t ret; bool old; - ret = fprintf(fp, " %" PRI_lx64 " old len %u new len %u\n", - tp->addr, tp->old_len, tp->new_len); + ret = fprintf(fp, " %" PRI_lx64 " ", tp->addr); + if (machine) { + struct addr_location al; + + al.map = maps__find(&machine->kmaps, tp->addr); + if (al.map && map__load(al.map) >= 0) { + al.addr = al.map->map_ip(al.map, tp->addr); + al.sym = map__find_symbol(al.map, al.addr); + if (al.sym) + ret += symbol__fprintf_symname_offs(al.sym, &al, fp); + } + } + ret += fprintf(fp, " old len %u new len %u\n", tp->old_len, tp->new_len); old = true; ret += binary__fprintf(tp->bytes, tp->old_len, 16, text_poke_printer, &old, fp); @@ -457,7 +469,8 @@ size_t perf_event__fprintf_text_poke(union perf_event *event, FILE *fp) return ret; } -size_t perf_event__fprintf(union perf_event *event, FILE *fp) +size_t perf_event__fprintf(struct machine *machine, union perf_event *event, + FILE *fp) { size_t ret = fprintf(fp, "PERF_RECORD_%s", perf_event__name(event->header.type)); @@ -502,7 +515,7 @@ size_t perf_event__fprintf(union perf_event *event, FILE *fp) ret += perf_event__fprintf_bpf(event, fp); break; case PERF_RECORD_TEXT_POKE: - ret += perf_event__fprintf_text_poke(event, fp); + ret += perf_event__fprintf_text_poke(machine, event, fp); break; default: ret += fprintf(fp, "\n"); diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index dbbba6dea51d..611c8e5ad9d9 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h @@ -389,8 +389,10 @@ size_t perf_event__fprintf_namespaces(union perf_event *event, FILE *fp); size_t perf_event__fprintf_cgroup(union perf_event *event, FILE *fp); size_t perf_event__fprintf_ksymbol(union perf_event *event, FILE *fp); size_t perf_event__fprintf_bpf(union perf_event *event, FILE *fp); -size_t perf_event__fprintf_text_poke(union perf_event *event, FILE *fp); -size_t perf_event__fprintf(union perf_event *event, FILE *fp); +size_t perf_event__fprintf_text_poke(struct machine *machine, + union perf_event *event, FILE *fp); +size_t perf_event__fprintf(struct machine *machine, union perf_event *event, + FILE *fp); int kallsyms__get_function_start(const char *kallsyms_filename, const char *symbol_name, u64 *addr); diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index 470a3b413869..902f85ded944 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -230,7 +230,7 @@ static void intel_pt_log_event(union perf_event *event) if (!intel_pt_enable_logging || !f) return; - perf_event__fprintf(event, f); + perf_event__fprintf(NULL, event, f); } static void intel_pt_dump_sample(struct perf_session *session, diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 8447334ac056..4c023667a073 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -809,7 +809,7 @@ int machine__process_text_poke(struct machine *machine, union perf_event *event, u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; if (dump_trace) - perf_event__fprintf_text_poke(event, stdout); + perf_event__fprintf_text_poke(machine, event, stdout); if (!event->text_poke.new_len) return 0; -- 2.17.1