Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp1408393rdb; Mon, 2 Oct 2023 08:40:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGuj+IuoXaKgEaiu5sv+LYtQwrHq8JSusV42Jc1A9LDHECad63PXxPs8HWMa+Ae7y8PaJEY X-Received: by 2002:a05:6e02:1353:b0:34f:fe3c:fd8 with SMTP id k19-20020a056e02135300b0034ffe3c0fd8mr11689893ilr.15.1696261200393; Mon, 02 Oct 2023 08:40:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696261200; cv=none; d=google.com; s=arc-20160816; b=HazJrriy9e3cgNcnYDLvRZGwcPPRbAmw41i1Kika4QsZy8K+4LY89gh8bgH4NAktOw KmF3vrxPLvETGb0OKOLfmBro8GhFCGfHhXDfVG+wQVHh7CJUYPY7dmjZNdLw4w9/rbr7 trtY5rDJc2b4hufFPuLCUkcbnCCogkNWyV9iHHnSy16f5PRfQ7+iOxiIfsh5WpicRkNP P6095sf0yQVaVQPhgPdFI4qmXW7ov7b5cpnrETN8hVNHrq7N8+at3LQ4MKlID/aVcSwi shnFUp8Ld5ZqWywjQDcGhPDEY/IAnR6EuZoJSD6p0UfbiBgI/agfzd83bD1kg3l1FAcn 6GyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=pu4YffMNH9Gv7EKjaz21t/nwZw3F7f1t+IzGd65sfvw=; fh=J4OTfRt4u8segGfPjS1NmBfqqX3CE5ZyNWWRTi5iNf4=; b=q3d4HPOGlOmU41F0UEqEstQq7JbSRNNMRXar6ViA0mBYO23lmgfSUNyK4Sm/1B+E3z /oEX0T1ktZd/cHmM5YZQyT1tDzH/RCrAMARBw9qsifXu+VyOhtd5h+Oj/x3HI1dGhqsi Y/IpgyM8f94+U9w3SW0Fd5NgF1EymM2zKut4aqhdibbQtgV1fcljLYKbIOEtK5pq2RAQ 4ePrJFKka/hmQUEcW9j0O31WKtweQ0v9Clo+aB7VM62KYB5Nn3HQgkY7m/XklWUwvEhw 4cuAOaFAQzg8XkrtT5XgjYul2cjuWXyBMHici+arJdzqRgAFptKHIW1CdfK0M1SGfAdH niMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="P+s/tFcB"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id t186-20020a6381c3000000b005859c6d691dsi8396567pgd.895.2023.10.02.08.40.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 08:40:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="P+s/tFcB"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 6CA56807614B; Mon, 2 Oct 2023 08:27:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238111AbjJBP0y (ORCPT + 99 others); Mon, 2 Oct 2023 11:26:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237928AbjJBP0x (ORCPT ); Mon, 2 Oct 2023 11:26:53 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB27899; Mon, 2 Oct 2023 08:26:50 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B87B3C433C7; Mon, 2 Oct 2023 15:26:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696260410; bh=8IILTKrGQU/hoxa4/QqemlhG1ml9gdsLhVJNcvhGTc4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=P+s/tFcBRWOWCefwZM/YJXvU2QkWHBHx7Uv4ZlXCMglTa9+DhzkDs8c4izlq2FTq6 X2GQJzod5e+/oTemAFeQPspp4zxeM+TZ+9MIRkHkz4BFqcNjxgHFx1aXl5AZgDRe2Y O3JYwqat004rqzOilvO5ZUUllH/d77+fj4vv1gIqwqtiPpzRVk2LBWRjuZjg+PHhr/ DlvljSVs8AseaMUKuDD1sqy/7qOYWIBiENeTo3+opcrqA/u+nZdHfdXD7kZScsHWnL fxFXgOQLeoH3YZKkuQKx3jybs30UXJSJvvnVv32RJyxV7p1nCDtNo4jXi0b88u4dza 4gwzBjXX3hrQg== Date: Mon, 2 Oct 2023 16:26:45 +0100 From: Will Deacon To: Nick Desaulniers Cc: linux-kernel@vger.kernel.org, kernel-team@android.com, Masahiro Yamada , Nathan Chancellor , Nicolas Schier , Josh Poimboeuf , John Stultz , linux-kbuild@vger.kernel.org Subject: Re: [PATCH v4 3/3] scripts/faddr2line: Skip over mapping symbols in output from readelf Message-ID: <20231002152644.GA1519@willie-the-truck> References: <20230914131225.13415-1-will@kernel.org> <20230914131225.13415-4-will@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Mon, 02 Oct 2023 08:27:10 -0700 (PDT) On Mon, Sep 18, 2023 at 08:46:22AM -0700, Nick Desaulniers wrote: > On Thu, Sep 14, 2023 at 6:12 AM Will Deacon wrote: > > > > Mapping symbols emitted in the readelf output can confuse the > > 'faddr2line' symbol size calculation, resulting in the erroneous > > rejection of valid offsets. This is especially prevalent when building > > an arm64 kernel with CONFIG_CFI_CLANG=y, where most functions are > > prefixed with a 32-bit data value in a '$d.n' section. For example: > > > > 447538: ffff800080014b80 548 FUNC GLOBAL DEFAULT 2 do_one_initcall > > 104: ffff800080014c74 0 NOTYPE LOCAL DEFAULT 2 $x.73 > > 106: ffff800080014d30 0 NOTYPE LOCAL DEFAULT 2 $x.75 > > 111: ffff800080014da4 0 NOTYPE LOCAL DEFAULT 2 $d.78 > > 112: ffff800080014da8 0 NOTYPE LOCAL DEFAULT 2 $x.79 > > 36: ffff800080014de0 200 FUNC LOCAL DEFAULT 2 run_init_process > > > > Adding a warning to do_one_initcall() results in: > > > > | WARNING: CPU: 0 PID: 1 at init/main.c:1236 do_one_initcall+0xf4/0x260 > > > > Which 'faddr2line' refuses to accept: > > > > $ ./scripts/faddr2line vmlinux do_one_initcall+0xf4/0x260 > > skipping do_one_initcall address at 0xffff800080014c74 due to size mismatch (0x260 != 0x224) > > no match for do_one_initcall+0xf4/0x260 > > > > Filter out these entries from readelf using a shell reimplementation of > > is_mapping_symbol(), so that the size of a symbol is calculated as a > > delta to the next symbol present in ksymtab. > > > > Cc: Josh Poimboeuf > > Cc: John Stultz > > Suggested-by: Masahiro Yamada > > Signed-off-by: Will Deacon > > --- > > scripts/faddr2line | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/scripts/faddr2line b/scripts/faddr2line > > index 6b8206802157..20d9b3d37843 100755 > > --- a/scripts/faddr2line > > +++ b/scripts/faddr2line > > @@ -179,6 +179,11 @@ __faddr2line() { > > local cur_sym_elf_size=${fields[2]} > > local cur_sym_name=${fields[7]:-} > > > > + # is_mapping_symbol(cur_sym_name) > > + if [[ ${cur_sym_name} =~ ^((\.L)|(L0)|(\$[adtx](\.|$))) ]]; then > > Thanks for the patch! > > I'm curious about the `|$` in the final part of the regex. IIUC that > will match something like > $a > Do we have any such symbols without `.` suffixes? tbh, I just blindly followed the implementation of is_mapping_symbol() at the time, but Masahiro has since pointed out that it's been significantly simplified so this regex should get much more manageable in the next version. Will