diff options
author | 2022-07-21 16:28:50 +0930 | |
---|---|---|
committer | 2022-07-21 16:37:53 +0930 | |
commit | 2d300cb93795a94363449af0bed4f29d1d891444 (patch) | |
tree | d2fdab9810e221f3bc8044646c0d49de62635357 | |
parent | PR29337, readelf CU/TU mixup in .gdb_index (diff) | |
download | binutils-gdb-2d300cb93795a94363449af0bed4f29d1d891444.tar.gz binutils-gdb-2d300cb93795a94363449af0bed4f29d1d891444.tar.bz2 binutils-gdb-2d300cb93795a94363449af0bed4f29d1d891444.zip |
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.
(cherry picked from commit e4e340a3ff2ccc825f4a40abf947cdf32b3fdbbf)
-rw-r--r-- | binutils/dwarf.c | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/pac_ab_key.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/pac_negate_ra_state.d | 2 |
3 files changed, 14 insertions, 5 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 63e6d2e5a04..fa5447a05fb 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -8399,7 +8399,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. */ @@ -8518,6 +8518,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", @@ -8584,6 +8590,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[] = @@ -8673,6 +8680,7 @@ void init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine) { dwarf_regnames_lookup_func = NULL; + is_aarch64 = false; switch (e_machine) { @@ -8715,6 +8723,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) { @@ -9950,7 +9959,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: diff --git a/gas/testsuite/gas/aarch64/pac_ab_key.d b/gas/testsuite/gas/aarch64/pac_ab_key.d index ea9cf2fb38a..5e7496a86bd 100644 --- a/gas/testsuite/gas/aarch64/pac_ab_key.d +++ b/gas/testsuite/gas/aarch64/pac_ab_key.d @@ -18,7 +18,7 @@ Contents of the .eh_frame section: 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 @@ -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 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 diff --git a/gas/testsuite/gas/aarch64/pac_negate_ra_state.d b/gas/testsuite/gas/aarch64/pac_negate_ra_state.d index cef533a7343..62717767608 100644 --- a/gas/testsuite/gas/aarch64/pac_negate_ra_state.d +++ b/gas/testsuite/gas/aarch64/pac_negate_ra_state.d @@ -15,7 +15,7 @@ Contents of the .eh_frame section: 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 |