aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2019-04-25 13:46:01 +0100
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2019-05-24 15:05:57 +0100
commit2301ed1c9af1316b4bad3747d2b03f7d44940f87 (patch)
treed0e4b1ec3ada8b6d28fc4ec5e53df73c46c26b1c /include
parent405b5bd86fbcfa9ad5e67e9cdc49dfcdaacf533c (diff)
downloadbinutils-2301ed1c9af1316b4bad3747d2b03f7d44940f87.zip
binutils-2301ed1c9af1316b4bad3747d2b03f7d44940f87.tar.gz
binutils-2301ed1c9af1316b4bad3747d2b03f7d44940f87.tar.bz2
aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS
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.
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog5
-rw-r--r--include/elf/aarch64.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 2e84084..4132bfe 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2019-05-24 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ * elf/aarch64.h (DT_AARCH64_VARIANT_PCS): Define.
+ (STO_AARCH64_VARIANT_PCS): Define.
+
2019-05-24 Alan Modra <amodra@gmail.com>
* elf/ppc64.h (R_PPC64_PLTSEQ_NOTOC, R_PPC64_PLTCALL_NOTOC),
diff --git a/include/elf/aarch64.h b/include/elf/aarch64.h
index 4466547..721378a 100644
--- a/include/elf/aarch64.h
+++ b/include/elf/aarch64.h
@@ -38,6 +38,11 @@
/* Processor specific dynamic array tags. */
#define DT_AARCH64_BTI_PLT (DT_LOPROC + 1)
#define DT_AARCH64_PAC_PLT (DT_LOPROC + 3)
+#define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5)
+
+/* AArch64-specific values for st_other. */
+#define STO_AARCH64_VARIANT_PCS 0x80 /* Symbol may follow different call
+ convention from the base PCS. */
/* Relocation types. */