From nobody Mon Sep 28 08:45:54 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020115.outbound.protection.outlook.com [52.101.195.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2494316905; Mon, 24 Aug 2026 13:31:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578298; cv=fail; b=DgaxyzCaZu/U1DNKvPiReTnLXRu/121rBrn4eqGbh/WyA4Za1Ck6/UpJ1p6rx+CIZqEJP4Xr0b/8AKsL28PzFMqaIXNQGmVKupBQCNst9sGM8e3Pm+DH6VUsBYu2sHgu8bcYsxaCrUdXDQfiyQRx6FYnyOOx67OCaYcbojVzJqM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578298; c=relaxed/simple; bh=MGRd9NWdwHk9p0LM7n1/6EFNeiuQdaFpMI151FNP4g8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qULD10QE7jNth3Vb6Xf8T+jYVSX09b32XENXsC2hSfFmnxysT55Mpk2JGMnJNReR4QSlVnEqoK95xhH/poredv2CRi5Gj8amLhcCnaKmhNadhxeCQDghIVP3n/Knerkttzr2douiYvoAr9IVFe0FXxIE+5KxEtJhqS4OnOogiPw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZT/GeXd5NxAHqwGeTf7DDOngNytEJBrUHW+/jbRRB64gPvG5/w3tWJHUatAOJiMfHVM68EBtR22rSsXcC0Bkg1gcOkrTgoDkrf2FM3d4XC+yjsrOMWeGF+4QHmqwvM6IjeZ5VJOo1X4UHkSrEqdFAjPsKwSC7qO0T4cJnKFkfUzXABm15t29H2D0U4lf/RK0VV5hzm7BatmpTkMOLseENCZASqi2gn0OELeCuz0ZKtrE86CmM3D99RdgI43vv0Or9OwyzOv+V8A8ONIPxlIhfO7RFimB9dnOSrqnicdUnZtGoByxmrALv3BRzY3NU2tvc+2aKPDhug9MlRswhj3GzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=vxreZWh59LFtD5z0gZYQMEf99hJKezsTArgfe3ZFH54=; b=loHkKKCpvz3ov7goHKJZFtLxmcdm+xqYasLm2dByQevxKIavWYJQAY4jN9/51q15rmeOCLhjxxNckSHG7JOZWYt97EERW56o0tBnnUQDsoEOkF53oQoFZXfmDPOGpYHDz4nNbFFJ35pXTwrRsH/5KLznA/EFZHtpdPpdiLUFujTRKo6dgUIZz997dZoZnaFaBEccB7nID98TBJ0HBh36RCh8L4UCnXycIj+sfyjHWbr5BHOA8jCTFHud9lgxav4DA1Wl3v9sakpAN05JkyklRBkGpCVtM/jsbnGcqlOjddIz+avNV18o9qH9QCKo6eG5FTz86XQn1SXEWvJpO5Qg1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by CW1P123MB8950.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:271::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 13:31:26 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0339.012; Mon, 24 Aug 2026 13:31:26 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v6 1/5] perf trace: Fix error checking in btf_struct_scnprintf() Date: Mon, 24 Aug 2026 09:31:18 -0400 Message-ID: <20260824133122.751733-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260824133122.751733-1-atomlin@atomlin.com> References: <20260824133122.751733-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0103.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:191::18) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|CW1P123MB8950:EE_ X-MS-Office365-Filtering-Correlation-Id: 3897aa28-ffdc-478d-2bee-08df01e3fee4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|1800799024|7416014|376014|56012099006|10067099003|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: xdTBcnN162vozdOrEqllIjarkwx9mol57h+8vM5FqJklu3rLCrSWk7Fc1xUSF9Eiup4m0ZCXH4tv9UM7uEGgTm7r1YAG1vO2U/zh2CV0VSBzdMeVypskPGoEHc/bZVU/736ke1+kJrj/aH/7af+aL+ax0KPcMIXAYzXOsaP0m/4Fe79Cj3y/4FcIGKP4J52rh2FdHqwqxiFWwUOmMX0rkLIlL2F2GqoTpBYKErLR59WuSt/Dp12jiNxUamRrTt6ZieFu5Pm/Zp5qWL+AQ7iC0D2fkiBEOK4kZjoa/4Cu9v3KztroB5J6AX3Nr/Gp+Kam73hDEZR7cYLUhnzFZ86p14fXyH9TCg7lqdSIZszNY4sXgYCF7yOt2ugzPMo/eagjyhcMeJJD+R2q8J4DW2nnYn/JHNlq4lLtK+tv381ybJi4mtXvBWCs6SXik1y3c7cfnDuuuSjFgEhOw/kRd6TMv0bafz+pMJIhUX3T8dVDV+9R6M+eHdmDFlHra+GVznHHsWskE/ryzFGmIlsbWbcfWZ8tJuIlzqMzPwc+m1MeKUT7H7x0SbKZQKH4MtypFREBFNlhtdsBunkSCQ0NCJBZPr+c+WCTWCZbG5EP4cmDQ8k6G4BQ1usynZ2YJGCLNfkHTmtk0+1MHsLPqTLRHSUPP9JHutaD4F5KlubL7P0yw34= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(7416014)(376014)(56012099006)(10067099003)(6133799003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?52Ss8rG5T9y5md/E92kQyOnm5AXfKr8mQsrwnov118fd/kBUO1RaofQFUcX0?= =?us-ascii?Q?W9WlWFSYX/3RQFZ6ITmSbEM2P96Yb5R7pTjQEg79W+nkFSvhndwIIltx6FeE?= =?us-ascii?Q?ypTEiuHnd/mHlFktHmku+NxdgdYijm0go9vPz7HuFsI/wIWJ2biYdHTAlZkt?= =?us-ascii?Q?AbAqJR9IuGHrCNgmfu9moUTtMqoX527VnDXPqWy+z3OTnPAp1fvLJ2yGLOOb?= =?us-ascii?Q?ZoHXpCaBvsqNgL/3NJtiz6vy9sI8CVggtS+ydHVZVD6ao+cFxF+0eCREy50w?= =?us-ascii?Q?xOI2nXBM+dG6KyYeMZ6ron9zw2zeg40vYX0s3NprsuCq1A+TtXq1PDXL9OZD?= =?us-ascii?Q?RBZG2UlakN8/OthtOtEftZl891pkugagKySQBDFoDwzrNehw6VhCEy2F3Lxa?= =?us-ascii?Q?oa1keuQ13U5CUHnMiH/ZJzbAbThxsPdsdXMhSbJqtIH9MCoDo0mSDXRn5GFb?= =?us-ascii?Q?Myz0pPfYeBYK0lP4X5pDAhn37DoABl3L/JacSD+TMHtBLQ1m+3bh6KiAgOGz?= =?us-ascii?Q?h2mGxicyFSMcsV6DLLn8enjfPt9xFa1hLV/aGyCp4uyVW8JOMO2f+AFedeGm?= =?us-ascii?Q?tyUXsfXvaviuTG7cPulFkA2vkuyKB7o8qJw9LWuwQh0eQ0XVEIY61gQsavlx?= =?us-ascii?Q?nX1xckW0mIQisgUBdAd+pp72lXccf/cqC1SZk9QEZgMZEe23XYDafif3w/S2?= =?us-ascii?Q?NE3FNc15sSZvhiccFfoCWD6skbhXKRt+xoKnTKClfJ2yZjS2tvHfnFKTNUh8?= =?us-ascii?Q?0geN4/fvbWzw0ozkG7Qqz+sr4s/hKssVJQfTjmtYLQXNfF7gzvvZF0JHOHew?= =?us-ascii?Q?h3eS1TELLSzktroMHktHfw6bw+EvgsnRo8c3YbH2BwZZo0wi20DSF/V0fqGI?= =?us-ascii?Q?UccL5Fu+A7pFsK0AL4TwCMhm26whUwBgZbD0VkkYhDuGeXNoxOu4lboGY+VT?= =?us-ascii?Q?if/jZKgWwPtbsDSRbA067tBT70kmSWLeVmJkci+b8Ey5OahfFimRDiPSwcWS?= =?us-ascii?Q?UKOWqSGlmyQx2RmyvBGS5gb8QtE2elYO6ZOdIkWObm/1bce/qrBV/rSIz8QJ?= =?us-ascii?Q?XndmbNa3OVWU82oPcnQm/6z9hoayrV53aBhnKwZT4wxO5B9+TFGJrULVL3BD?= =?us-ascii?Q?deAdiX6UYcwizw+X4V6sIZjpWU3nIMQAH4pMcAgcIm46yPr+MJOV7FDvgAsT?= =?us-ascii?Q?b0O23gbSs4xyKmSok8twcjGtOpvrU8TEoVDtUA9UWrPLE6JeqLh62UQB1JS8?= =?us-ascii?Q?XI4du7DKaJk7BmdWnbmOD65/wKmJq+p9A2HWfjvAxyJS1xaPvTlnjqTF9ipH?= =?us-ascii?Q?PsWB6dzJd/YYf7GTK2ELkIEA0n7o2Hiviw9OnTZXoCLOwU686Hy9EJaJZIvK?= =?us-ascii?Q?5Ualblh1elNJzzcZKhxQIiypKXhs6y5tNRm7XsbXMvY8TwLKNr4hFzHac76K?= =?us-ascii?Q?bDJERX9oeajfApduL+KrQ685Arud3Mnj6fJZG44Bc4+neGYlWhWEKfdXr6tX?= =?us-ascii?Q?Zch1y+elXxM050qxNhzmk+j7S216s05scO9e6vbYvkdy3OewAoj6v/K4so0v?= =?us-ascii?Q?otD4Xdz6oVUFIP0z+9a15qTvsGyYWpQeg1N5YdJSAPl+T0vsQ2mjDJJk+lxD?= =?us-ascii?Q?ZxhYaxQ1/iLY9vxR7cDfdqUqJdqTV9K1AxglEIVJJnmfAN3NnWhp6XGxDBNY?= =?us-ascii?Q?+TMSvD2go4YPxJQ9RvCAh/sY2eG9F28rowrOHC/2HKvChtiL?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3897aa28-ffdc-478d-2bee-08df01e3fee4 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2026 13:31:25.6647 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jE4AbCa2qCrNOrwTDHSGzk9MtCXi01J88PXmRmJvu5oaNUD4rs01bcvhlenwRROFOapG8jyzt8K6dYqg9xVJDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CW1P123MB8950 Content-Type: text/plain; charset="utf-8" btf_dump__dump_type_data() returns the positive number of bytes dumped on success, or a negative error code (e.g., -EINVAL) on failure. Currently, btf_struct_scnprintf() checks if btf_dump__dump_type_data() returns 0. When a negative error code is returned on failure, this check evaluates to false, causing the function to proceed down the success path and advance arg->augmented.args past the unprinted struct data before returning 0. Consequently, when syscall__scnprintf_args() falls back to the default argument beautifier upon receiving 0 from trace__btf_scnprintf(), the fallback beautifier or subsequent arguments read from an erroneously advanced augmented arguments buffer. Fix this by checking for '<=3D 0' ensuring that on any failure or 0-byte dump, 0 is returned without modifying the augmented arguments pointer. Fixes: cb32035214b9 ("perf trace: Pretty print augmented struct args using = BTF") Reported-by: sashiko-bot Signed-off-by: Aaron Tomlin Reviewed-by: Ian Rogers Tested-by: Ian Rogers --- tools/perf/builtin-trace.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c3c7f1f85c53..1bc39f674f11 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -1066,7 +1066,9 @@ static size_t btf_struct_scnprintf(const struct btf_t= ype *type, struct btf *btf, return 0; =20 /* pretty print the struct data here */ - if (btf_dump__dump_type_data(btf_dump, type_id, arg->augmented.args->valu= e, type->size, &dump_data_opts) =3D=3D 0) + if (btf_dump__dump_type_data(btf_dump, type_id, + arg->augmented.args->value, + type->size, &dump_data_opts) <=3D 0) return 0; =20 consumed =3D sizeof(*augmented_arg) + augmented_arg->size; --=20 2.55.0 From nobody Mon Sep 28 08:45:54 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020115.outbound.protection.outlook.com [52.101.195.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A3DC7081E; Mon, 24 Aug 2026 13:31:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578302; cv=fail; b=QWCEiw9C4Thv5OKBBtLiFCQUNZ0+m8G4m3mL/KwZJb8r0IzcHZ4ntpCMZesJDOtMhtEIq+FgwKit8y3CpOkk9lawPU18HFUQlvifp9QyDs8VJH8DwGIfETd1C9QWf6Zh+4TtPYQ35SWN+ro1fVmEWPQtmwLZGd8NUwj+huTKtec= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578302; c=relaxed/simple; bh=QI9xbZAKrWDfa2xA7jqTXB5Gthz028Vr71Y+Gs7xAJY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=AzCpJ+dvJ2YL1if8Q0VaUl24sCUtZ1C3sNuGmUHRtdw6K+kC0XLhKxEHOTD05Is12JzEIj4jaPay/GUkqG7zkyvR3j9ddSiYQx+VGSp7AlPE9MtNNsIpS3xLFRSE56Ee/OnGdquHtT+4tC0mR1S1+I02J9xiQO6TfM0831R/qoQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ua09bbTdBNfaU8cHHdH7yQnf+dTosg/XmSzfkM/XHG3gQMREj0AjqZulJu+aLICNY8bXZgXXp8fNcFrOcIM+bN1Ry1UpAUV0JT4VkhgO43SeNPAq0DcT+clMXAc/m7ktDKrDMC5Kba3o5wbaa+fOr//TMECVp/UexaB9qGEfeSzVm9/S4yGcyyF7yZiXU2Nmd6pa/HslxLRGMOXM9NdNTQa/3gtRL5UAUVF55auXM578N2ALiNLHE0mxreF3A37kDUUHGq+39TW7LL0Wv/xxc15J7NMVwFQwsfc/23RDeUTJeWa3IvKCDXIaZMyaScfWn2odIxDRbeHcZqmjckLymA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=m+MqZmM1QMRaxVlfZ5F22MuZJi94epzCAceQi+fKUBc=; b=Dt0XNneWfysHIq2yCDPNEXM+yzh/vnViLPIaUlJibsk34z6agxr7rthLcXXZ0/SM7za4QMr4Lvt2bdz4IhhYDeGf4APxOkqIOQSJ3maVOwl/1UUYmyDo6FlipHjYKNkgMD9j4zU+2rAhH8nel5yRJzfR6gXPnAXeuQ7LSJa3AjCLwRCYMFPgR/ZJAIjESRPfuTNhBSAmUeSUccQSnaNgTvrsHQmigbJ2rS7kmAgFD9L7t2gvTdU4r82STTeXrJq9PQw4jcti25eppQOpoFbmDH+hhyX0XVaPr31x96/v9GdrSK92LylIC589wJNrBixXg90BGrZdXWM1hldkg6o35A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by CW1P123MB8950.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:271::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 13:31:27 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0339.012; Mon, 24 Aug 2026 13:31:27 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v6 2/5] perf trace: Introduce kernel symbol beautifier for virtual addresses Date: Mon, 24 Aug 2026 09:31:19 -0400 Message-ID: <20260824133122.751733-3-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260824133122.751733-1-atomlin@atomlin.com> References: <20260824133122.751733-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0260.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:37c::11) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|CW1P123MB8950:EE_ X-MS-Office365-Filtering-Correlation-Id: abb5fc98-578b-4e55-0f21-08df01e3ffa9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|1800799024|7416014|376014|56012099006|10067099003|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: oSmT+icKwZonM3q3HdSM1cDwssqPsSzbbcCfHwjUr+l4gBZcjy3rEtST5hBV/fXIorCWmcC1kfhkBHW/TV2/AnhGGxL9VSwB4BBVVfxKXr7Wx8IHKKzmATcMYOjiprOxPiFVQUGZ4uVfWO39lEnR+/e9XX442OqjbA++N2gEhey/WdK2GON5ODf4LQ96S0I9p7FiReulJJissTRKAg0QnzzrZx0ooJPdCp7gCVRyodgufG1NzwzW3TngXorCAaExaU/MlvXHqB6deyu5A7P/UOynsYES5uibxDNnxSDd7yncDzTTyYTDI2yw2pDhy2UxqliLIEYr2Pb/bqzGv1bWsQmXy1cDQ3sxSjSHzayUbHd43XTRlkPZxXPUfkgNJb7QYZ52tYFZeukkmuWgHua5lD/uYuatuxG1mkgj1+6Akqb8FpS9a1oewZSojef10g1CqM12LaUIz9GBBggakqRFo2imSkX31+AxQIhOWjfp+By+N6QUBAw2bJXLVffMgAkThDtuSj0xob3Q97NJhWXiKluvZNsaTIF8pa0Fi4V4bjHqyM2/JFqtLNHeER0G2hA5jWMJlGRtZ+Kx+cK878u/yGlfDkpCQQBBPFO89fB3wxw0zpnRDrC09yWtpS7WtOFn59orpAHmdGUd20C/1TJ/zATNYCjy8YUygV/rndNI/rc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(7416014)(376014)(56012099006)(10067099003)(6133799003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QYf++A9sh99DD03jdodgpTbrVw23Xs3hWgH/Eg218RvGuY966vdvqzRVuRU6?= =?us-ascii?Q?OPWeY07tmUkRAv1NcBNNCAbbhCzVjn9UzWE9uFvOfj+LiSKLAp/22DItj4aK?= =?us-ascii?Q?0QvEcAIWJK+gxBiGSQMqiU9NEEEJb0bPvnVd8RcDDrIqKPM7HoK6LRsa2Dlv?= =?us-ascii?Q?PzSIUHKZDPmoqdCMIwL4+UwRRH7+cMwBARLhutLGTqa0k/EfSMX47SXOeuhz?= =?us-ascii?Q?FUZs5wR/tFUlzTyNYrtwtoHNF6NZmJ0iDI9uYTsmLzfK9mmsEvlR6LKHHZhS?= =?us-ascii?Q?9gCsy7KuWW02UGGShLoTO+PQC1q6AjxIxf8hEbGadyfDjQqG2FiSFzvp5ejd?= =?us-ascii?Q?5QS9wThvq+AYTVEkrJXkhcuG7/HO+m4x02gomPnjRFICZPmXcnz0RF+8wUa8?= =?us-ascii?Q?aV3OcPl2ptpmKwViMpP6qLlDuuVxFrEGYt/d8ByeivNNQ8tSlbEJEhc1R8GP?= =?us-ascii?Q?LdjvQWz37gCRhHE0Bnu7l9aFt7oyeg6S/5esgq/G+FYdV6ufkAaUvesfJmpp?= =?us-ascii?Q?gYIhxFC974ziMmJ77T+gO3dBWuCMX5Zh6WbgMbkNhs8RxEdPTzumduD/bUUx?= =?us-ascii?Q?AYzKFwAAyF285y5m8AvJnP+kq2iVujlqrjNsR/p7hBsD1vGC/ZJNriOjqgrP?= =?us-ascii?Q?GzgRbDKinlQb66mqBGsUsycs4xYrAHUCMx2I89KdHN6RN9Zh4bZknWx067Tp?= =?us-ascii?Q?BKWz65SCgZCOgZCOukidVY5/xjMEym5WpThlroKosmCMcbnN/VORJvqoofKg?= =?us-ascii?Q?H8nj1IeU3jnFbW2HSiVc/ZbELjvgHgJr8iM2FPTbkLFLlLB/x/TlNoVrPTX9?= =?us-ascii?Q?bptTjMClUKVNc5WYgm1EEtYh491tS5EHRnURwSFGnOsuDl2TlqcnM/QU7XHu?= =?us-ascii?Q?fkDS12ME22Hl4nnQ24+9OYL/UOi9ZPvTjJiKd019qEcvHEMESP5dvICwjTfM?= =?us-ascii?Q?wHH/Ymbex9RLCemDlDz0nfBKpQAi3EaZt35tG2ZzIGjoXQeAKOTVJ7muvMdX?= =?us-ascii?Q?/Edk0zoKF68J7ZvZ5ZkT8PjrNIOUaFJku/p9TKGOwrtTx3Q8gUhixnTUvzM5?= =?us-ascii?Q?IjLA38D3zL+ED9TU4BcFepNtxpzfRNhfIHHIUeWcmrk2dK2O3zQz1nFSSl5T?= =?us-ascii?Q?P/HPACFi4BFUKn5U34+4w2GGq7CQGGdsUEDfAq0IAgCp9Mhy9NgG7n7UGSWn?= =?us-ascii?Q?tnZIq6b22sojwTUdJ+8z0pT0NtRes5VLCixtOXK1pYffKbcSOMbEmxqDcXiw?= =?us-ascii?Q?WusvJFa7ZnMrIFjskDH054Fkiscx8dJ+IAGp/CE5g2BN5PeRmx5+vbplkmpu?= =?us-ascii?Q?QxzI7qW8b67UY7Xih1HzUSpQVtq/X1IS/IZmFX7mn6cYeXBjfXnstqA8mX7g?= =?us-ascii?Q?u/fhAC/BGT8NZPD2hIGbpPvlxW39sTjxENpQolisC75CE8c2PRnRCZhDlzOH?= =?us-ascii?Q?fQJyBA4nGuV3y79Xk5vzpfPl3T+mWkxAWXUdXu+hYRYSrrH4PvwdSweF9N1h?= =?us-ascii?Q?uqDLrawoTeqN5hCki6K8ezCQ27B7rU0DyZEACPmQuEkfXnU0mM7ewkAQhCn3?= =?us-ascii?Q?gKSM2Cnsb6jC7qf0EuzsWOGEdDfe0UM9c40tTeNPxV0eaw5p0v9AxFzrQ+JM?= =?us-ascii?Q?xDkt15nkmy3AGc/r4KbvvTo+u06qQMApAoKqSqKd8g93wtKCJxR4oyNjeHye?= =?us-ascii?Q?qNCKY1l1NWWL2NfDKH2Q+RdTp5Ra1ro7jICBwLIysmOA2HxI?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: abb5fc98-578b-4e55-0f21-08df01e3ffa9 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2026 13:31:27.0034 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YAyqSGtEmQyDw8QkufeIG5OBZEjbjuyD4+6mTTURHNBYQoz07qnYTrWvXjrLA196FlwXKrIq/TeIPGqMx/2LFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CW1P123MB8950 Content-Type: text/plain; charset="utf-8" Currently, when 'perf trace' formats tracepoint payloads or system call arguments containing raw kernel virtual addresses (e.g., a work item function pointer work_func_t in workqueue:workqueue_execute_start), it prints them as raw hexadecimal values (e.g., 0xffffffff81234567). This impairs readability when tracing kernel execution flows. Introduce a dedicated kernel symbol beautifier, syscall_arg__scnprintf_ksym (i.e., SCA_KSYM), to resolve kernel virtual addresses to human-readable symbol names and offsets (e.g., "flush_to_ldisc"). The beautifier looks up the virtual address in the machine kernel maps via machine__find_kernel_symbol(). If a valid kernel symbol is found, the symbol name and offset are printed without requiring --libtraceevent; if the address is zero, "NULL" is rendered; otherwise, it gracefully falls back to hexadecimal formatting. Signed-off-by: Aaron Tomlin Reviewed-by: Ian Rogers Tested-by: Ian Rogers --- tools/perf/builtin-trace.c | 29 +++++++++++++++++++++++++++++ tools/perf/trace/beauty/beauty.h | 3 +++ 2 files changed, 32 insertions(+) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 1bc39f674f11..effb00117bff 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -750,6 +750,35 @@ size_t syscall_arg__scnprintf_ptr(char *bf, size_t siz= e, struct syscall_arg *arg return syscall_arg__scnprintf_hex(bf, size, arg); } =20 +size_t syscall_arg__scnprintf_ksym(char *bf, size_t size, struct syscall_a= rg *arg) +{ + if (arg->val =3D=3D 0) + return scnprintf(bf, size, "NULL"); + + if (arg->trace && arg->trace->host) { + struct map *map =3D NULL; + struct symbol *sym =3D machine__find_kernel_symbol(arg->trace->host, + arg->val, &map); + + if (sym) { + u64 start =3D map__unmap_ip(map, sym->start); + u64 offset =3D arg->val - start; + size_t printed; + + if (offset =3D=3D 0) + printed =3D scnprintf(bf, size, "%s", sym->name); + else + printed =3D scnprintf(bf, size, "%s+0x%" PRIx64, + sym->name, offset); + map__put(map); + return printed; + } + map__put(map); + } + + return syscall_arg__scnprintf_hex(bf, size, arg); +} + size_t syscall_arg__scnprintf_int(char *bf, size_t size, struct syscall_ar= g *arg) { return scnprintf(bf, size, "%d", arg->val); diff --git a/tools/perf/trace/beauty/beauty.h b/tools/perf/trace/beauty/bea= uty.h index 58a3206481ae..0f4801c61a5b 100644 --- a/tools/perf/trace/beauty/beauty.h +++ b/tools/perf/trace/beauty/beauty.h @@ -160,6 +160,9 @@ size_t syscall_arg__scnprintf_hex(char *bf, size_t size= , struct syscall_arg *arg size_t syscall_arg__scnprintf_ptr(char *bf, size_t size, struct syscall_ar= g *arg); #define SCA_PTR syscall_arg__scnprintf_ptr =20 +size_t syscall_arg__scnprintf_ksym(char *bf, size_t size, struct syscall_a= rg *arg); +#define SCA_KSYM syscall_arg__scnprintf_ksym + size_t syscall_arg__scnprintf_int(char *bf, size_t size, struct syscall_ar= g *arg); #define SCA_INT syscall_arg__scnprintf_int =20 --=20 2.55.0 From nobody Mon Sep 28 08:45:54 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020115.outbound.protection.outlook.com [52.101.195.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B05B030CD85; Mon, 24 Aug 2026 13:31:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578306; cv=fail; b=dnhhAH4SUBp3RR6mUSOwkFJsuxCYEn3eIFcYLam1KlqNfGH5PYIBCwi3ALiu0zSDdwKIshi7OuPpWCTZk1KoicphtP7V1lmXVoxfn4Txa30iFABUzWpEKBg2ku2pGfDQwU2rvYCmPnCH201KsRu+mpVoz92h/vC2cncCGNM0Xf8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578306; c=relaxed/simple; bh=V2Nss0rPfERz8tni+kNmB61/s+XWbhZMXWORUpb7KCA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lyGzdUgfr0LV4GsE2tk0cynDrJI+HM25Zc0u0wQ88CbgZ4lAfi/EYkE3ypgw+EJaKORSZlqkOJr5Cza05izqzm/bT0iXrdq6ggE4vdI2E28h+asBNqX4y1a+aSwmnX6wjhpqExqKguF70LgvoW6rDIkPojBKV8d8N0VmTn2sgic= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=plYLa5qi57GY8vh5h3Dux8tIGTd6QcnqRtDOvZtxqHQyapDJjzhGcFngxkSaJ5PDUgNNWccj5TfSZMwbTjen3sDHz6WYCIywVuetaAFLEoiGj76ABSqgL7Mo+0xDZS/IBFEpz4d4aRy2/HDUC4OxZNN2RLUxCHrsJRcFElESwU0mpcRtaLIaV+Om9VDsOZfVZOCEWv64RbeI9B64DilreWtKKQ0CMKmPI/NiT7oyhebFMxDU7Hu06uHLmUCtHpUuO+4cHtAnXDzNcogQocD8TNgjPIkjwXCwwyo+0N8ofAgHyt3UxCiuc9L1OhWGSs1upWPeDwUzEkAZoMCWzBi6qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=5ZHTSDK7uWwI3KNGPNQDIcQGwd+ae1tqXNe/ZIeZFtw=; b=QAxPBCmNeVjBJgDv50Y6LXN+Qf7jRbRobcywvaUq3gR1IhMNYFO8sLXw/74EEQp34BzMy0wZZrPsbeDwypWnZSpzWNm4kzRXj0+XRHXw/0eitCL7BfZ6ct1qSSLXBbRNIUGqkW/d7Ae4A5L3dsKXoUufUYFWWUmhYRJUU35IBSjWBjCIWd+dVwV6JMp5H3ibZzJCwhXEfBpod+oy0WkyxQjeUzZD05wMxEHDYxXgBKc1rjXlX1QRvUfGXDLxxHRdVOhQB1JJGKYteR8zWtwvTUOUncC0yMozdOzvvDCIcQp/hVNEU8p0ARIuZ4a6GOk/0KvpwJd/cnDJVBMFrSEaBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by CW1P123MB8950.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:271::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 13:31:28 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0339.012; Mon, 24 Aug 2026 13:31:28 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v6 3/5] perf trace: Auto-assign kernel symbol beautifier to function pointer fields Date: Mon, 24 Aug 2026 09:31:20 -0400 Message-ID: <20260824133122.751733-4-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260824133122.751733-1-atomlin@atomlin.com> References: <20260824133122.751733-1-atomlin@atomlin.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0344.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18d::7) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|CW1P123MB8950:EE_ X-MS-Office365-Filtering-Correlation-Id: 583ffec3-186b-4238-500f-08df01e40098 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|1800799024|7416014|376014|56012099006|10067099003|6133799003|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: zS51VEJqG5IZeo6Bt2sCq2pki1YBnxz2hY0cmFsn+RHAUqIORhEzMh6vPdFIuXz0cW/rKN3JXjPPi7TUhGTM35hQstvop3/F3RBCzrurPZTcwXwYk4p3p8FTSpIGMoLyssQ2k7J/CCIasTPhc5hhzG+a5GhnpHGLfePLlHwldDDjavKOgrwwOuR3zfDlP0dFTgaWzDem0MV/pK2GbJmWej3CMNRwlf7vKYklS9PAva8lIPNIGcvDLK4Vp1LC5uqCLzQ+tGUSGcCg2gD94h2jw11bIpw4zBYkeLP5Ks6zvKtwdeallILXq/0+kawJXV2pMATgDxCStXa6H62uDHncaLmeQVaBoxQSzvBicWGyrMEi608Sttr+Iiz6D7+/bpk8dYqayeRV16ubu1sblBK2/7dgtF7MCMcOg+LOKSGRsHj4H8VCKBxVTj62sSqTcRsXHSpUt/zbjERAY/7TfO4BDPcuOt29wWYwAfv++PQC0UQd5wXcVPeajaaKoswm2PsY09clD9aT68kzMauFxOGkpNP5QepFbQDuyUW3JjHGh56qT7u+ZPkre/3pK3ZL6b+ceSf0sEqQbqPctnHqdHO5pZ4Fo5/9Nl7lK+uZMdcEyggr1+q3vncLoeFrkFnbpbnUeqHBwc/4Ay3dPaGM3yfoaHDQwGGnau2W/LCIN0H4lMI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(7416014)(376014)(56012099006)(10067099003)(6133799003)(3023799007)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?THlCdDEvdTcwT1crNW95Z0d2bStoNVBJYnN5b1d3L283V3VYY0ROY3FMRkYv?= =?utf-8?B?c3U1cXpONjNvNDBieUx3UFNPN0VVWnc3a1hqSW1TcE11bzJMOGlkblhoNDdM?= =?utf-8?B?K0IyM1VPbDh6UGdpakNRZThRVUtwTGVWQkQ2K3I1WHpBZjlqYXp1QVVjTFho?= =?utf-8?B?dVlmUlVHbVJrZDlCcUFPa2Y5c0RQY3VRNW0yRkREbWxVOWVhSU9Ua1ozWTVY?= =?utf-8?B?bHV6VG1zRUdRcGN4UTBLanVTb3VZRGdJekVRY2N6WURZK1dNbVhBbWdPdS8z?= =?utf-8?B?ZXBlSkYvdVcySE13TFVNcHp5K1NiSUhacWRGczE1bGR4UjV6WndTd0ZOZzlL?= =?utf-8?B?SytwTlhsUkRZWStRVlRWK21pS3ExemJGVGRoL3g1TDh2VDdhWlZlVTFRRjVM?= =?utf-8?B?cXNwdjRqVFVaQ21jVVVJNndTWU9vNFJHeGVCZmZmN0JXaTRxUFV0OENUeno3?= =?utf-8?B?YWhha2RISkRhRk1tUEVuR1p6NVlmdnpXODA5cklzRStOVktyalVjNmNYcHht?= =?utf-8?B?d25idDYxQjk5NkkxTzdMSkpFWHpCY0RDd2V4UjNCU09KWnBtM0tnL3U4blc3?= =?utf-8?B?TVdlNXRSUjZWWXpyemMwQm55d0JHWFlaZW13aFhCcjRpdjM0eUhrOWNJTnJF?= =?utf-8?B?c1k4NWZhQlQ0SWpiaXpzR2xMMkNMcFVQR2ZCTlYyd1VjYnI4ZXZnbXlWczhR?= =?utf-8?B?cTF5d1pTUE9ZR29FUTFMT294YjFQY0E4L3NpQzV3dTRBVlNLcU9sYy8xNVlF?= =?utf-8?B?M3daOVgyTXVYOXp3RTZSVDRwYXowcnU4R1BpY2ZEV1o0Y1BHQ0cwdkpsOUhL?= =?utf-8?B?MWZVZk5aT0NGdUZBdks2YlVXSmV2QUxoL2x3a0ZGRk1meXM5aGpwSXVnb20v?= =?utf-8?B?MmNNZ0pUYVFWQmd1V1FqY1hIOWswcXBnMFc2N0ZtL0wrRlVDMVBOVFpxS0Y5?= =?utf-8?B?cVBVSWVpMmNpY3BrNC9QbjNqdXRzWW9MWUcrUWlYWmdDdUE0d2o2dUx4R0Y0?= =?utf-8?B?ZHlOZTlFQnJ1SUNpdWt2MUYrWFFEbWVxTjZoZHZhMS9ONkdTcmhlMXlhTDhF?= =?utf-8?B?a2l6Rmt5b3R4djVqV0RLYmpFQ3MreU5oSkh4RXBFYjVQN2Q4WjUxRlZ1SFhl?= =?utf-8?B?ZGovOWZmZUpzOEtwaEJ4UnNESFhEZTkvNlFYVjAxN281MDkyOUFtbXpNbElJ?= =?utf-8?B?RS9vbG80OThxNTA5QkNoSUJ5WXFJcWMyUktXUnpGUGF5NnU5Q2tjUDZJN3gy?= =?utf-8?B?Y3k3NWdWdjhITzhoL0VVUlZ4REpzZXJlV2JuRENubVNJQld4MzVDSjVMRjU5?= =?utf-8?B?aWg2YWRGTCt0K3d6YUE5UndtajIyN2o5RmZRdGg1Y1NWY3U3MmlGWUJpVU9O?= =?utf-8?B?MGRZL1htZWk0UjMzaDBwL1YyazBuemVmNHd0VG92RzRCeFZNdjhKdys5c3Fa?= =?utf-8?B?OTRnUjVtT2piMFN4ZmJyS0xYNmpZOUkvSEpoQ3E3bTE5YUY3bXlNUy9KTTEz?= =?utf-8?B?WDd6OU9pcmI0WVVjNm5WaDFISjNQdGNmc0x2OFQyc3JmTHc5cDFlemRmbFQ3?= =?utf-8?B?WWdtTGNtTmVKRFBsZ2lobUdWa0MzeU40K2R4bVpReG9xUlNnNGlobmNwNm5B?= =?utf-8?B?WHl3Tk0zR3NSNzRJWEFzSGVFbFE0ak1lQ1BtUDZTV1FrcFlkbnJQb0w3Sjdr?= =?utf-8?B?ZGNOOFZLc2ltQm9CQURQZFFyODFqa0hZdTVoSzU3QWR6d0JVWnlzNjc5MC9w?= =?utf-8?B?R3doL2ZuR05ObHpzYXdtWVdidTN1dk01N1BqTTN5bFZKZGgyQ2ZYTDMrYy82?= =?utf-8?B?WVNDZkNPdjgwSHZSRU82N2VRK3pCSUNBMUsvMVRtU3hZK1lTUXFZNUJPK0NR?= =?utf-8?B?QkZjcHFIcE45aW90MCtjTEFwQjZmcXBPUE1RWHg5RDhIdENLeVhjZDdOVXps?= =?utf-8?B?SUR0WWxHNE5aL0RnV2RXaE94YUNweER0M1A0aTlJbzkxY2lHS2QvdEdRcTQ0?= =?utf-8?B?ZWhTYWdsbUNpeHI0UktzTnI0R3BndVBVNmhrUHlqTjhNSGVkRlVzbmg2dnYw?= =?utf-8?B?aXROWFBsMXJFTjJDbjBaREdmSzF1QUlleDdsMXBQekZhTDVrL0hKMmw5TUkz?= =?utf-8?B?RHdWRlRsUEFEVWsxblNrYTRsTTVRZjZoTnpYbzFCVW9ueVVJeWQ2ZjdqbnZV?= =?utf-8?B?ZEp5THV2bDBJakg3V2dQbnpXRlpEWCthclhTVWFlWnY5d0JVK0svK0QyMEEy?= =?utf-8?B?NzJMaFNENGNTc0J5RnZ3b0lIdjBLa1BZcnlRcEJ0UmR0R0tkZjY4SW5yWG5K?= =?utf-8?Q?0VmtYiWetR98LDbkly?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 583ffec3-186b-4238-500f-08df01e40098 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2026 13:31:28.5412 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0zKFipBNEIw8WBcx1USl6Tb3PmCqQLdaHjInflVIYCAKjqMKhuTvylCV3qojx9bsgNIb2OvQRDnFhwj/j41E/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CW1P123MB8950 Tracepoint fields that convey kernel function pointers, callbacks, and call sites, such as "function", "func", "fn", "callback", "action", "handler", "caller", "caller_ip", "location", "callsite", and "call_site" are currently formatted as generic hexadecimal pointers by default. Enhance syscall_arg_fmt__init_array() to automatically detect non-array function pointer fields by type signature (e.g., typedefs ending with "_func_t" or "_fn", or C function pointer types containing "(*)") and assign SCA_KSYM as their default beautifier. Additionally, register common function pointer and callback field names within the sorted syscall_arg_fmts__by_name lookup table. To prevent misclassifying dynamic string arrays, enums, or standard non-pointer integers sharing generic names, guard SCA_KSYM assignment to true pointer fields and pointer-sized non-array scalars (via field_is_ptr_sized(), field_is_enum(), and field_is_plain_int()). This ensures enum fields continue falling through to BTF pretty-printing. To support cross-architecture analysis (e.g., analyzing 32-bit trace data on a 64-bit host) and 64-bit instruction pointers, determine target pointer size via tep_get_long_size() while also supporting 64-bit scalars. This ensures tracepoint arguments such as workqueue:workqueue_execute_start.function, csd:csd_function.func, and xfs:xfs_bunmapi.caller_ip are symbolised automatically without requiring explicit per-event configuration. For example: =E2=9D=AF sudo tools/perf/perf trace --event workqueue:workqueue_execut= e_end --max-events 2 --show-cpu 0.000 [000] kworker/u32:15/236682 workqueue:workqueue_execute_end(= work: 0xffffffffab2f1420, function: toggle_allocation_gate) 0.132 [000] kworker/u32:15/236682 workqueue:workqueue_execute_end(= work: 0xffff8ac2c1adc010, function: flush_to_ldisc) Signed-off-by: Aaron Tomlin Reviewed-by: Ian Rogers Tested-by: Ian Rogers --- tools/perf/builtin-trace.c | 113 ++++++++++++++++++++++++------------- 1 file changed, 75 insertions(+), 38 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index effb00117bff..f6ab7dabfa4c 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2098,6 +2098,18 @@ static int syscall__alloc_arg_fmts(struct syscall *s= c, int nr_args) } =20 static const struct syscall_arg_fmt syscall_arg_fmts__by_name[] =3D { + { .name =3D "action", .scnprintf =3D SCA_KSYM, }, + { .name =3D "call_site", .scnprintf =3D SCA_KSYM, }, + { .name =3D "callback", .scnprintf =3D SCA_KSYM, }, + { .name =3D "caller", .scnprintf =3D SCA_KSYM, }, + { .name =3D "caller_ip", .scnprintf =3D SCA_KSYM, }, + { .name =3D "callsite", .scnprintf =3D SCA_KSYM, }, + { .name =3D "cb", .scnprintf =3D SCA_KSYM, }, + { .name =3D "fn", .scnprintf =3D SCA_KSYM, }, + { .name =3D "func", .scnprintf =3D SCA_KSYM, }, + { .name =3D "function", .scnprintf =3D SCA_KSYM, }, + { .name =3D "handler", .scnprintf =3D SCA_KSYM, }, + { .name =3D "location", .scnprintf =3D SCA_KSYM, }, { .name =3D "msr", .scnprintf =3D SCA_X86_MSR, .strtoul =3D STUL_X86_MS= R, }, { .name =3D "vector", .scnprintf =3D SCA_X86_IRQ_VECTORS, .strtoul =3D ST= UL_X86_IRQ_VECTORS, }, }; @@ -2173,6 +2185,29 @@ static bool field_has_hex_fmt(struct tep_format_fiel= d *field, int len) return false; } =20 +static bool field_is_enum(const struct tep_format_field *field) +{ + return field->type && strstr(field->type, "enum") !=3D NULL; +} + +static bool field_is_plain_int(const struct tep_format_field *field) +{ + if (!field->type) + return false; + + return !strcmp(field->type, "int") || + !strcmp(field->type, "unsigned int") || + !strcmp(field->type, "u32") || + !strcmp(field->type, "s32"); +} + +static bool field_is_ptr_sized(const struct tep_format_field *field) +{ + int ptr_size =3D tep_get_long_size(field->event->tep); + + return field->size =3D=3D ptr_size || field->size =3D=3D sizeof(u64); +} + static struct tep_format_field * syscall_arg_fmt__init_array(struct syscall_arg_fmt *arg, struct tep_format= _field *field, bool *use_btf) @@ -2200,38 +2235,49 @@ syscall_arg_fmt__init_array(struct syscall_arg_fmt = *arg, struct tep_format_field ((len >=3D 4 && strcmp(field->name + len - 4, "name") =3D=3D 0) || strstr(field->name, "path") !=3D NULL)) { arg->scnprintf =3D SCA_FILENAME; - } else if ((field->flags & TEP_FIELD_IS_POINTER) || strstr(field->name, = "addr") || - field_has_hex_fmt(field, len)) - arg->scnprintf =3D SCA_PTR; - else if (strcmp(field->type, "pid_t") =3D=3D 0) - arg->scnprintf =3D SCA_PID; - else if (strcmp(field->type, "umode_t") =3D=3D 0) - arg->scnprintf =3D SCA_MODE_T; - else if ((field->flags & TEP_FIELD_IS_ARRAY) && strstr(field->type, "cha= r")) { - arg->scnprintf =3D SCA_CHAR_ARRAY; - arg->nr_entries =3D field->arraylen; - } else if ((strcmp(field->type, "int") =3D=3D 0 || - strcmp(field->type, "unsigned int") =3D=3D 0 || - strcmp(field->type, "long") =3D=3D 0) && - len >=3D 2 && strcmp(field->name + len - 2, "fd") =3D=3D 0) { - /* - * /sys/kernel/tracing/events/syscalls/sys_enter* - * grep -E 'field:.*fd;' .../format|sed -r 's/.*field:([a-z ]+) [a-z_]*= fd.+/\1/g'|sort|uniq -c - * 65 int - * 23 unsigned int - * 7 unsigned long - */ - arg->scnprintf =3D SCA_FD; - } else if (strstr(field->type, "enum") && use_btf !=3D NULL) { - *use_btf =3D true; - arg->strtoul =3D STUL_BTF_TYPE; + } else if (field->type && !(field->flags & TEP_FIELD_IS_ARRAY) && + (strstr(field->type, "(*)") !=3D NULL || + strstr(field->type, "_func_t") !=3D NULL || + strstr(field->type, "_fn") !=3D NULL)) { + arg->scnprintf =3D SCA_KSYM; } else { const struct syscall_arg_fmt *fmt =3D syscall_arg_fmt__find_by_name(field->name); =20 if (fmt) { - arg->scnprintf =3D fmt->scnprintf; - arg->strtoul =3D fmt->strtoul; + if (fmt->scnprintf =3D=3D SCA_KSYM) { + if ((field->flags & TEP_FIELD_IS_POINTER) || + (!field_is_enum(field) && !field_is_plain_int(field) && + field_is_ptr_sized(field) && !(field->flags & TEP_FIELD_IS_ARRAY= ))) { + arg->scnprintf =3D fmt->scnprintf; + arg->strtoul =3D fmt->strtoul; + } + } else { + arg->scnprintf =3D fmt->scnprintf; + arg->strtoul =3D fmt->strtoul; + } + } + + if (arg->scnprintf =3D=3D NULL) { + if ((field->flags & TEP_FIELD_IS_POINTER) || strstr(field->name, "addr= ") || + field_has_hex_fmt(field, len)) { + arg->scnprintf =3D SCA_PTR; + } else if (strcmp(field->type, "pid_t") =3D=3D 0) { + arg->scnprintf =3D SCA_PID; + } else if (strcmp(field->type, "umode_t") =3D=3D 0) { + arg->scnprintf =3D SCA_MODE_T; + } else if ((field->flags & TEP_FIELD_IS_ARRAY) && strstr(field->type, = "char")) { + arg->scnprintf =3D SCA_CHAR_ARRAY; + arg->nr_entries =3D field->arraylen; + } else if ((strcmp(field->type, "int") =3D=3D 0 || + strcmp(field->type, "unsigned int") =3D=3D 0 || + strcmp(field->type, "long") =3D=3D 0) && + len >=3D 2 && strcmp(field->name + len - 2, "fd") =3D=3D 0) { + arg->scnprintf =3D SCA_FD; + } else if (field_is_enum(field) && use_btf !=3D NULL) { + *use_btf =3D true; + arg->strtoul =3D STUL_BTF_TYPE; + } } } } @@ -3299,12 +3345,6 @@ static unsigned char bitmap_byte(const unsigned long= *mask, int byte_idx) return b_val; } =20 -static bool trace__field_is_ip(const char *name) -{ - return !strcmp(name, "__probe_ip") || - !strcmp(name, "caller_ip") || - !strcmp(name, "call_site"); -} =20 static size_t trace__fprintf_tp_fields(struct trace *trace, struct perf_sa= mple *sample, struct thread *thread, void *augmented_args, int augmented_args= _size) @@ -3406,14 +3446,11 @@ static size_t trace__fprintf_tp_fields(struct trace= *trace, struct perf_sample * * Suppress it by default to avoid cluttering the output. * If verbose mode is enabled, ensure it is formatted as a * hexadecimal memory address rather than a signed integer. - * - * caller_ip and call_site are also expected to be instruction - * pointers and should always be represented in hexadecimal. */ is_probe_ip =3D evsel__is_probe(evsel) && !strcmp(field->name, "__probe_= ip"); =20 - if (is_probe_ip || trace__field_is_ip(field->name)) { - if (is_probe_ip && !verbose) + if (is_probe_ip) { + if (!verbose) continue; =20 printed +=3D scnprintf(bf + printed, size - printed, --=20 2.55.0 From nobody Mon Sep 28 08:45:54 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020115.outbound.protection.outlook.com [52.101.195.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E846932D0F5; Mon, 24 Aug 2026 13:31:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578310; cv=fail; b=Jm3QP5tZKoY8IzSVJCb13hfBi4opSaY81IFoFHUprrivl2CM4WeOrnfzvoArPxBU7H6XSVans0PE7b/+2oqAh1jYIEPbos3CKxGYZzvNwBHRko7gRAURc0kt5bkaOE1Q/j4VMkIhq5AG5swq4kgFIg7XIxj8+0ho6r78caZlVJ0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578310; c=relaxed/simple; bh=QwZFUAFRL7Mh6DnXPYwthFfujT/FI2acRjj7v/1z0lU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=aNQjMFw4dfTb0zcjpkpCR5Yk7D7xuaAY4JInrpvUP4kqlXp63uYcBw34PsFj4UpoXLRj7l6QYKhgMIMWMnM17G94K8L42MRZfSwli62rWpCIqct2i65Ld3s/6+kkSzaA7FtV6Q/W7sRNJdD7RrzSr2VdKj5QLbhilNU3mGWoGno= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Pxq8EN8ZjsbThM7rwy3lAbFtKNtXuJMxha7xv29Rf0HvIUB8ht5mdknD7rsWfd+PS3SFZeD5z+6vLMGb8oGw3HygiDQpPbrggIhadsM9CMDzqIiJLJmw1uMTY9uohqK66TvbSW1L54CCHyMxFzgphsB1Lr0cbB7Z5p23hQpb2QRIx1FC/+OBs/nxg8zVAA93vJb378WxG5midsfYiwEtQo5IqzI9Znp8gef7cCNUlcHWoqtLUc3GIIQE4w9twNroyKXoWkLSMLBuI8KCDaOKKhszxh7jvJfWa9+pp0mOpC44Win50rPoDIDbIe080LsA3ci1cVz9R7WjPVW7AG5KIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=gv7KmC83NV3VfdIm1XBSe72SBEBPShf9LSRZRdOZy6M=; b=HjsMfxENRqqJK0uUQ0n/PXZeEfIDaiqh+zRCozuk0XbiliS1N1tPKITexlSKN+QTcKH4dsKpK93cQPWt1d2BNqJduurEFRyaB5uoxfg3mZENuzwW0KiojATzn1nFBeuLYS84kYxcYG0RqQHUE0lafTJ1xU2gn6ykmPDP1YXfLmQEZjGtJ3pH2jGc3G7ZMclN1fOuwQRoGg/HPYr2kKOLjf5JkvwtNOhtYAJuiAzLfFeJPUr+ZcT0jr06OHkDNhXfZnPT40gCGGM9l3JNF9raN3AfQ7jJpDxbhOvWZZ5xxS0cNnjaOlvzjCBDOr9TEiOIAr71tyYyKqUIe2YVuR22Ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by CW1P123MB8950.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:271::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 13:31:29 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0339.012; Mon, 24 Aug 2026 13:31:29 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v6 4/5] perf trace: Enhance BTF type formatting to symbolise kernel function pointers Date: Mon, 24 Aug 2026 09:31:21 -0400 Message-ID: <20260824133122.751733-5-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260824133122.751733-1-atomlin@atomlin.com> References: <20260824133122.751733-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0257.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:37c::19) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|CW1P123MB8950:EE_ X-MS-Office365-Filtering-Correlation-Id: 5efbee5a-0afc-44b7-f59e-08df01e4015f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|1800799024|7416014|376014|56012099006|10067099003|6133799003|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: sVOJAu5VwxZMnf1+R9VrFuY8RVEVg4rw4tu29dqPdhmlXJcRhi//LdZJ7vR8lhIdP11/ZXfQKf3vCMhmLWWOHLSriqy2X+CJ055yj14c36SngRhM48wRwC28pUsRqiazV0Hw+MwVhetJGVXaQCo52zaG/WF3mkF8otKuhv4Pcp6T+4L7bYAxJvCYZi+GHVQjN8qrffx4VEJdm3hfpNd/5FoQ9I51EMIyv8UlS4c43+29/N1aa1f4+N52sQXVItC8BF+BcO4Zya5+myM1geeu7RZmBfj0pBYpirmM5me4E4EjcoVfrSq21RfI+HoIaIBGNFNg2bCfwQQbhStz3nNSuxqNj6/53fiGT02K7kMGxkswuWdK+gCSwyWKOSq82fn0nl75K1fh0f5EaWA9kzsjUNBfukoMrlK4xr17sxkDakVK3hcuxX6zxKgDZ7pxqpc41b76P4gvOtPlFqO8pF7+IlvttHPXqhGEBkMNhxkkwitjaledK+A/OkFkW317+/l+qWvLS3HxYf5Nmj6iwYVFqKr84L39Rc2bZQGjzPtn1fSRQqmHhcV5omT56vxVjMD1V+3Vb8UM1+ACinv+N3gJPGcTLhdtCqxJQ3ikRYBaJgxWLPS0Lt67vqbXwLjWXEFWL1IxNSQgh86bunX9uv+KUbtRD7SLDDVuV6OYbEBBI6w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(7416014)(376014)(56012099006)(10067099003)(6133799003)(3023799007)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cV4ddjFOJBhlo+4E8KmD4jatMhjulaJohK5MaQfaU6+O0l8xXEhD9+dnVneu?= =?us-ascii?Q?QzEg1sohP8xIw8OJfycYIqJYarHVg6czYb8pNgEgMxGd63m639MhSQ1YRsSG?= =?us-ascii?Q?uFDm7y00MjlSzG9Mbgkrd0sD7x67D9D5rF2X6rOJN3TEZJgHemW+XhM97JkJ?= =?us-ascii?Q?KcI6LdfHQdCit6fXII+7AdFCNPVEhpf6cnjpKJ9X4Mu9QcxYruxvzu7PpsML?= =?us-ascii?Q?r6YCNFqEbSuZ5RcTGta9F1y7pJUfYpdlDbh9W526tfP/uoTmBiTHehbmGAyo?= =?us-ascii?Q?7DSOWcgEBcLodQA6wBY6QpwkOlBb18iQeyW9qNQmdknjNb97SuYBQ9fbJHJ8?= =?us-ascii?Q?PercJg1eVLViVEkeGJs7qtx6TWz40ONrRcjwmWmarvbAmQUGwXSgda/vAr6+?= =?us-ascii?Q?jUk/aiYaLp4CB07ABmxucInmtWtYrpGnXHHAGiI1Sio+Gh+f59CHQQxRP0Gu?= =?us-ascii?Q?iB1butT6XUEicVLu3EvkZsIEeM0BK6YVH/1Z9Xw2H12ntaTuID7/vmWIcwGC?= =?us-ascii?Q?8+fV7wVHnZBsh0rCsPb3ZxaczBVHoXRji3jLQMSywl3+GLzDKYv7LJe5gWSb?= =?us-ascii?Q?aqAgWrNOSMnp3wHIq2qHXzN5wyzgu7OVpXWHwsU/ABREPOURB9cxOa28yNia?= =?us-ascii?Q?G6nnKvGx/Z5ltbOOh2EPawpn3j1AyoukRJjSUBb9ZT1vZOo+26jVgKP2e5r9?= =?us-ascii?Q?foPHaE905xLJdj0/Iy7KvlGVWj/ANE9oI6Va68MBujBB34TJ7W1/29Rq5Y8y?= =?us-ascii?Q?YDTg+pDl3AyH7/GHjWpEO6WI5HIUTl4rMSxDeNcCgHJ0efmnqbxqCXcGxl3M?= =?us-ascii?Q?2a/bfe2UT4schHFvU0oajAg4bXxGeWjgu4f9OFAbwePOelHhSKvynV5f4HUm?= =?us-ascii?Q?d5tZwEKNdSxa0kLmDugxH7IG5H24ZehxKcYMtw1p10JwAJGE+ldgSavrU2SZ?= =?us-ascii?Q?dj6PihVonXlXS4JdH9aS/ONXtxo942aIIhtNz2G2lkFoBcJ2xQDai0Q1Vkap?= =?us-ascii?Q?VwZki0mNw94v+xHzrapON5o6CwEyrra0uJEjjfkiwdalFLqVKoDJyMWMW+zB?= =?us-ascii?Q?AUfro+SKdhW5ftvy1lnHuPnQNZIf510OA6+uDjd2IMmPSMscSWMEuumKy1nA?= =?us-ascii?Q?uZ3L+TrGeBvluanwcZXu3Or0zykkQ5Fef2o584nm0KGTJIQrFNpndDiKc7kC?= =?us-ascii?Q?yi6Wi302eRcZcXCFMGwGfsEoSNOJpG2MwjXj/UpF7WKJg49vVhKF/H5JCo/Q?= =?us-ascii?Q?6A0gyYWDtEzTFJGuA7FfOUUugbywqDn8xMFIWL9vSY5j09Vwz7RAwM9cvL85?= =?us-ascii?Q?ILG8dYhEcYp/yFB0g+S/ntPA7f4lOZJEKLbWQvwAJSTgOVBFlmc4XNk+oaVA?= =?us-ascii?Q?iSrxBBC04516eucKAeNwSGGmb8xpD2VrtAj5L3ZP4oUdqNlVwgh1s3G+mvBQ?= =?us-ascii?Q?TLmnHb9hLhrozySHXANkZzR49yduAe2JnD0SjuxVk+CGwEJ1lRWD4qRQao8W?= =?us-ascii?Q?sNYIGdUpW3trc7t4Q0Mweyazp2vMtETKZnUXh/58eOMykyy/A2pF9bBx1OtA?= =?us-ascii?Q?SrCM2+uj1i3SFV6QUVJ40TINb4x3M5AVINbQmqd778qQnKJBn/VsAcM5RXnk?= =?us-ascii?Q?nkjBx6ZcpEvzDQm3N7HMZdz89GR/yXJoMATQA8I9OONAFoa4WqyE5kaWsrd6?= =?us-ascii?Q?NmF+gL2gRNQ9ZGXdusbMlOQzZqDa0HB0lUkngb5c4pkp5WCQ?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5efbee5a-0afc-44b7-f59e-08df01e4015f X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2026 13:31:29.8648 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0759a8AYJy3bVOmYCPDn6edklkCY2HeGqQuQRbRoj/vWDss5avf3iOxRYQB3UVPN3z6hEKNxJFh/HMnnlMdc9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CW1P123MB8950 Content-Type: text/plain; charset="utf-8" When BTF (BPF Type Format) metadata is loaded from vmlinux, 'perf trace' can inspect the precise C types of tracepoint and system call parameters. However, function pointer arguments are currently not recognised during BTF pretty-printing and default to hexadecimal output. Introduce btf_is_func_ptr() to inspect BTF type hierarchies (i.e., traversing pointers, typedefs, and type modifiers) to determine whether a parameter resolves to a function prototype (BTF_KIND_FUNC_PROTO). Generalise BTF type caching via syscall_arg_fmt__cache_btf_type() to handle structs, unions, enums, and function pointers alike. When a field is identified as a kernel function pointer, trace__btf_scnprintf() routes its value to syscall_arg__scnprintf_ksym(), enabling automatic zero-config symbolisation of kernel function pointers whenever BTF is available. Signed-off-by: Aaron Tomlin Reviewed-by: Ian Rogers Tested-by: Ian Rogers --- tools/perf/builtin-trace.c | 106 +++++++++++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 21 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index f6ab7dabfa4c..d0089230dc5d 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -122,6 +122,7 @@ struct syscall_arg_fmt { #ifdef HAVE_LIBBPF_SUPPORT const struct btf_type *type; int type_id; /* used in btf_dump */ + bool btf_type_cached; #endif }; =20 @@ -979,21 +980,68 @@ static size_t syscall_arg__scnprintf_getrandom_flags(= char *bf, size_t size, #define SCA_GETRANDOM_FLAGS syscall_arg__scnprintf_getrandom_flags =20 #ifdef HAVE_LIBBPF_SUPPORT -static void syscall_arg_fmt__cache_btf_enum(struct syscall_arg_fmt *arg_fm= t, struct btf *btf, char *type) +static bool btf_is_func_ptr(const struct btf *btf, const struct btf_type *= type) { + int nr_ptrs =3D 0; + + while (type) { + if (btf_is_ptr(type)) { + if (++nr_ptrs > 1) + return false; + type =3D btf__type_by_id(btf, type->type); + } else if (btf_is_typedef(type) || btf_is_mod(type)) { + type =3D btf__type_by_id(btf, type->type); + } else { + break; + } + } + return nr_ptrs =3D=3D 1 && type && btf_is_func_proto(type); +} + +static void syscall_arg_fmt__cache_btf_type(struct syscall_arg_fmt *arg_fm= t, + struct btf *btf, const char *type) +{ + char name[128]; + const char *pos; + size_t len =3D 0; int id; =20 - type =3D strstr(type, "enum "); + arg_fmt->btf_type_cached =3D true; + if (type =3D=3D NULL) return; =20 - type +=3D 5; // skip "enum " to get the enumeration name + /* Pointers to enums are memory addresses, not scalar enums */ + if (strstr(type, "enum ") && strchr(type, '*')) + return; + + if ((pos =3D strstr(type, "enum ")) !=3D NULL) + pos +=3D 5; + else if ((pos =3D strstr(type, "struct ")) !=3D NULL) + pos +=3D 7; + else if ((pos =3D strstr(type, "union ")) !=3D NULL) + pos +=3D 6; + else + pos =3D type; + + while (isspace(*pos)) + pos++; + + while ((isalnum(pos[len]) || pos[len] =3D=3D '_') && len < sizeof(name) -= 1) { + name[len] =3D pos[len]; + len++; + } + name[len] =3D '\0'; + + if (len =3D=3D 0) + return; =20 - id =3D btf__find_by_name(btf, type); + id =3D btf__find_by_name(btf, name); if (id < 0) return; =20 arg_fmt->type =3D btf__type_by_id(btf, id); + arg_fmt->type_id =3D id; } =20 static bool syscall_arg__strtoul_btf_enum(char *bf, size_t size, struct sy= scall_arg *arg, u64 *val) @@ -1027,10 +1075,8 @@ static bool syscall_arg__strtoul_btf_type(char *bf, = size_t size, struct syscall_ if (btf =3D=3D NULL) return false; =20 - if (arg->fmt->type =3D=3D NULL) { - // See if this is an enum - syscall_arg_fmt__cache_btf_enum(arg->fmt, btf, type); - } + if (!arg->fmt->btf_type_cached) + syscall_arg_fmt__cache_btf_type(arg->fmt, btf, type); =20 // Now let's see if we have a BTF type resolved bt =3D arg->fmt->type; @@ -1038,19 +1084,22 @@ static bool syscall_arg__strtoul_btf_type(char *bf,= size_t size, struct syscall_ return false; =20 // If it is an enum: - if (btf_is_enum(arg->fmt->type)) + if (btf_is_enum(arg->fmt->type)) { + if (type && strchr(type, '*')) + return false; return syscall_arg__strtoul_btf_enum(bf, size, arg, val); + } =20 return false; } =20 -static size_t btf_enum_scnprintf(const struct btf_type *type, struct btf *= btf, char *bf, size_t size, int val) +static size_t btf_enum_scnprintf(const struct btf_type *type, struct btf *= btf, char *bf, size_t size, unsigned long val) { struct btf_enum *be =3D btf_enum(type); const unsigned int nr_entries =3D btf_vlen(type); =20 for (unsigned int i =3D 0; i < nr_entries; ++i, ++be) { - if (be->val =3D=3D val) { + if ((unsigned long)(__u32)be->val =3D=3D val || (unsigned long)be->val = =3D=3D val) { return scnprintf(bf, size, "%s", btf__name_by_offset(btf, be->name_off)); } @@ -1077,14 +1126,19 @@ static size_t btf_struct_scnprintf(const struct btf= _type *type, struct btf *btf, .bf =3D bf, .size =3D size, }; - struct augmented_arg *augmented_arg =3D arg->augmented.args; + struct augmented_arg *augmented_arg; int type_id =3D arg->fmt->type_id, consumed; struct btf_dump *btf_dump; =20 LIBBPF_OPTS(btf_dump_opts, dump_opts); LIBBPF_OPTS(btf_dump_type_data_opts, dump_data_opts); =20 - if (arg =3D=3D NULL || arg->augmented.args =3D=3D NULL) + if (arg =3D=3D NULL || arg->augmented.args =3D=3D NULL || arg->augmented.= size <=3D 0 || + arg->fmt =3D=3D NULL || !arg->fmt->from_user) + return 0; + + augmented_arg =3D arg->augmented.args; + if (augmented_arg->size <=3D 0) return 0; =20 dump_data_opts.compact =3D true; @@ -1097,8 +1151,10 @@ static size_t btf_struct_scnprintf(const struct btf_= type *type, struct btf *btf, /* pretty print the struct data here */ if (btf_dump__dump_type_data(btf_dump, type_id, arg->augmented.args->value, - type->size, &dump_data_opts) <=3D 0) + type->size, &dump_data_opts) <=3D 0) { + btf_dump__free(btf_dump); return 0; + } =20 consumed =3D sizeof(*augmented_arg) + augmented_arg->size; arg->augmented.args =3D ((void *)arg->augmented.args) + consumed; @@ -1110,33 +1166,40 @@ static size_t btf_struct_scnprintf(const struct btf= _type *type, struct btf *btf, } =20 static size_t trace__btf_scnprintf(struct trace *trace, struct syscall_arg= *arg, char *bf, - size_t size, int val, char *type) + size_t size, unsigned long val, char *type) { struct syscall_arg_fmt *arg_fmt =3D arg->fmt; =20 if (trace->btf =3D=3D NULL) return 0; =20 - if (arg_fmt->type =3D=3D NULL) { - // Check if this is an enum and if we have the BTF type for it. - syscall_arg_fmt__cache_btf_enum(arg_fmt, trace->btf, type); - } + if (!arg_fmt->btf_type_cached) + syscall_arg_fmt__cache_btf_type(arg_fmt, trace->btf, type); =20 // Did we manage to find a BTF type for the syscall/tracepoint argument? if (arg_fmt->type =3D=3D NULL) return 0; =20 + if (type && strchr(type, '*')) { + if (btf_is_enum(arg_fmt->type) || btf_is_func_ptr(trace->btf, arg_fmt->t= ype)) + return 0; + } + if (btf_is_enum(arg_fmt->type)) return btf_enum_scnprintf(arg_fmt->type, trace->btf, bf, size, val); else if (btf_is_struct(arg_fmt->type) || btf_is_union(arg_fmt->type)) return btf_struct_scnprintf(arg_fmt->type, trace->btf, bf, size, arg); + else if (btf_is_func_ptr(trace->btf, arg_fmt->type)) { + arg->val =3D val; + return syscall_arg__scnprintf_ksym(bf, size, arg); + } =20 return 0; } =20 #else // HAVE_LIBBPF_SUPPORT static size_t trace__btf_scnprintf(struct trace *trace __maybe_unused, str= uct syscall_arg *arg __maybe_unused, - char *bf __maybe_unused, size_t size __maybe_unused, int val __mayb= e_unused, + char *bf __maybe_unused, size_t size __maybe_unused, unsigned long = val __maybe_unused, char *type __maybe_unused) { return 0; @@ -2606,7 +2669,8 @@ static size_t syscall__scnprintf_args(struct syscall = *sc, char *bf, size_t size, =20 default_scnprintf =3D sc->arg_fmt[arg.idx].scnprintf; =20 - if (trace->force_btf || default_scnprintf =3D=3D NULL || default_scnpri= ntf =3D=3D SCA_PTR) { + if (trace->force_btf || default_scnprintf =3D=3D NULL || + default_scnprintf =3D=3D SCA_PTR || default_scnprintf =3D=3D SCA_KS= YM) { btf_printed =3D trace__btf_scnprintf(trace, &arg, bf + printed, size - printed, val, field->type); if (btf_printed) { --=20 2.55.0 From nobody Mon Sep 28 08:45:54 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020115.outbound.protection.outlook.com [52.101.195.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D480B31ED81; Mon, 24 Aug 2026 13:31:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.115 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578316; cv=fail; b=IDktZpcptc8w69wM+zVc2zc+3glGfD3+jj4mmVv7CFkVSL8VS00FwFTY4oSwoDci7VSoFqMZ+7QOxBHFBkogsHD06CqnrGNctSXStrHIDEvojNikokx3Gofcv1h8JFfGxPZe+gLpYKlfg4XmQBQLDFeVEG2gP8iBVwIMJ8Nau4A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578316; c=relaxed/simple; bh=hAAVGZR+PkwA5hJspKTiEdfAAeTJZ4xfwFKV0OmU784=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GnmoYHAxEiDjYrL21VjMYlhY/RM2GsdLSUl+XhxvbRL0xy5JF9JSO/yn4c4Qm11EmI005PRWv/34WBcOgy9OZ81rGYZ1Ew3uUrVxp9joyckYSdIRnuaavapbxQIhEKJipU2Q27rMwQ1vdWkP56YZ1RYjTrHvm+Bciod5NVVwSzo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.115 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h6MyGRcUSh1PYlEsH9Qn8r1g1R1SBvbaErsl9JpUTk7bn4Smo/bejeEXNsBFS27e3EGp1tmE+RFSniXFPlWD1ZXq/Vw2jJUqSBZZwP2ISG9zEyLWXTCdKw3R1doKnLUBNHhk46ZlLDtEai/wCnJzoonYMUUOkxGgIoMqS3NwNonggY/3knY7jv4+6mPdJ5HiqNqmXHeXwaEt0sTQ3874QidEt7UUr6sgvMmBfgFE8M8U4gwHCD97Ut/QRlLGhT9FNATvnFSzyXKFrIUJMUpVpfUc0xCcPi17J/NG6a+oZUnbESw9wU25MZJqXxUMPnmgDfjEstCxz2ZNd1Jb7bTp6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=/rNNW+LjIHKLsQ4O23ZzyLYh/Eqed0g3UmN0zD9kUNE=; b=Oci/Ksi/J6GHIf8OdE/b45Y7CuFdzb3+4GfC60qFShnXj3ZpZ44xAtQd2lP43hiW3K9yPhqoW3O0Psh5v4Q8gm8ZWDmYa/T4E7ZrU9JKueaO4A/fYUE860M3W0C3EnltmzxCyqhDA6YEIUIvOUHn5dov8NtLwRIjGlvGUQmQL7qC99eO2oBBhaNyKJXyveapDAPv6YMlBja0u+Zcc5r+TaDR1eHL77Eze11/eDebSc/fWZ1+mPRLIYfc+NYIaIp4wMKLKCdPcpOQ1UhE5rPPBoY/OpttZiGxC7AB/q55AcQ86xMO9NxBIVf2DOXvBgsRBVq5x4U5O52vJ0IhmcEGiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by CW1P123MB8950.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:271::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Mon, 24 Aug 2026 13:31:31 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0339.012; Mon, 24 Aug 2026 13:31:31 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v6 5/5] perf tests: Add shell test for kernel symbol beautifier Date: Mon, 24 Aug 2026 09:31:22 -0400 Message-ID: <20260824133122.751733-6-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260824133122.751733-1-atomlin@atomlin.com> References: <20260824133122.751733-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0401.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:189::10) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|CW1P123MB8950:EE_ X-MS-Office365-Filtering-Correlation-Id: c3243657-cdb2-46d3-86ac-08df01e40240 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|1800799024|7416014|376014|56012099006|10067099003|6133799003|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: IoX/uBx+8/RZG+csmk+8IN7UB0uyW79+5Qm6WbWiB8+kyDzltu00hpL38hEf8Lr52FJT5wRfCYpoLVFxiirZwALe+ohW/sheHbA1CxpLMdLc7iN+Ca/IZWWLLg+kpaOcPWJ+xW2DkRWRsRTfVLzERWYWns7H6G0t0401+THAd6zjUUkdk9/WfRpATcQh4X7yHEnTj3zY9V0yibeoYNQfg4HK5xQ/+91Qj8Vqo9gVSVxgFc7Vp0nzpn5ivVv1VDWBGK/IYb7iM1jwu6WNvld6dfjTQvIxTbufyUrJ5w/v9GVd9AnY4GJMZErDJ2VyzBFXHMY+BcGHEmP9JaQq6HFvcGBLadw4d9IVnxO8hCyUPQ7fVwZk1ymeFwAe+eKsdfU2TzDVSkaTeRTNbAOyhYFUYqg3OC04YgrsHrqQNMjl7Xn5n4O99vgjxZA2VFebIRSDjdTv+pURpE4rgVZ5KDte3O1MbnTIyyoBYzHwiNTcOKVSDywBcT/nAnN/jxmI3/Smsb/WKLXCM9+POG70NmaOWPVHYot3ndGlzL9wANKk/KL+iFKr/AjzQ3SOt8DYgpSFrJEX0jkscllJrtxQNBNCP6faPgfpkUOy9kwyoUrQPNWIyigwZHLc2jPIUxgsjZqYCUsGGFR5um0e8Cf3INgQi1Zfy98ojtywFtKKD2jm5dg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(7416014)(376014)(56012099006)(10067099003)(6133799003)(3023799007)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DlXqrxCgNDr8MQHEyOf9HPe/M2vRn5Z9zQ7vdSAXg3hAv5n4ueZkCmZLjU+F?= =?us-ascii?Q?5LufMuW3Ku1JrOQKugdjCv5LPxaIvv75TfF7RsvTZI9eTAsjX/V60hFhw9x4?= =?us-ascii?Q?hA7E8PZ5mbZnJVyQmDTaSxveRBhyByLYdBPM/FX+so3gqKuG0WPaHsH1LrCz?= =?us-ascii?Q?V8IXF+4v8CCRXmyRIXokOlCWYg8Y/MviWlnHm/hv2zxetPa+He8dK9wYZcMM?= =?us-ascii?Q?FmtzrOVaszUjX2bMdiVm04MMSnf/z5L/pN+OgEuRnrVVV90moZ7mrC5HcpuX?= =?us-ascii?Q?APh6coNaxyJmUklThkby2qij4higYKaJroWWn+Hsmc/SMvsswpeciGOZu3Ln?= =?us-ascii?Q?QEg6BglkqMsjUFm3wwGxz/49w5ZT/2o6YcDpZQ1AASRv8DjrhYdms6L6nR7c?= =?us-ascii?Q?0z0oNa3IiVxz9tMMa+6dA16ye1v+SBG7tS0ZWn6Try4mMO42tlbNPZqbs6wz?= =?us-ascii?Q?cWIlru7o0jR5C2sDujzBjnaSCeRSNpEXqaFx8VvXnst7n7ceDMXzF22HRhOC?= =?us-ascii?Q?d1cPV8eRbFZGba+gYhsWCguWT7wz5XtnN+x0vOSAb38cUKBJXxZ94HJBlDoP?= =?us-ascii?Q?aTAOwXBeXyVH+aqzQgRatxvQE8cZZZGPjpnaDP9JqR9wiMpPxTTmeQEDltPB?= =?us-ascii?Q?mMAN0kBKxMr9ef86RxQvVDRZQCaqj80wHRA90anLZKogGJTTBaNQhCIjA1/y?= =?us-ascii?Q?hboowksfzx08LrsrRg44rPDps4t4EZYby4b3L2as5GctpxJZXA+R9A8Jt4c+?= =?us-ascii?Q?4ImH5noRmnFpbE+ohNP7LV+UtvJofcyze54bfpmUf///gD2H4upAQ1x/KNop?= =?us-ascii?Q?RLuS/TKjsiPnZZY7v81cZzKyDOH961Ovz7PWE7zp5XO4IlAOYv6vO7NP8F6D?= =?us-ascii?Q?KeX3DR5bKB3t3alnp8BQnww5LPadYjX0evgDyGQk/wxZsnFh+xssp3pof+pt?= =?us-ascii?Q?OZAver3ozA3n9LPsReAKRKbMkpU1RDrLigu8nuBpltWhBMH9L/H8MiyPIEsp?= =?us-ascii?Q?KqA+/9EMq+pIZQ20zMagUXEvMXhLqv1NcSGDFEGcI8E2BEUEYp0xTn0cTn7Q?= =?us-ascii?Q?Xm9rYxASmEA9QjugWlhjtM+TgJtRFyVFgRWW5xbEyyHe6A1cySYZ8G3qvhu9?= =?us-ascii?Q?dyCYNBRqRUBE3tBRuo14LQFOORc3LRny+D1XaKIjzcNRPS0v/gM71dIXPObL?= =?us-ascii?Q?tswsiheno/+YYmR4hY1+0p48pgYGEW4AkbMrG/f/ur36xcCeBFHkfL6dsQV9?= =?us-ascii?Q?HnFlrWICj+4oqABW4Q5fKLYHC2VDg9vEwc0TI3MhLfdiLt/4oCWA0uQY5oCt?= =?us-ascii?Q?OYTn8R/Fqlyi8jgwG51rhCuTXOzqSAtJD/JxgWVXHGq0/Z9WDmmD5msMYSc/?= =?us-ascii?Q?TSNIVJJ6hnXNmASBOBJaBn8XdF8/MtpPjYytAtGtXTgyabwpImTDb7p5YGM+?= =?us-ascii?Q?EER+pMfz34SO5wTl+fV3erthNMS6o/5dbk9LZf5TLPLDWiNA3p+rHI+4sWqN?= =?us-ascii?Q?itvhIfEsF2QwREhX7+thxPGdXVTVvAULweH0m+/3BXjd+mbOW7GOMqHrngH0?= =?us-ascii?Q?vqTixN4Tb6rSnmDI6yzi6T9EbIOA42snUBMddwYJMnl6m637Jwyr96PWRa0G?= =?us-ascii?Q?6CE/CldL1oR8UZmjoRUoqd48EQCekDZjGmD4Ecm/JBbE4NFCxsJCiCCqpYFs?= =?us-ascii?Q?livYqDa4kC/n/eCF4Z5UEO+r/MGhbMXYiUavyWPWxT26Cbzx?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3243657-cdb2-46d3-86ac-08df01e40240 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2026 13:31:31.3179 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wuP6QzM8MPwpv2lp5yyeX7dkyWLt2w/UVW/Zr2ojXoL/AsizPnXzZ6tKmZrZnW6f855EaElJsFPHlC2DnFcykg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CW1P123MB8950 Content-Type: text/plain; charset="utf-8" Add a dedicated shell test script, trace_ksym_beautifier.sh, to verify that 'perf trace' properly symbolises kernel virtual addresses (e.g. call_site in kmem:kmalloc) and function pointer fields (e.g. function in timer:hrtimer_start) using the kernel symbol beautifier (SCA_KSYM). Signed-off-by: Aaron Tomlin Reviewed-by: Ian Rogers Tested-by: Ian Rogers --- .../perf/tests/shell/trace_ksym_beautifier.sh | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 tools/perf/tests/shell/trace_ksym_beautifier.sh diff --git a/tools/perf/tests/shell/trace_ksym_beautifier.sh b/tools/perf/t= ests/shell/trace_ksym_beautifier.sh new file mode 100755 index 000000000000..7c441f8551a2 --- /dev/null +++ b/tools/perf/tests/shell/trace_ksym_beautifier.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# perf trace kernel symbol beautifier tests +# SPDX-License-Identifier: GPL-2.0 + +err=3D0 + +# shellcheck source=3Dlib/probe.sh +. "$(dirname "$0")"/lib/probe.sh +skip_if_no_perf_trace || exit 2 +[ "$(id -u)" =3D 0 ] || exit 2 + +test_ksym_call_site() { + echo "Testing perf trace kernel symbol beautifier (call_site)" + output=3D"$(perf trace -e kmem:kmalloc --max-events=3D1 -- true 2>&1)" + if ! echo "$output" | grep -q -E "call_site: [a-zA-Z_][a-zA-Z0-9_]*" || = echo "$output" | grep -q -E "call_site: 0x[0-9a-fA-F]+" + then + printf "Call site kernel symbol beautification failed, output:\n%s\n" = "$output" + err=3D1 + fi +} + +test_ksym_function_ptr() { + echo "Testing perf trace kernel symbol beautifier (function pointer)" + output=3D"$(perf trace -e timer:hrtimer_start --max-events=3D1 -- sleep = 0.01 2>&1)" + if ! echo "$output" | grep -q -E "function: [a-zA-Z_][a-zA-Z0-9_]*" || e= cho "$output" | grep -q -E "function: 0x[0-9a-fA-F]+" + then + printf "Function pointer kernel symbol beautification failed, output:\= n%s\n" "$output" + err=3D1 + fi +} + +test_ksym_call_site + +if [ $err =3D 0 ]; then + test_ksym_function_ptr +fi + +exit $err --=20 2.55.0