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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a30e39a1b41dc63fff32b8d350fecb92dfe27d09.camel@xry111.site>
Date:   Fri, 29 Jul 2022 10:29:53 +0800
From:   Xi Ruoyao <xry111@...111.site>
To:     Youling Tang <tangyouling@...ngson.cn>, loongarch@...ts.linux.dev
Cc:     linux-kernel@...r.kernel.org, WANG Xuerui <kernel@...0n.name>,
        Huacai Chen <chenhuacai@...nel.org>,
        Jinyang He <hejinyang@...ngson.cn>
Subject: Re: [PATCH v3 0/4] LoongArch: Support new relocation types

On Fri, 2022-07-29 at 10:23 +0800, Youling Tang wrote:
> Hi, Ruoyao
> 
> On 07/29/2022 10:07 AM, 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 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.
> 
> The log of changes from v1 to v2 should be preserved.
> 
Retroactively, append the 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 <xry111@...111.site>
School of Aerospace Science and Technology, Xidian University

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ