mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
PR29390, DW_CFA_AARCH64_negate_ra_state vs. DW_CFA_GNU_window_save
PR 29390 binutils/ * dwarf.c (is_aarch64, DW_CFA_GNU_window_save_name): New. (display_debug_frames): Use them. (init_dwarf_regnames_aarch64): Set is_aarch64. (init_dwarf_regnames_by_elf_machine_code): Clear is_aarch64. (init_dwarf_regnames_by_bfd_arch_and_mach): Likewise. gas/ * testsuite/gas/aarch64/pac_ab_key.d: Adjust expected output. * testsuite/gas/aarch64/pac_negate_ra_state.d: Likewise.
This commit is contained in:
@ -8404,7 +8404,7 @@ typedef const char *(*dwarf_regname_lookup_ftype) (unsigned int);
|
|||||||
static dwarf_regname_lookup_ftype dwarf_regnames_lookup_func;
|
static dwarf_regname_lookup_ftype dwarf_regnames_lookup_func;
|
||||||
static const char *const *dwarf_regnames;
|
static const char *const *dwarf_regnames;
|
||||||
static unsigned int dwarf_regnames_count;
|
static unsigned int dwarf_regnames_count;
|
||||||
|
static bool is_aarch64;
|
||||||
|
|
||||||
/* A marker for a col_type that means this column was never referenced
|
/* A marker for a col_type that means this column was never referenced
|
||||||
in the frame info. */
|
in the frame info. */
|
||||||
@ -8523,6 +8523,12 @@ init_dwarf_regnames_iamcu (void)
|
|||||||
dwarf_regnames_lookup_func = regname_internal_by_table_only;
|
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[] =
|
static const char *const dwarf_regnames_x86_64[] =
|
||||||
{
|
{
|
||||||
"rax", "rdx", "rcx", "rbx",
|
"rax", "rdx", "rcx", "rbx",
|
||||||
@ -8589,6 +8595,7 @@ init_dwarf_regnames_aarch64 (void)
|
|||||||
dwarf_regnames = dwarf_regnames_aarch64;
|
dwarf_regnames = dwarf_regnames_aarch64;
|
||||||
dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_aarch64);
|
dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_aarch64);
|
||||||
dwarf_regnames_lookup_func = regname_internal_by_table_only;
|
dwarf_regnames_lookup_func = regname_internal_by_table_only;
|
||||||
|
is_aarch64 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *const dwarf_regnames_s390[] =
|
static const char *const dwarf_regnames_s390[] =
|
||||||
@ -8678,6 +8685,7 @@ void
|
|||||||
init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine)
|
init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine)
|
||||||
{
|
{
|
||||||
dwarf_regnames_lookup_func = NULL;
|
dwarf_regnames_lookup_func = NULL;
|
||||||
|
is_aarch64 = false;
|
||||||
|
|
||||||
switch (e_machine)
|
switch (e_machine)
|
||||||
{
|
{
|
||||||
@ -8720,6 +8728,7 @@ init_dwarf_regnames_by_bfd_arch_and_mach (enum bfd_architecture arch,
|
|||||||
unsigned long mach)
|
unsigned long mach)
|
||||||
{
|
{
|
||||||
dwarf_regnames_lookup_func = NULL;
|
dwarf_regnames_lookup_func = NULL;
|
||||||
|
is_aarch64 = false;
|
||||||
|
|
||||||
switch (arch)
|
switch (arch)
|
||||||
{
|
{
|
||||||
@ -9955,7 +9964,7 @@ display_debug_frames (struct dwarf_section *section,
|
|||||||
|
|
||||||
case DW_CFA_GNU_window_save:
|
case DW_CFA_GNU_window_save:
|
||||||
if (! do_debug_frames_interp)
|
if (! do_debug_frames_interp)
|
||||||
printf (" DW_CFA_GNU_window_save\n");
|
printf (" %s\n", DW_CFA_GNU_window_save_name[is_aarch64]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_CFA_GNU_args_size:
|
case DW_CFA_GNU_args_size:
|
||||||
|
@ -18,7 +18,7 @@ Contents of the .eh_frame section:
|
|||||||
|
|
||||||
0+14 0+18 0+18 FDE cie=0+ pc=0+\.\.0+8
|
0+14 0+18 0+18 FDE cie=0+ pc=0+\.\.0+8
|
||||||
DW_CFA_advance_loc: 4 to 0+4
|
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_advance_loc: 4 to 0+8
|
||||||
DW_CFA_def_cfa_offset: 16
|
DW_CFA_def_cfa_offset: 16
|
||||||
DW_CFA_offset: r29 \(x29\) at cfa-16
|
DW_CFA_offset: r29 \(x29\) at cfa-16
|
||||||
@ -40,7 +40,7 @@ Contents of the .eh_frame section:
|
|||||||
|
|
||||||
0+48 0+1(c|8) 0+1c FDE cie=0+30 pc=0+8\.\.0+10
|
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_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_advance_loc: 4 to 0+10
|
||||||
DW_CFA_def_cfa_offset: 16
|
DW_CFA_def_cfa_offset: 16
|
||||||
DW_CFA_offset: r29 \(x29\) at cfa-16
|
DW_CFA_offset: r29 \(x29\) at cfa-16
|
||||||
|
@ -15,7 +15,7 @@ Contents of the .eh_frame section:
|
|||||||
|
|
||||||
0+14 0+18 0+18 FDE cie=0+ pc=0+\.\.0+8
|
0+14 0+18 0+18 FDE cie=0+ pc=0+\.\.0+8
|
||||||
DW_CFA_advance_loc: 4 to 0+4
|
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_advance_loc: 4 to 0+8
|
||||||
DW_CFA_def_cfa_offset: 16
|
DW_CFA_def_cfa_offset: 16
|
||||||
DW_CFA_offset: r29 \(x29\) at cfa-16
|
DW_CFA_offset: r29 \(x29\) at cfa-16
|
||||||
|
Reference in New Issue
Block a user