This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] dwarf2read.c: set TYPE_DOMAIN_TYPE correctly for methods
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: David Carlton <carlton at math dot stanford dot edu>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Thu, 22 Aug 2002 16:42:11 -0400
- Subject: Re: [RFA] dwarf2read.c: set TYPE_DOMAIN_TYPE correctly for methods
- References: <ro1r8gqpr6h.fsf@jackfruit.Stanford.EDU>
On Thu, Aug 22, 2002 at 01:35:50PM -0700, David Carlton wrote:
> I've figured out what caused the regression that I turned up in PR
> gdb/653; here's a patch that fixes it.
>
> David Carlton
> carlton@math.stanford.edu
>
> 2002-08-22 David Carlton <carlton@math.stanford.edu>
>
> * dwarf2read.c (dwarf2_add_member_fn): Add back in the type
> argument that was deleted on 2002-06-14: it was needed after all,
> as PR gdb/653 demonstrates. Update call to smash_to_method_type.
> (read_structure_scope): Update call to dwarf2_add_member_fn.
Can you explain why this is necessary? I could not find any path to
that point where type != die->type.
>
> Index: dwarf2read.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2read.c,v
> retrieving revision 1.65
> diff -u -p -r1.65 dwarf2read.c
> --- dwarf2read.c 20 Aug 2002 18:45:30 -0000 1.65
> +++ dwarf2read.c 22 Aug 2002 20:13:53 -0000
> @@ -803,7 +803,8 @@ static void dwarf2_attach_fields_to_type
> struct type *, struct objfile *);
>
> static void dwarf2_add_member_fn (struct field_info *,
> - struct die_info *, struct objfile *objfile,
> + struct die_info *, struct type *,
> + struct objfile *objfile,
> const struct comp_unit_head *);
>
> static void dwarf2_attach_fn_fields_to_type (struct field_info *,
> @@ -2259,7 +2260,7 @@ dwarf2_attach_fields_to_type (struct fie
>
> static void
> dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
> - struct objfile *objfile,
> + struct type *type, struct objfile *objfile,
> const struct comp_unit_head *cu_header)
> {
> struct attribute *attr;
> @@ -2327,7 +2328,7 @@ dwarf2_add_member_fn (struct field_info
> struct type *return_type = TYPE_TARGET_TYPE (die->type);
> int nparams = TYPE_NFIELDS (die->type);
>
> - smash_to_method_type (fnp->type, die->type,
> + smash_to_method_type (fnp->type, type,
> TYPE_TARGET_TYPE (die->type),
> TYPE_FIELDS (die->type),
> TYPE_NFIELDS (die->type),
> @@ -2516,7 +2517,7 @@ read_structure_scope (struct die_info *d
> {
> /* C++ member function. */
> process_die (child_die, objfile, cu_header);
> - dwarf2_add_member_fn (&fi, child_die, objfile, cu_header);
> + dwarf2_add_member_fn (&fi, child_die, type, objfile, cu_header);
> }
> else if (child_die->tag == DW_TAG_inheritance)
> {
>
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer