This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Add DW_AT_main_subprogram tag to Fortran main program


> +      add_AT_flag (subr_die, DW_AT_main_subprogram, 1);
> 
> should be guarded by
>  if (dwarf_version >= 4 || !dwarf_strict)


Updated patch below, against regtested on x86_64-linux. OK to commit?

FX






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.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]