PR27723, Internal error in select_cie_for_fde
authorAlan Modra <amodra@gmail.com>
Tue, 13 Apr 2021 13:51:04 +0000 (23:21 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 13 Apr 2021 22:39:46 +0000 (08:09 +0930)
PR 27723
* dw2gencfi.c (select_cie_for_fde): Handle DW_CFA_val_offset,
DW_CFA_GNU_window_save and DW_CFA_restore_state.

gas/ChangeLog
gas/dw2gencfi.c

index 40fedbbe802dbee9e12a9019baf6b3fa01cd7a11..07e5581119adce843e9c9ec98c9823523832893f 100644 (file)
@@ -1,3 +1,9 @@
+2021-04-14  Alan Modra  <amodra@gmail.com>
+
+       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  <amodra@gmail.com>
 
        * testsuite/gas/m68hc11/m68hc11.exp (gas_m68hc11_message): Don't
index 84029940b2e7af67a76dba4165668373d85f08a4..ffaef52cd596be4b1f9aa6ca6d58c071251a6153 100644 (file)
@@ -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))