On 1/6/21 12:49 PM, Eric Botcazou wrote: >> currently there is a problem when debugging a virtual thunk. That is >> a decl with DECL_IGNORED_P. Currently the line information displayed >> in gdb is completely bogus, thus the last line of whatever function >> is immediately before the PC of the thunk. > > DECL_IGNORED_P means completely ignored for debug info purposes though and I > think that the Ada compiler expects this semantic. > >> This patch improves the debug experience at least a bit by emitting >> at the line number information where the thunk has been defined. >> I do not dare to touch anything but dwarf2 debug info, therefore >> the patch is a bit awkward. > > Please run the GDB testsuite with Ada support on the patch. >
Yes, I always do that, and this patch did not affect any Ada tests. Anyway, I guess this patch will need some rework, to probably attack the DECL_IGNORED_P without line info. One thing I remembered from previous testing, and I was not sure if it is a correctness issue or not, is this: As I had to call begin_function also for DECL_IGNORED_P, I noticed that there are a number of Ada functions with DECL_IGNORED_P, but their crtl->has_bb_partition is set, and therefore this block is executed with my patch, but it is currently not executed: See dwarf2out_begin_function: if (crtl->has_bb_partition && !cold_text_section) { gcc_assert (current_function_decl == fun); cold_text_section = unlikely_text_section (); switch_to_section (cold_text_section); ASM_OUTPUT_LABEL (asm_out_file, cold_text_section_label); switch_to_section (sec); } I had expected that functions with DECL_IGNORED_P should not need that side effect. Anyway I had not seen any effect from this. Bernd.