This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug breakpoints/19681] Attempting to set a breakpoint at a label in a C++ constructor causes internal-error: decode_line_full
- From: "keiths at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Fri, 19 Feb 2016 15:16:43 +0000
- Subject: [Bug breakpoints/19681] Attempting to set a breakpoint at a label in a C++ constructor causes internal-error: decode_line_full
- Auto-submitted: auto-generated
- References: <bug-19681-4717 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=19681
Keith Seitz <keiths at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |keiths at redhat dot com
Assignee|unassigned at sourceware dot org |keiths at redhat dot com
--- Comment #1 from Keith Seitz <keiths at redhat dot com> ---
I have been able to reproduce this and take a look.
The linespec parser is working as designed. It properly is figuring out that
the user is looking for a label named "labeldude" in the method A::A(int).
However, when it attempts to convert the parse result to SaLs, the label's
symbol has no address (SYMBOL_VALUE_ADDRESS(sym) == 0). That causes the label
to be skipped, and resultant SaL list is empty (nelts == 0).
Looking over the debug info, the compiler outputs the following DIEs [gcc 6.0.0
20151105 (experimental)]:
<1><c4>: Abbrev Number: 13 (DW_TAG_subprogram)
<c5> DW_AT_specification: <0x3e>
<c9> DW_AT_inline : 2 (declared as inline but ignored)
<ca> DW_AT_object_pointer: <0xd2>
<ce> DW_AT_sibling : <0xee>
[snip]
<2><e6>: Abbrev Number: 16 (DW_TAG_label)
<e7> DW_AT_name : (indirect string, offset: 0x48): labeldude
<eb> DW_AT_decl_file : 1
<ec> DW_AT_decl_line : 5
<2><ed>: Abbrev Number: 0
[snip]
<1><f3>: Abbrev Number: 18 (DW_TAG_subprogram)
<f4> DW_AT_abstract_origin: <0xc4>
<f8> DW_AT_linkage_name: (indirect string, offset: 0x52): _ZN1AC2Ei
<fc> DW_AT_object_pointer: <0x116>
<100> DW_AT_low_pc : 0x400624
<108> DW_AT_high_pc : 0x17
<110> DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa)
<112> DW_AT_object_pointer: <0x116>
<116> DW_AT_GNU_all_call_sites: 1
[snip]
<3><12b>: Abbrev Number: 21 (DW_TAG_label)
<12c> DW_AT_abstract_origin: <0xe6>
<130> DW_AT_low_pc : 0x40062f
<3><138>: Abbrev Number: 0
So we have an abstract_origin DIE for the ctor and for the label, and GDB isn't
recognizing this and recording the label's address.
I'll see if I can't work up a patch.
--
You are receiving this mail because:
You are on the CC list for the bug.