]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Thu, 25 Apr 2019 12:46:01 +0000 (13:46 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Fri, 5 Jul 2019 14:20:37 +0000 (15:20 +0100)
commit13acf03468d1e218c0a980ff6e6adaaac4bb5d1e
tree67027ac8e2ca9e70ee0c654f22927914538ec655
parentec830e3c39ac8f868572288a50c97109e484da77
aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS

Backport commit 2301ed1c9af1316b4bad3747d2b03f7d44940f87

The bottom 2 bits of st_other are used for visibility, the top 6 bits are
de facto reserved for processor specific use.  This patch defines a
bits to mark function symbols that follow a variant procedure call standard
with different register usage convention.

A dynamic tag is also defined that marks modules with R_<CLS>_JUMP_SLOT
relocations referencing symbols marked with STO_AARCH64_VARIANT_PCS.
This can be used by dynamic linkers that support lazy binding to decide
what registers need to be preserved during symbol resolution.

binutils/ChangeLog:

* readelf.c (get_aarch64_dynamic_type): Handle DT_AARCH64_VARIANT_PCS.
(get_aarch64_symbol_other): New, handles STO_AARCH64_VARIANT_PCS.
(get_symbol_other): Call get_aarch64_symbol_other.

include/ChangeLog:

* elf/aarch64.h (DT_AARCH64_VARIANT_PCS): Define.
(STO_AARCH64_VARIANT_PCS): Define.
binutils/ChangeLog
binutils/readelf.c
include/ChangeLog
include/elf/aarch64.h