* constructors and DW_AT_MIPS_linkage_name
@ 2004-02-13 17:59 David Carlton
2004-02-15 1:14 ` Daniel Jacobowitz
0 siblings, 1 reply; 2+ messages in thread
From: David Carlton @ 2004-02-13 17:59 UTC (permalink / raw)
To: gdb; +Cc: Daniel Jacobowitz
I was just looking at the .debug_info for the example given in PR
1553, and I was surprised to see the following (some bits have been
deleted)
.uleb128 0x2 # (DIE (0x25) DW_TAG_structure_type)
.long 0x7b # DW_AT_sibling
.ascii "A\0" # DW_AT_name
.byte 0x1 # DW_AT_byte_size
.uleb128 0x4 # (DIE (0x37) DW_TAG_subprogram)
.long 0x57 # DW_AT_sibling
.byte 0x1 # DW_AT_external
.long .LC0 # DW_AT_name: "operator="
.long .LC1 # DW_AT_MIPS_linkage_name: "_ZN1AaSERKS_"
.long 0x7b # DW_AT_type
.byte 0x1 # DW_AT_artificial
.byte 0x1 # DW_AT_declaration
.byte 0x0 # end of children of DIE 0x37
.uleb128 0x7 # (DIE (0x57) DW_TAG_subprogram)
.long 0x6d # DW_AT_sibling
.byte 0x1 # DW_AT_external
.ascii "A\0" # DW_AT_name
.byte 0x1 # DW_AT_artificial
.byte 0x1 # DW_AT_declaration
.byte 0x0 # end of children of DIE 0x57
.uleb128 0x8 # (DIE (0x6d) DW_TAG_subprogram)
.byte 0x1 # DW_AT_external
.ascii "A\0" # DW_AT_name
.byte 0x1 # DW_AT_artificial
.byte 0x1 # DW_AT_declaration
.byte 0x0 # end of children of DIE 0x6d
.byte 0x0 # end of children of DIE 0x25
The weird thing is that operator= gets a linkage name, but the
constructors don't. I don't think we're prepared to deal with this;
it would explain some weirdnesses that I've seen elsewhere, where
trying to look up a class returns that class's constructor instead.
Is this a known GCC issue? (The above is with GCC 3.2; for GCC
mainline, the debug info for A isn't there at all, but that's a
separate issue.) If so, in what circumstances does it occur?
David Carlton
carlton@kealia.com
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: constructors and DW_AT_MIPS_linkage_name
2004-02-13 17:59 constructors and DW_AT_MIPS_linkage_name David Carlton
@ 2004-02-15 1:14 ` Daniel Jacobowitz
0 siblings, 0 replies; 2+ messages in thread
From: Daniel Jacobowitz @ 2004-02-15 1:14 UTC (permalink / raw)
To: David Carlton; +Cc: gdb
On Fri, Feb 13, 2004 at 09:59:30AM -0800, David Carlton wrote:
> I was just looking at the .debug_info for the example given in PR
> 1553, and I was surprised to see the following (some bits have been
> deleted)
> The weird thing is that operator= gets a linkage name, but the
> constructors don't. I don't think we're prepared to deal with this;
> it would explain some weirdnesses that I've seen elsewhere, where
> trying to look up a class returns that class's constructor instead.
>
> Is this a known GCC issue? (The above is with GCC 3.2; for GCC
> mainline, the debug info for A isn't there at all, but that's a
> separate issue.) If so, in what circumstances does it occur?
Hi David,
You have rediscovered the cloned constructors "bug". The constructor
referenced in the debug information actually is an abstract instance,
and the two concrete instances reference that die via
DW_AT_abstract_origin. Any cloned constructor or destructor will show
this behavior.
The finding-constructors-instead-of-classes thing is actually only
tangentially related. At least, the last time I ran into it, it was.
We do not walk the DW_AT_abstract_origin, or have a mangled name, so we
assume it's a toplevel function named Classname. I thought this no
longer happened...
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-02-15 1:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-02-13 17:59 constructors and DW_AT_MIPS_linkage_name David Carlton
2004-02-15 1:14 ` Daniel Jacobowitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox