From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E39A2C433EF for ; Mon, 16 May 2022 06:52:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240521AbiEPGwP (ORCPT ); Mon, 16 May 2022 02:52:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240499AbiEPGwN (ORCPT ); Mon, 16 May 2022 02:52:13 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0646369D1; Sun, 15 May 2022 23:52:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1652683922; x=1684219922; h=message-id:date:mime-version:subject:to:references:from: in-reply-to:content-transfer-encoding; bh=vw6BYvIf0wDELIwK68I+roROejnu+MWgmdvMsOj975M=; b=N2anzz6Q4SpFrXiPiPQFV/xwHpQM+00O9Q6H8krDz789qZ0o7v1+vd3a yNc8XvMGosauwWm95dc54/kZ2Jiz8BQt3TOZkmdLNyDG5xwYcvYTf9HAg wPGfAm2B5z4pr7kxRhhz357WqOGXZjTwWCuwDpxDXLpB9FTLSG2DzdkHC gabDzrX1OxYtLjJIT/SwRks1Ohmvg85Y/rK8VNQYRJagKXXzXGUBC2kod Y0Q7nTjpaVq5T8bSWoHiUjro40Y6r9htJoKauPArOdITuHNsE0YPIsWIg K0HPohqaHfK9lTLxrQ5WdgmWAf+iBaSNEKNDBBk4mpoKXZzVnPRxbRCJU A==; X-IronPort-AV: E=McAfee;i="6400,9594,10348"; a="331374738" X-IronPort-AV: E=Sophos;i="5.91,229,1647327600"; d="scan'208";a="331374738" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2022 23:52:00 -0700 X-IronPort-AV: E=Sophos;i="5.91,229,1647327600"; d="scan'208";a="596378031" Received: from rhudecze-mobl.ger.corp.intel.com (HELO [10.0.2.15]) ([10.252.36.15]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2022 23:51:54 -0700 Message-ID: Date: Mon, 16 May 2022 09:51:49 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Thunderbird/91.8.1 Subject: Re: [PATCH v5 1/2] perf scripting python: Expose dso and map information Content-Language: en-US To: Leo Yan , Arnaldo Carvalho de Melo , James Clark , German Gomez , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Eelco Chaudron , Stephen Brennan , Tanmay Jagdale , "zengshun . wu" , Al Grant , coresight@lists.linaro.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org References: <20220515071838.3077178-1-leo.yan@linaro.org> <20220515071838.3077178-2-leo.yan@linaro.org> From: Adrian Hunter Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki In-Reply-To: <20220515071838.3077178-2-leo.yan@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org On 15/05/22 10:18, Leo Yan wrote: > This change adds dso build_id and corresponding map's start and end > address. The info of dso build_id can be used to find dso file path, > and we can validate if a branch address falls into the range of map's > start and end addresses. > > In addition, the map's start address can be used as an offset for > disassembly. > > Signed-off-by: Leo Yan Acked-by: Adrian Hunter > --- > .../scripting-engines/trace-event-python.c | 21 +++++++++++++++---- > 1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c > index 659eb4e4b34b..adba01b7d9dd 100644 > --- a/tools/perf/util/scripting-engines/trace-event-python.c > +++ b/tools/perf/util/scripting-engines/trace-event-python.c > @@ -755,12 +755,22 @@ static void set_regs_in_dict(PyObject *dict, > } > > static void set_sym_in_dict(PyObject *dict, struct addr_location *al, > - const char *dso_field, const char *sym_field, > - const char *symoff_field) > + const char *dso_field, const char *dso_bid_field, > + const char *dso_map_start, const char *dso_map_end, > + const char *sym_field, const char *symoff_field) > { > + char sbuild_id[SBUILD_ID_SIZE]; > + > if (al->map) { > pydict_set_item_string_decref(dict, dso_field, > _PyUnicode_FromString(al->map->dso->name)); > + build_id__sprintf(&al->map->dso->bid, sbuild_id); > + pydict_set_item_string_decref(dict, dso_bid_field, > + _PyUnicode_FromString(sbuild_id)); > + pydict_set_item_string_decref(dict, dso_map_start, > + PyLong_FromUnsignedLong(al->map->start)); > + pydict_set_item_string_decref(dict, dso_map_end, > + PyLong_FromUnsignedLong(al->map->end)); > } > if (al->sym) { > pydict_set_item_string_decref(dict, sym_field, > @@ -840,7 +850,8 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample, > (const char *)sample->raw_data, sample->raw_size)); > pydict_set_item_string_decref(dict, "comm", > _PyUnicode_FromString(thread__comm_str(al->thread))); > - set_sym_in_dict(dict, al, "dso", "symbol", "symoff"); > + set_sym_in_dict(dict, al, "dso", "dso_bid", "dso_map_start", "dso_map_end", > + "symbol", "symoff"); > > pydict_set_item_string_decref(dict, "callchain", callchain); > > @@ -856,7 +867,9 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample, > if (addr_al) { > pydict_set_item_string_decref(dict_sample, "addr_correlates_sym", > PyBool_FromLong(1)); > - set_sym_in_dict(dict_sample, addr_al, "addr_dso", "addr_symbol", "addr_symoff"); > + set_sym_in_dict(dict_sample, addr_al, "addr_dso", "addr_dso_bid", > + "addr_dso_map_start", "addr_dso_map_end", > + "addr_symbol", "addr_symoff"); > } > > if (sample->flags)