Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1596978ybv; Fri, 21 Feb 2020 00:00:44 -0800 (PST) X-Google-Smtp-Source: APXvYqzrvqSgO3HjBm45NR518eBDK5AYaZ4y+bJBS60RSWurqfLwuh2+po1U2Fq6kORhtsjOw6PD X-Received: by 2002:a9d:6288:: with SMTP id x8mr26241367otk.2.1582272044753; Fri, 21 Feb 2020 00:00:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582272044; cv=none; d=google.com; s=arc-20160816; b=ViO+zISagqrjhJF4fyVwqjcwMCvNcqPFhfPtgbsj+xn3NkJnJFpjeNjU9oIieDpKr9 IDtN+wpmXbRN41dV97PMPIaq8gt9fMB7eabzdwJpRfyd+8pfc2ZuNmLdAOTEmz+B0SKu wCNiMVsXTmqnZAaVJlSpLxe/j6ttzplxwMVMva96QCSDPhRpbJqyzfHwLCviN3uYaGQr Jt4Mq/7MoU2KStyDveIEXQ67fnzcwqrvnxvyA7kHeX0c1fcPMRu+jIbTHIMpq4mYq7zD cXnHDoEvqw8xhWAwGdPdouiEDkbLJc7BAH3+paNH91TUnWfdHyOiCayPbssyCA4pvTay 9/tw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9GFqjuWGzy1UoJXutRp664Z8meFcuoFMBf9M7Is1Xv4=; b=G+8ZdgieCTTORUe0NCTXCc09YUsdokPFiaZeekvOBhqx+CbAPfe7Y/xErEcuUHLv/x gCXQCDek/vnr7RCLHLGIEJDArkCtjtCEvhl5tB8BmBjYhZ1n9CLa/IObx56N60ilkV1G wCt/JAT3elUVQN1IiXRe2T43dGH/di2csDKQIrYkDIJ3zzxatQGIE9WDzPsJDwAzYF6L rHWnTJSsTn+qmQgYCQ+EJudwoHKwV7J/ZxFfLVSxcYYJaAtdT/PmJb2PAWbTFhmJ645O XrMZrL2wqh2zdcGYz/L7TNHqbIebOMS9U0nOClAFeb/8s6WyKRrm03COmhdilsTwCc/+ EF3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="F2nVL/pX"; 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 5si452145oir.9.2020.02.21.00.00.32; Fri, 21 Feb 2020 00:00:44 -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; dkim=pass header.i=@kernel.org header.s=default header.b="F2nVL/pX"; 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 S1730919AbgBUH73 (ORCPT + 99 others); Fri, 21 Feb 2020 02:59:29 -0500 Received: from mail.kernel.org ([198.145.29.99]:59480 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730911AbgBUH70 (ORCPT ); Fri, 21 Feb 2020 02:59:26 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B704B206ED; Fri, 21 Feb 2020 07:59:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582271965; bh=9QBWaElHKC0zBpOGCtZQxcNbGjkEOVXoSNV7W+soaiU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F2nVL/pXAou6XBRfxIT8YA8MYqVtQ3Cekj8X7pTnHwPMBi4tDgz4mJW4vBShoQkE/ IfWk/eQgxDzAJr3IMmFaibj9c8d8nkYV6Kb4Thi8gxs2m75f4wZQ7lQLD4dgXiqLuY jjlzeHfGro1bw3fQAfPDgOK0clJSoW4LYlEQsqZs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stephen Rothwell , Alexandre Ghiti , Michael Ellerman , Sasha Levin Subject: [PATCH 5.5 366/399] powerpc: Do not consider weak unresolved symbol relocations as bad Date: Fri, 21 Feb 2020 08:41:31 +0100 Message-Id: <20200221072436.184102682@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200221072402.315346745@linuxfoundation.org> References: <20200221072402.315346745@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Alexandre Ghiti [ Upstream commit 43e76cd368fbb67e767da5363ffeaa3989993c8c ] 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 Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20200118170335.21440-1-alex@ghiti.fr Signed-off-by: Sasha Levin --- arch/powerpc/Makefile.postlink | 4 ++-- arch/powerpc/tools/relocs_check.sh | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/Makefile.postlink b/arch/powerpc/Makefile.postlink index 134f12f89b92b..2268396ff4bba 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 7b9fe0a567cf3..014e00e74d2b6 100755 --- a/arch/powerpc/tools/relocs_check.sh +++ b/arch/powerpc/tools/relocs_check.sh @@ -10,14 +10,21 @@ # 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. +# Have Kbuild supply the path to objdump and nm so we handle cross compilation. objdump="$1" -vmlinux="$2" +nm="$2" +vmlinux="$3" + +# Remove from the bad relocations those that match an undefined weak symbol +# which will result in an absolute relocation to 0. +# Weak unresolved symbols are of that form in nm output: +# " w _binary__btf_vmlinux_bin_end" +undef_weak_symbols=$($nm "$vmlinux" | awk '$1 ~ /w/ { print $2 }') bad_relocs=$( $objdump -R "$vmlinux" | @@ -26,8 +33,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, @@ -39,8 +44,7 @@ R_PPC_ADDR16_HI R_PPC_ADDR16_HA R_PPC_RELATIVE R_PPC_NONE' | - grep -E -v '\