This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA] Delayed physname computation


Hi,

This is actually a patch for symtab/11465.

Basically, dwarf2_physname is constructing the name of a class method in which one of the method's parameters is of a type that has not yet been fully processed. (c_type_print_args will say "<incomplete type>"). Bad things happen in/under c_type_print_args when you give it an incomplete type like this.

The solution I've implemented is to simply delay processing of method physnames until the entire CU has been read/processed.

Unfortunately, this is another example in which the compiler used may alter the test outcome. As a result, I've had to hack in a test case which is independent of the compiler. I would appreciate special attention to the test source file (pr11465.S), which is an edited version of gcc's --save-temps output.

I have regression tested this on x86 and x86_64 linux. There aer no regressions, and the new test now passes.

Keith

ChangeLog
2010-04-20  Keith Seitz  <keiths@redhat.com>

	* dwarf2read.c (struct delayed_method_info): New struct.
	(struct dwarf2_cu): Add members method_index and method_list.
	(struct dwarf2_per_cu_data): Add member num_methods.
	(count_partial_methods): New function.
	(scan_partial_symbols): Count methods for union, class, structure,
	and interface types.
	(add_partial_subprogram): Count methods here, too.
	(add_to_method_list): New function.
	(compute_delayed_physnames): New function.
	(process_full_comp_unit): Allocate the CU's methods list,
	compute delayed physnames, and free the method list.
	(dwarf2_add_member_fn): For C++ and Java, delay the computation
	of the physname until after the CU is read.
	(load_partial_dies): Add subprogram and lexical block DIEs
	for Java and C++, too.

testsuite/ChangeLog
2010-04-20  Keith Seitz  <keiths@redhat.com>

	* gdb.dwarf2/pr11465.exp: New test.
	* gdb.dwarf2/pr11465.S: New file.

Attachment: delayed_physnames.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]