From: Indu Bhagat Date: Mon, 15 Jan 2024 08:59:43 +0000 (-0800) Subject: gas: dw2gencfi: expose a new cfi_set_last_fde API X-Git-Tag: binutils-2_42~76 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=040622a7299dbf3d037490093a5506e08369ee96;p=thirdparty%2Fbinutils-gdb.git gas: dw2gencfi: expose a new cfi_set_last_fde API gas/ * dw2gencfi.c (cfi_set_last_fde): New definition. (dot_cfi_endproc): Use it. (dot_cfi_fde_data): Likewise. (dot_cfi_inline_lsda): Likewise. * dw2gencfi.h (struct fde_entry): New declaration. (cfi_set_last_fde): Likewise. --- diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c index eccfd6470c2..216da39803f 100644 --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -481,6 +481,13 @@ cfi_end_fde (symbolS *label) frchain_now->frch_cfi_data = NULL; } +/* Set the last FDE .*/ +void +cfi_set_last_fde (struct fde_entry *fde) +{ + last_fde = fde; +} + /* Set the return column for the current FDE. */ void @@ -1330,7 +1337,7 @@ dot_cfi_endproc (int ignored ATTRIBUTE_UNUSED) return; } - last_fde = frchain_now->frch_cfi_data->cur_fde_data; + cfi_set_last_fde (frchain_now->frch_cfi_data->cur_fde_data); cfi_end_fde (symbol_temp_new_now ()); @@ -1415,7 +1422,7 @@ dot_cfi_fde_data (int ignored ATTRIBUTE_UNUSED) return; } - last_fde = frchain_now->frch_cfi_data->cur_fde_data; + cfi_set_last_fde (frchain_now->frch_cfi_data->cur_fde_data); if ((all_cfi_sections & CFI_EMIT_target) != 0 || (all_cfi_sections & CFI_EMIT_eh_frame_compact) != 0) @@ -1568,7 +1575,7 @@ dot_cfi_inline_lsda (int ignored ATTRIBUTE_UNUSED) if (last_fde->eh_header_type == EH_COMPACT_HAS_LSDA) output_compact_unwind_data (last_fde, align); - last_fde = NULL; + cfi_set_last_fde (NULL); return; } diff --git a/gas/dw2gencfi.h b/gas/dw2gencfi.h index 317cb5e601e..ff52add764c 100644 --- a/gas/dw2gencfi.h +++ b/gas/dw2gencfi.h @@ -25,6 +25,7 @@ #include "dwarf2.h" struct symbol; +struct fde_entry; extern const pseudo_typeS cfi_pseudo_table[]; @@ -35,6 +36,7 @@ extern void cfi_finish (void); /* Entry points for backends to add unwind information. */ extern void cfi_new_fde (struct symbol *); extern void cfi_end_fde (struct symbol *); +extern void cfi_set_last_fde (struct fde_entry *fde); extern void cfi_set_return_column (unsigned); extern void cfi_set_sections (void); extern void cfi_add_advance_loc (struct symbol *);