-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Joel Brobecker wrote:
Just one minor comment:
+ if ((DW_UNSND (&attr) == DW_CC_program) && (cu->language ==
language_fortran))
Could you remove the unnecessary extra parens and split this line
into two (it's too long):
if (DW_UNSND (&attr) == DW_CC_program
&& cu->language == language_fortran)
Your patch is approved with that adjustment.
Thanks,
Ok, here's the version I commited, with Joel's suggestion and approval.
Regards,
- --
Carlos Eduardo Seo
Software Engineer
IBM Linux Technology Center
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFHIQNMqvq7Aov/qQARAlRVAJsEheBLCyh8VdDHPy4Cyg5avI55hACeJxaz
+Y3B2mdbNkmBF9G/gthtq/c=
=xOwT
-----END PGP SIGNATURE-----
------------------------------------------------------------------------
2007-10-25 Wu Zhou <woodzltc@cn.ibm.com>
Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Jim Blandy <jimb@codesourcery.com>
* dwarf2read.c (read_partial_die): check the value
of DW_AT_calling_convention in Fortran programs.
Index: src/gdb/dwarf2read.c
===================================================================
--- src.orig/gdb/dwarf2read.c
+++ src/gdb/dwarf2read.c
@@ -5616,6 +5616,25 @@ read_partial_die (struct partial_die_inf
case DW_AT_byte_size:
part_die->has_byte_size = 1;
break;
+ case DW_AT_calling_convention:
+ /* 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, because it's a necessary piece of information in
+ Fortran, and because DW_CC_program is the only piece of debugging
+ information whose definition refers to a 'main program' at all,
+ several compilers have begun marking Fortran main programs with
+ DW_CC_program --- even when those functions use the standard
+ calling conventions.
+
+ So until DWARF specifies a way to provide this information and
+ compilers pick up the new representation, we'll support this
+ practice. */
+ if (DW_UNSND (&attr) == DW_CC_program
+ && cu->language == language_fortran)
+ set_main_name (part_die->name);
+ break;
default:
break;
}