[all-commits] [llvm/llvm-project] 02cd80: [ELF][AArch64] Add R_AARCH64_PLT32 relocation type.

Peter Smith via All-commits all-commits at lists.llvm.org
Wed Apr 8 04:21:19 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 02cd80e68ecf59af98e74d1b06c23b3317555933
      https://github.com/llvm/llvm-project/commit/02cd80e68ecf59af98e74d1b06c23b3317555933
  Author: Peter Smith <peter.smith at arm.com>
  Date:   2020-04-08 (Wed, 08 Apr 2020)

  Changed paths:
    M llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
    M llvm/test/tools/llvm-readobj/ELF/reloc-types-elf-aarch64.test

  Log Message:
  -----------
  [ELF][AArch64] Add R_AARCH64_PLT32 relocation type.

The R_AARCH64_PLT32 relocation type will be documented in the next release
of ELF for the 64-bit Arm Architecture. It is being added in draft state
for the benefit of the position independent vtable feature.

R_AARCH64_PLT32 is very similar to R_AARCH64_PREL32. The intention is to
provide a signed 32-bit integer representing an offset from the place
to a function.
- It relocates 32-bit data
- The expression is S + A - P
- The overflow check for the expression is -2^31 <= X < 2^31
- The relocation generates Thunks/Veneers/Stubs and PLT entries as per
  R_AArch64_CALL26
- If the symbol S is an undefined weak the ABI does not define its value.

The ABI defines a code for ilp32 for completeness, I have added the code
but have only added to the existing reloc-types-elf-aarch64.text as there
is no ilp32 equivalent.

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




More information about the All-commits mailing list