For this code:
class A {
  int f(void);
};
int (A::*ptr) (void);

GCC will output debug information claiming that the type of PTR is:

struct {
  void (*__pfn) (args, ...);
  ptrdiff_t __delta;
};

At least for dwarf2, GCC should output DW_TAG_ptr_to_member, just like it does
for data members.

The definition in the spec of DW_AT_use_location is pretty meaningless for
function members (that's come up on the dwarf list before, but was never
resolved, as far as I know), so it should probably be omitted.

This does not affect GDB much.  Versions up to 6.5 have poor pointer to member
support.  The next release will be better, but will also recognize GCC's
current broken debug information.


-- 
           Summary: GCC should output DW_TAG_ptr_to_member for member
                    functions
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: drow at gcc dot gnu dot org


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

Reply via email to