[patch] Add DW_AT_main_subprogram tag to Fortran main program
FX
fxcoudert@gmail.com
Sun Oct 10 09:53:00 GMT 2010
ping
> Updated patch below, against regtested on x86_64-linux. OK to commit?
>
>
>
> 2010-10-03 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
>
> * dwarf2out.c (add_calling_convention_attribute): Flag main
> Fortran subroutine with DW_AT_main_subprogram.
>
>
>
> Index: gcc/dwarf2out.c
> ===================================================================
> --- gcc/dwarf2out.c (revision 164914)
> +++ gcc/dwarf2out.c (working copy)
> @@ -17841,14 +17841,21 @@ add_calling_convention_attribute (dw_die
> value = ((enum dwarf_calling_convention)
> targetm.dwarf_calling_convention (TREE_TYPE (decl)));
>
> - /* DWARF doesn't provide a way to identify a program's source-level
> - entry point. DW_AT_calling_convention attributes are only meant
> - to describe functions' calling conventions. However, lacking a
> - better way to signal the Fortran main program, we use this for the
> - time being, following existing custom. */
> if (is_fortran ()
> && !strcmp (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), "MAIN__"))
> - value = DW_CC_program;
> + {
> + /* DWARF 2 doesn't provide a way to identify a program's source-level
> + entry point. DW_AT_calling_convention attributes are only meant
> + to describe functions' calling conventions. However, lacking a
> + better way to signal the Fortran main program, we used this for
> + a long time, following existing custom. Now, DWARF 4 has
> + DW_AT_main_subprogram, which we add below, but some tools still
> + rely on the old way, which we thus keep. */
> + value = DW_CC_program;
> +
> + if (dwarf_version >= 4 || !dwarf_strict)
> + add_AT_flag (subr_die, DW_AT_main_subprogram, 1);
> + }
>
> /* Only add the attribute if the backend requests it, and
> is not DW_CC_normal. */
>
More information about the Fortran
mailing list