This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Problems while debugging fortran
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Jim Blandy <jimb at codesourcery dot com>
- Cc: Carlos Eduardo Seo <cseo at linux dot vnet dot ibm dot com>, gdb-patches at sourceware dot org
- Date: Thu, 25 Oct 2007 12:06:27 -0700
- Subject: Re: Problems while debugging fortran
- References: <46FAD136.5030406@linux.vnet.ibm.com> <20070926214619.GC9403@adacore.com> <471F70C0.3000206@linux.vnet.ibm.com> <20071024193336.GI11797@adacore.com> <20071024195719.GA16009@caradoc.them.org> <471FA810.6080506@linux.vnet.ibm.com> <471FBF9E.5000607@linux.vnet.ibm.com> <20071024220648.GL11797@adacore.com> <472098B2.5010605@linux.vnet.ibm.com> <m3abq7ciu9.fsf@codesourcery.com>
> > + case DW_AT_calling_convention:
> > + /* DWARF standard suggests to use value DW_CC_program of attribute
> > + DW_AT_calling_convention to indicate the Fortran main program.
> > + The following code is to check this. */
>
> This comment isn't right. The Fortran main program expects to have
> its arguments passed to it differently than other subroutines or
> functions; that's what DW_AT_calling_convention is meant to express.
> The comment should say something like:
>
> /* DWARF doesn't provide a way to identify a program's entry point.
> However, the Fortran main program receives its arguments via a
> special calling convention; we look for that to recognize the
> program's entry point. */
I agree with Jim's comment, but on the other hand, I propose a slightly
different way of saying this:
/* In Fortran programs compiled with XLF, the only way we have found
so far to identify the main procedure is by using the fact that
the calling convention is different from the other procedures:
The DW_AT_calling_convention attribute is set to DW_CC_program.
This is not the intent of this attribute as documented in the
DWARF standard, but we haven't found any other distinctive
characteristic of the main procedure, so we check the calling
convention for Fortran compilation units. */
I want to steer away from the concept of "entry point", because the
main is not necessarily the entry point. For instance, in Ada, the
entry point is distinct from the main procedure.
Is Carlos Eduado's patch OK with the comment I suggest?
--
Joel