aboutsummaryrefslogtreecommitdiff
path: root/gcc/dbxout.c
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2021-01-12 16:27:53 +0100
committerBernd Edlinger <bernd.edlinger@hotmail.de>2021-05-06 16:37:58 +0200
commite69ac0203725fb8da83a1cc88d32191b7a0b2c0c (patch)
tree26336b92515ae622b239818452a41a394fdbf2c9 /gcc/dbxout.c
parent0f442f1378f4e9866793309504e38467f34c5d61 (diff)
downloadgcc-e69ac0203725fb8da83a1cc88d32191b7a0b2c0c.zip
gcc-e69ac0203725fb8da83a1cc88d32191b7a0b2c0c.tar.gz
gcc-e69ac0203725fb8da83a1cc88d32191b7a0b2c0c.tar.bz2
Add line debug info for virtual thunks
There is no debug info when the DECL_IGNORED_P flag is set. But sometimes we have the line info of the function decl, as in the case of on virtual thunks. So instead of no line info at all, we emit at least the location of the function decl. On the other side, there are DECL_IGNORED_P functions which do not have any source line info at all. Remove those from the debug_range info, to make it clear for the debugger that the line info for these functions is invalid. This has the effect that the debugger will not step into the function without debug info. 2021-05-06 Bernd Edlinger <bernd.edlinger@hotmail.de> PR ipa/97937 * debug.h (gcc_debug_hooks): Add set_ignored_loc function pointer. * dwarf2out.h (dw_fde_node::ignored_debug): New data item. * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Add dummy set_ignored_loc callbacks. * debug.c (do_nothing_debug_hooks): Likewise. * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. * dwarf2out.c (text_section_used, cold_text_section_used): Remove. (in_text_section_p, last_text_label, last_cold_label, switch_text_ranges, switch_cold_ranges): New data items. (dwarf2out_note_section_used): Remove. (dwarf2out_begin_prologue): Set fde->ignored_debug and in_text_section_p. (mark_ignored_debug_section): New helper function. (dwarf2out_end_epilogue, dwarf2out_switch_text_section): Call mark_ignored_debug_section. (dwarf2_debug_hooks): Use dwarf2out_set_ignored_loc. (dwarf2_lineno_debug_hooks): Use dummy for set_ignored_loc. (size_of_aranges): Adjust formula for multi-part text ranges size. (output_aranges): Output multi-part text ranges. (dwarf2out_set_ignored_loc): New callback function. (dwarf2out_finish): Output multi-part text ranges. (dwarf2out_c_finalize): Clear new data items. * final.c (final_start_function_1): Call set_ignored_loc callback. (final_scan_insn_1): Likewise. * ggc-page.c (gt_ggc_mx): New helper function. * stringpool.c (gt_pch_nx): Likewise.
Diffstat (limited to 'gcc/dbxout.c')
-rw-r--r--gcc/dbxout.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 70b635c..d20527b 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -362,6 +362,7 @@ const struct gcc_debug_hooks dbx_debug_hooks =
dbxout_end_block,
debug_true_const_tree, /* ignore_block */
dbxout_source_line, /* source_line */
+ debug_nothing_int_int_charstar, /* set_ignored_loc */
dbxout_begin_prologue, /* begin_prologue */
debug_nothing_int_charstar, /* end_prologue */
debug_nothing_int_charstar, /* begin_epilogue */
@@ -409,6 +410,7 @@ const struct gcc_debug_hooks xcoff_debug_hooks =
xcoffout_end_block,
debug_true_const_tree, /* ignore_block */
xcoffout_source_line,
+ debug_nothing_int_int_charstar, /* set_ignored_loc */
xcoffout_begin_prologue, /* begin_prologue */
debug_nothing_int_charstar, /* end_prologue */
debug_nothing_int_charstar, /* begin_epilogue */