From: Alan Modra Date: Tue, 13 Apr 2021 13:51:04 +0000 (+0930) Subject: PR27723, Internal error in select_cie_for_fde X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c159f35225f7a11daa66895fd33923705f9c42e3;p=binutils-gdb.git PR27723, Internal error in select_cie_for_fde PR 27723 * dw2gencfi.c (select_cie_for_fde): Handle DW_CFA_val_offset, DW_CFA_GNU_window_save and DW_CFA_restore_state. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 40fedbbe802..07e5581119a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2021-04-14 Alan Modra + + PR 27723 + * dw2gencfi.c (select_cie_for_fde): Handle DW_CFA_val_offset, + DW_CFA_GNU_window_save and DW_CFA_restore_state. + 2021-04-13 Alan Modra * testsuite/gas/m68hc11/m68hc11.exp (gas_m68hc11_message): Don't diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c index 84029940b2e..ffaef52cd59 100644 --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -2100,6 +2100,7 @@ select_cie_for_fde (struct fde_entry *fde, bool eh_frame, case DW_CFA_offset: case DW_CFA_def_cfa: + case DW_CFA_val_offset: if (i->u.ri.reg != j->u.ri.reg) goto fail; if (i->u.ri.offset != j->u.ri.offset) @@ -2129,6 +2130,8 @@ select_cie_for_fde (struct fde_entry *fde, bool eh_frame, case CFI_escape: case CFI_val_encoded_addr: case CFI_label: + case DW_CFA_restore_state: + case DW_CFA_GNU_window_save: /* Don't bother matching these for now. */ goto fail; @@ -2144,6 +2147,7 @@ select_cie_for_fde (struct fde_entry *fde, bool eh_frame, && (!j || j->insn == DW_CFA_advance_loc || j->insn == DW_CFA_remember_state + || j->insn == DW_CFA_GNU_window_save || j->insn == CFI_escape || j->insn == CFI_val_encoded_addr || j->insn == CFI_label))