Received: by 2002:ac0:e34a:0:0:0:0:0 with SMTP id g10csp443613imn; Thu, 28 Jul 2022 05:42:13 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vyAEoy3qDB0Zt8u/TublEYIf08YEW224ptCTrytceeOzV+suchju8L9H2emHfhIc/KlJyA X-Received: by 2002:a17:907:3e81:b0:726:9615:d14d with SMTP id hs1-20020a1709073e8100b007269615d14dmr21105307ejc.517.1659012133343; Thu, 28 Jul 2022 05:42:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659012133; cv=none; d=google.com; s=arc-20160816; b=lqs6GX7UjGOye2JS3ukZhIzGlvo1j5Yu/4dRWf7br1JFr04E0x5AK/RTZIO9OIw6GT mlscxLeSRegpdx89lBBHMBlo7ycxK0m8jc0MhADzOTYNNF3zfyVB26xzyi2N85eSilDs L/9kfrfpsd9SPJBpe67UAtz2AEnhgelzk+kyHrNZuKyHxX7jYKolZDx4sRNrGn8lFJ/u y4tRHQf3NKfwWPNHz0zVyN9jMPU5l/WjVKAhaqW2F0+RMQtytreYGB2qrv32cmCgvXIz i65BdMwwgD2BaeZLPEfpKcLz9V0bxGpfpnC/un59ua4tMqFdXfAjMwdJWBt2PtTMeAmO tiEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:date:cc:to:from:subject:message-id :dkim-signature; bh=DjAQ7E79SPNX/6q5n4YBYewOA3XZiGHS8F1yvbPjGY0=; b=u1rnB9uUQtKczMB2eotVTusm6jbo034QV8tQv7iQ490jKCfIQwq6YHVf2aItlZEsWR 52ANhYTmuqispmKqiUK6Cvx5EN2ABykuE4AOhMmmFNczIOne4zwbhg9gUg1D++0FWUUG QJItOfUdQc4eNbuF/7DLcu7Z3cmEJ0x4nf5/eoDYKqeQlma8yefNKe/OLm6+jXKdzOe8 J49iRXeEznunPc5vQvo5agauZ9mrwmZMGeRlhj14q/KTyFsrYS5CwFu3f41npVdQbcre mRb/tTeirPP+yKAxrjJ3fhnbb+RD8xHEvW3SAMy80tzH2laqDz66+A76FDmXrthGZHCq KMlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xry111.site header.s=default header.b=T3SoH2wV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=xry111.site Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z11-20020a1709063acb00b00715867834e2si520646ejd.499.2022.07.28.05.41.48; Thu, 28 Jul 2022 05:42:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@xry111.site header.s=default header.b=T3SoH2wV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=xry111.site Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236620AbiG1Lts (ORCPT + 99 others); Thu, 28 Jul 2022 07:49:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235533AbiG1Ltq (ORCPT ); Thu, 28 Jul 2022 07:49:46 -0400 Received: from xry111.site (xry111.site [IPv6:2001:470:683e::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7936B691DA for ; Thu, 28 Jul 2022 04:49:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1659008983; bh=RkPofTIZqMBvPv1I2e5S6bPSJnJmJKBQeR6T5MWoMVg=; h=Subject:From:To:Cc:Date:From; b=T3SoH2wVHaQNwvLDUPMw28NKQ4KvZba2cCGxyMPhwe1K/5PdlJAQbsftINrmgsN4l hjhDtBT+KTSVVt6gSfrkrgLgbrHhhqyg8q7t5vWosic7qeBDcCE0pYepp1o27LENsh iQdTiA1no4mGBMhsdfRvyImK4EnEGFbGbwT22Dac= Received: from localhost.localdomain (xry111.site [IPv6:2001:470:683e::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 71C9B667F7; Thu, 28 Jul 2022 07:49:41 -0400 (EDT) Message-ID: Subject: [PATCH v2 0/4] LoongArch: Support new relocation types From: Xi Ruoyao To: loongarch@lists.linux.dev Cc: linux-kernel@vger.kernel.org, WANG Xuerui , Huacai Chen , Youling Tang , Jinyang He Date: Thu, 28 Jul 2022 19:49:39 +0800 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.3 MIME-Version: 1.0 X-Spam-Status: No, score=1.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FROM_SUSPICIOUS_NTLD, FROM_SUSPICIOUS_NTLD_FP,PDS_OTHER_BAD_TLD,SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: * 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 The version 2.00 of LoongArch ELF ABI specification introduced new relocation types, and the development tree of Binutils and GCC has started to use them. If the kernel is built with the latest snapshot of Binutils or GCC, it will fail to load the modules because of unrecognized relocation types in modules. Add support for GOT and new relocation types for the module loader, so the kernel (with modules) can be built with the "normal" code model and function properly. Tested by building the kernel with Binutils & GCC master branch, running the kernel with 35 in-tree modules loaded, and loading one module with 20 GOT loads (both old SOP_PUSH_GPREL and new GOT_PC_HI20/GOT_PC_LO12 relocations tested, and loaded addresses verified by comparing with /proc/kallsyms). Link: https://github.com/loongson/LoongArch-Documentation/pull/57 Link: https://gcc.gnu.org/r13-1834 Link: https://sourceware.org/git/?p=3Dbinutils-gdb.git;a=3Dcommit;h=3Df0948= 2a Changes from v1 to v2: - Fix a stupid programming error (confusion between the number of PLT entries and the number of GOT entries). (Bug spotted by Youling). - Synthesize the _GLOBAL_OFFSET_TABLE_ symbol with module.lds, instead of faking it at runtime. The 3rd patch from V1 is now merged into the 1st patch because it would be a one-line change. (Suggested by Jinyang). - Keep reloc_rela_handlers[] ordered by the relocation type ID. (Suggested by Youling). - Remove -fplt along with -Wa,-mla-* options because it's the default. (Suggested by Youling). Xi Ruoyao (4): LoongArch: Add section of GOT for kernel module LoongArch: Support R_LARCH_SOP_PUSH_GPREL relocation type in kernel module LoongArch: Stop using undocumented assembler options LoongArch: Support modules with new relocation types arch/loongarch/Makefile | 4 -- arch/loongarch/include/asm/elf.h | 37 ++++++++++ arch/loongarch/include/asm/module.h | 23 ++++++ arch/loongarch/include/asm/module.lds.h | 1 + arch/loongarch/kernel/head.S | 10 +-- arch/loongarch/kernel/module-sections.c | 51 ++++++++++++-- arch/loongarch/kernel/module.c | 94 +++++++++++++++++++++++++ 7 files changed, 207 insertions(+), 13 deletions(-) --=20 2.37.0