From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3zygdf1LJtzF1ZF for ; Sat, 10 Mar 2018 08:35:01 +1100 (AEDT) Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w29LYjRX079222 for ; Fri, 9 Mar 2018 16:34:59 -0500 Received: from e37.co.us.ibm.com (e37.co.us.ibm.com [32.97.110.158]) by mx0a-001b2d01.pphosted.com with ESMTP id 2gkxkfr3f6-1 (version=TLSv1.2 cipher=AES256-SHA256 bits=256 verify=NOT) for ; Fri, 09 Mar 2018 16:34:59 -0500 Received: from localhost by e37.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 9 Mar 2018 14:34:58 -0700 From: Mauricio Faria de Oliveira To: linux-kernel@vger.kernel.org, mpe@ellerman.id.au, jeyu@kernel.org Cc: npiggin@gmail.com, linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2] powerpc/64: Fix section mismatch warnings for early boot symbols Date: Fri, 9 Mar 2018 18:34:50 -0300 In-Reply-To: <1520628111-1361-1-git-send-email-mauricfo@linux.vnet.ibm.com> References: <1520628111-1361-1-git-send-email-mauricfo@linux.vnet.ibm.com> Message-Id: <1520631290-5340-1-git-send-email-mauricfo@linux.vnet.ibm.com> List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Some of the boot code located at the start of kernel text is "init" class, in that it only runs at boot time, however marking it as normal init code is problematic because that puts it into a different section located at the very end of kernel text. e.g., in case the TOC is not set up, we may not be able to tolerate a branch trampoline to reach the init function. Credits: code and message are based on 2016 patch by Nicholas Piggin, and slightly modified so not to rename the powerpc code/symbol names. Subject: [PATCH] powerpc/64: quieten section mismatch warnings From: Nicholas Piggin Date: Fri Dec 23 00:14:19 AEDT 2016 Signed-off-by: Mauricio Faria de Oliveira --- v2: fix missing close parenthesis in conditional (wrong patch file, sorry) scripts/mod/modpost.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 9917f92..c65d5e2 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -1174,8 +1174,15 @@ static const struct sectioncheck *section_mismatch( * fromsec = text section * refsymname = *.constprop.* * + * Pattern 6: + * powerpc64 has boot functions that reference init, but must remain in text. + * This pattern is identified by + * tosec = init section + * fromsym = + * **/ -static int secref_whitelist(const struct sectioncheck *mismatch, +static int secref_whitelist(const struct elf_info *elf, + const struct sectioncheck *mismatch, const char *fromsec, const char *fromsym, const char *tosec, const char *tosym) { @@ -1212,6 +1219,17 @@ static int secref_whitelist(const struct sectioncheck *mismatch, match(fromsym, optim_symbols)) return 0; + /* Check for pattern 6 */ + if (elf->hdr->e_machine == EM_PPC64) + if (match(tosec, init_sections) && + (!strncmp(fromsym, "__boot_from_prom", + strlen("__boot_from_prom")) || + !strncmp(fromsym, "start_here_multiplatform", + strlen("start_here_multiplatform")) || + !strncmp(fromsym, "start_here_common", + strlen("start_here_common")))) + return 0; + return 1; } @@ -1552,7 +1570,7 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf, tosym = sym_name(elf, to); /* check whitelist - we may ignore it */ - if (secref_whitelist(mismatch, + if (secref_whitelist(elf, mismatch, fromsec, fromsym, tosec, tosym)) { report_sec_mismatch(modname, mismatch, fromsec, r->r_offset, fromsym, -- 1.8.3.1