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

Tobias Burnus burnus@net-b.de
Mon Oct 18 12:19:00 GMT 2010


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