[all-commits] [llvm/llvm-project] da6626: [ARM] implement support for ALU/LDR PC-relative gr...

Ard Biesheuvel via All-commits all-commits at lists.llvm.org
Sat Nov 27 01:28:04 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: da66263b6e505a4c605efbe8d68c3b09ad3606a4
      https://github.com/llvm/llvm-project/commit/da66263b6e505a4c605efbe8d68c3b09ad3606a4
  Author: Ard Biesheuvel <ardb at kernel.org>
  Date:   2021-11-27 (Sat, 27 Nov 2021)

  Changed paths:
    M lld/ELF/Arch/ARM.cpp
    A lld/test/ELF/arm-adr-err-long.s
    M lld/test/ELF/arm-adr-err.s
    M lld/test/ELF/arm-adr-long.s
    M lld/test/ELF/arm-adr.s

  Log Message:
  -----------
  [ARM] implement support for ALU/LDR PC-relative group relocations

Currently, LLD does not support the complete set of ARM group relocations.
Given that I intend to start using these in the Linux kernel [0], let's add
support for these.

This implements the group processing as documented in the ELF psABI. Notably,
this means support is dropped for very far symbol references that also carry a
small component, where the immediate is rotated in such a way that only part of
it wraps to the other end of the 32-bit word. To me, it seems unlikely that
this is something anyone could be relying on, but of course I could be wrong.

[0] https://lore.kernel.org/r/20211122092816.2865873-8-ardb@kernel.org/

Reviewed By: peter.smith, MaskRay

Differential Revision: https://reviews.llvm.org/D114172




More information about the All-commits mailing list