Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1371952rwb; Fri, 23 Sep 2022 11:40:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Aj7rvA2ChbQod+Qw4U00K/IKttrBjIYJ3AxrhlL42laRDZNeZNBca72Jq1H+PR0j9uy/c X-Received: by 2002:a17:903:2306:b0:177:eafd:36e9 with SMTP id d6-20020a170903230600b00177eafd36e9mr9810785plh.135.1663958453992; Fri, 23 Sep 2022 11:40:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663958453; cv=none; d=google.com; s=arc-20160816; b=pJ76t5E3F2DjwlQxpnoxAAP79SNpy3MNDqoS1eQpFy44VlqxVh80/WJKJlU+SjcjkV QaGV39J+2V5LU1LcDwFxIpQcc+Dkim26JeZcVgTIvdyWbdwAdr/MCM3gNkdDnWNCaRBk Bb6ougQ2rgNhCnymTZ5/gC0g+kkpfJ1sOwYHFF1TCdrt4mPVRuzz4/dEl4poZERJ0qcz gNlcuRUe3EozeqCcjdNaZnM6497KvH9e4/n5j+7csyt+4UsPt2bAwMUdV0lQ9/oWjrnQ 2m9z5oOCeO3iqiYsqelUEL35oS/4qjPfMyE6K9TnZuwHZHJ8ouJ5hQ+KoyvcnQ7Cc0NL ye+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=fR6Qn5t8q/W233LEaMYnwEm/k8WcsQCSexxbn0Oka8g=; b=oGVACwgWHR9KFSvTEEJtuRso+R4Kr9X9kOQDf/WspQoXBA6CvPr24crE7t2wyH2Efv jEcIoquuaMDx6SJ6Ao9ppgIFbofWJ3bAIVhWc+cmI6sFuec9DkgLQU8iFV3XAnxhs+8G 8eYpLRNW9tGnkl3TV9eee5+fMAgmIwS9HFv8VL5Xf58BngM3my5P7gzfDUQ0PS0g+URv 7RzKnWgLcZlAvKKRzJv/lX6XhF+y25VD7dV6SQi/t8WJVIteIgipg3djnTo5clLHjCTq 9+mZp+66Zqzf7ra4439Od5oNRhIzPR7chGcayugoO1dXZ6y81C310puPe99bDYtXDdBi Ozlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CBp3fp1k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 24-20020a631158000000b00434e027739esi10464155pgr.312.2022.09.23.11.40.42; Fri, 23 Sep 2022 11:40:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CBp3fp1k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231916AbiIWRc1 (ORCPT + 99 others); Fri, 23 Sep 2022 13:32:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231641AbiIWRcJ (ORCPT ); Fri, 23 Sep 2022 13:32:09 -0400 Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7E03151B02; Fri, 23 Sep 2022 10:32:08 -0700 (PDT) Received: by mail-pj1-x1034.google.com with SMTP id fv3so726023pjb.0; Fri, 23 Sep 2022 10:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date; bh=fR6Qn5t8q/W233LEaMYnwEm/k8WcsQCSexxbn0Oka8g=; b=CBp3fp1kj89uIt+Kqdc9A2OKnsqePyce9wUyH93zYf9WEs21ei/znvqFqg/AM/DqeS o6BQSjeAMdsxbti0rz0cKYWsJlVbpA+UVfAnlPhfZezna92pQ3apVB25JIZDNAK8x03T mCPqTFuy0hFPA3l0Qz2eS2N8pbBI12MkTMjLEoAonm/0mxHkAegX0D7028il0S8PLTxT O5vtZpVAdrpGWzmeWLlR2Ens+V4Fbyh/ZjCmtQ49v98G3IeJ4gF7mpdZwH/8MKDDdaB7 m5WZLbS0zc/+pUBj1eK+7PYtadRiTQZIa56csi3UpiU+yKjkBhtR0I+Qvy2T16U+d5HD xc9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date; bh=fR6Qn5t8q/W233LEaMYnwEm/k8WcsQCSexxbn0Oka8g=; b=VhvVC3E/WZ6SeBJflgYjYCwgnjgMO4eOdKbh1Fo2fTHk4GJjjurQHyn+sx5CNLIYlP 98rTfwJTUrZ6NehxeyjXRupAqiMqa9iz7c7ZQnvyOm76WBs2FvWXeShO+wxA2HdblKYm bF69XvMLda3Qa2I+wCjyT18fFXs/dZIh4/XjfJmh4CXUEMYgtCYnNVdZ+mqrY1jvrF1P 4DWFgpqKGkuuRA5xo4xS/agHmyLW0yQfI+LECqcty0++WyeWTYSaUg6O/4+uMGwf6+0m 8fdhk0SvfahyTcIyTbRnrbzEnS7qavYegLmIMx5cDP+OyKg+pG6v6I4F0rAAC11+AzoG VXZQ== X-Gm-Message-State: ACrzQf2JHPw90HHiYUOB13d8/TDovV+qVMdLfExHKXWLmVFdSpI/UVlV Iwx2F/NAZdLEWrB0gmQjTPOoUSVWHzo= X-Received: by 2002:a17:90b:3c90:b0:203:bf90:f78b with SMTP id pv16-20020a17090b3c9000b00203bf90f78bmr17636597pjb.138.1663954328271; Fri, 23 Sep 2022 10:32:08 -0700 (PDT) Received: from balhae.hsd1.ca.comcast.net ([2601:647:6780:1040:c716:a857:50ee:f56e]) by smtp.gmail.com with ESMTPSA id 9-20020a621409000000b0053e6eae9668sm6719499pfu.2.2022.09.23.10.32.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 10:32:07 -0700 (PDT) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Stephane Eranian Subject: [PATCH 4/4] perf annotate: Toggle full address <-> offset display Date: Fri, 23 Sep 2022 10:31:42 -0700 Message-Id: <20220923173142.805896-5-namhyung@kernel.org> X-Mailer: git-send-email 2.37.3.998.g577e59143f-goog In-Reply-To: <20220923173142.805896-1-namhyung@kernel.org> References: <20220923173142.805896-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Handle 'f' key to toggle the display offset and full address. Obviously it only works when users set to see disassembler output ('o' key). It'd be useful when users want to see the full virtual address in the TUI annotate browser. Cc: Stephane Eranian Signed-off-by: Namhyung Kim --- tools/perf/ui/browsers/annotate.c | 6 +++++- tools/perf/util/annotate.c | 19 ++++++++++++++++++- tools/perf/util/annotate.h | 4 +++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index 9bc1076374ff..725662e21b23 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -805,7 +805,8 @@ static int annotate_browser__run(struct annotate_browser *browser, "r Run available scripts\n" "p Toggle percent type [local/global]\n" "b Toggle percent base [period/hits]\n" - "? Search string backwards\n"); + "? Search string backwards\n" + "f Toggle showing offsets to full address\n"); continue; case 'r': script_browse(NULL, NULL); @@ -912,6 +913,9 @@ static int annotate_browser__run(struct annotate_browser *browser, hists__scnprintf_title(hists, title, sizeof(title)); annotate_browser__show(&browser->b, title, help); continue; + case 'f': + annotation__toggle_full_addr(notes, ms); + continue; case K_LEFT: case K_ESC: case 'q': diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 5bc63c9e0324..db475e44f42f 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -2239,7 +2239,10 @@ int symbol__annotate(struct map_symbol *ms, struct evsel *evsel, } args.ms = *ms; - notes->start = map__rip_2objdump(ms->map, sym->start); + if (notes->options && notes->options->full_addr) + notes->start = map__objdump_2mem(ms->map, ms->sym->start); + else + notes->start = map__rip_2objdump(ms->map, ms->sym->start); return symbol__disassemble(sym, &args); } @@ -2762,6 +2765,8 @@ void annotation__update_column_widths(struct annotation *notes) { if (notes->options->use_offset) notes->widths.target = notes->widths.min_addr; + else if (notes->options->full_addr) + notes->widths.target = BITS_PER_LONG / 4; else notes->widths.target = notes->widths.max_addr; @@ -2771,6 +2776,18 @@ void annotation__update_column_widths(struct annotation *notes) notes->widths.addr += notes->widths.jumps + 1; } +void annotation__toggle_full_addr(struct annotation *notes, struct map_symbol *ms) +{ + notes->options->full_addr = !notes->options->full_addr; + + if (notes->options->full_addr) + notes->start = map__objdump_2mem(ms->map, ms->sym->start); + else + notes->start = map__rip_2objdump(ms->map, ms->sym->start); + + annotation__update_column_widths(notes); +} + static void annotation__calc_lines(struct annotation *notes, struct map *map, struct rb_root *root, struct annotation_options *opts) diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h index 3cbd883e4d7a..8934072c39e6 100644 --- a/tools/perf/util/annotate.h +++ b/tools/perf/util/annotate.h @@ -88,7 +88,8 @@ struct annotation_options { show_nr_jumps, show_minmax_cycle, show_asm_raw, - annotate_src; + annotate_src, + full_addr; u8 offset_level; int min_pcnt; int max_lines; @@ -325,6 +326,7 @@ void annotation__compute_ipc(struct annotation *notes, size_t size); void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym); void annotation__update_column_widths(struct annotation *notes); void annotation__init_column_widths(struct annotation *notes, struct symbol *sym); +void annotation__toggle_full_addr(struct annotation *notes, struct map_symbol *ms); static inline struct sym_hist *annotated_source__histogram(struct annotated_source *src, int idx) { -- 2.37.3.998.g577e59143f-goog