Re: [RFA] Patch for supportinf DW_TAG_module / FORTRAN modules

Elena Zannoni
2002-08-26T23:01:35Z

Jim Blandy writes:
> Petr Sorfa <petrs@caldera.com> writes:
> > > Your patch is right, as far as I can see. In that paragraph I'm just
> > > saying why I think the patch should work fine. In the next paragraph
> > > I explain my reservations.
> > Ok.
> >
> > > > > But I think a module should be represented by something that calls
> > > > > itself a module, not a typedef. How will people feel reading a
> > > > > comment explaining that a LOC_TYPEDEF for a type with TYPE_CODE_CLASS
> > > > > is how we represent Fortran modules? I'm not sure that counts as good
> > > > > maintenance.
> > > > I originally introduced a TYPE_CODE_MODULE that was basically equivalent
> > > > to a TYPE_CODE_CLASS, as much as TYPE_CODE_CLASS is really
> > > > TYPE_CODE_STRUCT. I think I must have pulled it out for the patch. I can
> > > > put it back in and make it equivalent to TYPE_CODE_CLASS.
> > >
> > > If we're going to use a struct/class-like thingy to represent a
> > > Fortran module, then we should at least add DECLARED_TYPE_MODULE (see
> > > DECLARED_TYPE_CLASS, ... in gdbtypes.h).
> > Will do. I think I had that done as well.
> >
> > > > > Or maybe this is okay for now. When we provide better support for C++
> > > > > namespaces, Fortran modules can become a variant of that, which feels
> > > > > like a better fit.
> > > > Yes. *Cough* maybe this patch can provide support for namespaces? ;o)
> > >
> > > I'm not sure I really want the C++ `std' namespace represented as a
> > > struct type.
> > Please ignore that suggestion, it was made in jest. But you are right,
> > once namespace support it put in, it should be able to support FORTRAN
> > modules.
> >
> > If I update the patch to use TYPE_CODE_MODULE and DECLARED_TYPE_CLASS,
> > would you reconsider the patch?
>
> I'd like to hear Elena's comments on it, but if she thinks it's okay,
> then I'll review the patch in detail.

I think the using TYPE_CODE_MODULE and DECLARED_TYPE_CLASS will help
in distinguishing the Fortran modules.

I would prefer however is there were lots of new comments added to things
like this, to make things clearer:

! if (cu_language == language_cplus || cu_language == language_fortran)
{
/* For C++, these implicitly act as typedefs as well. */
add_psymbol_to_list (pdi->name, strlen (pdi->name),

and

+ case DW_TAG_module:
+ read_structure_scope (die, objfile, cu_header);
+ break;

I don't nderstand the comment here:
+ case DW_TAG_module:
+ /* Read the module scope a structure. */
+ read_structure_scope (die, objfile, cu_header);

Elena