This patch adds some new definitions required for Morello.
* DWARF base types: DW_ATE_CHERI_signed_intcap and DW_ATE_CHERI_unsigned_intcap.
* DWARF address class: DW_ADDR_capability
* DWARF register numbering
It also adds support for handling DW_ATE_CHERI_signed_intcap and
DW_ATE_CHERI_unsigned_intcap on binutils and GDB.
binutils/ChangeLog
2020-10-20 Luis Machado <luis.machado@arm.com>
* dwarf.c (get_type_signedness): Handles capabilities.
(read_and_display_attr_value): Likewise.
gdb/ChangeLog:
2020-10-20 Luis Machado <luis.machado@arm.com>
* aarch64-tdep.h (AARCH64_DWARF_C0, AARCH64_DWARF_CSP)
(AARCH64_DWARF_PCC, AARCH64_DWARF_DDC)
(AARCH64_DWARF_RESERVED_1, AARCH64_DWARF_RESERVED_2)
(C_REGISTER_SIZE): New defines.
* dwarf2/read.c (read_base_type): Handle capabilities.
include/ChangeLog
2020-10-20 Luis Machado <luis.machado@arm.com>
* dwarf2.def (DW_ATE_CHERI_signed_intcap)
(DW_ATE_CHERI_unsigned_intcap): New defines.
* dwarf2.h (DW_ADDR_capability): New define.
+2020-10-20 Luis Machado <luis.machado@arm.com>
+
+ * dwarf.c (get_type_signedness): Handles capabilities.
+ (read_and_display_attr_value): Likewise.
+
2020-10-20 Siddhesh Poyarekar <siddesh.poyarekar@arm.com>
* dwarf.c (dwarf_regnames_aarch64): Add capability registers.
case DW_ATE_unsigned:
case DW_ATE_unsigned_char:
case DW_ATE_unsigned_fixed:
+ case DW_ATE_CHERI_unsigned_intcap:
* is_signed = FALSE;
break;
case DW_ATE_imaginary_float:
case DW_ATE_decimal_float:
case DW_ATE_signed_fixed:
+ case DW_ATE_CHERI_signed_intcap:
* is_signed = TRUE;
break;
}
case DW_ATE_HP_imaginary_float80: printf ("(HP_imaginary_float80)"); break;
case DW_ATE_HP_imaginary_float128: printf ("(HP_imaginary_float128)"); break;
+ case DW_ATE_CHERI_signed_intcap:
+ printf ("(CHERI intcap_t)");
+ break;
+ case DW_ATE_CHERI_unsigned_intcap:
+ printf ("(CHERI uintcap_t)");
+ break;
+
default:
if (uvalue >= DW_ATE_lo_user
&& uvalue <= DW_ATE_hi_user)
+2020-10-20 Luis Machado <luis.machado@arm.com>
+
+ * aarch64-tdep.h (AARCH64_DWARF_C0, AARCH64_DWARF_CSP)
+ (AARCH64_DWARF_PCC, AARCH64_DWARF_DDC)
+ (AARCH64_DWARF_RESERVED_1, AARCH64_DWARF_RESERVED_2)
+ (C_REGISTER_SIZE): New defines.
+ * dwarf2/read.c (read_base_type): Handle capabilities.
+
2020-10-20 Luis Machado <luis.machado@arm.com>
* target-descriptions.c (make_gdb_type): Handle new capability
#define AARCH64_DWARF_SVE_FFR 47
#define AARCH64_DWARF_SVE_P0 48
#define AARCH64_DWARF_SVE_Z0 96
+#define AARCH64_DWARF_C0 198
+#define AARCH64_DWARF_CSP 229
+#define AARCH64_DWARF_PCC 230
+#define AARCH64_DWARF_DDC 231
+#define AARCH64_DWARF_RESERVED_1 232
+#define AARCH64_DWARF_RESERVED_2 233
/* Size of integer registers. */
#define X_REGISTER_SIZE 8
#define D_REGISTER_SIZE 8
#define V_REGISTER_SIZE 16
#define Q_REGISTER_SIZE 16
+#define C_REGISTER_SIZE 16
/* Total number of general (X) registers. */
#define AARCH64_X_REGISTER_COUNT 32
}
break;
+ case DW_ATE_CHERI_signed_intcap:
+ case DW_ATE_CHERI_unsigned_intcap:
+ {
+ /* Turn DW_ATE_CHERI_*_intcap into a void * pointer. */
+ type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
+ type = init_pointer_type (objfile, bits, name, type);
+ break;
+ }
+
default:
complaint (_("unsupported DW_AT_encoding: '%s'"),
dwarf_type_encoding_name (encoding));
+2020-10-20 Luis Machado <luis.machado@arm.com>
+
+ * dwarf2.def (DW_ATE_CHERI_signed_intcap)
+ (DW_ATE_CHERI_unsigned_intcap): New defines.
+ * dwarf2.h (DW_ADDR_capability): New define.
+
2020-10-20 Siddhesh Poyarekar <siddesh.poyarekar@arm.com>
* elf/aarch64.h: New Morello TLSDESC relocations.
DW_ATE (DW_ATE_HP_VAX_complex_float, 0x8f) /* F or G floating complex. */
DW_ATE (DW_ATE_HP_VAX_complex_float_d, 0x90) /* D floating complex. */
+/* Describes a signed integer/capability type __intcap_t. */
+DW_ATE (DW_ATE_CHERI_signed_intcap, 0xa0)
+/* Describes an unsigned integer/capability type __uintcap_t. */
+DW_ATE (DW_ATE_CHERI_unsigned_intcap, 0xa1)
+
DW_END_ATE
DW_FIRST_CFA (DW_CFA_advance_loc, 0x40)
#define DW_ADDR_none 0
+/* The type is an address capability and can be dereferenced as such. */
+#define DW_ADDR_capability 0x1
+
/* Source language names and codes. */
enum dwarf_source_language
{