On Oct 5, 2012, at 6:05 PM, Cary Coutant wrote: >> There certainly is a fair amount of code in dwarf2read.c in gdb to handle >> DW_AT_declaration and do things differently for declarations. >> >> Should I rework this patch to use that mechanism instead? If so, how? If >> the class is marked only by prune_unused_types_mark visiting it as a parent, >> but hasn't been marked by ??? that visits all its children, then emit it >> with a DW_AT_declaration marking? > > One question I'd consider is what do you want to see in the debugger > if this truly is the only debug info you have for the class? (For > example, in the test case you added, a DW_AT_declaration attribute > won't help if there's no full definition of the class anywhere else.) > Is it reasonable to just show a truncated class definition in that > case, or do you want the full definition available. My tentative > answer would be that we do the pruning here because we expect there to > be a full definition somewhere else, and that the lack of a > DW_AT_declaration attribute is the bug. > > As you've discovered, however, it's not straightforward. You'll want > to add the declaration attribute if you mark the DIE from below, but > not from any reference where dokids is true. Alternatively, add the > declaration attribute if any of its children are pruned. Perhaps that > could be done in prune_unused_types_prune(). > > If you're willing to rework the patch this way (assuming GDB does the > right thing with it), I think that would be better. Thanks. > > -cary
I'll give it a try. I'll keep the existing patch in reserve in case we run out of time before Phase 1 end -- it would be good to have some sort of fix for this bug even if it's not the ideal one. paul