aboutsummaryrefslogtreecommitdiff
path: root/gas/dw2gencfi.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-04-13 23:21:04 +0930
committerAlan Modra <amodra@gmail.com>2021-04-14 08:09:46 +0930
commitc159f35225f7a11daa66895fd33923705f9c42e3 (patch)
tree91d4293f5052a3f3845d4140b994213c5eac9557 /gas/dw2gencfi.c
parent6cacd44948d844b035b359a3d65f575c9d7d7aed (diff)
downloadgdb-c159f35225f7a11daa66895fd33923705f9c42e3.zip
gdb-c159f35225f7a11daa66895fd33923705f9c42e3.tar.gz
gdb-c159f35225f7a11daa66895fd33923705f9c42e3.tar.bz2
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.
Diffstat (limited to 'gas/dw2gencfi.c')
-rw-r--r--gas/dw2gencfi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c
index 8402994..ffaef52 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))