[all-commits] [llvm/llvm-project] 5af9e6: [JITLink][AArch46] Update aarch64 pointer jump stu...

lhames via All-commits all-commits at lists.llvm.org
Mon Oct 31 08:41:34 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5af9e648ae10c50d94ab169f65907e12f210ec99
      https://github.com/llvm/llvm-project/commit/5af9e648ae10c50d94ab169f65907e12f210ec99
  Author: Lang Hames <lhames at gmail.com>
  Date:   2022-10-31 (Mon, 31 Oct 2022)

  Changed paths:
    M llvm/include/llvm/ExecutionEngine/JITLink/aarch64.h
    M llvm/lib/ExecutionEngine/JITLink/aarch64.cpp

  Log Message:
  -----------
  [JITLink][AArch46] Update aarch64 pointer jump stub sequence, add utilities.

Updates the aarch64 pointer jump stub sequence to:

ADRP x16, <ptr>@page21
LDR  x16, [x16, <ptr>@pageoff12]
BR   x16

from:

LDR  x16, <ptr>@ldrimm19
BR   x16

The old sequence can only reference pointers within +/-1Mb, which may not be
enough for large object files. The new sequence can reach pointers within
+/-4Gb. (A future pre-fixup-pass could apply range-based optimizations to
turn this into an ldr-br-nop sequence.)

Also adds createPointerJumpStubBlock and createAnonymousPointerJumpStub
utilities along the same lines as their x86-64 counterparts.

The PLTTableManager is updated to use the new utility functions.




More information about the All-commits mailing list