* Re: Bug Fix: make_cv_type
[not found] <1AA36FBA-A463-11D8-9DB9-000A958F4C44@apple.com>
@ 2004-05-12 22:29 ` Daniel Jacobowitz
2004-05-13 1:50 ` Jim Ingham
0 siblings, 1 reply; 2+ messages in thread
From: Daniel Jacobowitz @ 2004-05-12 22:29 UTC (permalink / raw)
To: Jim Ingham; +Cc: gdb-patches
On Wed, May 12, 2004 at 03:24:16PM -0700, Jim Ingham wrote:
> make_cv_type actually gets called in two ways that require it to fix up
> an unresolved type which could potentially get its complete type from
> another objfile. One is then the input type is a stub. The other is
> when the input type is an opaque type (TYPE_IS_OPAQUE). For an
> instance of the latter, see check_typedef where is calls
> lookup_transparent_type when it sees an opaque type.
>
> But the second case in not accounted for in the gdb_assert in
> make_cv_type. It should read:
Do you have a testcase (or ChangeLog entry :) for this?
>
> Index: gdbtypes.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtypes.c,v
> retrieving revision 1.82
> diff -p -p -r1.82 gdbtypes.c
> *** gdbtypes.c 9 Mar 2004 17:08:25 -0000 1.82
> --- gdbtypes.c 12 May 2004 22:18:34 -0000
> *************** make_cv_type (int cnst, int voltl, struc
> *** 525,531 ****
> to do is to copy the core type into the new objfile. */
>
> gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type)
> ! || TYPE_STUB (*typeptr));
> if (TYPE_OBJFILE (*typeptr) != TYPE_OBJFILE (type))
> {
> TYPE_MAIN_TYPE (*typeptr)
> --- 525,531 ----
> to do is to copy the core type into the new objfile. */
>
> gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type)
> ! || (TYPE_STUB (*typeptr) || TYPE_IS_OPAQUE
> (*typeptr)));
> if (TYPE_OBJFILE (*typeptr) != TYPE_OBJFILE (type))
> {
> TYPE_MAIN_TYPE (*typeptr)
>
> Jim
> --
> Jim Ingham jingham@apple.com
> Developer Tools
> Apple Computer
>
>
--
Daniel Jacobowitz
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Bug Fix: make_cv_type
2004-05-12 22:29 ` Bug Fix: make_cv_type Daniel Jacobowitz
@ 2004-05-13 1:50 ` Jim Ingham
0 siblings, 0 replies; 2+ messages in thread
From: Jim Ingham @ 2004-05-13 1:50 UTC (permalink / raw)
To: Daniel Jacobowitz; +Cc: gdb-patches
Grr... I keep forgetting the ChangeLog. Here:
2004-05-12 Jim Ingham <jingham@apple.com>
* gdbtypes.c (make_cv_type): We may be resolving an opaque
type as well as a stub type. So include that in the assert
when we are copying over a type from one objfile to another.
I don't have a simple test case - the bug showed up in DVD Studio Pro
which is anything but simple... You have to make a C++ shared library
with a type that gets exported in the main program as an opaque type,
not stub. I don't have time to construct this beast right now, I'll
try to get around to it when WWDC is over.
Jim
On May 12, 2004, at 3:29 PM, Daniel Jacobowitz wrote:
On Wed, May 12, 2004 at 03:24:16PM -0700, Jim Ingham wrote:
make_cv_type actually gets called in two ways that require it to fix
up
an unresolved type which could potentially get its complete type from
another objfile. One is then the input type is a stub. The other is
when the input type is an opaque type (TYPE_IS_OPAQUE). For an
instance of the latter, see check_typedef where is calls
lookup_transparent_type when it sees an opaque type.
But the second case in not accounted for in the gdb_assert in
make_cv_type. It should read:
Do you have a testcase (or ChangeLog entry :) for this?
Index: gdbtypes.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtypes.c,v
retrieving revision 1.82
diff -p -p -r1.82 gdbtypes.c
*** gdbtypes.c 9 Mar 2004 17:08:25 -0000 1.82
--- gdbtypes.c 12 May 2004 22:18:34 -0000
*************** make_cv_type (int cnst, int voltl, struc
*** 525,531 ****
to do is to copy the core type into the new objfile. */
gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type)
! || TYPE_STUB (*typeptr));
if (TYPE_OBJFILE (*typeptr) != TYPE_OBJFILE (type))
{
TYPE_MAIN_TYPE (*typeptr)
--- 525,531 ----
to do is to copy the core type into the new objfile. */
gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type)
! || (TYPE_STUB (*typeptr) || TYPE_IS_OPAQUE
(*typeptr)));
if (TYPE_OBJFILE (*typeptr) != TYPE_OBJFILE (type))
{
TYPE_MAIN_TYPE (*typeptr)
Jim
--
Jim Ingham jingham@apple.com
Developer Tools
Apple Computer
--
Daniel Jacobowitz
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Jim Ingham
jingham@apple.com
Developer Tools - gdb
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-05-13 1:50 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <1AA36FBA-A463-11D8-9DB9-000A958F4C44@apple.com>
2004-05-12 22:29 ` Bug Fix: make_cv_type Daniel Jacobowitz
2004-05-13 1:50 ` Jim Ingham
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox