From patchwork Tue Oct 31 17:46:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 160296 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b90f:0:b0:403:3b70:6f57 with SMTP id t15csp409138vqg; Tue, 31 Oct 2023 10:47:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE8BrmPoDby4RiF4/A7frJHnRKN3mwte16kRsXSPtCcKoGFAdydDi2+eFYEpRuZqohGWD2f X-Received: by 2002:a17:90b:248c:b0:27d:c36:e134 with SMTP id nt12-20020a17090b248c00b0027d0c36e134mr9426275pjb.42.1698774422419; Tue, 31 Oct 2023 10:47:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698774422; cv=none; d=google.com; s=arc-20160816; b=MyY6lS0XAwe4deO15CKdM3MkrFe5BDu3akqX6D5V+OMhv3b471tYe/5e3PsSYGKwIq n8IJMwfJuwUW/fvEsrzPHOGO/gICZSIf/FEeM/wu7heiRDZZPr3kC3suPB84F8tG+KeS O4V1vqFFVZB949+sepdR8CjxdeIaMNaKl/qkxPPwaTkrYjWuecrxkJaOZQGl6kTVj+SB czWDjd1ORIMgXNEBTbWxDjkyTdKHhVL5UT68timQEazIDHgfF2nYlD2fCp38Qe3xC9P7 9obyWeimvms8JWH5VEhLteOy+zA29M0A+XpVpra6zjnRpD1Q0PHjTieMIi3jMFeOLN4s rT6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=sj6tZdapMYIKVORin3TwN6Xr8327YxmwABU61U5YDpg=; fh=gbbRe1ds1J9+nK5Xq9mXPTw/SoWmZqsP4+UXEPv4Cik=; b=Qpe1/UKRFHNFqcPwvYcweMAwejb3hLdDnPmoHkgXdgoYQU6g29qAJBIW4d2KkuCLB+ u+BuO8E8dbnmVrEsx6dX6FpJWPsUsDr1UX3fOEbxVWeu/5bxdffeBKP4wQwMQOIeYoNR 4dFS9FsAvFMvig5QXf3y2sRQArsI+ZVZF/+E5KYsXmzt5Fsg9jN7r/Tw7rTXXhxVH5au ZfpVstqnZVyfbheFDsZTGLVvKGDDeQYHdtQkSmuVy+LKRpIkK6KMXVeONYL9dtG5bDlQ 4ssuDoQZbXpSGmFwXVKQKCOUPcQgY5atLdq7PJIXZohl5iTZAQ5WP+7nj7oTgYUVjVFP k0iA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=iZzl3i4u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id mu9-20020a17090b388900b0028014aca793si1266490pjb.2.2023.10.31.10.47.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Oct 2023 10:47:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=iZzl3i4u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id 131FC8029117; Tue, 31 Oct 2023 10:47:00 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376351AbjJaRqi (ORCPT + 33 others); Tue, 31 Oct 2023 13:46:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376372AbjJaRqf (ORCPT ); Tue, 31 Oct 2023 13:46:35 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3968EDA; Tue, 31 Oct 2023 10:46:33 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A0AFC433C8; Tue, 31 Oct 2023 17:46:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1698774392; bh=4IzIyIgoH1lhjy2rL7R+B3ys+T2C5XdwhNqqqjhol4E=; h=From:To:Cc:Subject:Date:From; b=iZzl3i4u3Z4lHJziJsiFVp5CwjwRspRy/Sn6vpFB+jZ1C6Y3IZKIMT0lu8bY/i68v ttEgti0JQn33NvLIaRZZmxZcXakyseqtAJl+aOMbKjipWvIx9SuwF0rDROuRJLGa94 IECn7mdOuW4SbNsQdlr3hDYkcLgbxybb6fITn+CQ0epFyuWBJTtY0TyiO7skwSzaC7 2UwIFVeVYPU096QD4cjtdjY6XbOvTJNIuuy3K3E54BB7vKPXev7+lYlWnylZ8Iur02 d0gCSEL7LvdChiSs9S3Qi7gibTd2Nblxp+BG8aDtJsiMl6bZH3qjsfO+9gXYzaldhf SkdMlijOmtqXQ== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Albert Ou , Nathan Chancellor , Nick Desaulniers , Nicolas Schier , Palmer Dabbelt , Paul Walmsley , linux-riscv@lists.infradead.org Subject: [PATCH] modpost: fix section mismatch message for RELA Date: Wed, 1 Nov 2023 02:46:27 +0900 Message-Id: <20231031174627.684576-1-masahiroy@kernel.org> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 X-Spam-Status: No, score=-1.7 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.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 (lipwig.vger.email [0.0.0.0]); Tue, 31 Oct 2023 10:47:00 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1781294088534720251 X-GMAIL-MSGID: 1781294088534720251 The section mismatch check prints a bogus symbol name on some architectures. [test code] #include int __initdata foo; int get_foo(void) { return foo; } If you compile it with GCC for riscv or loongarch, modpost will show an incorrect symbol name: WARNING: modpost: vmlinux: section mismatch in reference: get_foo+0x8 (section: .text) -> done (section: .init.data) To get the correct symbol address, st_value must be added This issue has never been noticed since commit 93684d3b8062 ("kbuild: include symbol names in section mismatch warnings") presumably because st_value becomes zero on most architectures when the referenced symbol is looked up. It is not true for riscv or loongarch, at least. With this fix, modpost will show the correct symbol name: WARNING: modpost: vmlinux: section mismatch in reference: get_foo+0x8 (section: .text) -> foo (section: .init.data) Signed-off-by: Masahiro Yamada Reviewed-by: Nick Desaulniers --- scripts/mod/modpost.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 973b5e5ae2dd..cb6406f485a9 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -1383,13 +1383,15 @@ static void section_rela(struct module *mod, struct elf_info *elf, const Elf_Rela *rela; for (rela = start; rela < stop; rela++) { + Elf_Sym *tsym; Elf_Addr taddr, r_offset; unsigned int r_type, r_sym; r_offset = TO_NATIVE(rela->r_offset); get_rel_type_and_sym(elf, rela->r_info, &r_type, &r_sym); - taddr = TO_NATIVE(rela->r_addend); + tsym = elf->symtab_start + r_sym; + taddr = tsym->st_value + TO_NATIVE(rela->r_addend); switch (elf->hdr->e_machine) { case EM_RISCV: @@ -1404,7 +1406,7 @@ static void section_rela(struct module *mod, struct elf_info *elf, break; } - check_section_mismatch(mod, elf, elf->symtab_start + r_sym, + check_section_mismatch(mod, elf, tsym, fsecndx, fromsec, r_offset, taddr); } }