Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp6948943ybl; Wed, 15 Jan 2020 12:53:27 -0800 (PST) X-Google-Smtp-Source: APXvYqxlpQyABN6BsUDNiORP/w7ADqq6MPQTfTDnEhQQOqqh7czzn+MeEBI5Mj3EIU6j0wuOD07Q X-Received: by 2002:a05:6830:44e:: with SMTP id d14mr3956749otc.228.1579121607605; Wed, 15 Jan 2020 12:53:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579121607; cv=none; d=google.com; s=arc-20160816; b=XNHMYWPAIy5tlawmD7w6AALR8aNaRKcZqEWueiHjOIf6MWPouEto0MgxzyT3g1xGW/ zZkPQcToVfgI4BmA0ASuCymg5yUDzvK6gQUC4wh7BbKXUQ/j7Fe8SHn/OoScwDpEtrBb +1gN8u3OvviEpaK3fgwOqlHNoqFalpVuipn0/MDpg/9Shj1bZDUFRmZDAJvdJLL9EufE OHhU44PxGHgWY5dFcpitJ6d6sZggG9gmd/pRcs2BLHaDdpjpkXg+qc0OdPxPbOkLQL/o Sx/opgxS/o9Ry1SDaspZ+TgfiivnLl8cZAZUN3uS/4JRQ9ZxbK1tSQKCKwMtuvJaDPhn GCxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=7B161ZRvJStEYwAyDZ2mPncqvl05r9e9MoIyv95i/64=; b=Pl/B91a4k9B2F5hwvltX9UMvJjYIaU4bjS4crEmH7PeO14mdsyxCDqLAgv2afvKS3N +ogdCQ80MSWmhrVp+vP/2KSt1yphKGenmv2SNs7+Tva09CEyxj6AuXX8U/41N6EZ/SX7 sz+YKUE318lLCyl1iQgIduOPCJiA2RXOevk+pDJ3btfxvBIdyuj5BJiP1QdvFUV4LzN1 8ROjinrxDfT3gwirFeB/mcy7sNE0WiVdlVyRvuU5HnHSlZtSwjnRaa67HZSfMenxpcJe VzuHBwoA7KUHHJtr+Ole5/Q8eR7rPpJ8Mua5m5+UgB5FGttMMDg2wvnIUWjA9io6g6jC fBnQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a9si10265609oib.59.2020.01.15.12.53.15; Wed, 15 Jan 2020 12:53:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729345AbgAOUq5 (ORCPT + 99 others); Wed, 15 Jan 2020 15:46:57 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:50689 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729291AbgAOUq5 (ORCPT ); Wed, 15 Jan 2020 15:46:57 -0500 X-Originating-IP: 79.86.19.127 Received: from debian.numericable.fr (127.19.86.79.rev.sfr.net [79.86.19.127]) (Authenticated sender: alex@ghiti.fr) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id BA33EE0002; Wed, 15 Jan 2020 20:46:52 +0000 (UTC) From: Alexandre Ghiti To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Stephen Rothwell , Alexei Starovoitov , linux-next@vger.kernel.org, Zong Li , Palmer Dabbelt Cc: Alexandre Ghiti Subject: [PATCH] powerpc: Do not consider weak unresolved symbol relocations as bad Date: Wed, 15 Jan 2020 15:46:48 -0500 Message-Id: <20200115204648.7179-1-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 8580ac9404f6 ("bpf: Process in-kernel BTF") introduced two weak symbols that may be unresolved at link time which result in an absolute relocation to 0. relocs_check.sh emits the following warning: "WARNING: 2 bad relocations c000000001a41478 R_PPC64_ADDR64 _binary__btf_vmlinux_bin_start c000000001a41480 R_PPC64_ADDR64 _binary__btf_vmlinux_bin_end" whereas those relocations are legitimate even for a relocatable kernel compiled with -pie option. relocs_check.sh already excluded some weak unresolved symbols explicitly: remove those hardcoded symbols and add some logic that parses the symbols using nm, retrieves all the weak unresolved symbols and excludes those from the list of the potential bad relocations. Reported-by: Stephen Rothwell Signed-off-by: Alexandre Ghiti --- arch/powerpc/Makefile.postlink | 4 ++-- arch/powerpc/tools/relocs_check.sh | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/Makefile.postlink b/arch/powerpc/Makefile.postlink index 134f12f89b92..2268396ff4bb 100644 --- a/arch/powerpc/Makefile.postlink +++ b/arch/powerpc/Makefile.postlink @@ -17,11 +17,11 @@ quiet_cmd_head_check = CHKHEAD $@ quiet_cmd_relocs_check = CHKREL $@ ifdef CONFIG_PPC_BOOK3S_64 cmd_relocs_check = \ - $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$@" ; \ + $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@" ; \ $(BASH) $(srctree)/arch/powerpc/tools/unrel_branch_check.sh "$(OBJDUMP)" "$@" else cmd_relocs_check = \ - $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$@" + $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@" endif # `@true` prevents complaint when there is nothing to be done diff --git a/arch/powerpc/tools/relocs_check.sh b/arch/powerpc/tools/relocs_check.sh index 7b9fe0a567cf..783281b75d9d 100755 --- a/arch/powerpc/tools/relocs_check.sh +++ b/arch/powerpc/tools/relocs_check.sh @@ -10,14 +10,15 @@ # based on relocs_check.pl # Copyright © 2009 IBM Corporation -if [ $# -lt 2 ]; then - echo "$0 [path to objdump] [path to vmlinux]" 1>&2 +if [ $# -lt 3 ]; then + echo "$0 [path to objdump] [path to nm] [path to vmlinux]" 1>&2 exit 1 fi # Have Kbuild supply the path to objdump so we handle cross compilation. objdump="$1" -vmlinux="$2" +nm="$2" +vmlinux="$3" bad_relocs=$( $objdump -R "$vmlinux" | @@ -26,8 +27,6 @@ $objdump -R "$vmlinux" | # These relocations are okay # On PPC64: # R_PPC64_RELATIVE, R_PPC64_NONE - # R_PPC64_ADDR64 mach_ - # R_PPC64_ADDR64 __crc_ # On PPC: # R_PPC_RELATIVE, R_PPC_ADDR16_HI, # R_PPC_ADDR16_HA,R_PPC_ADDR16_LO, @@ -38,15 +37,27 @@ R_PPC_ADDR16_LO R_PPC_ADDR16_HI R_PPC_ADDR16_HA R_PPC_RELATIVE -R_PPC_NONE' | - grep -E -v '\