http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37237



--- Comment #11 from Tom Tromey <tromey at gcc dot gnu.org> 2013-02-18 15:20:56 
UTC ---

(In reply to comment #10)

> I don't think such an attribute belongs in the DWARF standard, since this is

> very much an internal detail of the ABI; another ABI might have just a single

> destructor with magic arguments, like the old G++ ABI.

> 

> You need to know a lot about the destructor ABI as it is; looking for D0/D1

> doesn't seem like a major additional burden to me.



With git master I actually see multiple destructors now:



 <1><be>: Abbrev Number: 15 (DW_TAG_subprogram)

    <bf>   DW_AT_abstract_origin: <0x93>        

    <c3>   DW_AT_linkage_name: (indirect string, offset: 0x10): _ZN1AD2Ev       

    <c7>   DW_AT_low_pc      : 0x0      

    <cf>   DW_AT_high_pc     : 0x39 0x0 

    <d7>   DW_AT_frame_base  : 1 byte block: 9c         (DW_OP_call_frame_cfa)

    <d9>   DW_AT_object_pointer: <0xe1> 

    <dd>   DW_AT_GNU_all_tail_call_sites: 1     

    <dd>   DW_AT_sibling     : <0xea>   

[...]

 <1><ea>: Abbrev Number: 17 (DW_TAG_subprogram)

    <eb>   DW_AT_abstract_origin: <0x93>        

    <ef>   DW_AT_linkage_name: (indirect string, offset: 0x3e): _ZN1AD0Ev       

    <f3>   DW_AT_low_pc      : 0x3a     

    <fb>   DW_AT_high_pc     : 0x26 0x0 

    <103>   DW_AT_frame_base  : 1 byte block: 9c        (DW_OP_call_frame_cfa)

    <105>   DW_AT_object_pointer: <0x109>       

    <109>   DW_AT_GNU_all_tail_call_sites: 1    





What I'd like to know is what is guaranteed.

Previously gcc didn't emit the linkage name for any destructor -- but

this would make the proposed solution much harder to implement (gdb

would have to implement name mangling...).

So I suppose I'd like a guarantee that the destructor will be emitted

with at least one linkage name.

Reply via email to