rpms/gdb/devel gdb-6.6-bz235197-fork-detach-info.patch, NONE, 1.1 gdb-6.6-multifork-debugreg.patch, NONE, 1.1 gdb-6.7-bz426600-DW_TAG_interface_type-fix.patch, NONE, 1.1 gdb-6.7-bz426600-DW_TAG_interface_type-test.patch, NONE, 1.1 gdb-6.3-inferior-notification-20050721.patch, 1.2, 1.3 gdb-6.5-bz109921-DW_AT_decl_file-test.patch, 1.1, 1.2 gdb-6.6-bz233852-attach-signalled.patch, 1.4, 1.5 gdb-6.7.1-upstream.patch, 1.3, 1.4 gdb.spec, 1.261, 1.262 gdb-6.6-bz234468-fork-detach-info.patch, 1.1, NONE gdb-6.6-multifork-debugreg-for-i386-and-x86_64.patch, 1.1, NONE

Jan Kratochvil (jkratoch) fedora-extras-commits at redhat.com
Mon Jan 7 15:10:34 UTC 2008


Author: jkratoch

Update of /cvs/pkgs/rpms/gdb/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv17989

Modified Files:
	gdb-6.3-inferior-notification-20050721.patch 
	gdb-6.5-bz109921-DW_AT_decl_file-test.patch 
	gdb-6.6-bz233852-attach-signalled.patch 
	gdb-6.7.1-upstream.patch gdb.spec 
Added Files:
	gdb-6.6-bz235197-fork-detach-info.patch 
	gdb-6.6-multifork-debugreg.patch 
	gdb-6.7-bz426600-DW_TAG_interface_type-fix.patch 
	gdb-6.7-bz426600-DW_TAG_interface_type-test.patch 
Removed Files:
	gdb-6.6-bz234468-fork-detach-info.patch 
	gdb-6.6-multifork-debugreg-for-i386-and-x86_64.patch 
Log Message:
* Mon Jan  7 2008 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.7.1-7
- Backport the gcc-4.3 compatibility -Werror fixes.
- Fix documentation on hardware watchpoints wrt multiple threads.
- Rename the patch file for BZ 235197 from its former name 234468.
- Fix the vendora testcase `attach-32.exp' affecting the other tests results.
- Support DW_TAG_interface_type the same way as DW_TAG_class_type (BZ 426600).


gdb-6.6-bz235197-fork-detach-info.patch:

--- NEW FILE gdb-6.6-bz235197-fork-detach-info.patch ---
--- ./gdb/linux-nat.c	9 Feb 2007 20:52:16 -0000	1.56
+++ ./gdb/linux-nat.c	22 Apr 2007 17:20:25 -0000
@@ -378,9 +378,17 @@ child_follow_fork (struct target_ops *op
       /* Detach new forked process?  */
       if (detach_fork)
 	{
+	  static int advice_printed = 0;
+
+	  target_terminal_ours ();
+	  fprintf_filtered (gdb_stdlog,
+			 _("[Detaching after fork from child process %d.%s]\n"),
+			    child_pid, (advice_printed ? "" :
+					_(" (Try `set detach-on-fork off'.)")));
+	  advice_printed = 1;
+
 	  if (debug_linux_nat)
 	    {
-	      target_terminal_ours ();
 	      fprintf_filtered (gdb_stdlog,
 				"Detaching after fork from child process %d.\n",
 				child_pid);
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.base/fork-detach.c	22 Apr 2007 17:20:25 -0000
@@ -0,0 +1,57 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2007 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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+   Please email any bugs, comments, and/or additions to this file to:
+   bug-gdb at prep.ai.mit.edu  */
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <assert.h>
+#include <stdlib.h>
+
+static void func (void)
+{
+}
+
+int main (void)
+{
+  pid_t child;
+
+  child = fork ();
+  switch (child)
+    {
+      case -1:
+	abort ();
+      case 0:
+	func ();
+	break;
+      default:
+        {
+/* We do not test the switching to the other fork by GDB `fork 1'.  */
+#if 0
+	  pid_t got;
+
+	  got = waitpid (child, NULL, 0);
+	  assert (got == child);
+#endif
+	  break;
+	}
+    }
+  return 0;
+}
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.base/fork-detach.exp	22 Apr 2007 17:20:25 -0000
@@ -0,0 +1,43 @@
+# Copyright 2007 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set testfile fork-detach
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+    untested "Couldn't compile test program"
+    return -1
+}
+
+# Get things started.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+gdb_run_cmd
+# `Starting program: .*' prefix is available since gdb-6.7.
+gdb_test "" \
+         "\\\[Detaching after fork from child process.*Program exited normally\\..*" \
+         "Info message caught"

gdb-6.6-multifork-debugreg.patch:

--- NEW FILE gdb-6.6-multifork-debugreg.patch ---
ia64-linux-nat.c patch is missing here, port it either from RHEL-5 for 6.7.1 or
from the commented-out HEAD patch below.

s390x in RHEL-5 requires a patch but it is no longer required for
gdb-6.7.1-6.fc9 - the patch was not ported.

2007-10-14  Jan Kratochvil  <jan.kratochvil at redhat.com>

	Handle multiple different PIDs for the DR registers.
	* i386-nat.c: Include "inferior.h".
	(struct dr_mirror_status, dr_mirror_active, dr_mirror_fetch): New.
	(dr_mirror, dr_status_mirror, dr_control_mirror, dr_ref_count):
	Redefined using DR_MIRROR_ACTIVE.
	(i386_cleanup_dregs): Clear the DR_MIRROR_ACTIVE content instead.
	(i386_show_dr, i386_insert_aligned_watchpoint)
	(i386_remove_aligned_watchpoint, i386_stopped_data_address)
	(i386_stopped_by_hwbp): Call DR_MIRROR_FETCH.
	* Makefile.in (i386-nat.o): Update dependencies.

2007-12-30  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* gdb.base/watchpoint-fork.exp, gdb.base/watchpoint-fork.c: New files.

[ Backported for GDB-6.6 (only removed the new file inclusion). ]

2007-09-16  Daniel Jacobowitz  <dan at codesourcery.com>
	    Jeff Johnston  <jjohnstn at redhat.com>

	* gdb.texinfo (Setting Watchpoints): Adjust warning text about
	multi-threaded watchpoints.

2007-12-15  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* gdb.texinfo (Setting Watchpoints): New paragraph on the software
	watchpoints safety wrt `set scheduler-locking'.

#--- ./gdb/ia64-linux-nat.c	13 Oct 2007 00:49:15 -0000	1.43
#+++ ./gdb/ia64-linux-nat.c	29 Dec 2007 23:52:05 -0000
#@@ -493,7 +493,49 @@ enable_watchpoints_in_psr (ptid_t ptid)
#     }
# }
# 
#-static long debug_registers[8];
#+struct dr_mirror_status
#+  {
#+    /* Cyclic list.  */
#+    struct dr_mirror_status *next;
#+    long lwp;
#+    long content[8];
#+  };
#+struct dr_mirror_status *dr_mirror_active;
#+#define debug_registers (dr_mirror_active->content)
#+
#+static void
#+dr_mirror_fetch (void)
#+{
#+  long lwp;
#+  int i;
#+
#+  lwp = ptid_get_lwp (inferior_ptid);
#+  if (lwp == 0)
#+    lwp = ptid_get_pid (inferior_ptid);
#+
#+  if (dr_mirror_active == NULL)
#+    {
#+      dr_mirror_active = xzalloc (sizeof *dr_mirror_active);
#+      dr_mirror_active->next = dr_mirror_active;
#+    }
#+  else
#+    {
#+      struct dr_mirror_status *first = dr_mirror_active;
#+      do
#+	{
#+	  if (dr_mirror_active->lwp == lwp)
#+	    return;
#+	  dr_mirror_active = dr_mirror_active->next;
#+	}
#+      while (dr_mirror_active != first);
#+      dr_mirror_active = xzalloc (sizeof *dr_mirror_active);
#+      dr_mirror_active->next = first->next;
#+      first->next = dr_mirror_active;
#+    }
#+  dr_mirror_active->lwp = lwp;
#+
#+  /* All the registers left 0.  */
#+}
# 
# static void
# store_debug_register (ptid_t ptid, int idx, long val)
#@@ -538,6 +580,8 @@ ia64_linux_insert_watchpoint (CORE_ADDR 
#   long dbr_addr, dbr_mask;
#   int max_watchpoints = 4;
# 
#+  dr_mirror_fetch ();
#+
#   if (len <= 0 || !is_power_of_2 (len))
#     return -1;
# 
#@@ -590,6 +634,8 @@ ia64_linux_remove_watchpoint (CORE_ADDR 
#   long dbr_addr, dbr_mask;
#   int max_watchpoints = 4;
# 
#+  dr_mirror_fetch ();
#+
#   if (len <= 0 || !is_power_of_2 (len))
#     return -1;
# 
#@@ -621,6 +667,8 @@ ia64_linux_new_thread (ptid_t ptid)
# {
#   int i, any;
# 
#+  dr_mirror_fetch ();
#+
#   any = 0;
#   for (i = 0; i < 8; i++)
#     {

--- ./gdb/i386-nat.c	23 Aug 2007 18:08:34 -0000	1.16
+++ ./gdb/i386-nat.c	14 Oct 2007 15:00:31 -0000
@@ -165,11 +166,22 @@
 
 /* Mirror the inferior's DRi registers.  We keep the status and
    control registers separated because they don't hold addresses.  */
-static CORE_ADDR dr_mirror[DR_NADDR];
-static unsigned dr_status_mirror, dr_control_mirror;
+struct dr_mirror_status
+  {
+    /* Cyclic list.  */
+    struct dr_mirror_status *next;
+    long lwp;
+    CORE_ADDR addr[DR_NADDR];
+    unsigned status, control;
+    int ref_count[DR_NADDR];
+  };
+struct dr_mirror_status *dr_mirror_active;
+#define dr_mirror (dr_mirror_active->addr)
+#define dr_status_mirror (dr_mirror_active->status)
+#define dr_control_mirror (dr_mirror_active->control)
 
 /* Reference counts for each debug register.  */
-static int dr_ref_count[DR_NADDR];
+#define dr_ref_count (dr_mirror_active->ref_count)
 
 /* Whether or not to print the mirrored debug registers.  */
 static int maint_show_dr;
@@ -218,15 +230,19 @@ static int i386_handle_nonaligned_watchp
 void
 i386_cleanup_dregs (void)
 {
-  int i;
+  struct dr_mirror_status *first = dr_mirror_active;
 
-  ALL_DEBUG_REGISTERS(i)
+  if (first == NULL)
+    return;
+  do
     {
-      dr_mirror[i] = 0;
-      dr_ref_count[i] = 0;
+      struct dr_mirror_status *next = dr_mirror_active->next;
+
+      xfree (dr_mirror_active);
+      dr_mirror_active = next;
     }
-  dr_control_mirror = 0;
-  dr_status_mirror  = 0;
+  while (dr_mirror_active != first);
+  dr_mirror_active = NULL;
 }
 
 /* Reset all debug registers at each new startup to avoid missing
@@ -238,6 +254,40 @@ child_post_startup_inferior (ptid_t ptid
   i386_cleanup_dregs ();
 }
 
+static void
+dr_mirror_fetch (void)
+{
+  long lwp;
+  int i;
+
+  lwp = ptid_get_lwp (inferior_ptid);
+  if (lwp == 0)
+    lwp = ptid_get_pid (inferior_ptid);
+
+  if (dr_mirror_active == NULL)
+    {
+      dr_mirror_active = xzalloc (sizeof *dr_mirror_active);
+      dr_mirror_active->next = dr_mirror_active;
+    }
+  else
+    {
+      struct dr_mirror_status *first = dr_mirror_active;
+      do
+	{
+	  if (dr_mirror_active->lwp == lwp)
+	    return;
+	  dr_mirror_active = dr_mirror_active->next;
+	}
+      while (dr_mirror_active != first);
+      dr_mirror_active = xzalloc (sizeof *dr_mirror_active);
+      dr_mirror_active->next = first->next;
+      first->next = dr_mirror_active;
+    }
+  dr_mirror_active->lwp = lwp;
+
+  /* All the registers left 0.  */
+}
+
 /* Print the values of the mirrored debug registers.  This is called
    when maint_show_dr is non-zero.  To set that up, type "maint
    show-debug-regs" at GDB's prompt.  */
@@ -248,6 +298,8 @@ i386_show_dr (const char *func, CORE_ADD
 {
   int i;
 
+  dr_mirror_fetch ();
+
   puts_unfiltered (func);
   if (addr || len)
     printf_unfiltered (" (addr=%lx, len=%d, type=%s)",
@@ -337,6 +389,8 @@ i386_insert_aligned_watchpoint (CORE_ADD
 {
   int i;
 
+  dr_mirror_fetch ();
+
   /* First, look for an occupied debug register with the same address
      and the same RW and LEN definitions.  If we find one, we can
      reuse it for this watchpoint as well (and save a register).  */
@@ -397,6 +451,8 @@ i386_remove_aligned_watchpoint (CORE_ADD
 {
   int i, retval = -1;
 
+  dr_mirror_fetch ();
+
   ALL_DEBUG_REGISTERS(i)
     {
       if (!I386_DR_VACANT (i)
@@ -569,6 +625,8 @@ i386_stopped_data_address (CORE_ADDR *ad
   int i;
   int rc = 0;
 
+  dr_mirror_fetch ();
+
   dr_status_mirror = I386_DR_LOW_GET_STATUS ();
 
   ALL_DEBUG_REGISTERS(i)
@@ -610,6 +668,8 @@ i386_stopped_by_hwbp (void)
 {
   int i;
 
+  dr_mirror_fetch ();
+
   dr_status_mirror = I386_DR_LOW_GET_STATUS ();
   if (maint_show_dr)
     i386_show_dr ("stopped_by_hwbp", 0, 0, hw_execute);
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.base/watchpoint-fork.c	14 Oct 2007 15:00:32 -0000
@@ -0,0 +1,73 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
+   Copyright 2007
+   Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 2 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, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <assert.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static volatile int var;
+
+static void breakpoint (void)
+{
+}
+
+static void forkoff (int nr)
+{
+  pid_t child, pid_got;
+  int exit_code = 42 + nr;
+  int status;
+
+  child = fork ();
+  switch (child)
+    {
+      case -1:
+	assert (0);
+      case 0:
+	printf ("child%d: %d\n", nr, (int) getpid ());
+	breakpoint ();
+        exit (exit_code);
+      default:
+	printf ("parent%d: %d\n", nr, (int) child);
+	pid_got = wait (&status);
+	assert (pid_got == child);
+	assert (WIFEXITED (status));
+	assert (WEXITSTATUS (status) == exit_code);
+    }
+}
+
+int main (void)
+{
+  setbuf (stdout, NULL);
+  printf ("main: %d\n", (int) getpid ());
+
+  /* Hardware watchpoints got disarmed here.  */
+  forkoff (1);
+  /* This watchpoint got lost before.  */
+  var++;
+  /* A sanity check for double hardware watchpoints removal.  */
+  forkoff (2);
+  var++;
+
+  return 0;
+}
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.base/watchpoint-fork.exp	14 Oct 2007 15:00:32 -0000
@@ -0,0 +1,53 @@
+# Copyright 2007 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/>.
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set testfile watchpoint-fork
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+    untested "Couldn't compile test program"
+    return -1
+}
+
+# Get things started.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if { ![runto_main] } then {
+    gdb_suppress_tests;
+}
+
+# Install the watchpoint only after getting into MAIN - workaround some PPC
+# problem.
+gdb_test "watch var" "atchpoint 2: var"
+
+# It is never hit but it should not be left over in the fork()ed-off child.
+gdb_breakpoint "breakpoint"
+
+gdb_test "continue" \
+	 "atchpoint 2: var.*Old value = 0.*New value = 1.*" "watchpoint first hit"
+gdb_test "continue" \
+	 "atchpoint 2: var.*Old value = 1.*New value = 2.*" "watchpoint second hit"
+gdb_test "continue" "Continuing..*Program exited normally." "finish"
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.434
retrieving revision 1.435
diff -u -r1.434 -r1.435
--- src/gdb/doc/gdb.texinfo	2007/09/28 11:09:55	1.434
+++ src/gdb/doc/gdb.texinfo	2007/10/01 00:17:58	1.435
@@ -3346,20 +3346,13 @@
 way of doing that would be to set a code breakpoint at the entry to the
 @code{main} function and when it breaks, set all the watchpoints.
 
- at quotation
 @cindex watchpoints and threads
 @cindex threads and watchpoints
- at emph{Warning:} In multi-thread programs, watchpoints have only limited
-usefulness.  With the current watchpoint implementation, @value{GDBN}
-can only watch the value of an expression @emph{in a single thread}.  If
-you are confident that the expression can only change due to the current
-thread's activity (and if you are also confident that no other thread
-can become current), then you can use watchpoints as usual.  However,
- at value{GDBN} may not notice when a non-current thread's activity changes
-the expression.
+In multi-threaded programs, watchpoints will detect changes to the
+watched expression from every thread.
 
- at c FIXME: this is almost identical to the previous paragraph.
- at emph{HP-UX Warning:} In multi-thread programs, software watchpoints
+ at quotation
+ at emph{Warning:} In multi-threaded programs, software watchpoints
 have only limited usefulness.  If @value{GDBN} creates a software
 watchpoint, it can only watch the value of an expression @emph{in a
 single thread}.  If you are confident that the expression can only

--- gdb-6.5/gdb/doc/gdb.texinfo-orig	2007-12-15 13:25:14.000000000 +0100
+++ gdb-6.5/gdb/doc/gdb.texinfo	2007-12-15 13:45:25.000000000 +0100
@@ -3261,6 +3261,14 @@
 software watchpoints as usual.  However, @value{GDBN} may not notice
 when a non-current thread's activity changes the expression.  (Hardware
 watchpoints, in contrast, watch an expression in all threads.)
+
+Software watchpoints single-step the current thread to track the changes.  
+Other threads are left freely running on @code{continue}; therefore, their
+changes cannot be caught.  To get more reliable software watchpoints, please
+use @code{set scheduler-locking on}.  The default for Red Hat/Fedora
+ at value{GDBN} is @code{set scheduler-locking step}, which makes the software
+watchpoints safe for the @code{step} command, but not for the @code{continue}
+command.  @xref{Thread Stops}.
 @end quotation
 
 @xref{set remote hardware-watchpoint-limit}.

gdb-6.7-bz426600-DW_TAG_interface_type-fix.patch:

--- NEW FILE gdb-6.7-bz426600-DW_TAG_interface_type-fix.patch ---
http://sourceware.org/ml/gdb-patches/2007-12/msg00397.html
http://sourceware.org/ml/gdb-cvs/2007-12/msg00123.html

2007-12-22  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* dwarf2read.c (scan_partial_symbols partial_die_parent_scope)
	(add_partial_symbol, pdi_needs_namespace, process_die)
	(is_type_tag_for_partial, load_partial_dies, new_symbol)
	(read_type_die, determine_prefix): Extend the current code of
	`DW_TAG_class_type' also for `DW_TAG_interface_type'.

2007-12-28  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* dwarf2read.c (fixup_partial_die): Provide full
	`DW_TAG_class_type'-type backing for `DW_TAG_interface_type', even for
	namespaces which should not apply for Java `DW_TAG_interface_type'.

===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.242
retrieving revision 1.243
diff -u -r1.242 -r1.243
--- src/gdb/dwarf2read.c	2007/12/17 18:38:30	1.242
+++ src/gdb/dwarf2read.c	2007/12/22 20:58:30	1.243
@@ -1747,6 +1747,7 @@
 		}
 	      break;
 	    case DW_TAG_class_type:
+	    case DW_TAG_interface_type:
 	    case DW_TAG_structure_type:
 	      if (!pdi->is_declaration)
 		{
@@ -1829,6 +1830,7 @@
   if (parent->tag == DW_TAG_namespace
       || parent->tag == DW_TAG_structure_type
       || parent->tag == DW_TAG_class_type
+      || parent->tag == DW_TAG_interface_type
       || parent->tag == DW_TAG_union_type)
     {
       if (grandparent_scope == NULL)
@@ -1976,6 +1978,7 @@
 			   0, (CORE_ADDR) 0, cu->language, objfile);
       break;
     case DW_TAG_class_type:
+    case DW_TAG_interface_type:
     case DW_TAG_structure_type:
     case DW_TAG_union_type:
     case DW_TAG_enumeration_type:
@@ -2057,6 +2060,7 @@
     case DW_TAG_namespace:
     case DW_TAG_typedef:
     case DW_TAG_class_type:
+    case DW_TAG_interface_type:
     case DW_TAG_structure_type:
     case DW_TAG_union_type:
     case DW_TAG_enumeration_type:
@@ -2676,6 +2680,7 @@
       read_lexical_block_scope (die, cu);
       break;
     case DW_TAG_class_type:
+    case DW_TAG_interface_type:
     case DW_TAG_structure_type:
     case DW_TAG_union_type:
       read_structure_type (die, cu);
@@ -5403,6 +5408,7 @@
 #endif
     case DW_TAG_base_type:
     case DW_TAG_class_type:
+    case DW_TAG_interface_type:
     case DW_TAG_enumeration_type:
     case DW_TAG_structure_type:
     case DW_TAG_subrange_type:
@@ -5608,6 +5614,7 @@
 	      || last_die->tag == DW_TAG_enumeration_type
 	      || (cu->language != language_c
 		  && (last_die->tag == DW_TAG_class_type
+		      || last_die->tag == DW_TAG_interface_type
 		      || last_die->tag == DW_TAG_structure_type
 		      || last_die->tag == DW_TAG_union_type))))
 	{
@@ -7358,6 +7365,7 @@
 	     (FIXME?) */
 	  break;
 	case DW_TAG_class_type:
+	case DW_TAG_interface_type:
 	case DW_TAG_structure_type:
 	case DW_TAG_union_type:
 	case DW_TAG_set_type:
@@ -7677,6 +7685,7 @@
   switch (die->tag)
     {
     case DW_TAG_class_type:
+    case DW_TAG_interface_type:
     case DW_TAG_structure_type:
     case DW_TAG_union_type:
       read_structure_type (die, cu);
@@ -7781,6 +7790,7 @@
 	}
 	break;
       case DW_TAG_class_type:
+      case DW_TAG_interface_type:
       case DW_TAG_structure_type:
 	{
 	  if (parent->type != NULL && TYPE_TAG_NAME (parent->type) != NULL)
Index: ./gdb/dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.245
diff -u -p -r1.245 dwarf2read.c
--- ./gdb/dwarf2read.c	26 Dec 2007 12:36:18 -0000	1.245
+++ ./gdb/dwarf2read.c	27 Dec 2007 23:25:49 -0000
@@ -5887,7 +5887,8 @@ fixup_partial_die (struct partial_die_in
 
   /* Set default names for some unnamed DIEs.  */
   if (part_die->name == NULL && (part_die->tag == DW_TAG_structure_type
-				 || part_die->tag == DW_TAG_class_type))
+				 || part_die->tag == DW_TAG_class_type
+				 || part_die->tag == DW_TAG_interface_type))
     part_die->name = "(anonymous class)";
 
   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
@@ -5895,6 +5896,7 @@ fixup_partial_die (struct partial_die_in
 
   if (part_die->tag == DW_TAG_structure_type
       || part_die->tag == DW_TAG_class_type
+      || part_die->tag == DW_TAG_interface_type
       || part_die->tag == DW_TAG_union_type)
     guess_structure_name (part_die, cu);
 }

gdb-6.7-bz426600-DW_TAG_interface_type-test.patch:

--- NEW FILE gdb-6.7-bz426600-DW_TAG_interface_type-test.patch ---
http://sourceware.org/ml/gdb-patches/2007-12/msg00397.html

2007-12-22  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* gdb.arch/i386-interface.S, gdb.arch/i386-interface.exp: New files.

--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.arch/i386-interface.S	22 Dec 2007 19:07:28 -0000
@@ -0,0 +1,628 @@
+/* Copyright 2007 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/>.
+
+   Please email any bugs, comments, and/or additions to this file to:
+   bug-gdb at gnu.org
+
+   This file is part of the gdb testsuite.
+
+   This file was produced by:
+   $ gcj -S interface.java -ggdb2 -Wall -m32
+   from the .java file:
+     interface Interface
+     {
+     }
+     class Class implements Interface
+     {  
+     }
+*/
+
+	.file	"cc28Pp2B.jar"
+	.section	.debug_abbrev,"", at progbits
+.Ldebug_abbrev0:
+	.section	.debug_info,"", at progbits
+.Ldebug_info0:
+	.section	.debug_line,"", at progbits
+.Ldebug_line0:
+	.text
+.Ltext0:
+	.local	_MT_Interface
+	.comm	_MT_Interface,0,4
+	.data
+	.align 4
+	.type	_catch_classes_Interface, @object
+	.size	_catch_classes_Interface, 24
+_catch_classes_Interface:
+	.zero	24
+	.section	.rodata
+	.align 2
+	.type	_Utf1, @object
+	.size	_Utf1, 4
+_Utf1:
+	.value	36121
+	.value	9
+	.ascii	"Interface"
+	.zero	1
+.globl _ZN9Interface6class$E
+	.data
+	.align 32
+	.type	_ZN9Interface6class$E, @object
+	.size	_ZN9Interface6class$E, 144
+_ZN9Interface6class$E:
+	.long	_ZTVN4java4lang5ClassE+8
+	.long	403000
+	.long	_Utf1
+	.value	1536
+	.zero	2
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	_MT_Interface
+	.value	0
+	.value	6
+	.long	0
+	.long	4
+	.value	0
+	.value	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	_catch_classes_Interface
+	.long	0
+	.long	0
+	.value	0
+	.byte	1
+	.zero	1
+	.long	0
+	.value	0
+	.zero	2
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.hidden	_ZN9Interface7class$$E
+.globl _ZN9Interface7class$$E
+	.section	.rodata
+	.align 4
+	.type	_ZN9Interface7class$$E, @object
+	.size	_ZN9Interface7class$$E, 4
+_ZN9Interface7class$$E:
+	.long	_ZN9Interface6class$E
+	.text
+	.align 2
+.globl _ZN5ClassC1Ev
+	.type	_ZN5ClassC1Ev, @function
+_ZN5ClassC1Ev:
+.LFB2:
+	pushl	%ebp
+.LCFI0:
+	movl	%esp, %ebp
+.LCFI1:
+	subl	$24, %esp
+.LCFI2:
+.LBB2:
+#if 0
+	.file 1 "interface.java"
+#else
+	.file "interface.java"
+#endif
+	.loc 1 4 0
+	movl	8(%ebp), %eax
+	movl	%eax, -4(%ebp)
+	movl	-4(%ebp), %eax
+	movl	%eax, (%esp)
+	call	_ZN4java4lang6ObjectC1Ev
+.LBE2:
+	leave
+	ret
+.LFE2:
+	.size	_ZN5ClassC1Ev, .-_ZN5ClassC1Ev
+	.hidden	_ZTVN5ClassE
+.globl _ZTVN5ClassE
+	.data
+	.align 32
+	.type	_ZTVN5ClassE, @object
+	.size	_ZTVN5ClassE, 40
+_ZTVN5ClassE:
+	.long	0
+	.long	0
+	.long	_ZN5Class6class$E
+	.long	4
+	.long	_ZN4java4lang6Object8finalizeEJvv
+	.long	_ZN4java4lang6Object8hashCodeEJiv
+	.long	_ZN4java4lang6Object6equalsEJbPS1_
+	.long	_ZN4java4lang6Object8toStringEJPNS0_6StringEv
+	.long	_ZN4java4lang6Object5cloneEJPS1_v
+	.long	_ZN4java4lang6Object22throwNoSuchMethodErrorEJvv
+	.set	.L_ZN5ClassC1Ev0,_ZN5ClassC1Ev
+	.section	.rodata
+	.align 2
+	.type	_Utf2, @object
+	.size	_Utf2, 4
+_Utf2:
+	.value	626
+	.value	6
+	.ascii	"<init>"
+	.zero	1
+	.align 2
+	.type	_Utf3, @object
+	.size	_Utf3, 4
+_Utf3:
+	.value	39797
+	.value	3
+	.ascii	"()V"
+	.zero	1
+	.data
+	.align 4
+	.type	_MT_Class, @object
+	.size	_MT_Class, 20
+_MT_Class:
+	.long	_Utf2
+	.long	_Utf3
+	.value	16384
+	.value	-1
+	.long	.L_ZN5ClassC1Ev0
+	.long	0
+	.align 4
+	.type	_IF_Class, @object
+	.size	_IF_Class, 4
+_IF_Class:
+	.long	_ZN9Interface6class$E
+	.align 4
+	.type	_catch_classes_Class, @object
+	.size	_catch_classes_Class, 24
+_catch_classes_Class:
+	.zero	24
+	.section	.rodata
+	.align 2
+	.type	_Utf4, @object
+	.size	_Utf4, 4
+_Utf4:
+	.value	47448
+	.value	5
+	.ascii	"Class"
+	.zero	1
+.globl _ZN5Class6class$E
+	.data
+	.align 32
+	.type	_ZN5Class6class$E, @object
+	.size	_ZN5Class6class$E, 144
+_ZN5Class6class$E:
+	.long	_ZTVN4java4lang5ClassE+8
+	.long	403000
+	.long	_Utf4
+	.value	32
+	.zero	2
+	.long	_ZN4java4lang6Object6class$E
+	.long	0
+	.long	0
+	.long	0
+	.long	_MT_Class
+	.value	1
+	.value	6
+	.long	0
+	.long	4
+	.value	0
+	.value	0
+	.long	_ZTVN5ClassE+8
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	_catch_classes_Class
+	.long	_IF_Class
+	.long	0
+	.value	1
+	.byte	1
+	.zero	1
+	.long	0
+	.value	0
+	.zero	2
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.long	0
+	.hidden	_ZN5Class7class$$E
+.globl _ZN5Class7class$$E
+	.section	.rodata
+	.align 4
+	.type	_ZN5Class7class$$E, @object
+	.size	_ZN5Class7class$$E, 4
+_ZN5Class7class$$E:
+	.long	_ZN5Class6class$E
+	.section	.jcr,"aw", at progbits
+	.align 4
+	.long	_ZN9Interface6class$E
+	.long	_ZN5Class6class$E
+	.section	.debug_frame,"", at progbits
+.Lframe0:
+	.long	.LECIE0-.LSCIE0
+.LSCIE0:
+	.long	0xffffffff
+	.byte	0x1
+	.string	""
+	.uleb128 0x1
+	.sleb128 -4
+	.byte	0x8
+	.byte	0xc
+	.uleb128 0x4
+	.uleb128 0x4
+	.byte	0x88
+	.uleb128 0x1
+	.align 4
+.LECIE0:
+.LSFDE0:
+	.long	.LEFDE0-.LASFDE0
+.LASFDE0:
+	.long	.Lframe0
+	.long	.LFB2
+	.long	.LFE2-.LFB2
+	.byte	0x4
+	.long	.LCFI0-.LFB2
+	.byte	0xe
+	.uleb128 0x8
+	.byte	0x85
+	.uleb128 0x2
+	.byte	0x4
+	.long	.LCFI1-.LCFI0
+	.byte	0xd
+	.uleb128 0x5
+	.align 4
+.LEFDE0:
+	.section	.eh_frame,"a", at progbits
+.Lframe1:
+	.long	.LECIE1-.LSCIE1
+.LSCIE1:
+	.long	0x0
+	.byte	0x1
+.globl __gcj_personality_v0
+	.string	"zP"
+	.uleb128 0x1
+	.sleb128 -4
+	.byte	0x8
+	.uleb128 0x5
+	.byte	0x0
+	.long	__gcj_personality_v0
+	.byte	0xc
+	.uleb128 0x4
+	.uleb128 0x4
+	.byte	0x88
+	.uleb128 0x1
+	.align 4
+.LECIE1:
+.LSFDE1:
+	.long	.LEFDE1-.LASFDE1
+.LASFDE1:
+	.long	.LASFDE1-.Lframe1
+	.long	.LFB2
+	.long	.LFE2-.LFB2
+	.uleb128 0x0
+	.byte	0x4
+	.long	.LCFI0-.LFB2
+	.byte	0xe
+	.uleb128 0x8
+	.byte	0x85
+	.uleb128 0x2
+	.byte	0x4
+	.long	.LCFI1-.LCFI0
+	.byte	0xd
+	.uleb128 0x5
+	.align 4
+.LEFDE1:
+	.text
+.Letext0:
+	.section	.debug_loc,"", at progbits
+.Ldebug_loc0:
+.LLST0:
+	.long	.LFB2-.Ltext0
+	.long	.LCFI0-.Ltext0
+	.value	0x2
+	.byte	0x74
+	.sleb128 4
+	.long	.LCFI0-.Ltext0
+	.long	.LCFI1-.Ltext0
+	.value	0x2
+	.byte	0x74
+	.sleb128 8
+	.long	.LCFI1-.Ltext0
+	.long	.LFE2-.Ltext0
+	.value	0x2
+	.byte	0x75
+	.sleb128 8
+	.long	0x0
+	.long	0x0
+	.section	.debug_info
+	.long	0x117
+	.value	0x2
+	.long	.Ldebug_abbrev0
+	.byte	0x4
+	.uleb128 0x1
+	.string	"GNU Java 4.3.0 20071221 (experimental)"
+	.byte	0xb
+	.string	"interface.java"
+	.string	"/home/jkratoch/redhat/bz371831"
+	.long	.Ltext0
+	.long	.Letext0
+	.long	.Ldebug_line0
+	.uleb128 0x2
+	.string	"Interface"
+	.byte	0x4
+	.byte	0x1
+	.byte	0x0
+	.long	0x8e
+	.long	0x8e
+	.uleb128 0x3
+	.long	0x8e
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.byte	0x1
+	.byte	0x0
+	.uleb128 0x4
+	.string	"java.lang.Object"
+	.byte	0x1
+	.uleb128 0x5
+	.string	"Class"
+	.byte	0x4
+	.byte	0x1
+	.byte	0x0
+	.long	0x8e
+	.long	0xe8
+	.uleb128 0x3
+	.long	0x8e
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.byte	0x1
+	.uleb128 0x6
+	.long	0x6e
+	.byte	0x2
+	.byte	0x23
+	.uleb128 0x0
+	.byte	0x1
+	.byte	0x1
+	.uleb128 0x7
+	.byte	0x1
+	.string	"<init>"
+	.byte	0x1
+	.byte	0x0
+	.string	"_ZN5ClassC1Ev"
+	.byte	0x1
+	.uleb128 0x8
+	.long	0xe8
+	.byte	0x1
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x9
+	.byte	0x4
+	.long	0xa1
+	.uleb128 0xa
+	.long	0xc6
+	.long	.LFB2
+	.long	.LFE2
+	.long	.LLST0
+	.long	0x114
+	.uleb128 0xb
+	.long	0xe8
+	.byte	0x2
+	.byte	0x91
+	.sleb128 0
+	.uleb128 0xc
+	.long	0x114
+	.byte	0x2
+	.byte	0x91
+	.sleb128 -12
+	.byte	0x0
+	.uleb128 0x9
+	.byte	0x4
+	.long	0x8e
+	.byte	0x0
+	.section	.debug_abbrev
+	.uleb128 0x1
+	.uleb128 0x11
+	.byte	0x1
+	.uleb128 0x25
+	.uleb128 0x8
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x1b
+	.uleb128 0x8
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x12
+	.uleb128 0x1
+	.uleb128 0x10
+	.uleb128 0x6
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x2
+	.uleb128 0x38
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x1d
+	.uleb128 0x13
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x1c
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xa
+	.uleb128 0x32
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x4
+	.uleb128 0x2
+	.byte	0x0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3c
+	.uleb128 0xc
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x5
+	.uleb128 0x2
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x1d
+	.uleb128 0x13
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x6
+	.uleb128 0x1c
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xa
+	.uleb128 0x4c
+	.uleb128 0xb
+	.uleb128 0x32
+	.uleb128 0xb
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x7
+	.uleb128 0x2e
+	.byte	0x1
+	.uleb128 0x3f
+	.uleb128 0xc
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x2007
+	.uleb128 0x8
+	.uleb128 0x3c
+	.uleb128 0xc
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x8
+	.uleb128 0x5
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x34
+	.uleb128 0xc
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0x9
+	.uleb128 0xf
+	.byte	0x0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xa
+	.uleb128 0x2e
+	.byte	0x1
+	.uleb128 0x47
+	.uleb128 0x13
+	.uleb128 0x11
+	.uleb128 0x1
+	.uleb128 0x12
+	.uleb128 0x1
+	.uleb128 0x40
+	.uleb128 0x6
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xb
+	.uleb128 0x5
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.uleb128 0xc
+	.uleb128 0x34
+	.byte	0x0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2
+	.uleb128 0xa
+	.byte	0x0
+	.byte	0x0
+	.byte	0x0
+	.section	.debug_pubnames,"", at progbits
+	.long	0x15
+	.value	0x2
+	.long	.Ldebug_info0
+	.long	0x11b
+	.long	0xee
+	.string	"()"
+	.long	0x0
+	.section	.debug_aranges,"", at progbits
+	.long	0x1c
+	.value	0x2
+	.long	.Ldebug_info0
+	.byte	0x4
+	.byte	0x0
+	.value	0x0
+	.value	0x0
+	.long	.Ltext0
+	.long	.Letext0-.Ltext0
+	.long	0x0
+	.long	0x0
+	.ident	"GCC: (GNU) 4.3.0 20071221 (experimental)"
+	.section	.note.GNU-stack,"", at progbits
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.arch/i386-interface.exp	22 Dec 2007 19:07:28 -0000
@@ -0,0 +1,66 @@
+# Copyright 2007 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/>.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb at gnu.org
+
+# This file is part of the gdb testsuite.
+
+# Test basis recognization of DW_TAG_interface_type.
+# GCC java_classify_record() produces it if returns RECORD_IS_INTERFACE.
+
+if $tracelevel {
+    strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+if {![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"]} then {
+    verbose "Skipping i386 Java DW_TAG_interface_type test."
+    return
+}
+
+set testfile "i386-interface"
+set srcfile ${testfile}.S
+set binfile ${objdir}/${subdir}/${testfile}.o
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {debug additional_flags=-m32}] != "" } {
+    untested i386-gnu-cfi.exp
+    return -1
+}
+
+# Get things started.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+gdb_test "set language java"
+
+set test "ptype Interface"
+gdb_test_multiple $test $test {
+    -re "type = class Interface  *extends java.lang.Object \{" {
+	pass $test
+    }
+}
+
+set test "ptype Class"
+gdb_test_multiple $test $test {
+    -re "type = class Class  *extends java.lang.Object implements Interface \{" {
+	pass $test
+    }
+}

gdb-6.3-inferior-notification-20050721.patch:

Index: gdb-6.3-inferior-notification-20050721.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.3-inferior-notification-20050721.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- gdb-6.3-inferior-notification-20050721.patch	11 Jul 2006 06:33:02 -0000	1.2
+++ gdb-6.3-inferior-notification-20050721.patch	7 Jan 2008 15:10:23 -0000	1.3
@@ -1,9 +1,13 @@
 2005-07-21  Jeff Johnston  <jjohnstn at redhat.com>
 
-        * gdb.base/attach-32.exp: New test for attaching in 32-bit
-        mode on 64-bit systems.
-        * gdb.base/attach-32.c: Ditto.
-        * gdb.base/attach-32b.c: Ditto.
+	* gdb.base/attach-32.exp: New test for attaching in 32-bit
+	mode on 64-bit systems.
+	* gdb.base/attach-32.c: Ditto.
+	* gdb.base/attach-32b.c: Ditto.
+
+2007-12-26  Jan Kratochvil  <jan.kratochvil at redhat.com>
+
+	* gdb.base/attach-32.exp: Fix forgotten $GDBFLAGS as set.
 
 --- gdb-6.3/gdb/testsuite/gdb.base/attach-32.c.fix3	2005-07-21 14:23:50.000000000 -0400
 +++ gdb-6.3/gdb/testsuite/gdb.base/attach-32.c	2005-07-21 14:05:56.000000000 -0400
@@ -30,7 +34,7 @@
 +}
 --- gdb-6.3/gdb/testsuite/gdb.base/attach-32.exp.fix3	2005-07-21 14:23:45.000000000 -0400
 +++ gdb-6.3/gdb/testsuite/gdb.base/attach-32.exp	2005-07-21 17:58:28.000000000 -0400
-@@ -0,0 +1,247 @@
+@@ -0,0 +1,252 @@
 +# Copyright 2005 Free Software Foundation, Inc.
 +
 +# This program is free software; you can redistribute it and/or modify
@@ -251,9 +255,12 @@
 +    # different due to the way fork/exec works.
 +    set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
 +}
-+set GDBFLAGS "--pid=$testpid"
 +
++set GDBFLAGS_orig $GDBFLAGS
++set GDBFLAGS "--pid=$testpid"
 +gdb_start
++set GDBFLAGS $GDBFLAGS_orig
++
 +gdb_reinitialize_dir $srcdir/$subdir
 +
 +# This is a test of gdb's ability to attach to a running process.
@@ -270,9 +277,11 @@
 +    # different due to the way fork/exec works.
 +    set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
 +}
-+set GDBFLAGS "--pid=$testpid"
 +
++set GDBFLAGS_orig $GDBFLAGS
++set GDBFLAGS "--pid=$testpid"
 +gdb_start
++set GDBFLAGS $GDBFLAGS_orig
 +
 +gdb_reinitialize_dir $srcdir/$subdir
 +do_call_attach_tests

gdb-6.5-bz109921-DW_AT_decl_file-test.patch:

Index: gdb-6.5-bz109921-DW_AT_decl_file-test.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.5-bz109921-DW_AT_decl_file-test.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gdb-6.5-bz109921-DW_AT_decl_file-test.patch	9 Jan 2007 11:35:44 -0000	1.1
+++ gdb-6.5-bz109921-DW_AT_decl_file-test.patch	7 Jan 2008 15:10:23 -0000	1.2
@@ -1,12 +1,21 @@
 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
 
+It is duplicite to its upstream variant:
+http://sourceware.org/ml/gdb-cvs/2007-01/msg00157.html
+http://sourceware.org/ml/gdb-patches/2007-01/msg00434.html
+2007-01-21  Jan Kratochvil  <jan.kratochvil at redhat.com>
+	    Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* gdb.base/included.c, gdb.base/included.exp,
+	gdb.base/included.h: New files.
+
+------------------------------------------------------------------------------
 
 2007-01-09  Jan Kratochvil  <jan.kratochvil at redhat.com>
 
 	* gdb.dwarf2/dw2-included.exp, gdb.dwarf2/dw2-included.c,
 	gdb.dwarf2/dw2-included.h: New files.
 
-
 --- /dev/null	1 Jan 1970 00:00:00 -0000
 +++ ./gdb/testsuite/gdb.dwarf2/dw2-included.c	2 Jan 2007 00:20:27 -0000
 @@ -0,0 +1,26 @@

gdb-6.6-bz233852-attach-signalled.patch:

Index: gdb-6.6-bz233852-attach-signalled.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.6-bz233852-attach-signalled.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- gdb-6.6-bz233852-attach-signalled.patch	23 Sep 2007 15:42:37 -0000	1.4
+++ gdb-6.6-bz233852-attach-signalled.patch	7 Jan 2008 15:10:23 -0000	1.5
@@ -71,17 +71,7 @@
        int status;
  
        if (ptrace (PTRACE_ATTACH, GET_LWP (ptid), 0, 0) < 0)
-@@ -1002,45 +1012,23 @@ lin_lwp_attach_lwp (ptid_t ptid, int ver
- 	     creation is interrupted; as of Linux 2.6.19, a kernel
- 	     bug may place threads in the thread list and then fail
- 	     to create them.  */
--	  warning (_("Can't attach %s: %s"), target_pid_to_str (ptid),
--		   safe_strerror (errno));
--	  return -1;
-+	  error (_("Can't attach %s: %s"), target_pid_to_str (ptid),
-+		 safe_strerror (errno));
- 	}
- 
+@@ -1002,37 +1012,16 @@ lin_lwp_attach_lwp (ptid_t ptid, int ver
        if (lp == NULL)
  	lp = add_lwp (ptid);
  

gdb-6.7.1-upstream.patch:

Index: gdb-6.7.1-upstream.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.7.1-upstream.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gdb-6.7.1-upstream.patch	10 Dec 2007 23:05:54 -0000	1.3
+++ gdb-6.7.1-upstream.patch	7 Jan 2008 15:10:23 -0000	1.4
@@ -5344,3 +5344,53 @@
      # Skip the NOTE header.
      read $fi 16
      set data [read $fi]
+
+http://sourceware.org/ml/gdb-patches/2007-12/msg00485.html
+http://sourceware.org/ml/gdb-cvs/2007-12/msg00166.html
+
+2007-12-31  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* remote.c (unpack_nibble): Use fromhex.
+	* symtab.c (find_line_common): Always set exact_match.
+
+===================================================================
+RCS file: /cvs/src/src/gdb/remote.c,v
+retrieving revision 1.273
+retrieving revision 1.274
+diff -u -r1.273 -r1.274
+--- src/gdb/remote.c	2007/12/07 15:02:12	1.273
++++ src/gdb/remote.c	2007/12/31 18:38:43	1.274
+@@ -1353,7 +1353,7 @@
+ static char *
+ unpack_nibble (char *buf, int *val)
+ {
+-  ishex (*buf++, val);
++  *val = fromhex (*buf++);
+   return buf;
+ }
+ 
+===================================================================
+RCS file: /cvs/src/src/gdb/symtab.c,v
+retrieving revision 1.168
+retrieving revision 1.169
+diff -u -r1.168 -r1.169
+--- src/gdb/symtab.c	2007/12/18 16:02:54	1.168
++++ src/gdb/symtab.c	2007/12/31 18:38:43	1.169
+@@ -2424,6 +2424,8 @@
+   int best_index = -1;
+   int best = 0;
+ 
++  *exact_match = 0;
++
+   if (lineno <= 0)
+     return -1;
+   if (l == 0)
+@@ -2449,8 +2451,6 @@
+     }
+ 
+   /* If we got here, we didn't get an exact match.  */
+-
+-  *exact_match = 0;
+   return best_index;
+ }
+ 


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb.spec,v
retrieving revision 1.261
retrieving revision 1.262
diff -u -r1.261 -r1.262
--- gdb.spec	10 Dec 2007 23:05:54 -0000	1.261
+++ gdb.spec	7 Jan 2008 15:10:23 -0000	1.262
@@ -11,7 +11,7 @@
 Version: 6.7.1
 
 # The release always contains a leading reserved number, start it at 1.
-Release: 6%{?dist}
+Release: 7%{?dist}
 
 License: GPL
 Group: Development/Debuggers
@@ -274,7 +274,7 @@
 Patch246: gdb-6.6-bz237096-watchthreads-testcasefix.patch
 
 # Notify user of a child forked process being detached (BZ 235197).
-Patch247: gdb-6.6-bz234468-fork-detach-info.patch
+Patch247: gdb-6.6-bz235197-fork-detach-info.patch
 
 # New testcase for gcore of 32bit inferiors on 64bit hosts.
 Patch249: gdb-6.6-gcore32-test.patch
@@ -315,7 +315,7 @@
 Patch278: gdb-6.6-cu-ranges.patch
 
 # Fix hardware watchpoints after inferior forks-off some process.
-Patch280: gdb-6.6-multifork-debugreg-for-i386-and-x86_64.patch
+Patch280: gdb-6.6-multifork-debugreg.patch
 
 # Fix displaying of numeric char arrays as strings (BZ 224128).
 Patch282: gdb-6.7-charsign-test.patch
@@ -329,6 +329,10 @@
 # Testsuite fixes for more stable/comparable results.
 Patch287: gdb-6.7-testsuite-stable-results.patch
 
+# Support DW_TAG_interface_type the same way as DW_TAG_class_type (BZ 426600).
+Patch293: gdb-6.7-bz426600-DW_TAG_interface_type-fix.patch
+Patch294: gdb-6.7-bz426600-DW_TAG_interface_type-test.patch
+
 BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext
 BuildRequires: flex bison sharutils expat-devel
 Requires: readline
@@ -475,6 +479,8 @@
 %patch283 -p1
 %patch284 -p1
 %patch287 -p1
+%patch293 -p1
+%patch294 -p1
 
 # Change the version that gets printed at GDB startup, so it is RedHat
 # specific.
@@ -633,6 +639,13 @@
 # don't include the files in include, they are part of binutils
 
 %changelog
+* Mon Jan  7 2008 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.7.1-7
+- Backport the gcc-4.3 compatibility -Werror fixes.
+- Fix documentation on hardware watchpoints wrt multiple threads.
+- Rename the patch file for BZ 235197 from its former name 234468.
+- Fix the vendora testcase `attach-32.exp' affecting the other tests results.
+- Support DW_TAG_interface_type the same way as DW_TAG_class_type (BZ 426600).
+
 * Mon Dec 10 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.7.1-6
 - Testsuite fixes for more stable/comparable results.
 


--- gdb-6.6-bz234468-fork-detach-info.patch DELETED ---


--- gdb-6.6-multifork-debugreg-for-i386-and-x86_64.patch DELETED ---




More information about the fedora-extras-commits mailing list