Hi, I have finally gotten around to revisiting this patch and rebasing it on top of all the recent churn in dwarf2read.c. I have also (finally) developed a test case for the "trivial" obstack leak that I previously reported. [It was trivial, but also very dependent on compiler and STL implementation. That made it very non-trivial. :-)] For additional background information: http://sourceware.org/ml/gdb-patches/2010-04/msg00641.html http://sourceware.org/bugzilla/show_bug.cgi?id=11465 Other than twiddling the const correctness of some of the APIs (not changed/patched/updated by this patch), I believe I have addressed all of the outstanding issues raised by maintainers. Aside1: A patch similar to this has been in Fedora for some time now... Aside2: I've merged the "obstack leak" patch into the delayed physname patch, since you cannot trigger this failure without the delayed physname patch. Keith ChangeLog 2010-07-20 Keith Seitz PR symtab/11465: * dwarf2read.c (struct delayed_method_info): New struct. (struct dwarf2_cu): Add vector method_list. (scan_partial_symbols): Count methods for union, class, structure, and interface types. (add_to_method_list): New function. (free_delayed_list): New function. (compute_delayed_physnames): New function. (process_full_comp_unit): Make a cleanup for the CU's delayed physname list, compute the delayed physnames, and free the the list. (dwarf2_add_member_fn): For C++ and Java, delay the computation of the physname until after the CU is read. * dwarf2read.c (read_structure_type): Check if the current DIE's type was already completed after dwarf2_full_name was called. testsuite/ChangeLog 2010-07-20 Keith Seitz PR symtab/11465: * gdb.dwarf2/pr11465.exp: New test. * gdb.dwarf2/pr11465.S: New file. * gdb.dwarf2/dw2-double-set-die-type.S: New file. * gdb.dwarf2/dw2-double-set-die-type.exp: New test.