lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4a61d1a5-539f-25f9-4acd-92e107bc99a0@xen0n.name>
Date:   Fri, 29 Jul 2022 17:47:24 +0800
From:   WANG Xuerui <kernel@...0n.name>
To:     Xi Ruoyao <xry111@...111.site>, loongarch@...ts.linux.dev
Cc:     linux-kernel@...r.kernel.org, Huacai Chen <chenhuacai@...nel.org>,
        Youling Tang <tangyouling@...ngson.cn>,
        Jinyang He <hejinyang@...ngson.cn>
Subject: Re: [PATCH v4 0/4] LoongArch: Support new relocation types

On 2022/7/29 16:38, Xi Ruoyao wrote:
> 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.
> 
> This series does not break the compatibility with old toolchain using
> stack-based relocation types, so with the patches applied the kernel can
> be be built with both old and new toolchains.
> 
> Tested by building the kernel with both Binutils & GCC master branch and
> my system Binutils & GCC (without new relocation type support), running
> both the builds with 35 in-tree modules loaded, and loading one module
> with 20 GOT loads (loaded addresses verified by comparing with
> /proc/kallsyms).
> 
> Changes from v3 to v4:
> 
> - No code change.  Reword the commit message of the 3rd patch again
>    based on suggestion from Huacai.
> 
> Changes from v2 to v3:
> 
> - Use `union loongarch_instruction` instead of explicit bit shifts
>    applying the relocation.  Suggested by Youling.
> - For R_LARCH_B26, move the alignment check before the range check to be
>    consistent with stack pop relocations.  Suggested by Youling.
> - Reword the commit message of the 3rd patch.  Suggested by Huacai.
> 
> 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: Remove -fplt and -Wa,-mla-* from CFLAGS
>    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          | 96 +++++++++++++++++++++++++
>   7 files changed, 209 insertions(+), 13 deletions(-)
> 

Thanks very much for the timely adaptation. I'm rebuilding my Gentoo 
toolchain from upstream HEAD, will test this weekend.

-- 
WANG "xen0n" Xuerui

Linux/LoongArch mailing list: https://lore.kernel.org/loongarch/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ