Received: by 2002:a05:7412:f589:b0:e2:908c:2ebd with SMTP id eh9csp413059rdb; Tue, 31 Oct 2023 10:46:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWPiZExK0TlXc4Ugf+EyMYeeoVwAqOaQ4gxbfI5/K54Ar1AB+UrSuWRdm8E7C3Ybo+fSAD X-Received: by 2002:a05:6a00:816:b0:6bc:b13c:35d5 with SMTP id m22-20020a056a00081600b006bcb13c35d5mr11969227pfk.13.1698774402102; Tue, 31 Oct 2023 10:46:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698774402; cv=none; d=google.com; s=arc-20160816; b=Jg7RJkYSeQaCzFmS7an1kMUJ8dZhyJPxuuWL/5KkF8cQQwZg7VNBhjJvx5BTfXRfgh dlRZsU5WoaOHvkyU6ZROMghndnQRM9Vqa762Xl6EFCSVC168dgJbGz8UVV3l7E8EJynH HN5/QOhaBtvND7CR3sNJX+zSDWjqKkjfvlCtrusjQkKtmw3H1sFrW7Yg0ar1Ji0LZx1A 32pGFjaONUUHoc3gpPt0BU9SsDqrJD1bLKm1tgwb01anFBVyxJgM8kEfPg0iJh3sw6O1 3z6c4y5wqQJa6WoadCsrlykDCL/96/KZA8PoQATMVvGM33NzZNaTbOkRBdchjK/KqD0F mm/g== 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 23.128.96.37 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 snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id v11-20020a056a00148b00b006bd7cfa8497si1261956pfu.83.2023.10.31.10.46.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Oct 2023 10:46:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; 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 23.128.96.37 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 snail.vger.email (Postfix) with ESMTP id AFCDE80FA85B; Tue, 31 Oct 2023 10:46:39 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376335AbjJaRqi (ORCPT + 99 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 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Tue, 31 Oct 2023 10:46:39 -0700 (PDT) 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 --- 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); } } -- 2.40.1