static dwarf_regname_lookup_ftype dwarf_regnames_lookup_func;
static const char *const *dwarf_regnames;
static unsigned int dwarf_regnames_count;
-
+static bool is_aarch64;
/* A marker for a col_type that means this column was never referenced
in the frame info. */
dwarf_regnames_lookup_func = regname_internal_by_table_only;
}
+static const char *const DW_CFA_GNU_window_save_name[] =
+{
+ "DW_CFA_GNU_window_save",
+ "DW_CFA_AARCH64_negate_ra_state"
+};
+
static const char *const dwarf_regnames_x86_64[] =
{
"rax", "rdx", "rcx", "rbx",
dwarf_regnames = dwarf_regnames_aarch64;
dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_aarch64);
dwarf_regnames_lookup_func = regname_internal_by_table_only;
+ is_aarch64 = true;
}
static const char *const dwarf_regnames_s390[] =
init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine)
{
dwarf_regnames_lookup_func = NULL;
+ is_aarch64 = false;
switch (e_machine)
{
unsigned long mach)
{
dwarf_regnames_lookup_func = NULL;
+ is_aarch64 = false;
switch (arch)
{
case DW_CFA_GNU_window_save:
if (! do_debug_frames_interp)
- printf (" DW_CFA_GNU_window_save\n");
+ printf (" %s\n", DW_CFA_GNU_window_save_name[is_aarch64]);
break;
case DW_CFA_GNU_args_size:
0+14 0+18 0+18 FDE cie=0+ pc=0+\.\.0+8
DW_CFA_advance_loc: 4 to 0+4
- DW_CFA_GNU_window_save
+ DW_CFA_AARCH64_negate_ra_state
DW_CFA_advance_loc: 4 to 0+8
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r29 \(x29\) at cfa-16
0+48 0+1(c|8) 0+1c FDE cie=0+30 pc=0+8\.\.0+10
DW_CFA_advance_loc: 4 to 0+c
- DW_CFA_GNU_window_save
+ DW_CFA_AARCH64_negate_ra_state
DW_CFA_advance_loc: 4 to 0+10
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r29 \(x29\) at cfa-16
0+14 0+18 0+18 FDE cie=0+ pc=0+\.\.0+8
DW_CFA_advance_loc: 4 to 0+4
- DW_CFA_GNU_window_save
+ DW_CFA_AARCH64_negate_ra_state
DW_CFA_advance_loc: 4 to 0+8
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r29 \(x29\) at cfa-16