[patch] Fix crash on reading gcc HEAD Fortran module

Jan Kratochvil jan.kratochvil@redhat.com
Mon Sep 1 13:02:00 GMT 2008


Hi,

with the current gcc snapshot this testcase
MODULE m
  integer :: varx
END MODULE m
USE m, a=>varx
end

crashes gdb HEAD on `break 2' with:
dwarf2read.c:2766: internal-error: process_die: Assertion `die->child == NULL' failed.
A problem internal to GDB has been detected,

While it still cannot reach the imported variables it at least no longer
crashes now.  Notified by Tobias Burnus.


Regards,
Jan
-------------- next part --------------
2008-09-01  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Stay compatible after the GCC PR fortran/29635 fix.
	* dwarf2read.c (process_die <DW_TAG_imported_module>): Accept (ignored)
	child DIEs.  Only COMPLAINT for non-Fortran languages.

--- gdb/dwarf2read.c	29 Aug 2008 17:06:05 -0000	1.278
+++ gdb/dwarf2read.c	1 Sep 2008 12:56:19 -0000
@@ -2763,7 +2763,10 @@ process_die (struct die_info *die, struc
 	 Fortran case, so we'll have to replace this gdb_assert if
 	 Fortran compilers start generating that info.  */
       processing_has_namespace_info = 1;
-      gdb_assert (die->child == NULL);
+      if (cu->language != language_fortran && die->child == NULL)
+	complaint (&symfile_complaints,
+		   _("%s at offset %d has unexpected children"),
+		   dwarf_tag_name (die->tag), die->offset);
       break;
     default:
       new_symbol (die, NULL, cu);


More information about the Gdb-patches mailing list