Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp3931897rwd; Tue, 23 May 2023 00:07:05 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4fVoS/VL1nhBU/naiYeXvZ1f+0gpUE7CQnokeAlsir75W8L05sy1yE8Oz5opomk1DjoUJc X-Received: by 2002:a05:6a20:2453:b0:104:8045:c952 with SMTP id t19-20020a056a20245300b001048045c952mr11892620pzc.23.1684825625197; Tue, 23 May 2023 00:07:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684825625; cv=none; d=google.com; s=arc-20160816; b=Hc94cGid3Nla9CIPyXX3M3cRQqcNodM++LT4sPeSrmQq3aBUHaXH+wontj7+UIUzj2 YlTfjdUtioRJa5kaGpnf31ov+aoI6//Vj99ktKWaXpw8UyFRWfPS6EDct7bfE6wY2m4b JME9h/otJEPOK5iZxyFvbKPd3GoDYz1dDeis2nSI5WQWuUsebzOSh0aZ32ZhaaAodhSh rKb8bOe6fzBlZ2DUPQeRKfxS329BsILDSBifpNYyKdVL5gMUKSM/yk2JTDhnxxrEL40i 0ZwDCVJjFlFu6jq8J8xFnbHW4pwvML1uYcog9wCa2A0Xpd2ZBHSAfxLPPkFQS8ZGG3SN kBcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=/CIN3k3pgEX900re7PcWc+Ixgh9Bvf8RnAPTzy/Q9qA=; b=BqSxDdisR0DVL3u65HHwaWqzq3f1NodHtykWVZjcRrmOB1xHhuh+UtZ6BMhmn3/HiB mS3jEyJLzM84UT1+NpEqLvaDmGDjnjao96jmYk8K60BtXV8CMDzxX84nBWP4oG6fDRYB IaP2HQx5DRxjZcX9MglDxJ37DbAgN7aWpI79LxZfGxXtKSkTKyaP3qwxCI/mTjxrqE50 f0PLSkJMRgtV9FIYRb1gg+g1kBlmiZvjjwk1nlsCQp8K6Hf/T4XyPrYH0NdXP94ohSHz LtW/8aijERh2dQQLw0Zl8QAFU7a16Ac7CWuTHMTxjk40kjNbdIBGAigaNpympa3H9yZZ 1TNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cvzXNBZc; 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=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v8-20020a63bf08000000b0050be915cebcsi5943716pgf.878.2023.05.23.00.06.52; Tue, 23 May 2023 00:07:05 -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=@linaro.org header.s=google header.b=cvzXNBZc; 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=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230404AbjEWGtV (ORCPT + 99 others); Tue, 23 May 2023 02:49:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230407AbjEWGtT (ORCPT ); Tue, 23 May 2023 02:49:19 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6448411A for ; Mon, 22 May 2023 23:49:17 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-25275edf6caso3199515a91.1 for ; Mon, 22 May 2023 23:49:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1684824557; x=1687416557; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=/CIN3k3pgEX900re7PcWc+Ixgh9Bvf8RnAPTzy/Q9qA=; b=cvzXNBZcONpo9ubWJ3RJzuhpxW2KbOHQ7DyYNvAc6zjsDwkoebi1Cb5OK1Si5f9EkR 7oTDI3fOalzwEfxtNnjihGdUMwDKSXZkE1HxrdBA6wmIpDrDdXEuHHx+k5U8WxTjUW6a mu753zyCxef2tvJdD9aw9+fAS79oQq8BvweBwSgvtEh+sI7C8jHfILbMxxemelnlc3hv TQ76LfGIYbtcp4Xin0+PZPpMPCazlIiSEf0zHBPlJ/lt04cX+mrF/dfXBXOD6CJSsLoI 4UXwZa6kWsBRXaq6cv37NKE/oQi4+8PAY+qFC8UB3Ei+yLADc6sD5PlY57Ui2VfaCgdA FoFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684824557; x=1687416557; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=/CIN3k3pgEX900re7PcWc+Ixgh9Bvf8RnAPTzy/Q9qA=; b=a5gty5l0mtGzaVx5bv65yA3nJmgxW+co1+MuqIJrGQ3y99cvlCL/WRkGS+M4YljCnP eNavmPml3xQ5UT0sxo9lYoC4IcnfK+OUH3hldZhNG63lpbmObA5DDc639tG5SwiT/zxD 4dMjhBXMQk+KN3ADsxU/g9gBavN2j4r1aGrZ+MHZHkldFcvwcu8MGhKJrHUSDijC9ttg GS0ZP4rjXIPojGCGV0ewcNivhJ9h5aTbCLNRHXk2zjw6gqoPlk8q2LUli5mSsieGjiKY Saa68xzH6H98Umi0KDNVTb4V+O3EVk2ueFxVHxQ/4fEmgRQyUS3Kd12ZAxJvvprKydAF lC6Q== X-Gm-Message-State: AC+VfDxII52ZiqKVLNJuLDIkOltvWguLUHe9ChRArOsT+betKIi0X9A3 vQsdzV9xPHQ5VXXcOgnKSWb8pA== X-Received: by 2002:a17:90a:984:b0:253:9548:91e1 with SMTP id 4-20020a17090a098400b00253954891e1mr12132128pjo.17.1684824556586; Mon, 22 May 2023 23:49:16 -0700 (PDT) Received: from leoy-yangtze.lan ([107.151.177.126]) by smtp.gmail.com with ESMTPSA id w62-20020a17090a6bc400b00246774a9addsm7391986pjj.48.2023.05.22.23.49.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 May 2023 23:49:16 -0700 (PDT) Date: Tue, 23 May 2023 14:49:04 +0800 From: Leo Yan To: Ian Rogers Cc: Arnaldo Carvalho de Melo , John Garry , Will Deacon , James Clark , Mike Leach , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Eric Lin , Kan Liang , Qi Liu , Sandipan Das , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v1 2/5] perf parse-regs: Introduce functions arch__reg_{ip|sp}() Message-ID: <20230523064904.GA1969788@leoy-yangtze.lan> References: <20230520025537.1811986-1-leo.yan@linaro.org> <20230520025537.1811986-3-leo.yan@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 On Mon, May 22, 2023 at 11:08:12AM -0700, Ian Rogers wrote: [...] > > diff --git a/tools/perf/util/perf_regs.c b/tools/perf/util/perf_regs.c > > index 8720ec6cf147..334c9a2b785d 100644 > > --- a/tools/perf/util/perf_regs.c > > +++ b/tools/perf/util/perf_regs.c > > @@ -20,6 +20,16 @@ uint64_t __weak arch__user_reg_mask(void) > > return PERF_REGS_MASK; > > } > > > > +uint64_t __weak arch__reg_ip(void) > > +{ > > + return 0; > > +} > > + > > +uint64_t __weak arch__reg_sp(void) > > +{ > > + return 0; > > +} > > + > > Is there a need for the weak function if there is a definition for > every architecture? In current code, some archs don't support register parsing (e.g. arch/alpha, arch/parisc, arch/riscv64, etc), this is why I added weak functions to avoid building breakage for these archs. > A problem with weak definitions is that they are > not part of the C standard, so strange things can happen such as > inlining - although I think this code is safe. Good to know this info, thanks for sharing. > Not having the weak > functions means that if someone tries to bring up a new architecture > they will get linker failures until they add the definitions. Failing > to link seems better than silently succeeding but then having to track > down runtime failures because these functions are returning 0. I agreed that removing weak functions is better way to move forward. If removing the weak functions, we need to handle cases for below archs which don't support register parsing: arch/alpha/ arch/arc/ arch/parisc/ arch/riscv64/ arch/sh/ arch/sparc/ arch/xtensa/ As James pointed out perf fails to support cross unwinding, I will update this patch, the new version's arch__reg_ip() / arch__reg_sp() will return IP and SP registers based on the passed 'arch' parameter; for above unsupported archs, arch__reg_ip() / arch__reg_sp() will return error and architecture developers can extend register parsing in the future. In this way, we also can remove weak definitions, this can give us an extra benefit :) Thanks, Leo