about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2019-04-25 15:35:35 +0100
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2019-07-10 15:49:37 +0100
commitb95c8a3150be0c3ae9984e2c473212e5be30ccf5 (patch)
tree3364b3a1a7b87ead63f7d927ff0272b2f2c4cfd4
parent5f7fa9ac30048bcc1d883cf52a544ea182882ee9 (diff)
downloadglibc-b95c8a3150be0c3ae9984e2c473212e5be30ccf5.tar.gz
glibc-b95c8a3150be0c3ae9984e2c473212e5be30ccf5.tar.xz
glibc-b95c8a3150be0c3ae9984e2c473212e5be30ccf5.zip
aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS
STO_AARCH64_VARIANT_PCS is a non-visibility st_other flag for marking
symbols that reference functions that may follow a variant PCS with
different register usage convention from the base PCS.

DT_AARCH64_VARIANT_PCS is a dynamic tag that marks ELF modules that
have R_*_JUMP_SLOT relocations for symbols marked with
STO_AARCH64_VARIANT_PCS (i.e. have variant PCS calls via a PLT).

	* elf/elf.h (STO_AARCH64_VARIANT_PCS): Define.
	(DT_AARCH64_VARIANT_PCS): Define.
-rw-r--r--ChangeLog5
-rw-r--r--elf/elf.h7
2 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 62687bbea9..d3d7257854 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* elf/elf.h (STO_AARCH64_VARIANT_PCS): Define.
+	(DT_AARCH64_VARIANT_PCS): Define.
+
 2019-06-28  Florian Weimer  <fweimer@redhat.com>
 
 	[BZ #24744]
diff --git a/elf/elf.h b/elf/elf.h
index 7e2b072a7f..74f7f479ce 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -2847,6 +2847,13 @@ enum
 #define R_AARCH64_TLSDESC      1031	/* TLS Descriptor.  */
 #define R_AARCH64_IRELATIVE	1032	/* STT_GNU_IFUNC relocation.  */
 
+/* AArch64 specific values for the Dyn d_tag field.  */
+#define DT_AARCH64_VARIANT_PCS	(DT_LOPROC + 5)
+#define DT_AARCH64_NUM		6
+
+/* AArch64 specific values for the st_other field.  */
+#define STO_AARCH64_VARIANT_PCS 0x80
+
 /* ARM relocs.  */
 
 #define R_ARM_NONE		0	/* No reloc */