From: Jim Blandy <jimb@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: PATCH: don't corrupt cv_type chain
Date: Fri, 03 May 2002 17:20:00 -0000 [thread overview]
Message-ID: <20020504002026.6E6BA5EA11@zwingli.cygnus.com> (raw)
This fixes the second failure in hang.exp.
2002-05-03 Jim Blandy <jimb@redhat.com>
* stabsread.c (cleanup_undefined_types): Use replace_type, not memcpy.
(read_type): Doc fix.
* gdbtypes.c (replace_type): Doc fix.
Index: gdb/gdbtypes.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtypes.c,v
retrieving revision 1.44
diff -c -r1.44 gdbtypes.c
*** gdb/gdbtypes.c 26 Apr 2002 20:08:18 -0000 1.44
--- gdb/gdbtypes.c 4 May 2002 00:18:05 -0000
***************
*** 521,530 ****
/* Replace the contents of ntype with the type *type.
! This function should not be necessary, but is due to quirks in the stabs
! reader. This should go away. It does not handle the replacement type
! being cv-qualified; it could be easily fixed to, but it should go away,
! remember? */
void
replace_type (struct type *ntype, struct type *type)
{
--- 521,530 ----
/* Replace the contents of ntype with the type *type.
! When building recursive types, it is necessary to update a type's
! definition after people already have references to it. The C
! language's concept of an `incomplete type' is an acknowledgement of
! this. */
void
replace_type (struct type *ntype, struct type *type)
{
Index: gdb/stabsread.c
===================================================================
RCS file: /cvs/src/src/gdb/stabsread.c,v
retrieving revision 1.31
diff -c -r1.31 stabsread.c
*** gdb/stabsread.c 4 May 2002 00:02:50 -0000 1.31
--- gdb/stabsread.c 4 May 2002 00:18:08 -0000
***************
*** 2537,2543 ****
the related problems with unnecessarily stubbed types;
someone motivated should attempt to clean up the issue
here as well. Once a type pointed to has been created it
! should not be modified. */
replace_type (type, xtype);
TYPE_NAME (type) = NULL;
TYPE_TAG_NAME (type) = NULL;
--- 2537,2560 ----
the related problems with unnecessarily stubbed types;
someone motivated should attempt to clean up the issue
here as well. Once a type pointed to has been created it
! should not be modified.
!
! Well, it's not *absolutely* wrong. Constructing recursive
! types (trees, linked lists) necessarily entails modifying
! types after creating them. Constructing any loop structure
! entails side effects. The Dwarf 2 reader does handle this
! more gracefully (it never constructs more than once
! instance of a type object, so it doesn't have to copy type
! objects wholesale), but it still mutates type objects after
! other folks have references to them.
!
! Keep in mind that this circularity/mutation issue shows up
! at the source language level, too: C's "incomplete types",
! for example. So the proper cleanup, I think, would be to
! limit GDB's type smashing to match exactly those required
! by the source language. So GDB could have a
! "complete_this_type" function, but never create unnecessary
! copies of a type otherwise. */
replace_type (type, xtype);
TYPE_NAME (type) = NULL;
TYPE_TAG_NAME (type) = NULL;
***************
*** 5122,5131 ****
&& (TYPE_CODE (SYMBOL_TYPE (sym)) ==
TYPE_CODE (*type))
&& STREQ (SYMBOL_NAME (sym), typename))
! {
! memcpy (*type, SYMBOL_TYPE (sym),
! sizeof (struct type));
! }
}
}
}
--- 5139,5145 ----
&& (TYPE_CODE (SYMBOL_TYPE (sym)) ==
TYPE_CODE (*type))
&& STREQ (SYMBOL_NAME (sym), typename))
! replace_type (*type, SYMBOL_TYPE (sym));
}
}
}
next reply other threads:[~2002-05-04 0:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-03 17:20 Jim Blandy [this message]
2002-05-03 17:32 ` Daniel Jacobowitz
2002-05-03 19:59 ` Jim Blandy
2002-05-03 20:02 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020504002026.6E6BA5EA11@zwingli.cygnus.com \
--to=jimb@redhat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox