This is the mail archive of the gdb@sourceware.org mailing list for the GDB 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: Problems while debugging fortran -- DWARF


Hi --

I haven't been following this thread and was just told about it.
Disclaimer:  I haven't read all of the discussion about this issue.

The DWARF Committee has been considering a couple different
proposals for an extension to DWARF to identify the "main" routine
for Fortran or other languages which need this.  An early version of
the proposal can be found on the DWARF website:
http://dwarfstd.org/Issues.php.  A revised proposal which will
have an attribute in the Compilation Unit DIE which points to the
"main" subprogram is under development.

Carlos Eduardo Seo wrote:
-----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;
 	}


--
Michael Eager	 eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077


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