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



             Bug #: 56563

           Summary: no debuginfo for "explicit" operator

    Classification: Unclassified

           Product: gcc

           Version: unknown

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: debug

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: tro...@gcc.gnu.org





Consider this:



struct q {

  explicit operator int();

};



q::operator int() { return 23; }





compile with -g and examine the debuginfo with readelf.

There is no mention of the "explicit":



 <2><37>: Abbrev Number: 3 (DW_TAG_subprogram)

    <38>   DW_AT_external    : 1        

    <38>   DW_AT_name        : (indirect string, offset: 0x0): operator int     

    <3c>   DW_AT_decl_file   : 1        

    <3d>   DW_AT_decl_line   : 2        

    <3e>   DW_AT_linkage_name: (indirect string, offset: 0x12): _ZN1qcviEv      

    <42>   DW_AT_type        : <0x51>   

    <46>   DW_AT_declaration : 1        

    <46>   DW_AT_object_pointer: <0x4a> 

[...]

 <1><5e>: Abbrev Number: 7 (DW_TAG_subprogram)

    <5f>   DW_AT_specification: <0x37>  

    <63>   DW_AT_decl_line   : 5        

    <64>   DW_AT_low_pc      : 0x0      

    <6c>   DW_AT_high_pc     : 0xf 0x0  

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

    <76>   DW_AT_object_pointer: <0x7e> 

    <7a>   DW_AT_GNU_all_call_sites: 1  

    <7a>   DW_AT_sibling     : <0x8b>   





This prevents gdb from properly implementing this part of

c++ expressions.

Reply via email to