rpms/gdb/devel gdb-varobj-revalidate-core.patch, NONE, 1.1 gdb-varobj-revalidate-prep.patch, NONE, 1.1 gdb-6.3-pie-20050110.patch, 1.14, 1.15 gdb-6.3-readnever-20050907.patch, 1.5, 1.6 gdb-6.8-fortran-tag-constant.patch, 1.4, 1.5 gdb-6.8-inlining.patch, 1.12, 1.13 gdb-archer.patch, 1.14, 1.15 gdb-orphanripper.c, 1.1, 1.2 gdb.spec, 1.352, 1.353

Jan Kratochvil jkratoch at fedoraproject.org
Wed Jun 10 13:05:59 UTC 2009


Author: jkratoch

Update of /cvs/pkgs/rpms/gdb/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26049

Modified Files:
	gdb-6.3-pie-20050110.patch gdb-6.3-readnever-20050907.patch 
	gdb-6.8-fortran-tag-constant.patch gdb-6.8-inlining.patch 
	gdb-archer.patch gdb-orphanripper.c gdb.spec 
Added Files:
	gdb-varobj-revalidate-core.patch 
	gdb-varobj-revalidate-prep.patch 
Log Message:
* Wed Jun 10 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090302-28
- Archer update to the snapshot: 000db8b7bfef8581ef099ccca8689cfddfea1be8
- Archer backport: b8d3bea36b137effc929e02c4dadf73716cb330b
  - Ignore explicit die representing global scope '::' (gcc 4.1 bug).
- Archer backport: c2d5c4a39b10994d86d8f2f90dfed769e8f216f3
  - Fix parsing DW_AT_const_value using DW_FORM_string
- Archer backport: 8d9ab68fc0955c9de6320bec2821a21e3244600d
                 + db41e11ae0a3aec7120ad6ce86450d838af74dd6
  - Fix Fortran modules/namespaces parsing (but no change was visible in F11).
- Archer backport: 000db8b7bfef8581ef099ccca8689cfddfea1be8
  - Fix "some Python error when displaying some C++ objects" (BZ 504356).
- testsuite: Support new rpmbuild option: --with parallel
- testsuite: gdb-orphanripper.c: Fix uninitialized `termios.c_line'.
- Fix crashes due to (missing) varobj revalidation, for VLA (for BZ 377541).
- Archer backport: 58dcda94ac5d6398f47382505e9d3d9d866d79bf
                 + f3de7bbd655337fe6705aeaafcc970deff3dd5d5
  - Implement Fortran modules namespaces (BZ 466118).
- Fix crash in the charset support.


gdb-varobj-revalidate-core.patch:

--- NEW FILE gdb-varobj-revalidate-core.patch ---
Re: [patch] [4/5] Types reference counting [varobj-validation]
http://sourceware.org/ml/gdb-patches/2009-04/msg00610.html

gdb/
2009-04-22  Jan Kratochvil  <jan.kratochvil at redhat.com>

	Split varobj_invalidate into a two-phased operation.
	* objfiles.c: Include varobj.h
	(free_objfile): Call varobj_invalidate.
	* parser-defs.h (exp_uses_objfile): New prototype.
	* printcmd.c (display_uses_objfile): Move the EXP checking part to ...
	* parse.c (exp_uses_objfile): ... a new function here.
	* symfile.c (new_symfile_objfile): Call varobj_revalidate.
	(reread_symbols): Call varobj_invalidate and varobj_revalidate.
	(clear_symtab_users): No longer call varobj_invalidate.
	* varobj.c: New includes objfiles.h and parser-defs.h.
	(varobj_invalidate): New parameter `objfile', comment it.
	New variable `var'.  Invalidate any varobj related to `objfile'.
	Remove unconditional invalidation of local varobjs.  Move global
	varobjs revalidation to ...
	(varobj_revalidate): ... a new function.
	* varobj.h (varobj_invalidate): Update the prototype.
	(varobj_revalidate): New prototype.

[ Cut the printcmd.c simplification/change.  ]

Index: gdb-6.8.50.20090302/gdb/objfiles.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/objfiles.c	2009-05-10 21:36:30.000000000 +0200
+++ gdb-6.8.50.20090302/gdb/objfiles.c	2009-05-10 21:36:42.000000000 +0200
@@ -50,6 +50,7 @@
 #include "addrmap.h"
 #include "arch-utils.h"
 #include "exec.h"
+#include "varobj.h"
 
 /* Prototypes for local functions */
 
@@ -409,6 +410,7 @@ free_objfile (struct objfile *objfile)
   /* Remove any references to this objfile in the global value
      lists.  */
   preserve_values (objfile);
+  varobj_invalidate (objfile);
 
   /* First do any symbol file specific actions required when we are
      finished with a particular symbol file.  Note that if the objfile
Index: gdb-6.8.50.20090302/gdb/parse.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/parse.c	2009-05-10 21:36:29.000000000 +0200
+++ gdb-6.8.50.20090302/gdb/parse.c	2009-05-10 21:36:42.000000000 +0200
@@ -1373,6 +1373,45 @@ parser_fprintf (FILE *x, const char *y, 
   va_end (args);
 }
 
+/* Return 1 if EXP uses OBJFILE (and will become dangling when OBJFILE
+   is unloaded), otherwise return 0.  */
+
+int
+exp_uses_objfile (struct expression *exp, struct objfile *objfile)
+{
+  int endpos;
+  const union exp_element *const elts = exp->elts;
+
+  for (endpos = exp->nelts; endpos > 0; )
+    {
+      int i, args, oplen = 0;
+
+      exp->language_defn->la_exp_desc->operator_length (exp, endpos,
+							&oplen, &args);
+      gdb_assert (oplen > 0);
+
+      i = endpos - oplen;
+      if (elts[i].opcode == OP_VAR_VALUE)
+	{
+	  const struct block *const block = elts[i + 1].block;
+	  const struct symbol *const symbol = elts[i + 2].symbol;
+	  const struct obj_section *const section =
+	    SYMBOL_OBJ_SECTION (symbol);
+
+	  /* Check objfile where is placed the code touching the variable.  */
+	  if (matching_objfiles (block_objfile (block), objfile))
+	    return 1;
+
+	  /* Check objfile where the variable itself is placed.  */
+	  if (section && section->objfile == objfile)
+	    return 1;
+	}
+      endpos -= oplen;
+    }
+
+  return 0;
+}
+
 void
 _initialize_parse (void)
 {
Index: gdb-6.8.50.20090302/gdb/parser-defs.h
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/parser-defs.h	2009-05-10 21:36:27.000000000 +0200
+++ gdb-6.8.50.20090302/gdb/parser-defs.h	2009-05-10 21:36:42.000000000 +0200
@@ -299,4 +299,6 @@ extern void print_subexp_standard (struc
 
 extern void parser_fprintf (FILE *, const char *, ...) ATTR_FORMAT (printf, 2 ,3);
 
+extern int exp_uses_objfile (struct expression *exp, struct objfile *objfile);
+
 #endif /* PARSER_DEFS_H */
Index: gdb-6.8.50.20090302/gdb/symfile.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/symfile.c	2009-05-10 21:36:29.000000000 +0200
+++ gdb-6.8.50.20090302/gdb/symfile.c	2009-05-10 21:37:51.000000000 +0200
@@ -931,6 +931,8 @@ new_symfile_objfile (struct objfile *obj
 
   /* We're done reading the symbol file; finish off complaints.  */
   clear_complaints (&symfile_complaints, 0, verbo);
+
+  varobj_revalidate ();
 }
 
 /* A helper function which returns true if OBJFILE has any debug
@@ -3261,6 +3263,7 @@ reread_symbols (void)
 	      /* Remove any references to this objfile in the global
 		 value lists.  */
 	      preserve_values (objfile);
+	      varobj_invalidate (objfile);
 
 	      /* Nuke all the state that we will re-read.  Much of the following
 	         code which sets things to NULL really is necessary to tell
@@ -3359,6 +3362,7 @@ reread_symbols (void)
 	         frameless.  */
 
 	      reinit_frame_cache ();
+	      varobj_revalidate ();
 
 	      /* Discard cleanups as symbol reading was successful.  */
 	      discard_cleanups (old_cleanups);
@@ -3739,10 +3743,6 @@ clear_symtab_users (void)
      between expressions and which ought to be reset each time.  */
   expression_context_block = NULL;
   innermost_block = NULL;
-
-  /* Varobj may refer to old symbols, perform a cleanup.  */
-  varobj_invalidate ();
-
 }
 
 static void
Index: gdb-6.8.50.20090302/gdb/varobj.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/varobj.c	2009-05-10 21:36:27.000000000 +0200
+++ gdb-6.8.50.20090302/gdb/varobj.c	2009-05-10 21:40:55.000000000 +0200
@@ -26,6 +26,8 @@
 #include "gdbcmd.h"
 #include "block.h"
 #include "valprint.h"
+#include "objfiles.h"
+#include "parser-defs.h"
 
 #include "gdb_assert.h"
 #include "gdb_string.h"
@@ -3272,48 +3274,117 @@ When non-zero, varobj debugging is enabl
 			    &setlist, &showlist);
 }
 
-/* Invalidate the varobjs that are tied to locals and re-create the ones that
-   are defined on globals.
+/* Invalidate the varobjs that are tied to the specified OBJFILE.  Call this
+   function before you start removing OBJFILE.
+
+   Call varobj_revalidate after the OBJFILEs updates get finished.
+
    Invalidated varobjs will be always printed in_scope="invalid".  */
+
 void 
-varobj_invalidate (void)
+varobj_invalidate (struct objfile *objfile)
 {
   struct varobj **all_rootvarobj;
   struct varobj **varp;
 
   if (varobj_list (&all_rootvarobj) > 0)
-  {
-    varp = all_rootvarobj;
-    while (*varp != NULL)
-      {
-	/* Floating varobjs are reparsed on each stop, so we don't care if
-	   the presently parsed expression refers to something that's gone.  */
-	if ((*varp)->root->floating)
-	  continue;
-
-        /* global var must be re-evaluated.  */     
-        if ((*varp)->root->valid_block == NULL)
-        {
-          struct varobj *tmp_var;
-
-          /* Try to create a varobj with same expression.  If we succeed replace
-             the old varobj, otherwise invalidate it.  */
-          tmp_var = varobj_create (NULL, (*varp)->name, (CORE_ADDR) 0, USE_CURRENT_FRAME);
-          if (tmp_var != NULL) 
-            { 
-	      tmp_var->obj_name = xstrdup ((*varp)->obj_name);
-              varobj_delete (*varp, NULL, 0);
-              install_variable (tmp_var);
-            }
-          else
-              (*varp)->root->is_valid = 0;
-        }
-        else /* locals must be invalidated.  */
-          (*varp)->root->is_valid = 0;
+    {
+      varp = all_rootvarobj;
+      while (*varp != NULL)
+	{
+	  struct varobj *var = *varp;
 
-        varp++;
-      }
-  }
+	  /* Floating varobjs are reparsed on each stop, so we don't care if
+	     the presently parsed expression refers to something that's gone.
+	     */
+	  if (var->root->floating)
+	    continue;
+
+	  if (var->root->is_valid
+	      && matching_objfiles (block_objfile (var->root->valid_block),
+	                            objfile))
+	    var->root->is_valid = 0;
+	  
+	  if (var->root->is_valid
+	      && exp_uses_objfile (var->root->exp, objfile))
+	    {
+	      var->root->is_valid = 0;
+
+	      /* No one touches EXP for !IS_VALID varobj.  */
+	      xfree (var->root->exp);
+	      var->root->exp = NULL;
+	    }
+	  
+	  if (var->type && TYPE_OBJFILE (var->type) == objfile)
+	    {
+	      if (!var->root->valid_block)
+		var->root->is_valid = 0;
+	      else
+		gdb_assert (!var->root->is_valid);
+
+	      var->type = NULL;
+	    }
+
+	  if (var->value
+	      && TYPE_OBJFILE (value_type (var->value)) == objfile)
+	    {
+	      if (!var->root->valid_block)
+		var->root->is_valid = 0;
+	      else
+		gdb_assert (!var->root->is_valid);
+
+	      value_free (var->value);
+	      var->value = NULL;
+	    }
+
+	  varp++;
+	}
+    }
+  xfree (all_rootvarobj);
+}
+
+/* Recreate any global varobjs possibly previously invalidated.  If the
+   expressions are no longer evaluatable set/keep the varobj invalid.  */
+
+void 
+varobj_revalidate (void)
+{
+  struct varobj **all_rootvarobj;
+  struct varobj **varp;
+
+  if (varobj_list (&all_rootvarobj) > 0)
+    {
+      varp = all_rootvarobj;
+      while (*varp != NULL)
+	{
+	  struct varobj *var = *varp;
+
+	  /* Floating varobjs are reparsed on each stop, so we don't care if
+	     the presently parsed expression refers to something that's gone.
+	     */
+	  if (var->root->floating)
+	    continue;
+
+	  /* global var must be re-evaluated.  */     
+	  if (var->root->valid_block == NULL)
+	    {
+	      struct varobj *tmp_var;
+
+	      /* Try to create a varobj with same expression.  If we succeed
+		 replace the old varobj, otherwise invalidate it.  */
+	      tmp_var = varobj_create (NULL, var->name, 0, USE_CURRENT_FRAME);
+	      if (tmp_var != NULL) 
+		{ 
+		  tmp_var->obj_name = xstrdup (var->obj_name);
+		  varobj_delete (var, NULL, 0);
+		  install_variable (tmp_var);
+		}
+	      else
+		var->root->is_valid = 0;
+	    }
+
+	  varp++;
+	}
+    }
   xfree (all_rootvarobj);
-  return;
 }
Index: gdb-6.8.50.20090302/gdb/varobj.h
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/varobj.h	2009-05-10 21:36:27.000000000 +0200
+++ gdb-6.8.50.20090302/gdb/varobj.h	2009-05-10 21:36:42.000000000 +0200
@@ -148,7 +148,9 @@ extern int varobj_list (struct varobj **
 extern VEC(varobj_update_result) *varobj_update (struct varobj **varp, 
 						 int explicit);
 
-extern void varobj_invalidate (void);
+extern void varobj_invalidate (struct objfile *objfile);
+
+extern void varobj_revalidate (void);
 
 extern int varobj_editable_p (struct varobj *var);
 

gdb-varobj-revalidate-prep.patch:

--- NEW FILE gdb-varobj-revalidate-prep.patch ---
Re: [patch] Make a function for block->objfile lookups
http://sourceware.org/ml/gdb-patches/2009-04/msg00609.html

gdb/
2009-04-22  Jan Kratochvil  <jan.kratochvil at redhat.com>
    
	* block.c (block_objfile): New function.
	* block.h (block_objfile): New prototype.
	* objfiles.c (matching_objfiles): New function.
	* objfiles.h (matching_objfiles): New prototype.
	* printcmd.c: Remove include solib.h.
	(display_uses_solib_p): Rename to ...
	(display_uses_objfile): ... a new function name.  Change the SOLIB
	parameter to OBJFILE parameter.  Use now a matching_objfiles call.
	(clear_dangling_display_expressions): Update the caller.

[ Cut the printcmd.c simplification/change.  ]

--- ./gdb/block.c	3 Jan 2009 05:57:50 -0000	1.18
+++ ./gdb/block.c	22 Apr 2009 19:51:40 -0000
@@ -309,3 +309,21 @@ allocate_block (struct obstack *obstack)
 
   return bl;
 }
+
+/* Return OBJFILE in which BLOCK is located or NULL if we cannot find it for
+   whatever reason.  */
+
+struct objfile *
+block_objfile (const struct block *block)
+{
+  struct symbol *func;
+
+  if (block == NULL)
+    return NULL;
+
+  func = block_linkage_function (block);
+  if (func == NULL)
+    return NULL;
+
+  return SYMBOL_SYMTAB (func)->objfile;
+}
--- ./gdb/block.h	3 Jan 2009 05:57:50 -0000	1.19
+++ ./gdb/block.h	22 Apr 2009 19:51:40 -0000
@@ -164,4 +164,6 @@ extern const struct block *block_global_
 
 extern struct block *allocate_block (struct obstack *obstack);
 
+extern struct objfile *block_objfile (const struct block *block);
+
 #endif /* BLOCK_H */
--- ./gdb/objfiles.c	11 Mar 2009 20:26:02 -0000	1.82
+++ ./gdb/objfiles.c	22 Apr 2009 19:51:40 -0000
@@ -891,3 +891,21 @@ objfile_data (struct objfile *objfile, c
   gdb_assert (data->index < objfile->num_data);
   return objfile->data[data->index];
 }
+
+/* Return non-zero if A and B point to the same OBJFILE, ignoring any binary
+   vs. debuginfo variants of the pointers.  If either A or B is NULL return
+   zero as not a match.  */
+
+int
+matching_objfiles (struct objfile *a, struct objfile *b)
+{
+  if (a == NULL || b == NULL)
+    return 0;
+
+  if (a->separate_debug_objfile_backlink)
+    a = a->separate_debug_objfile_backlink;
+  if (b->separate_debug_objfile_backlink)
+    b = b->separate_debug_objfile_backlink;
+
+  return a == b;
+}
--- ./gdb/objfiles.h	15 Jan 2009 16:35:22 -0000	1.59
+++ ./gdb/objfiles.h	22 Apr 2009 19:51:40 -0000
@@ -497,6 +497,8 @@ extern struct obj_section *find_pc_secti
 
 extern int in_plt_section (CORE_ADDR, char *);
 
+extern int matching_objfiles (struct objfile *a, struct objfile *b);
+
 /* Keep a registry of per-objfile data-pointers required by other GDB
    modules.  */
 

gdb-6.3-pie-20050110.patch:

Index: gdb-6.3-pie-20050110.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.3-pie-20050110.patch,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -p -r1.14 -r1.15
--- gdb-6.3-pie-20050110.patch	7 Mar 2009 00:32:30 -0000	1.14
+++ gdb-6.3-pie-20050110.patch	10 Jun 2009 13:05:55 -0000	1.15
@@ -28,8 +28,8 @@
 
 Index: gdb-6.8.50.20090302/gdb/amd64-tdep.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/amd64-tdep.c	2009-03-07 00:30:09.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/amd64-tdep.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/amd64-tdep.c	2009-05-10 21:36:29.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/amd64-tdep.c	2009-05-10 21:41:23.000000000 +0200
 @@ -36,6 +36,7 @@
  #include "regcache.h"
  #include "regset.h"
@@ -134,8 +134,8 @@ Index: gdb-6.8.50.20090302/gdb/amd64-tde
  
 Index: gdb-6.8.50.20090302/gdb/auxv.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/auxv.c	2009-03-07 00:30:06.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/auxv.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/auxv.c	2009-05-10 21:36:27.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/auxv.c	2009-05-10 21:41:23.000000000 +0200
 @@ -81,7 +81,7 @@ procfs_xfer_auxv (struct target_ops *ops
     Return 1 if an entry was read into *TYPEP and *VALP.  */
  static int
@@ -206,7 +206,7 @@ Index: gdb-6.8.50.20090302/gdb/auxv.c
  	{
  #define TAG(tag, text, kind) \
  	case tag: name = #tag; description = text; flavor = kind; break
-@@ -232,7 +234,7 @@ fprint_target_auxv (struct ui_file *file
+@@ -233,7 +235,7 @@ fprint_target_auxv (struct ui_file *file
  	}
  
        fprintf_filtered (file, "%-4s %-20s %-30s ",
@@ -215,7 +215,7 @@ Index: gdb-6.8.50.20090302/gdb/auxv.c
        switch (flavor)
  	{
  	case dec:
-@@ -254,7 +256,7 @@ fprint_target_auxv (struct ui_file *file
+@@ -255,7 +257,7 @@ fprint_target_auxv (struct ui_file *file
  	  break;
  	}
        ++ents;
@@ -227,7 +227,7 @@ Index: gdb-6.8.50.20090302/gdb/auxv.c
 Index: gdb-6.8.50.20090302/gdb/auxv.h
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/auxv.h	2009-01-03 06:57:50.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/auxv.h	2009-03-07 00:30:12.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/auxv.h	2009-05-10 21:41:23.000000000 +0200
 @@ -36,14 +36,14 @@ struct target_ops;		/* Forward declarati
     Return 1 if an entry was read into *TYPEP and *VALP.  */
  extern int target_auxv_parse (struct target_ops *ops,
@@ -247,8 +247,8 @@ Index: gdb-6.8.50.20090302/gdb/auxv.h
  extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
 Index: gdb-6.8.50.20090302/gdb/breakpoint.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/breakpoint.c	2009-03-07 00:30:10.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/breakpoint.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/breakpoint.c	2009-05-10 21:36:30.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/breakpoint.c	2009-05-10 21:41:23.000000000 +0200
 @@ -3920,7 +3920,8 @@ describe_other_breakpoints (CORE_ADDR pc
  	      printf_filtered (" (thread %d)", b->thread);
  	    printf_filtered ("%s%s ",
@@ -259,7 +259,7 @@ Index: gdb-6.8.50.20090302/gdb/breakpoin
  			      ? " (disabled)"
  			      : b->enable_state == bp_permanent 
  			      ? " (permanent)"
-@@ -5008,6 +5009,61 @@ create_catchpoint (int tempflag, char *c
+@@ -5009,6 +5010,61 @@ create_catchpoint (int tempflag, char *c
    return b;
  }
  
@@ -323,8 +323,8 @@ Index: gdb-6.8.50.20090302/gdb/breakpoin
                                      struct breakpoint_ops *ops)
 Index: gdb-6.8.50.20090302/gdb/breakpoint.h
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/breakpoint.h	2009-03-07 00:30:06.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/breakpoint.h	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/breakpoint.h	2009-05-10 21:36:27.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/breakpoint.h	2009-05-10 21:41:23.000000000 +0200
 @@ -127,6 +127,7 @@ enum enable_state
  			   automatically enabled and reset when the call 
  			   "lands" (either completes, or stops at another 
@@ -346,9 +346,9 @@ Index: gdb-6.8.50.20090302/gdb/breakpoin
  
 Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c	2009-03-07 00:30:10.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/dwarf2read.c	2009-03-07 00:30:12.000000000 +0100
-@@ -1413,7 +1413,7 @@ dwarf2_build_psymtabs (struct objfile *o
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c	2009-05-10 21:36:30.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/dwarf2read.c	2009-05-10 21:41:23.000000000 +0200
+@@ -1438,7 +1438,7 @@ dwarf2_build_psymtabs (struct objfile *o
    else
      dwarf2_per_objfile->loc_buffer = NULL;
  
@@ -359,8 +359,8 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
      {
 Index: gdb-6.8.50.20090302/gdb/elfread.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/elfread.c	2009-03-07 00:30:06.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/elfread.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/elfread.c	2009-05-10 21:36:27.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/elfread.c	2009-05-10 21:41:23.000000000 +0200
 @@ -680,7 +680,7 @@ elf_symfile_read (struct objfile *objfil
    /* If we are reinitializing, or if we have never loaded syms yet,
       set table to empty.  MAINLINE is cleared so that *_read_psymtab
@@ -372,8 +372,8 @@ Index: gdb-6.8.50.20090302/gdb/elfread.c
        mainline = 0;
 Index: gdb-6.8.50.20090302/gdb/infrun.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infrun.c	2009-03-07 00:30:10.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infrun.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infrun.c	2009-05-10 21:36:30.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/infrun.c	2009-05-10 21:41:23.000000000 +0200
 @@ -3354,6 +3354,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
  #endif
  	  target_terminal_inferior ();
@@ -388,11 +388,11 @@ Index: gdb-6.8.50.20090302/gdb/infrun.c
  	     and place breakpoints in initializer routines for
 Index: gdb-6.8.50.20090302/gdb/objfiles.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/objfiles.c	2009-03-07 00:30:06.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/objfiles.c	2009-03-07 00:30:12.000000000 +0100
-@@ -51,6 +51,9 @@
- #include "arch-utils.h"
+--- gdb-6.8.50.20090302.orig/gdb/objfiles.c	2009-05-10 21:36:42.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/objfiles.c	2009-05-10 21:41:36.000000000 +0200
+@@ -52,6 +52,9 @@
  #include "exec.h"
+ #include "varobj.h"
  
 +#include "auxv.h"
 +#include "elf/common.h"
@@ -400,7 +400,7 @@ Index: gdb-6.8.50.20090302/gdb/objfiles.
  /* Prototypes for local functions */
  
  static void objfile_alloc_data (struct objfile *objfile);
-@@ -271,7 +274,19 @@ init_entry_point_info (struct objfile *o
+@@ -272,7 +275,19 @@ init_entry_point_info (struct objfile *o
  CORE_ADDR
  entry_point_address (void)
  {
@@ -421,7 +421,7 @@ Index: gdb-6.8.50.20090302/gdb/objfiles.
  }
  
  /* Create the terminating entry of OBJFILE's minimal symbol table.
-@@ -443,6 +458,9 @@ free_objfile (struct objfile *objfile)
+@@ -445,6 +460,9 @@ free_objfile (struct objfile *objfile)
    if (objfile == rt_common_objfile)
      rt_common_objfile = NULL;
  
@@ -433,8 +433,8 @@ Index: gdb-6.8.50.20090302/gdb/objfiles.
       linkage unit, gdb used to do these things whenever the monolithic
 Index: gdb-6.8.50.20090302/gdb/solib-svr4.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/solib-svr4.c	2009-03-07 00:30:09.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/solib-svr4.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/solib-svr4.c	2009-05-10 21:36:29.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/solib-svr4.c	2009-05-10 21:41:23.000000000 +0200
 @@ -45,6 +45,7 @@
  #include "exec.h"
  #include "auxv.h"
@@ -1119,7 +1119,7 @@ Index: gdb-6.8.50.20090302/gdb/solib-svr
 Index: gdb-6.8.50.20090302/gdb/solib.c
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/solib.c	2009-02-21 17:14:49.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/solib.c	2009-03-07 00:30:12.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/solib.c	2009-05-10 21:41:23.000000000 +0200
 @@ -81,6 +81,8 @@ set_solib_ops (struct gdbarch *gdbarch, 
  
  /* external data declarations */
@@ -1309,7 +1309,7 @@ Index: gdb-6.8.50.20090302/gdb/solib.c
 Index: gdb-6.8.50.20090302/gdb/solist.h
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/solist.h	2009-02-04 09:42:11.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/solist.h	2009-03-07 00:30:12.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/solist.h	2009-05-10 21:41:23.000000000 +0200
 @@ -61,6 +61,8 @@ struct so_list
      bfd *abfd;
      char symbols_loaded;	/* flag: symbols read in yet? */
@@ -1332,8 +1332,8 @@ Index: gdb-6.8.50.20090302/gdb/solist.h
  #endif
 Index: gdb-6.8.50.20090302/gdb/symfile-mem.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/symfile-mem.c	2009-03-07 00:30:08.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/symfile-mem.c	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/symfile-mem.c	2009-05-10 21:36:28.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/symfile-mem.c	2009-05-10 21:41:23.000000000 +0200
 @@ -116,7 +116,7 @@ symbol_file_add_from_memory (struct bfd 
        }
  
@@ -1345,8 +1345,8 @@ Index: gdb-6.8.50.20090302/gdb/symfile-m
    reinit_frame_cache ();
 Index: gdb-6.8.50.20090302/gdb/symfile.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/symfile.c	2009-03-07 00:30:09.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/symfile.c	2009-03-07 00:31:24.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/symfile.c	2009-05-10 21:37:51.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/symfile.c	2009-05-10 21:41:23.000000000 +0200
 @@ -47,6 +47,7 @@
  #include "readline/readline.h"
  #include "gdb_assert.h"
@@ -1397,7 +1397,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
  
    /* We're done reading the symbol file; finish off complaints.  */
    clear_complaints (&symfile_complaints, 0, verbo);
-@@ -980,7 +985,7 @@ symbol_file_add_with_addrs_or_offsets (b
+@@ -982,7 +987,7 @@ symbol_file_add_with_addrs_or_offsets (b
    /* Give user a chance to burp if we'd be
       interactively wiping out any existing symbols.  */
  
@@ -1406,7 +1406,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
        && from_tty
        && (have_full_symbols () || have_partial_symbols ())
        && !query (_("Load new symbol table from \"%s\"? "), name))
-@@ -1175,6 +1180,10 @@ symbol_file_clear (int from_tty)
+@@ -1178,6 +1183,10 @@ symbol_file_clear (int from_tty)
  		    symfile_objfile->name)
  	  : !query (_("Discard symbol table? "))))
      error (_("Not confirmed."));
@@ -1417,7 +1417,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
      free_all_objfiles ();
  
      /* solib descriptors may have handles to objfiles.  Since their
-@@ -3275,6 +3284,8 @@ reread_symbols (void)
+@@ -3367,6 +3376,8 @@ reread_symbols (void)
  	      /* Discard cleanups as symbol reading was successful.  */
  	      discard_cleanups (old_cleanups);
  
@@ -1428,8 +1428,8 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
  	         again now.  */
 Index: gdb-6.8.50.20090302/gdb/target.h
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/target.h	2009-03-07 00:30:09.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/target.h	2009-03-07 00:30:12.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/target.h	2009-05-10 21:36:29.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/target.h	2009-05-10 21:41:23.000000000 +0200
 @@ -542,7 +542,7 @@ struct target_ops
         Return -1 if there is insufficient buffer for a whole entry.
         Return 1 if an entry was read into *TYPEP and *VALP.  */

gdb-6.3-readnever-20050907.patch:

Index: gdb-6.3-readnever-20050907.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.3-readnever-20050907.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -p -r1.5 -r1.6
--- gdb-6.3-readnever-20050907.patch	2 Mar 2009 23:14:15 -0000	1.5
+++ gdb-6.3-readnever-20050907.patch	10 Jun 2009 13:05:56 -0000	1.6
@@ -11,10 +11,10 @@
 
         * gdb.texinfo (File Options): Document --readnever.
 
-Index: gdb-6.8.50.20090228/gdb/doc/gdb.texinfo
+Index: gdb-6.8.50.20090302/gdb/doc/gdb.texinfo
 ===================================================================
---- gdb-6.8.50.20090228.orig/gdb/doc/gdb.texinfo	2009-03-02 01:01:15.000000000 +0100
-+++ gdb-6.8.50.20090228/gdb/doc/gdb.texinfo	2009-03-02 01:01:23.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/doc/gdb.texinfo	2009-05-09 20:00:02.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/doc/gdb.texinfo	2009-05-09 20:00:06.000000000 +0200
 @@ -988,6 +988,12 @@ Read each symbol file's entire symbol ta
  the default, which is to read it incrementally as it is needed.
  This makes startup slower, but makes future operations faster.
@@ -28,10 +28,10 @@ Index: gdb-6.8.50.20090228/gdb/doc/gdb.t
  @end table
  
  @node Mode Options
-Index: gdb-6.8.50.20090228/gdb/main.c
+Index: gdb-6.8.50.20090302/gdb/main.c
 ===================================================================
---- gdb-6.8.50.20090228.orig/gdb/main.c	2009-03-02 01:01:17.000000000 +0100
-+++ gdb-6.8.50.20090228/gdb/main.c	2009-03-02 01:01:23.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/main.c	2009-05-09 20:00:03.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/main.c	2009-05-09 20:00:06.000000000 +0200
 @@ -427,6 +427,7 @@ captured_main (void *data)
        {"xdb", no_argument, &xdb_commands, 1},
        {"dbx", no_argument, &dbx_commands, 1},
@@ -48,10 +48,10 @@ Index: gdb-6.8.50.20090228/gdb/main.c
  "), stream);
    fputs_unfiltered (_("\
    --se=FILE          Use FILE as symbol file and executable file.\n\
-Index: gdb-6.8.50.20090228/gdb/symfile.c
+Index: gdb-6.8.50.20090302/gdb/symfile.c
 ===================================================================
---- gdb-6.8.50.20090228.orig/gdb/symfile.c	2009-03-02 01:01:17.000000000 +0100
-+++ gdb-6.8.50.20090228/gdb/symfile.c	2009-03-02 01:01:23.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/symfile.c	2009-05-09 20:00:03.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/symfile.c	2009-05-09 20:00:06.000000000 +0200
 @@ -77,6 +77,7 @@ static void clear_symtab_users_cleanup (
  
  /* Global variables owned by this file */
@@ -60,19 +60,19 @@ Index: gdb-6.8.50.20090228/gdb/symfile.c
  
  /* External variables and functions referenced. */
  
-Index: gdb-6.8.50.20090228/gdb/dwarf2read.c
+Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20090228.orig/gdb/dwarf2read.c	2009-03-02 01:01:15.000000000 +0100
-+++ gdb-6.8.50.20090228/gdb/dwarf2read.c	2009-03-02 01:01:36.000000000 +0100
-@@ -49,6 +49,7 @@
- #include "f-lang.h"
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c	2009-05-09 20:00:02.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/dwarf2read.c	2009-05-09 20:00:19.000000000 +0200
+@@ -50,6 +50,7 @@
  #include "c-lang.h"
  #include "typeprint.h"
+ #include "block.h"
 +#include "top.h"
  
  #include <fcntl.h>
  #include "gdb_string.h"
-@@ -1161,7 +1162,8 @@ dwarf2_has_info (struct objfile *objfile
+@@ -1187,7 +1188,8 @@ dwarf2_has_info (struct objfile *objfile
    dwarf_aranges_section = 0;
    
    bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, &update_sizes);
@@ -82,10 +82,10 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
  }
  
  /* When loading sections, we can either look for ".<name>", or for
-Index: gdb-6.8.50.20090228/gdb/top.h
+Index: gdb-6.8.50.20090302/gdb/top.h
 ===================================================================
---- gdb-6.8.50.20090228.orig/gdb/top.h	2009-01-03 06:57:53.000000000 +0100
-+++ gdb-6.8.50.20090228/gdb/top.h	2009-03-02 01:01:23.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/top.h	2009-01-03 06:57:53.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/top.h	2009-05-09 20:00:06.000000000 +0200
 @@ -59,6 +59,7 @@ extern void set_prompt (char *);
  
  /* From random places.  */

gdb-6.8-fortran-tag-constant.patch:

Index: gdb-6.8-fortran-tag-constant.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-fortran-tag-constant.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- gdb-6.8-fortran-tag-constant.patch	2 Mar 2009 23:14:15 -0000	1.4
+++ gdb-6.8-fortran-tag-constant.patch	10 Jun 2009 13:05:56 -0000	1.5
@@ -1,8 +1,8 @@
-Index: gdb-6.8.50.20090228/gdb/dwarf2read.c
+Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20090228.orig/gdb/dwarf2read.c	2009-03-02 01:07:36.000000000 +0100
-+++ gdb-6.8.50.20090228/gdb/dwarf2read.c	2009-03-02 01:07:50.000000000 +0100
-@@ -1996,6 +1996,7 @@ scan_partial_symbols (struct partial_die
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c	2009-05-09 20:04:27.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/dwarf2read.c	2009-05-09 20:04:56.000000000 +0200
+@@ -2029,6 +2029,7 @@ scan_partial_symbols (struct partial_die
  	      add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
  	      break;
  	    case DW_TAG_variable:
@@ -10,7 +10,7 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
  	    case DW_TAG_typedef:
  	    case DW_TAG_union_type:
  	      if (!pdi->is_declaration)
-@@ -2211,6 +2212,7 @@ add_partial_symbol (struct partial_die_i
+@@ -2244,6 +2245,7 @@ add_partial_symbol (struct partial_die_i
  	}
        break;
      case DW_TAG_variable:
@@ -18,7 +18,7 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
        if (pdi->is_external)
  	{
  	  /* Global Variable.
-@@ -4213,7 +4215,8 @@ dwarf2_add_field (struct field_info *fip
+@@ -4272,7 +4274,8 @@ dwarf2_add_field (struct field_info *fip
  	  fip->non_public_fields = 1;
  	}
      }
@@ -28,7 +28,7 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
      {
        /* C++ static member.  */
  
-@@ -4703,7 +4706,8 @@ read_structure_type (struct die_info *di
+@@ -4762,7 +4765,8 @@ read_structure_type (struct die_info *di
        while (child_die && child_die->tag)
  	{
  	  if (child_die->tag == DW_TAG_member
@@ -38,7 +38,7 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
  	    {
  	      /* NOTE: carlton/2002-11-05: A C++ static data member
  		 should be a DW_TAG_member that is a declaration, but
-@@ -4822,6 +4826,7 @@ process_structure_scope (struct die_info
+@@ -4881,6 +4885,7 @@ process_structure_scope (struct die_info
      {
        if (child_die->tag == DW_TAG_member
  	  || child_die->tag == DW_TAG_variable
@@ -46,15 +46,15 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
  	  || child_die->tag == DW_TAG_inheritance)
  	{
  	  /* Do nothing.  */
-@@ -6455,6 +6460,7 @@ load_partial_dies (bfd *abfd, gdb_byte *
+@@ -6656,6 +6661,7 @@ load_partial_dies (bfd *abfd, gdb_byte *
  	  && abbrev->tag != DW_TAG_subprogram
  	  && abbrev->tag != DW_TAG_lexical_block
  	  && abbrev->tag != DW_TAG_variable
 +	  && abbrev->tag != DW_TAG_constant
  	  && abbrev->tag != DW_TAG_namespace
+ 	  && abbrev->tag != DW_TAG_module
  	  && abbrev->tag != DW_TAG_member)
- 	{
-@@ -6562,6 +6568,7 @@ load_partial_dies (bfd *abfd, gdb_byte *
+@@ -6764,6 +6770,7 @@ load_partial_dies (bfd *abfd, gdb_byte *
        if (load_all
  	  || abbrev->tag == DW_TAG_subprogram
  	  || abbrev->tag == DW_TAG_variable
@@ -62,7 +62,7 @@ Index: gdb-6.8.50.20090228/gdb/dwarf2rea
  	  || abbrev->tag == DW_TAG_namespace
  	  || part_die->is_declaration)
  	{
-@@ -8341,6 +8348,11 @@ new_symbol (struct die_info *die, struct
+@@ -8549,6 +8556,11 @@ new_symbol (struct die_info *die, struct
  	  /* Do not add the symbol to any lists.  It will be found via
  	     BLOCK_FUNCTION from the blockvector.  */
  	  break;

gdb-6.8-inlining.patch:

Index: gdb-6.8-inlining.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-inlining.patch,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- gdb-6.8-inlining.patch	13 Apr 2009 20:52:58 -0000	1.12
+++ gdb-6.8-inlining.patch	10 Jun 2009 13:05:56 -0000	1.13
@@ -7,8 +7,8 @@ Removed dwarf_expr_frame_base NULL check
 
 Index: gdb-6.8.50.20090302/gdb/NEWS
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/NEWS	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/NEWS	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/NEWS	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/NEWS	2009-05-09 21:27:23.000000000 +0200
 @@ -1,6 +1,11 @@
  		What has changed in GDB?
  	     (Organized release by release)
@@ -23,8 +23,8 @@ Index: gdb-6.8.50.20090302/gdb/NEWS
  * GDB now has support for multi-byte and wide character sets on the
 Index: gdb-6.8.50.20090302/gdb/block.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/block.c	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/block.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/block.c	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/block.c	2009-05-09 21:27:23.000000000 +0200
 @@ -47,8 +47,16 @@ contained_in (const struct block *a, con
  {
    if (!a || !b)
@@ -69,8 +69,8 @@ Index: gdb-6.8.50.20090302/gdb/block.c
     is none.  PBLOCK is a pointer to the block.  If PBLOCK is NULL, we
 Index: gdb-6.8.50.20090302/gdb/block.h
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/block.h	2009-01-03 06:57:50.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/block.h	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/block.h	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/block.h	2009-05-09 21:27:23.000000000 +0200
 @@ -65,7 +65,7 @@ struct block
    CORE_ADDR endaddr;
  
@@ -80,7 +80,7 @@ Index: gdb-6.8.50.20090302/gdb/block.h
  
    struct symbol *function;
  
-@@ -134,6 +134,8 @@ enum { GLOBAL_BLOCK = 0, STATIC_BLOCK = 
+@@ -144,6 +144,8 @@ enum { GLOBAL_BLOCK = 0, STATIC_BLOCK = 
  
  extern struct symbol *block_linkage_function (const struct block *);
  
@@ -92,7 +92,7 @@ Index: gdb-6.8.50.20090302/gdb/block.h
 Index: gdb-6.8.50.20090302/gdb/blockframe.c
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/blockframe.c	2009-01-03 06:57:50.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/blockframe.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/blockframe.c	2009-05-09 21:27:23.000000000 +0200
 @@ -36,6 +36,7 @@
  #include "command.h"
  #include "gdbcmd.h"
@@ -163,8 +163,8 @@ Index: gdb-6.8.50.20090302/gdb/blockfram
        frame = get_prev_frame (frame);
 Index: gdb-6.8.50.20090302/gdb/breakpoint.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/breakpoint.c	2009-04-13 22:19:50.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/breakpoint.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/breakpoint.c	2009-05-09 21:27:15.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/breakpoint.c	2009-05-09 21:27:23.000000000 +0200
 @@ -2641,19 +2641,21 @@ watchpoint_check (void *p)
      within_current_scope = 1;
    else
@@ -344,8 +344,8 @@ Index: gdb-6.8.50.20090302/gdb/breakpoin
      }
 Index: gdb-6.8.50.20090302/gdb/buildsym.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/buildsym.c	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/buildsym.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/buildsym.c	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/buildsym.c	2009-05-09 21:27:23.000000000 +0200
 @@ -1155,6 +1155,12 @@ end_symtab (CORE_ADDR end_addr, struct o
  	  struct symbol *sym;
  	  struct dict_iterator iter;
@@ -361,8 +361,8 @@ Index: gdb-6.8.50.20090302/gdb/buildsym.
  	       sym = dict_iterator_next (&iter))
 Index: gdb-6.8.50.20090302/gdb/doc/gdb.texinfo
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/doc/gdb.texinfo	2009-04-13 22:19:50.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/doc/gdb.texinfo	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/doc/gdb.texinfo	2009-05-09 21:27:15.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/doc/gdb.texinfo	2009-05-09 21:27:23.000000000 +0200
 @@ -137,6 +137,7 @@ software in general.  We will miss him.
  * Stack::                       Examining the stack
  * Source::                      Examining source files
@@ -514,8 +514,8 @@ Index: gdb-6.8.50.20090302/gdb/doc/gdb.t
  
 Index: gdb-6.8.50.20090302/gdb/dwarf2loc.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/dwarf2loc.c	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/dwarf2loc.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2loc.c	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/dwarf2loc.c	2009-05-09 21:27:23.000000000 +0200
 @@ -31,6 +31,7 @@
  #include "regcache.h"
  #include "objfiles.h"
@@ -538,17 +538,9 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2loc
       some function associated with a frame. If we can't find the frame,
 Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c	2009-04-13 22:19:50.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/dwarf2read.c	2009-04-13 22:22:41.000000000 +0200
-@@ -50,6 +50,7 @@
- #include "c-lang.h"
- #include "typeprint.h"
- #include "top.h"
-+#include "block.h"
- 
- #include <fcntl.h>
- #include "gdb_string.h"
-@@ -2992,12 +2993,8 @@ process_die (struct die_info *die, struc
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c	2009-05-09 21:27:15.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/dwarf2read.c	2009-05-09 21:27:23.000000000 +0200
+@@ -3024,12 +3024,8 @@ process_die (struct die_info *die, struc
        read_file_scope (die, cu);
        break;
      case DW_TAG_subprogram:
@@ -562,7 +554,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
        break;
      case DW_TAG_lexical_block:
      case DW_TAG_try_block:
-@@ -3472,6 +3469,22 @@ read_func_scope (struct die_info *die, s
+@@ -3516,6 +3512,22 @@ read_func_scope (struct die_info *die, s
    CORE_ADDR baseaddr;
    struct block *block;
    unsigned die_children;
@@ -585,7 +577,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
  
    baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
  
-@@ -7531,6 +7544,9 @@ die_specification (struct die_info *die,
+@@ -7725,6 +7737,9 @@ die_specification (struct die_info *die,
  					     *spec_cu);
  
    if (spec_attr == NULL)
@@ -595,7 +587,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
      return NULL;
    else
      return follow_die_ref (die, spec_attr, spec_cu);
-@@ -8214,6 +8230,7 @@ new_symbol (struct die_info *die, struct
+@@ -8408,6 +8423,7 @@ new_symbol (struct die_info *die, struct
    struct attribute *attr = NULL;
    struct attribute *attr2 = NULL;
    CORE_ADDR baseaddr;
@@ -603,7 +595,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
  
    baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
  
-@@ -8264,13 +8281,17 @@ new_symbol (struct die_info *die, struct
+@@ -8464,13 +8480,17 @@ new_symbol (struct die_info *die, struct
  	SYMBOL_TYPE (sym) = type;
        else
  	SYMBOL_TYPE (sym) = die_type (die, cu);
@@ -623,7 +615,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
        if (attr)
  	{
  	  int file_index = DW_UNSND (attr);
-@@ -8317,6 +8338,14 @@ new_symbol (struct die_info *die, struct
+@@ -8517,6 +8537,14 @@ new_symbol (struct die_info *die, struct
  	      add_symbol_to_list (sym, cu->list_in_scope);
  	    }
  	  break;
@@ -638,7 +630,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
  	case DW_TAG_variable:
  	  /* Compilation with minimal debug info may result in variables
  	     with missing type entries. Change the misleading `void' type
-@@ -8372,7 +8401,14 @@ new_symbol (struct die_info *die, struct
+@@ -8583,7 +8611,14 @@ new_symbol (struct die_info *die, struct
  	    }
  	  break;
  	case DW_TAG_formal_parameter:
@@ -657,7 +649,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2rea
 Index: gdb-6.8.50.20090302/gdb/frame-unwind.c
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/frame-unwind.c	2009-01-03 06:57:51.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/frame-unwind.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/frame-unwind.c	2009-05-09 21:27:23.000000000 +0200
 @@ -21,6 +21,7 @@
  #include "frame.h"
  #include "frame-unwind.h"
@@ -680,8 +672,8 @@ Index: gdb-6.8.50.20090302/gdb/frame-unw
  
 Index: gdb-6.8.50.20090302/gdb/frame.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/frame.c	2009-04-13 22:19:48.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/frame.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/frame.c	2009-05-09 21:27:11.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/frame.c	2009-05-09 21:27:23.000000000 +0200
 @@ -41,8 +41,14 @@
  #include "objfiles.h"
  #include "exceptions.h"
@@ -1041,7 +1033,7 @@ Index: gdb-6.8.50.20090302/gdb/frame.c
 Index: gdb-6.8.50.20090302/gdb/frame.h
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/frame.h	2009-02-05 18:28:20.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/frame.h	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/frame.h	2009-05-09 21:27:23.000000000 +0200
 @@ -34,6 +34,9 @@
     frame_unwind_WHAT...(): Unwind THIS frame's WHAT from the NEXT
     frame.
@@ -1105,8 +1097,8 @@ Index: gdb-6.8.50.20090302/gdb/frame.h
  /* Assuming that a frame is `normal', return its base-address, or 0 if
 Index: gdb-6.8.50.20090302/gdb/gdbthread.h
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/gdbthread.h	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/gdbthread.h	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/gdbthread.h	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/gdbthread.h	2009-05-09 21:27:23.000000000 +0200
 @@ -83,6 +83,13 @@ struct thread_info
       This is how we know when we step into a subroutine call, and how
       to set the frame for the breakpoint used to step out.  */
@@ -1123,8 +1115,8 @@ Index: gdb-6.8.50.20090302/gdb/gdbthread
  
 Index: gdb-6.8.50.20090302/gdb/infcall.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infcall.c	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/infcall.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/infcall.c	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/infcall.c	2009-05-09 21:27:23.000000000 +0200
 @@ -898,15 +898,8 @@ The program being debugged exited while 
  
  	  if (unwind_on_signal_p)
@@ -1145,8 +1137,8 @@ Index: gdb-6.8.50.20090302/gdb/infcall.c
  		 long if it's a C++ name with arguments and stuff.  */
 Index: gdb-6.8.50.20090302/gdb/infcmd.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infcmd.c	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/infcmd.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/infcmd.c	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/infcmd.c	2009-05-09 21:27:23.000000000 +0200
 @@ -52,6 +52,7 @@
  #include "cli/cli-decode.h"
  #include "gdbthread.h"
@@ -1250,8 +1242,8 @@ Index: gdb-6.8.50.20090302/gdb/infcmd.c
    function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));
 Index: gdb-6.8.50.20090302/gdb/inferior.h
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/inferior.h	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/inferior.h	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/inferior.h	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/inferior.h	2009-05-09 21:27:23.000000000 +0200
 @@ -259,6 +259,9 @@ extern void error_is_running (void);
  /* Calls error_is_running if the current thread is running.  */
  extern void ensure_not_running (void);
@@ -1264,8 +1256,8 @@ Index: gdb-6.8.50.20090302/gdb/inferior.
  extern void tty_command (char *, int);
 Index: gdb-6.8.50.20090302/gdb/infrun.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infrun.c	2009-04-13 22:19:49.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/infrun.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/infrun.c	2009-05-09 21:27:14.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/infrun.c	2009-05-09 21:27:23.000000000 +0200
 @@ -48,6 +48,7 @@
  #include "gdb_assert.h"
  #include "mi/mi-common.h"
@@ -1541,7 +1533,7 @@ Index: gdb-6.8.50.20090302/gdb/infrun.c
 Index: gdb-6.8.50.20090302/gdb/inline-frame.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/inline-frame.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/inline-frame.c	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,382 @@
 +/* Inline frame unwinder for GDB.
 +
@@ -1928,7 +1920,7 @@ Index: gdb-6.8.50.20090302/gdb/inline-fr
 Index: gdb-6.8.50.20090302/gdb/inline-frame.h
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/inline-frame.h	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/inline-frame.h	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,62 @@
 +/* Definitions for inline frame support.
 +
@@ -1994,8 +1986,8 @@ Index: gdb-6.8.50.20090302/gdb/inline-fr
 +#endif /* !defined (INLINE_FRAME_H) */
 Index: gdb-6.8.50.20090302/gdb/minsyms.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/minsyms.c	2009-04-13 22:19:49.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/minsyms.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/minsyms.c	2009-05-09 21:27:14.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/minsyms.c	2009-05-09 21:27:23.000000000 +0200
 @@ -795,7 +795,7 @@ prim_record_minimal_symbol_and_info (con
  
    if (msym_bunch_index == BUNCH_SIZE)
@@ -2008,7 +2000,7 @@ Index: gdb-6.8.50.20090302/gdb/minsyms.c
 Index: gdb-6.8.50.20090302/gdb/s390-tdep.c
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/s390-tdep.c	2009-02-22 02:02:19.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/s390-tdep.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/s390-tdep.c	2009-05-09 21:27:23.000000000 +0200
 @@ -1182,6 +1182,7 @@ s390_prologue_frame_unwind_cache (struct
    CORE_ADDR prev_sp;
    int frame_pointer;
@@ -2044,8 +2036,8 @@ Index: gdb-6.8.50.20090302/gdb/s390-tdep
        /* See the comment in s390_in_function_epilogue_p on why this is
 Index: gdb-6.8.50.20090302/gdb/stack.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/stack.c	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/stack.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/stack.c	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/stack.c	2009-05-09 21:27:23.000000000 +0200
 @@ -45,6 +45,7 @@
  #include "valprint.h"
  #include "gdbthread.h"
@@ -2194,9 +2186,9 @@ Index: gdb-6.8.50.20090302/gdb/stack.c
       RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
 Index: gdb-6.8.50.20090302/gdb/symtab.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/symtab.c	2009-04-13 22:19:49.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/symtab.c	2009-04-13 22:22:01.000000000 +0200
-@@ -1417,11 +1417,14 @@ lookup_symbol_aux_local (const char *nam
+--- gdb-6.8.50.20090302.orig/gdb/symtab.c	2009-05-09 21:27:14.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/symtab.c	2009-05-09 21:28:06.000000000 +0200
+@@ -1420,11 +1420,14 @@ lookup_symbol_aux_local (const char *nam
        sym = lookup_symbol_aux_block (name, linkage_name, block_iterator, domain);
        if (sym != NULL)
  	return sym;
@@ -2212,7 +2204,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
  
    return NULL;
  }
-@@ -2678,6 +2681,7 @@ find_function_start_sal (struct symbol *
+@@ -2681,6 +2684,7 @@ find_function_start_sal (struct symbol *
  
    CORE_ADDR pc;
    struct symtab_and_line sal;
@@ -2220,7 +2212,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
  
    pc = BLOCK_START (block);
    fixup_symbol_section (sym, objfile);
-@@ -2716,6 +2720,25 @@ find_function_start_sal (struct symbol *
+@@ -2719,6 +2723,25 @@ find_function_start_sal (struct symbol *
  
    sal.pc = pc;
  
@@ -2246,7 +2238,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
    return sal;
  }
  
-@@ -3738,6 +3761,24 @@ add_macro_name (const char *name, const 
+@@ -3741,6 +3764,24 @@ add_macro_name (const char *name, const 
  			    datum->text, datum->word);
  }
  
@@ -2271,7 +2263,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
  char **
  default_make_symbol_completion_list (char *text, char *word)
  {
-@@ -3750,9 +3791,9 @@ default_make_symbol_completion_list (cha
+@@ -3753,9 +3794,9 @@ default_make_symbol_completion_list (cha
    struct partial_symtab *ps;
    struct minimal_symbol *msymbol;
    struct objfile *objfile;
@@ -2283,7 +2275,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
    struct partial_symbol **psym;
    /* The symbol we are completing on.  Points in same buffer as text.  */
    char *sym_text;
-@@ -3862,41 +3903,43 @@ default_make_symbol_completion_list (cha
+@@ -3865,41 +3906,43 @@ default_make_symbol_completion_list (cha
    }
  
    /* Search upwards from currently selected frame (so that we can
@@ -2358,7 +2350,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
  
    /* Go through the symtabs and check the externs and statics for
       symbols which match.  */
-@@ -3915,9 +3958,6 @@ default_make_symbol_completion_list (cha
+@@ -3918,9 +3961,6 @@ default_make_symbol_completion_list (cha
    {
      QUIT;
      b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
@@ -2368,7 +2360,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
      ALL_BLOCK_SYMBOLS (b, iter, sym)
        {
  	COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
-@@ -4384,6 +4424,25 @@ skip_prologue_using_sal (CORE_ADDR func_
+@@ -4387,6 +4427,25 @@ skip_prologue_using_sal (CORE_ADDR func_
  	     line mark the prologue -> body transition.  */
  	  if (sal.line >= prologue_sal.line)
  	    break;
@@ -2396,9 +2388,9 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
  	     the function looking for address ranges whose
 Index: gdb-6.8.50.20090302/gdb/symtab.h
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/symtab.h	2009-04-13 22:19:47.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/symtab.h	2009-04-13 22:22:01.000000000 +0200
-@@ -562,9 +562,18 @@ struct symbol
+--- gdb-6.8.50.20090302.orig/gdb/symtab.h	2009-05-09 21:27:09.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/symtab.h	2009-05-09 21:27:23.000000000 +0200
+@@ -565,9 +565,18 @@ struct symbol
  
    unsigned is_argument : 1;
  
@@ -2420,7 +2412,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.h
  
    unsigned short line;
  
-@@ -595,6 +604,7 @@ struct symbol
+@@ -598,6 +607,7 @@ struct symbol
  #define SYMBOL_DOMAIN(symbol)	(symbol)->domain
  #define SYMBOL_CLASS(symbol)		(symbol)->aclass
  #define SYMBOL_IS_ARGUMENT(symbol)	(symbol)->is_argument
@@ -2431,7 +2423,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.h
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.base/break.exp	2009-01-19 20:05:01.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp	2009-05-09 21:27:23.000000000 +0200
 @@ -880,6 +880,13 @@ gdb_expect {
          # marker4() is defined at line 46 when compiled with -DPROTOTYPES
  	pass "run until breakpoint set at small function, optimized file (line bp_location14)"
@@ -2449,7 +2441,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.cp/annota2.exp	2009-01-03 06:58:04.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp	2009-05-09 21:27:23.000000000 +0200
 @@ -119,10 +119,11 @@ gdb_expect {
  # continue until exit
  # this will test:
@@ -2466,7 +2458,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,47 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -2518,7 +2510,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,63 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2586,7 +2578,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,85 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -2676,7 +2668,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,279 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2960,7 +2952,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,52 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -3017,7 +3009,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,118 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -3140,7 +3132,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c	2009-05-09 21:27:23.000000000 +0200
 @@ -0,0 +1,36 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -3180,8 +3172,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
 +}
 Index: gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/lib/gdb.exp	2009-04-13 22:19:50.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/lib/gdb.exp	2009-05-09 21:27:14.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp	2009-05-09 21:27:23.000000000 +0200
 @@ -1474,6 +1474,37 @@ proc skip_hp_tests {} {
      return $skip_hp
  }
@@ -3222,8 +3214,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite
  set hp_cc_compiler		0
 Index: gdb-6.8.50.20090302/gdb/valops.c
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/valops.c	2009-04-13 22:19:48.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/valops.c	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/valops.c	2009-05-09 21:27:10.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/valops.c	2009-05-09 21:27:23.000000000 +0200
 @@ -1072,7 +1072,7 @@ value_of_variable (struct symbol *var, s
        frame = block_innermost_frame (b);
        if (!frame)
@@ -3235,8 +3227,8 @@ Index: gdb-6.8.50.20090302/gdb/valops.c
  		   SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
 Index: gdb-6.8.50.20090302/gdb/Makefile.in
 ===================================================================
---- gdb-6.8.50.20090302.orig/gdb/Makefile.in	2009-04-13 22:19:49.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/Makefile.in	2009-04-13 22:22:01.000000000 +0200
+--- gdb-6.8.50.20090302.orig/gdb/Makefile.in	2009-05-09 21:27:14.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/Makefile.in	2009-05-09 21:27:23.000000000 +0200
 @@ -667,6 +667,7 @@ SFILES = ada-exp.y ada-lang.c ada-typepr
  	inf-loop.c \
  	infcall.c \
@@ -3256,7 +3248,7 @@ Index: gdb-6.8.50.20090302/gdb/Makefile.
 Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/Makefile.in
 ===================================================================
 --- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/Makefile.in	2008-04-18 01:06:54.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/Makefile.in	2009-04-13 22:22:01.000000000 +0200
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/Makefile.in	2009-05-09 21:27:23.000000000 +0200
 @@ -1,7 +1,7 @@
  VPATH = @srcdir@
  srcdir = @srcdir@

gdb-archer.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.14 -r 1.15 gdb-archer.patch
Index: gdb-archer.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-archer.patch,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -p -r1.14 -r1.15
--- gdb-archer.patch	13 Apr 2009 21:25:31 -0000	1.14
+++ gdb-archer.patch	10 Jun 2009 13:05:56 -0000	1.15
@@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectAr
 http://sourceware.org/gdb/wiki/ArcherBranchManagement
 
 GIT snapshot:
-commit d1fee5066408a09423621d1ebc64e6d3e248ed08
+commit 000db8b7bfef8581ef099ccca8689cfddfea1be8
 
 branch `archer' - the merge of branches:
 archer-jankratochvil-merge-expr
@@ -4530,7 +4530,7 @@ index 5007cd0..3a51ec5 100644
  	  }
  	  break;
 diff --git a/gdb/block.c b/gdb/block.c
-index 8f0140c..d451769 100644
+index 8f0140c..511c1a4 100644
 --- a/gdb/block.c
 +++ b/gdb/block.c
 @@ -207,24 +207,16 @@ block_set_scope (struct block *block, const char *scope,
@@ -4562,6 +4562,42 @@ index 8f0140c..d451769 100644
  }
  
  /* Set BLOCK's using member to USING; if needed, allocate memory via
+@@ -306,6 +298,7 @@ allocate_block (struct obstack *obstack)
+   BLOCK_SUPERBLOCK (bl) = NULL;
+   BLOCK_DICT (bl) = NULL;
+   BLOCK_NAMESPACE (bl) = NULL;
++  BLOCK_FORTRAN_USE (bl) = NULL;
+ 
+   return bl;
+ }
+diff --git a/gdb/block.h b/gdb/block.h
+index 9b43144..20d32ae 100644
+--- a/gdb/block.h
++++ b/gdb/block.h
+@@ -96,6 +96,15 @@ struct block
+     cplus_specific;
+   }
+   language_specific;
++
++  /* FIXME: It should be in the LANGUAGE_SPECIFIC region but the
++     BLOCK_NAMESPACE accessor is not protected by the C language check.  */
++
++  struct
++    {
++      struct fortran_using *use;
++    }
++  fortran_specific;
+ };
+ 
+ #define BLOCK_START(bl)		(bl)->startaddr
+@@ -104,6 +113,7 @@ struct block
+ #define BLOCK_SUPERBLOCK(bl)	(bl)->superblock
+ #define BLOCK_DICT(bl)		(bl)->dict
+ #define BLOCK_NAMESPACE(bl)   (bl)->language_specific.cplus_specific.namespace
++#define BLOCK_FORTRAN_USE(bl)	(bl)->fortran_specific.use
+ 
+ /* Macro to loop through all symbols in a block BL, in no particular
+    order.  ITER helps keep track of the iteration, and should be a
 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
 index b23b294..567f574 100644
 --- a/gdb/breakpoint.c
@@ -14617,7 +14653,7 @@ index 76577f1..bf46761 100644
  
  #endif /* dwarf2loc.h */
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 55868da..9c1b90d 100644
+index 55868da..b4720e8 100644
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
 @@ -1,8 +1,7 @@
@@ -14630,17 +14666,18 @@ index 55868da..9c1b90d 100644
  
     Adapted by Gary Funck (gary at intrepid.com), Intrepid Technology,
     Inc.  with support from Florida State University (under contract
-@@ -47,6 +46,9 @@
+@@ -47,6 +46,10 @@
  #include "command.h"
  #include "gdbcmd.h"
  #include "addrmap.h"
 +#include "f-lang.h"
 +#include "c-lang.h"
 +#include "typeprint.h"
++#include "block.h"
  
  #include <fcntl.h>
  #include "gdb_string.h"
-@@ -103,7 +105,7 @@ typedef struct pubnames_header
+@@ -103,7 +106,7 @@ typedef struct pubnames_header
  _PUBNAMES_HEADER;
  #define _ACTUAL_PUBNAMES_HEADER_SIZE 13
  
@@ -14649,7 +14686,7 @@ index 55868da..9c1b90d 100644
     Because of alignment constraints, this structure has padding and cannot
     be mapped directly onto the beginning of the .debug_info section.  */
  typedef struct aranges_header
-@@ -299,9 +301,6 @@ struct dwarf2_cu
+@@ -299,9 +302,6 @@ struct dwarf2_cu
    /* Hash table holding all the loaded partial DIEs.  */
    htab_t partial_dies;
  
@@ -14659,17 +14696,28 @@ index 55868da..9c1b90d 100644
    /* Storage for things with the same lifetime as this read-in compilation
       unit, including partial DIEs.  */
    struct obstack comp_unit_obstack;
-@@ -349,9 +348,6 @@ struct dwarf2_cu
-      DIEs for namespaces, we don't need to try to infer them
+@@ -350,8 +350,18 @@ struct dwarf2_cu
       from mangled names.  */
    unsigned int has_namespace_info : 1;
--
+ 
 -  /* Field `ranges_offset' is filled in; flag as the value may be zero.  */
 -  unsigned int has_ranges_offset : 1;
++  /* Fields are valid according to the LANGUAGE field.  */
++  union
++    {
++      /* language_fortran */
++      struct
++        {
++	  /* Module names imported to the block being currently read in.  */
++	  struct fortran_using *use;
++	}
++      fortran;
++    }
++  language_specific;
  };
  
  /* Persistent data held for a compilation unit, even when not
-@@ -451,17 +447,12 @@ struct partial_die_info
+@@ -451,17 +461,12 @@ struct partial_die_info
      /* DWARF-2 tag for this DIE.  */
      ENUM_BITFIELD(dwarf_tag) tag : 16;
  
@@ -14687,7 +14735,7 @@ index 55868da..9c1b90d 100644
      unsigned int has_pc_info : 1;
  
      /* Flag set if the SCOPE field of this structure has been
-@@ -472,10 +463,12 @@ struct partial_die_info
+@@ -472,10 +477,12 @@ struct partial_die_info
      unsigned int has_byte_size : 1;
  
      /* The name of this DIE.  Normally the value of DW_AT_name, but
@@ -14703,7 +14751,7 @@ index 55868da..9c1b90d 100644
  
      /* The scope to prepend to our children.  This is generally
         allocated on the comp_unit_obstack, so will disappear
-@@ -498,9 +491,6 @@ struct partial_die_info
+@@ -498,9 +505,6 @@ struct partial_die_info
         DW_AT_extension).  */
      unsigned int spec_offset;
  
@@ -14713,7 +14761,7 @@ index 55868da..9c1b90d 100644
      /* Pointers to this DIE's parent, first child, and next sibling,
         if any.  */
      struct partial_die_info *die_parent, *die_child, *die_sibling;
-@@ -523,6 +513,15 @@ struct attr_abbrev
+@@ -523,6 +527,15 @@ struct attr_abbrev
      ENUM_BITFIELD(dwarf_form) form : 16;
    };
  
@@ -14729,7 +14777,7 @@ index 55868da..9c1b90d 100644
  /* Attributes have a name and a value */
  struct attribute
    {
-@@ -756,7 +755,7 @@ static void dwarf2_create_include_psymtab (char *, struct partial_symtab *,
+@@ -756,7 +769,7 @@ static void dwarf2_create_include_psymtab (char *, struct partial_symtab *,
                                             struct objfile *);
  
  static void dwarf2_build_include_psymtabs (struct dwarf2_cu *,
@@ -14738,7 +14786,7 @@ index 55868da..9c1b90d 100644
                                             struct partial_symtab *);
  
  static void dwarf2_build_psymtabs_hard (struct objfile *, int);
-@@ -768,6 +767,9 @@ static void scan_partial_symbols (struct partial_die_info *,
+@@ -768,6 +781,9 @@ static void scan_partial_symbols (struct partial_die_info *,
  static void add_partial_symbol (struct partial_die_info *,
  				struct dwarf2_cu *);
  
@@ -14748,7 +14796,7 @@ index 55868da..9c1b90d 100644
  static int pdi_needs_namespace (enum dwarf_tag tag);
  
  static void add_partial_namespace (struct partial_die_info *pdi,
-@@ -794,6 +796,10 @@ static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
+@@ -794,6 +810,10 @@ static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
  
  static void psymtab_to_symtab_1 (struct partial_symtab *);
  
@@ -14759,7 +14807,7 @@ index 55868da..9c1b90d 100644
  gdb_byte *dwarf2_read_section (struct objfile *, asection *);
  
  static void dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu);
-@@ -929,7 +935,8 @@ static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
[...1996 lines suppressed...]
++        subroutine lib_func
++        if (var_i .ne. 1) call abort
++        var_i = 2
++        end subroutine lib_func
++end module lib
++
++module libmany
++        integer :: var_j = 3
++        integer :: var_k = 4
++end module libmany
+diff --git a/gdb/testsuite/gdb.fortran/library-module-main.f90 b/gdb/testsuite/gdb.fortran/library-module-main.f90
+new file mode 100644
+index 0000000..de63a65
+--- /dev/null
++++ b/gdb/testsuite/gdb.fortran/library-module-main.f90
+@@ -0,0 +1,23 @@
++! Copyright 2009 Free Software Foundation, Inc.
++! 
++! This program is free software; you can redistribute it and/or modify
++! it under the terms of the GNU General Public License as published by
++! the Free Software Foundation; either version 3 of the License, or
++! (at your option) any later version.
++! 
++! This program is distributed in the hope that it will be useful,
++! but WITHOUT ANY WARRANTY; without even the implied warranty of
++! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++! GNU General Public License for more details.
++! 
++! You should have received a copy of the GNU General Public License
++! along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++        use lib
++	use libmany, only: var_j
++        if (var_i .ne. 1) call abort
++	call lib_func
++        if (var_i .ne. 2) call abort
++        if (var_j .ne. 3) call abort
++        var_i = var_i                 ! i-is-2
++end
+diff --git a/gdb/testsuite/gdb.fortran/library-module.exp b/gdb/testsuite/gdb.fortran/library-module.exp
+new file mode 100644
+index 0000000..4b4ea4c
+--- /dev/null
++++ b/gdb/testsuite/gdb.fortran/library-module.exp
+@@ -0,0 +1,53 @@
++# Copyright 2009 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++set testfile "library-module"
++set srcfile ${testfile}-main.f90
++set srclibfile ${testfile}-lib.f90
++set libfile ${testfile}-lib.so
++set binfile ${testfile}
++
++# Required for -fPIC by gdb_compile_shlib.
++if [get_compiler_info not-used] {
++   warning "Could not get compiler info"
++   return -1
++}
++
++if  { [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" $objdir/$subdir/$libfile {debug f77}] != "" } {
++    untested "Couldn't compile ${srclibfile}"
++    return -1
++}
++
++# prepare_for_testing cannot be used as linking with $libfile cannot be passed
++# just for the linking phase (and not the source compilation phase).  And any
++# warnings on ignored $libfile abort the process.
++
++if  { [gdb_compile [list $srcdir/$subdir/$srcfile $objdir/$subdir/$libfile] $objdir/$subdir/$binfile executable {debug f77}] != "" } {
++    untested "Couldn't compile ${srcfile}"
++    return -1
++}
++
++clean_restart $binfile
++
++if ![runto MAIN__] then {
++    perror "couldn't run to breakpoint MAIN__"
++    continue
++}
++
++gdb_breakpoint [gdb_get_line_number "i-is-2"]
++gdb_continue_to_breakpoint "i-is-2" ".*i-is-2.*"
++gdb_test "print var_i" " = 2"
++gdb_test "print var_j" " = 3"
++gdb_test "print var_k" "No symbol \"var_k\" in current context\\."
 diff --git a/gdb/testsuite/gdb.fortran/logical.exp b/gdb/testsuite/gdb.fortran/logical.exp
 new file mode 100644
 index 0000000..ef76f43
@@ -39825,6 +40517,98 @@ index 0000000..4229304
 +  l8 = .TRUE.
 +  l = .FALSE.					! stop-here
 +end
+diff --git a/gdb/testsuite/gdb.fortran/module.exp b/gdb/testsuite/gdb.fortran/module.exp
+index 342ccee..c836c3c 100644
+--- a/gdb/testsuite/gdb.fortran/module.exp
++++ b/gdb/testsuite/gdb.fortran/module.exp
+@@ -15,21 +15,31 @@
+ 
+ set testfile "module"
+ set srcfile ${testfile}.f90
+-set binfile ${objdir}/${subdir}/${testfile}
+ 
+-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } {
+-    untested "Couldn't compile ${srcfile}"
++if { [prepare_for_testing $testfile.exp $testfile $srcfile {debug f77}] } {
+     return -1
+ }
+ 
+-gdb_exit
+-gdb_start
+-gdb_reinitialize_dir $srcdir/$subdir
+-gdb_load ${binfile}
+-
+ if ![runto MAIN__] then {
+     perror "couldn't run to breakpoint MAIN__"
+     continue
+ }
+ 
+-gdb_test "print i" " = 42"
++# Do not use simple single-letter names as GDB would pick up for expectedly
++# nonexisting symbols some static variables from system libraries debuginfos.
++
++gdb_breakpoint [gdb_get_line_number "i-is-1"]
++gdb_continue_to_breakpoint "i-is-1" ".*i-is-1.*"
++gdb_test "print var_i" " = 1" "print var_i value 1"
++
++gdb_breakpoint [gdb_get_line_number "i-is-2"]
++gdb_continue_to_breakpoint "i-is-2" ".*i-is-2.*"
++gdb_test "print var_i" " = 2" "print var_i value 2"
++
++gdb_breakpoint [gdb_get_line_number "a-b-c-d"]
++gdb_continue_to_breakpoint "a-b-c-d" ".*a-b-c-d.*"
++gdb_test "print var_a" "No symbol \"var_a\" in current context\\."
++gdb_test "print var_b" " = 11"
++gdb_test "print var_c" "No symbol \"var_c\" in current context\\."
++gdb_test "print var_d" " = 12"
++gdb_test "print var_i" " = 14" "print var_i value 14"
+diff --git a/gdb/testsuite/gdb.fortran/module.f90 b/gdb/testsuite/gdb.fortran/module.f90
+index 501ccc8..118931d 100644
+--- a/gdb/testsuite/gdb.fortran/module.f90
++++ b/gdb/testsuite/gdb.fortran/module.f90
+@@ -13,10 +13,37 @@
+ ! You should have received a copy of the GNU General Public License
+ ! along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ 
+-module mod
+-        integer :: i = 42
+-end module mod
++module mod1
++        integer :: var_i = 1
++end module mod1
+ 
+-        use mod
+-        print *, i
++module mod2
++        integer :: var_i = 2
++end module mod2
++
++module modmany
++        integer :: var_a = 10, var_b = 11, var_c = 12, var_i = 14
++end module modmany
++
++        subroutine sub1
++        use mod1
++        if (var_i .ne. 1) call abort
++        var_i = var_i                         ! i-is-1
++        end
++
++        subroutine sub2
++        use mod2
++        if (var_i .ne. 2) call abort
++        var_i = var_i                         ! i-is-2
++        end
++
++        use modmany, only: var_b, var_d => var_c, var_i
++
++        call sub1
++        call sub2
++
++        if (var_b .ne. 11) call abort
++        if (var_d .ne. 12) call abort
++        if (var_i .ne. 14) call abort
++        var_b = var_b                         ! a-b-c-d
+ end
 diff --git a/gdb/testsuite/gdb.fortran/string.exp b/gdb/testsuite/gdb.fortran/string.exp
 new file mode 100644
 index 0000000..ab72206


Index: gdb-orphanripper.c
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-orphanripper.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- gdb-orphanripper.c	23 Jul 2007 22:19:06 -0000	1.1
+++ gdb-orphanripper.c	10 Jun 2009 13:05:57 -0000	1.2
@@ -90,6 +90,7 @@ static int spawn (char **argv)
   termios.c_oflag = 0;
   termios.c_cflag = CS8 | CREAD | CLOCAL | HUPCL | B9600;
   termios.c_lflag = IEXTEN | NOFLSH;
+  termios.c_line = 0;
   memset (termios.c_cc, _POSIX_VDISABLE, sizeof (termios.c_cc));
   termios.c_cc[VTIME] = 0;
   termios.c_cc[VMIN ] = 1;


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb.spec,v
retrieving revision 1.352
retrieving revision 1.353
diff -u -p -r1.352 -r1.353
--- gdb.spec	30 Apr 2009 17:54:42 -0000	1.352
+++ gdb.spec	10 Jun 2009 13:05:57 -0000	1.353
@@ -1,5 +1,6 @@
 # rpmbuild parameters:
 # --with testsuite: Run the testsuite (biarch if possible).  Default is without.
+# --with parallel: Run the testsuite in maximum parallel mode.
 # --with debug: Build without optimizations and without splitting the debuginfo.
 # --with upstream: No Fedora specific patches get applied.
 # --without python: No python support.
@@ -14,7 +15,7 @@ Version: 6.8.50.20090302
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 27%{?_with_upstream:.upstream}%{?dist}
+Release: 28%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+
 Group: Development/Debuggers
@@ -382,6 +383,10 @@ Patch357: gdb-c_get_string-xfree.patch
 # Fix crash in the charset support.
 Patch359: gdb-charset-crash.patch
 
+# Fix crashes due to (missing) varobj revalidation, for VLA (for BZ 377541).
+Patch369: gdb-varobj-revalidate-prep.patch
+Patch370: gdb-varobj-revalidate-core.patch
+
 BuildRequires: ncurses-devel texinfo gettext flex bison expat-devel
 Requires: readline
 BuildRequires: readline-devel
@@ -580,6 +585,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc
 %patch357 -p1
 %patch359 -p1
 %patch360 -p1
+%patch369 -p1
+%patch370 -p1
 %patch124 -p1
 
 find -name "*.orig" | xargs rm -f
@@ -741,10 +748,20 @@ gcc -o ./orphanripper %{SOURCE2} -Wall -
   CHECK="$(echo $CHECK|sed 's#check//unix/[^ ]*#& &/-fPIE/-pie#g')"
 %endif	# 0%{!?_with_upstream:1}
 
+%if 0%{?_with_parallel:1}
+  for CURRENT in $CHECK
+  do
+    ./orphanripper make -k $CURRENT &
+  done
+  echo >&2 "Waiting for parallel testsuite runs to finish..."
+  wait
+  echo >&2 "Parallel testsuite runs finished."
+%else	# 0%{?_with_parallel:1}
   for CURRENT in $CHECK
   do
     ./orphanripper make -k $CURRENT || :
   done
+%endif	# 0%{?_with_parallel:1}
 )
 for t in sum log
 do
@@ -870,6 +887,25 @@ fi
 %endif
 
 %changelog
+* Wed Jun 10 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090302-28
+- Archer update to the snapshot: 000db8b7bfef8581ef099ccca8689cfddfea1be8
+- Archer backport: b8d3bea36b137effc929e02c4dadf73716cb330b
+  - Ignore explicit die representing global scope '::' (gcc 4.1 bug).
+- Archer backport: c2d5c4a39b10994d86d8f2f90dfed769e8f216f3
+  - Fix parsing DW_AT_const_value using DW_FORM_string
+- Archer backport: 8d9ab68fc0955c9de6320bec2821a21e3244600d
+                 + db41e11ae0a3aec7120ad6ce86450d838af74dd6
+  - Fix Fortran modules/namespaces parsing (but no change was visible in F11).
+- Archer backport: 000db8b7bfef8581ef099ccca8689cfddfea1be8
+  - Fix "some Python error when displaying some C++ objects" (BZ 504356).
+- testsuite: Support new rpmbuild option: --with parallel
+- testsuite: gdb-orphanripper.c: Fix uninitialized `termios.c_line'.
+- Fix crashes due to (missing) varobj revalidation, for VLA (for BZ 377541).
+- Archer backport: 58dcda94ac5d6398f47382505e9d3d9d866d79bf
+                 + f3de7bbd655337fe6705aeaafcc970deff3dd5d5
+  - Implement Fortran modules namespaces (BZ 466118).
+- Fix crash in the charset support.
+
 * Thu Apr 30 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090302-27
 - Fix race in the ia64 testcase `gdb-6.3-rh-testlibunwind-20041202.patch'.
 




More information about the fedora-extras-commits mailing list