+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.
 
     {
     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;
     }
     }
 }
 
+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 (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;
 
+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),
 
 /* 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.  */