aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/readelf.c20
-rw-r--r--include/ChangeLog5
-rw-r--r--include/elf/aarch64.h5
4 files changed, 36 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 79bfaee..ef9fa5a 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2019-05-24 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ * 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.
+
2019-05-24 Alan Modra <amodra@gmail.com>
* objdump.c (disassemble_bytes): Set WIDE_OUTPUT in flags.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 9d28104..23ffd86 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -1810,6 +1810,7 @@ get_aarch64_dynamic_type (unsigned long type)
{
case DT_AARCH64_BTI_PLT: return "AARCH64_BTI_PLT";
case DT_AARCH64_PAC_PLT: return "AARCH64_PAC_PLT";
+ case DT_AARCH64_VARIANT_PCS: return "AARCH64_VARIANT_PCS";
default:
return NULL;
}
@@ -11102,6 +11103,22 @@ get_solaris_symbol_visibility (unsigned int visibility)
}
static const char *
+get_aarch64_symbol_other (unsigned int other)
+{
+ static char buf[32];
+
+ if (other & STO_AARCH64_VARIANT_PCS)
+ {
+ other &= ~STO_AARCH64_VARIANT_PCS;
+ if (other == 0)
+ return "VARIANT_PCS";
+ snprintf (buf, sizeof buf, "VARIANT_PCS | %x", other);
+ return buf;
+ }
+ return NULL;
+}
+
+static const char *
get_mips_symbol_other (unsigned int other)
{
switch (other)
@@ -11212,6 +11229,9 @@ get_symbol_other (Filedata * filedata, unsigned int other)
switch (filedata->file_header.e_machine)
{
+ case EM_AARCH64:
+ result = get_aarch64_symbol_other (other);
+ break;
case EM_MIPS:
result = get_mips_symbol_other (other);
break;
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. */