aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndu Bhagat <indu.bhagat@oracle.com>2024-01-15 00:59:43 -0800
committerIndu Bhagat <indu.bhagat@oracle.com>2024-01-15 03:31:35 -0800
commit040622a7299dbf3d037490093a5506e08369ee96 (patch)
tree83bcb22c625b3d1ba5a3e332559eac8ed427f3a6
parent71a17ca2f0cc4d364e157f00299f77b05fdec263 (diff)
downloadgdb-040622a7299dbf3d037490093a5506e08369ee96.zip
gdb-040622a7299dbf3d037490093a5506e08369ee96.tar.gz
gdb-040622a7299dbf3d037490093a5506e08369ee96.tar.bz2
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.
-rw-r--r--gas/dw2gencfi.c13
-rw-r--r--gas/dw2gencfi.h2
2 files changed, 12 insertions, 3 deletions
diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c
index eccfd64..216da39 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 317cb5e..ff52add 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 *);