diff options
author | Alan Modra <amodra@gmail.com> | 2021-04-13 23:21:04 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-04-14 08:09:46 +0930 |
commit | c159f35225f7a11daa66895fd33923705f9c42e3 (patch) | |
tree | 91d4293f5052a3f3845d4140b994213c5eac9557 /gas/dw2gencfi.c | |
parent | 6cacd44948d844b035b359a3d65f575c9d7d7aed (diff) | |
download | gdb-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.c | 4 |
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)) |