PING**2 (dwarf2out.c review) - Re: [patch] Add DW_AT_main_subprogram tag to Fortran main program

FX fxcoudert@gmail.com
Mon Oct 18 18:16:00 GMT 2010


I now remember someone told me to CC Jason for such patches... Please, Jason, can you review?

Thanks,
FX


Le 18 oct. 2010 à 14:18, Tobias Burnus a écrit :

> On 10/10/2010 11:49 AM, FX wrote:
>> 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