diff options
Diffstat (limited to 'binutils/dwarf.c')
-rw-r--r-- | binutils/dwarf.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 7d0a9ff..68104a7 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -8404,7 +8404,7 @@ typedef const char *(*dwarf_regname_lookup_ftype) (unsigned int); 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. */ @@ -8523,6 +8523,12 @@ init_dwarf_regnames_iamcu (void) 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", @@ -8589,6 +8595,7 @@ init_dwarf_regnames_aarch64 (void) 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[] = @@ -8678,6 +8685,7 @@ void init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine) { dwarf_regnames_lookup_func = NULL; + is_aarch64 = false; switch (e_machine) { @@ -8720,6 +8728,7 @@ init_dwarf_regnames_by_bfd_arch_and_mach (enum bfd_architecture arch, unsigned long mach) { dwarf_regnames_lookup_func = NULL; + is_aarch64 = false; switch (arch) { @@ -9955,7 +9964,7 @@ display_debug_frames (struct dwarf_section *section, 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: |