HomePhabricator

[lld] [ELF] AArch64: Handle DT_AARCH64_VARIANT_PCS

Authored by zatrazz on Dec 10 2020, 6:06 AM.

Description

[lld] [ELF] AArch64: Handle DT_AARCH64_VARIANT_PCS

As indicated by AArch64 ELF specification, symbols with st_other
marked with STO_AARCH64_VARIANT_PCS indicates it may follow a variant
procedure call standard with different register usage convention
(for instance SVE calls).

Static linkers must preserve the marking and propagate it to the dynamic
symbol table if any reference or definition of the symbol is marked with
STO_AARCH64_VARIANT_PCS, and add a DT_AARCH64_VARIANT_PCS dynamic tag if
there are R_<CLS>_JUMP_SLOT relocations that reference that symbols.

It implements https://bugs.llvm.org/show_bug.cgi?id=48368.

Reviewed By: MaskRay

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

Details

Committed
zatrazzDec 17 2020, 6:09 AM
Reviewer
MaskRay
Differential Revision
D93045: [ELF] AArch64: Handle DT_AARCH64_VARIANT_PCS
Parents
rGe04dc5f557c5: [llvm-readobj/elf] - AArch64: Handle AARCH64_VARIANT_PCS for GNUStyle
Branches
Unknown
Tags
Unknown