[all-commits] [llvm/llvm-project] 18a49f: [ELF] Merge relaIplt into relaDyn

Fangrui Song via All-commits all-commits at lists.llvm.org
Sun Mar 24 14:07:32 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 18a49f03aa2b6bfeb073648b9eb75277a2386fc4
      https://github.com/llvm/llvm-project/commit/18a49f03aa2b6bfeb073648b9eb75277a2386fc4
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-03-24 (Sun, 24 Mar 2024)

  Changed paths:
    M lld/ELF/Relocations.cpp
    M lld/ELF/SyntheticSections.cpp
    M lld/ELF/SyntheticSections.h
    M lld/ELF/Writer.cpp
    M lld/test/ELF/aarch64-gnu-ifunc.s
    M lld/test/ELF/arm-gnu-ifunc.s
    M lld/test/ELF/gnu-ifunc-i386.s
    M lld/test/ELF/systemz-ifunc-nonpreemptible.s

  Log Message:
  -----------
  [ELF] Merge relaIplt into relaDyn

`relaIplt` was added so that IRELATIVE relocations are placed at the end
of .rela.dyn (since https://reviews.llvm.org/D65651) or .rela.plt
(--pack-dyn-relocs=android[+relr]). Unfortunately, handling `relaIplt`
requires special cases all over the code base. We can extend
partitionRels/computeRels to partition both RELATIVE and IRELATIVE
relocations, rendering `relaIplt` unneeded.

The change allows IRELATIVE relocations in the DT_ANDROID_REL[A] table
(untested?!), which may be processed before other types of relocations.
This seems acceptable for Bionic's DEFINE_IFUNC_FOR use cases.

In addition, this change simplies changing .rel[a].dyn to a compact
relocation format (CREL).

SHF_INFO_LINK is removed from .rel[a].dyn with IRELATIVE relocations.
(See https://reviews.llvm.org/D89828).



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list