rpms/gdb/devel .cvsignore, 1.28, 1.29 gdb-6.3-large-core-20051206.patch, 1.6, 1.7 gdb-6.3-pie-20050110.patch, 1.11, 1.12 gdb-6.3-security-errata-20050610.patch, 1.5, 1.6 gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch, 1.7, 1.8 gdb-6.5-sharedlibrary-path.patch, 1.4, 1.5 gdb-6.6-multifork-debugreg.patch, 1.8, 1.9 gdb-6.7-testsuite-stable-results.patch, 1.5, 1.6 gdb-6.8-attach-signalled-detach-stopped.patch, 1.3, 1.4 gdb-6.8-bz377541-vla.patch, 1.4, 1.5 gdb-6.8-bz466901-backtrace-full-prelinked.patch, 1.3, 1.4 gdb-6.8-constant-watchpoints.patch, 1.4, 1.5 gdb-6.8-inlining-addon.patch, 1.2, 1.3 gdb-6.8-inlining.patch, 1.6, 1.7 gdb.spec, 1.320, 1.321 sources, 1.27, 1.28 gdb-6.3-warnings-20050317.patch, 1.9, NONE gdb-fortran-testsuite-gfortran.patch, 1.1, NONE gdb-watchpoint-hw-without-inferior.patch, 1.1, NONE

Jan Kratochvil jkratoch at fedoraproject.org
Wed Feb 11 00:05:19 UTC 2009


Author: jkratoch

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

Modified Files:
	.cvsignore gdb-6.3-large-core-20051206.patch 
	gdb-6.3-pie-20050110.patch 
	gdb-6.3-security-errata-20050610.patch 
	gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch 
	gdb-6.5-sharedlibrary-path.patch 
	gdb-6.6-multifork-debugreg.patch 
	gdb-6.7-testsuite-stable-results.patch 
	gdb-6.8-attach-signalled-detach-stopped.patch 
	gdb-6.8-bz377541-vla.patch 
	gdb-6.8-bz466901-backtrace-full-prelinked.patch 
	gdb-6.8-constant-watchpoints.patch 
	gdb-6.8-inlining-addon.patch gdb-6.8-inlining.patch gdb.spec 
	sources 
Removed Files:
	gdb-6.3-warnings-20050317.patch 
	gdb-fortran-testsuite-gfortran.patch 
	gdb-watchpoint-hw-without-inferior.patch 
Log Message:
* Wed Feb 11 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090209-1
- Upgrade to the FSF GDB gdb-6.8.50 snapshot.



Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/.cvsignore,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- .cvsignore	14 Dec 2008 14:43:39 -0000	1.28
+++ .cvsignore	11 Feb 2009 00:04:47 -0000	1.29
@@ -1 +1 @@
-gdb-6.8.50.20081214.tar.bz2
+gdb-6.8.50.20090209.tar.bz2

gdb-6.3-large-core-20051206.patch:

Index: gdb-6.3-large-core-20051206.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.3-large-core-20051206.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- gdb-6.3-large-core-20051206.patch	14 Dec 2008 14:05:14 -0000	1.6
+++ gdb-6.3-large-core-20051206.patch	11 Feb 2009 00:04:47 -0000	1.7
@@ -25,10 +25,10 @@
 
 	Port to GDB-6.7.
 
-Index: gdb-6.8.50.20081128/gdb/symfile-mem.c
+Index: gdb-6.8.50.20090209/gdb/symfile-mem.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/symfile-mem.c	2008-01-01 23:53:13.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/symfile-mem.c	2008-12-02 22:15:53.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/symfile-mem.c	2009-01-03 06:57:53.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/symfile-mem.c	2009-02-09 15:49:25.000000000 +0100
 @@ -56,6 +56,14 @@
  #include "elf/common.h"
  
@@ -53,10 +53,10 @@
    if (nbfd == NULL)
      error (_("Failed to read a valid object file image from memory."));
  
-Index: gdb-6.8.50.20081128/gdb/target.c
+Index: gdb-6.8.50.20090209/gdb/target.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/target.c	2008-11-09 12:27:18.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/target.c	2008-12-02 22:17:28.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/target.c	2009-02-06 23:21:26.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/target.c	2009-02-09 15:50:39.000000000 +0100
 @@ -57,7 +57,7 @@ static int nosymbol (char *, CORE_ADDR *
  
  static void tcomplain (void) ATTR_NORETURN;
@@ -66,7 +66,7 @@
  
  static int return_zero (void);
  
-@@ -299,7 +299,7 @@ void target_create_inferior (char *exec_
+@@ -294,7 +294,7 @@ target_create_inferior (char *exec_file,
  }
  
  
@@ -75,7 +75,7 @@
  nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
  	  struct target_ops *t)
  {
-@@ -530,7 +530,7 @@ update_current_target (void)
+@@ -522,7 +522,7 @@ update_current_target (void)
  	    (void (*) (struct regcache *))
  	    noprocess);
    de_fault (deprecated_xfer_memory,
@@ -84,7 +84,7 @@
  	    nomemory);
    de_fault (to_files_info,
  	    (void (*) (struct target_ops *))
-@@ -1250,7 +1250,7 @@ target_xfer_partial (struct target_ops *
+@@ -1252,7 +1252,7 @@ target_xfer_partial (struct target_ops *
     it makes no progress, and then return how much was transferred). */
  
  int
@@ -93,7 +93,7 @@
  {
    if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
  		   myaddr, memaddr, len) == len)
-@@ -1260,7 +1260,7 @@ target_read_memory (CORE_ADDR memaddr, g
+@@ -1262,7 +1262,7 @@ target_read_memory (CORE_ADDR memaddr, g
  }
  
  int
@@ -102,7 +102,7 @@
  {
    if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
  		    myaddr, memaddr, len) == len)
-@@ -2690,8 +2690,8 @@ debug_to_prepare_to_store (struct regcac
+@@ -2723,8 +2723,8 @@ debug_to_prepare_to_store (struct regcac
    fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
  }
  
@@ -113,23 +113,22 @@
  			      int write, struct mem_attrib *attrib,
  			      struct target_ops *target)
  {
-@@ -2701,9 +2701,9 @@ deprecated_debug_xfer_memory (CORE_ADDR 
+@@ -2734,8 +2734,8 @@ deprecated_debug_xfer_memory (CORE_ADDR 
  						attrib, target);
  
    fprintf_unfiltered (gdb_stdlog,
--		      "target_xfer_memory (0x%x, xxx, %d, %s, xxx) = %d",
-+		      "target_xfer_memory (0x%x, xxx, %ld, %s, xxx) = %d",
- 		      (unsigned int) memaddr,	/* possable truncate long long */
--		      len, write ? "write" : "read", retval);
-+		      (long)len, write ? "write" : "read", retval);
+-		      "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
+-		      paddress (memaddr), len, write ? "write" : "read",
++		      "target_xfer_memory (%s, xxx, %ld, %s, xxx) = %d",
++		      paddress (memaddr), (long) len, write ? "write" : "read",
+                       retval);
  
    if (retval > 0)
-     {
-Index: gdb-6.8.50.20081128/gdb/target.h
+Index: gdb-6.8.50.20090209/gdb/target.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/target.h	2008-11-09 12:27:18.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/target.h	2008-12-02 22:15:53.000000000 +0100
-@@ -358,10 +358,10 @@ struct target_ops
+--- gdb-6.8.50.20090209.orig/gdb/target.h	2009-02-06 23:59:01.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/target.h	2009-02-09 15:49:25.000000000 +0100
+@@ -360,10 +360,10 @@ struct target_ops
         NOTE: cagney/2004-10-01: This has been entirely superseeded by
         to_xfer_partial and inferior inheritance.  */
  
@@ -144,7 +143,7 @@
  
      void (*to_files_info) (struct target_ops *);
      int (*to_insert_breakpoint) (struct bp_target_info *);
-@@ -661,13 +661,14 @@ extern DCACHE *target_dcache;
+@@ -663,13 +663,14 @@ extern DCACHE *target_dcache;
  
  extern int target_read_string (CORE_ADDR, char **, int, int *);
  
@@ -163,10 +162,10 @@
  
  /* Fetches the target's memory map.  If one is found it is sorted
     and returned, after some consistency checking.  Otherwise, NULL
-Index: gdb-6.8.50.20081128/gdb/dcache.c
+Index: gdb-6.8.50.20090209/gdb/dcache.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/dcache.c	2008-09-23 20:35:29.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/dcache.c	2008-12-02 22:15:53.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/dcache.c	2009-01-03 06:57:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/dcache.c	2009-02-09 15:49:25.000000000 +0100
 @@ -524,9 +524,9 @@ dcache_free (DCACHE *dcache)
  
     This routine is indended to be called by remote_xfer_ functions. */
@@ -179,10 +178,10 @@
  {
    int i;
    int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr);
-Index: gdb-6.8.50.20081128/gdb/dcache.h
+Index: gdb-6.8.50.20090209/gdb/dcache.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/dcache.h	2008-01-01 23:53:09.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/dcache.h	2008-12-02 22:15:53.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/dcache.h	2009-01-03 06:57:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/dcache.h	2009-02-09 15:49:25.000000000 +0100
 @@ -35,7 +35,7 @@ void dcache_free (DCACHE *);
  
  /* Simple to call from <remote>_xfer_memory */
@@ -193,11 +192,11 @@
 +			    LONGEST len, int should_write);
  
  #endif /* DCACHE_H */
-Index: gdb-6.8.50.20081128/gdb/exec.c
+Index: gdb-6.8.50.20090209/gdb/exec.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/exec.c	2008-10-30 19:42:28.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/exec.c	2008-12-02 22:15:53.000000000 +0100
-@@ -459,8 +459,8 @@ map_vmap (bfd *abfd, bfd *arch)
+--- gdb-6.8.50.20090209.orig/gdb/exec.c	2009-01-08 17:32:29.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/exec.c	2009-02-09 15:49:25.000000000 +0100
+@@ -466,8 +466,8 @@ map_vmap (bfd *abfd, bfd *arch)
     The same routine is used to handle both core and exec files;
     we just tail-call it with more arguments to select between them.  */
  
@@ -208,11 +207,11 @@
  	     struct mem_attrib *attrib, struct target_ops *target)
  {
    int res;
-Index: gdb-6.8.50.20081128/gdb/linux-nat.c
+Index: gdb-6.8.50.20090209/gdb/linux-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/linux-nat.c	2008-12-02 21:11:11.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/linux-nat.c	2008-12-02 22:15:53.000000000 +0100
-@@ -4053,7 +4053,7 @@ linux_xfer_partial (struct target_ops *o
+--- gdb-6.8.50.20090209.orig/gdb/linux-nat.c	2009-02-09 15:48:46.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/linux-nat.c	2009-02-09 15:49:25.000000000 +0100
+@@ -4283,7 +4283,7 @@ linux_xfer_partial (struct target_ops *o
  	 Revert when Bugzilla 147436 is fixed.  */
        if (iterate_over_lwps (ia64_linux_check_stack_region, &range) != NULL)
  	{ /* This region contains ia64 rse registers, we have to re-read.  */
@@ -221,10 +220,10 @@
  
  	  /* Re-read register stack area.  */
  	  xxfer = super_xfer_partial (ops, object, annex,
-Index: gdb-6.8.50.20081128/gdb/remote.c
+Index: gdb-6.8.50.20090209/gdb/remote.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/remote.c	2008-11-24 17:53:44.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/remote.c	2008-12-02 22:17:00.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/remote.c	2009-02-06 23:59:00.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/remote.c	2009-02-09 15:49:25.000000000 +0100
 @@ -25,6 +25,7 @@
  #include "gdb_string.h"
  #include <ctype.h>
@@ -233,7 +232,7 @@
  #include "inferior.h"
  #include "bfd.h"
  #include "symfile.h"
-@@ -5687,12 +5688,19 @@ handle_notification (char *buf, size_t l
+@@ -5688,12 +5689,19 @@ handle_notification (char *buf, size_t l
     if SHOULD_WRITE is nonzero.  Returns length of data written or
     read; 0 for error.  TARGET is unused.  */
  
@@ -255,7 +254,7 @@
  
    set_general_thread (inferior_ptid);
  
-@@ -5701,7 +5709,7 @@ remote_xfer_memory (CORE_ADDR mem_addr, 
+@@ -5702,7 +5710,7 @@ remote_xfer_memory (CORE_ADDR mem_addr, 
    else
      res = remote_read_bytes (mem_addr, buffer, mem_len);
  
@@ -264,11 +263,11 @@
  }
  
  /* Sends a packet with content determined by the printf format string
-Index: gdb-6.8.50.20081128/gdb/remote-sim.c
+Index: gdb-6.8.50.20090209/gdb/remote-sim.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/remote-sim.c	2008-11-13 02:26:43.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/remote-sim.c	2008-12-02 22:15:53.000000000 +0100
-@@ -763,11 +763,14 @@ gdbsim_prepare_to_store (struct regcache
+--- gdb-6.8.50.20090209.orig/gdb/remote-sim.c	2009-02-06 23:21:26.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/remote-sim.c	2009-02-09 15:49:25.000000000 +0100
+@@ -757,11 +757,14 @@ gdbsim_prepare_to_store (struct regcache
  
     Returns the number of bytes transferred. */
  
@@ -285,7 +284,7 @@
    /* If no program is running yet, then ignore the simulator for
       memory.  Pass the request down to the next target, hopefully
       an exec file.  */
-@@ -783,22 +786,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
+@@ -777,22 +780,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
        printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x");
        gdb_print_host_address (myaddr, gdb_stdout);
        printf_filtered (", memaddr 0x%s, len %d, write %d\n",

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.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- gdb-6.3-pie-20050110.patch	14 Dec 2008 14:05:15 -0000	1.11
+++ gdb-6.3-pie-20050110.patch	11 Feb 2009 00:04:47 -0000	1.12
@@ -26,11 +26,11 @@
 
 	Fix scan_dyntag() for binaries provided by valgrind (BZ 460319).
 
-Index: gdb-6.8.50.20081209/gdb/amd64-tdep.c
+Index: gdb-6.8.50.20090209/gdb/amd64-tdep.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/amd64-tdep.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/amd64-tdep.c	2008-12-14 14:56:49.000000000 +0100
-@@ -34,6 +34,7 @@
+--- gdb-6.8.50.20090209.orig/gdb/amd64-tdep.c	2009-02-09 16:02:28.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/amd64-tdep.c	2009-02-09 16:21:55.000000000 +0100
+@@ -36,6 +36,7 @@
  #include "regcache.h"
  #include "regset.h"
  #include "symfile.h"
@@ -38,7 +38,7 @@
  
  #include "gdb_assert.h"
  
-@@ -906,16 +907,28 @@ amd64_analyze_stack_align (CORE_ADDR pc,
+@@ -1597,16 +1598,28 @@ amd64_analyze_stack_align (CORE_ADDR pc,
     Any function that doesn't start with this sequence will be assumed
     to have no prologue and thus no valid frame pointer in %rbp.  */
  
@@ -71,7 +71,7 @@
  
    pc = amd64_analyze_stack_align (pc, current_pc, cache);
  
-@@ -930,18 +943,57 @@ amd64_analyze_prologue (CORE_ADDR pc, CO
+@@ -1621,18 +1634,57 @@ amd64_analyze_prologue (CORE_ADDR pc, CO
  
        /* If that's all, return now.  */
        if (current_pc <= pc + 1)
@@ -132,11 +132,11 @@
    return pc;
  }
  
-Index: gdb-6.8.50.20081209/gdb/auxv.c
+Index: gdb-6.8.50.20090209/gdb/auxv.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/auxv.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/auxv.c	2008-12-14 14:57:58.000000000 +0100
-@@ -80,7 +80,7 @@ procfs_xfer_auxv (struct target_ops *ops
+--- gdb-6.8.50.20090209.orig/gdb/auxv.c	2009-01-03 06:57:50.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/auxv.c	2009-02-09 16:21:55.000000000 +0100
+@@ -81,7 +81,7 @@ procfs_xfer_auxv (struct target_ops *ops
     Return 1 if an entry was read into *TYPEP and *VALP.  */
  int
  default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
@@ -145,7 +145,7 @@
  {
    const int sizeof_auxv_field = gdbarch_ptr_bit (target_gdbarch)
  				/ TARGET_CHAR_BIT;
-@@ -107,7 +107,7 @@ default_auxv_parse (struct target_ops *o
+@@ -108,7 +108,7 @@ default_auxv_parse (struct target_ops *o
     Return 1 if an entry was read into *TYPEP and *VALP.  */
  int
  target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
@@ -154,7 +154,7 @@
  {
    struct target_ops *t;
    for (t = ops; t != NULL; t = t->beneath)
-@@ -122,9 +122,10 @@ target_auxv_parse (struct target_ops *op
+@@ -123,9 +123,10 @@ target_auxv_parse (struct target_ops *op
     an error getting the information.  On success, return 1 after
     storing the entry's value field in *VALP.  */
  int
@@ -167,7 +167,7 @@
    gdb_byte *data;
    LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data);
    gdb_byte *ptr = data;
-@@ -134,10 +135,10 @@ target_auxv_search (struct target_ops *o
+@@ -135,10 +136,10 @@ target_auxv_search (struct target_ops *o
      return n;
  
    while (1)
@@ -180,7 +180,7 @@
  	  {
  	    xfree (data);
  	    *valp = val;
-@@ -160,7 +161,8 @@ target_auxv_search (struct target_ops *o
+@@ -161,7 +162,8 @@ target_auxv_search (struct target_ops *o
  int
  fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
  {
@@ -190,7 +190,7 @@
    gdb_byte *data;
    LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL,
  				   &data);
-@@ -170,13 +172,13 @@ fprint_target_auxv (struct ui_file *file
+@@ -171,13 +173,13 @@ fprint_target_auxv (struct ui_file *file
    if (len <= 0)
      return len;
  
@@ -206,7 +206,7 @@
  	{
  #define TAG(tag, text, kind) \
  	case tag: name = #tag; description = text; flavor = kind; break
-@@ -231,7 +233,7 @@ fprint_target_auxv (struct ui_file *file
+@@ -232,7 +234,7 @@ fprint_target_auxv (struct ui_file *file
  	}
  
        fprintf_filtered (file, "%-4s %-20s %-30s ",
@@ -215,7 +215,7 @@
        switch (flavor)
  	{
  	case dec:
-@@ -252,7 +254,7 @@ fprint_target_auxv (struct ui_file *file
+@@ -253,7 +255,7 @@ fprint_target_auxv (struct ui_file *file
  	  break;
  	}
        ++ents;
@@ -224,11 +224,11 @@
  	break;
      }
  
-Index: gdb-6.8.50.20081209/gdb/auxv.h
+Index: gdb-6.8.50.20090209/gdb/auxv.h
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/auxv.h	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/auxv.h	2008-12-14 14:56:49.000000000 +0100
-@@ -35,14 +35,14 @@ struct target_ops;		/* Forward declarati
+--- gdb-6.8.50.20090209.orig/gdb/auxv.h	2009-01-03 06:57:50.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/auxv.h	2009-02-09 16:21:55.000000000 +0100
+@@ -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,
  			      gdb_byte **readptr, gdb_byte *endptr,
@@ -245,11 +245,11 @@
  
  /* Print the contents of the target's AUXV on the specified file. */
  extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
-Index: gdb-6.8.50.20081209/gdb/breakpoint.c
+Index: gdb-6.8.50.20090209/gdb/breakpoint.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/breakpoint.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/breakpoint.c	2008-12-14 14:56:49.000000000 +0100
-@@ -3861,7 +3861,8 @@ describe_other_breakpoints (CORE_ADDR pc
+--- gdb-6.8.50.20090209.orig/gdb/breakpoint.c	2009-02-09 16:12:23.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/breakpoint.c	2009-02-09 16:21:55.000000000 +0100
+@@ -3894,7 +3894,8 @@ describe_other_breakpoints (CORE_ADDR pc
  	      printf_filtered (" (thread %d)", b->thread);
  	    printf_filtered ("%s%s ",
  			     ((b->enable_state == bp_disabled || 
@@ -259,7 +259,7 @@
  			      ? " (disabled)"
  			      : b->enable_state == bp_permanent 
  			      ? " (permanent)"
-@@ -4692,6 +4693,61 @@ create_catchpoint (int tempflag, char *c
+@@ -4725,6 +4726,61 @@ create_catchpoint (int tempflag, char *c
    return b;
  }
  
@@ -321,10 +321,10 @@
  static void
  create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
                                      struct breakpoint_ops *ops)
-Index: gdb-6.8.50.20081209/gdb/breakpoint.h
+Index: gdb-6.8.50.20090209/gdb/breakpoint.h
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/breakpoint.h	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/breakpoint.h	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/breakpoint.h	2009-01-30 19:28:00.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/breakpoint.h	2009-02-09 16:21:55.000000000 +0100
 @@ -126,6 +126,7 @@ enum enable_state
  			   automatically enabled and reset when the call 
  			   "lands" (either completes, or stops at another 
@@ -333,7 +333,7 @@
      bp_permanent	/* There is a breakpoint instruction hard-wired into
  			   the target's code.  Don't try to write another
  			   breakpoint instruction on top of it, or restore
-@@ -818,6 +819,10 @@ extern void remove_thread_event_breakpoi
+@@ -819,6 +820,10 @@ extern void remove_thread_event_breakpoi
  
  extern void disable_breakpoints_in_shlibs (void);
  
@@ -344,11 +344,11 @@
  /* This function returns TRUE if ep is a catchpoint. */
  extern int ep_is_catchpoint (struct breakpoint *);
  
-Index: gdb-6.8.50.20081209/gdb/dwarf2read.c
+Index: gdb-6.8.50.20090209/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/dwarf2read.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/dwarf2read.c	2008-12-14 14:56:49.000000000 +0100
-@@ -1295,7 +1295,7 @@ dwarf2_build_psymtabs (struct objfile *o
+--- gdb-6.8.50.20090209.orig/gdb/dwarf2read.c	2009-02-09 16:12:23.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/dwarf2read.c	2009-02-09 16:21:55.000000000 +0100
+@@ -1296,7 +1296,7 @@ dwarf2_build_psymtabs (struct objfile *o
    else
      dwarf2_per_objfile->loc_buffer = NULL;
  
@@ -357,10 +357,10 @@
        || (objfile->global_psymbols.size == 0
  	  && objfile->static_psymbols.size == 0))
      {
-Index: gdb-6.8.50.20081209/gdb/elfread.c
+Index: gdb-6.8.50.20090209/gdb/elfread.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/elfread.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/elfread.c	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/elfread.c	2009-01-03 06:57:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/elfread.c	2009-02-09 16:21:55.000000000 +0100
 @@ -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
@@ -370,11 +370,11 @@
      {
        init_psymbol_list (objfile, 0);
        mainline = 0;
-Index: gdb-6.8.50.20081209/gdb/infrun.c
+Index: gdb-6.8.50.20090209/gdb/infrun.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/infrun.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/infrun.c	2008-12-14 14:56:49.000000000 +0100
-@@ -3229,6 +3229,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
+--- gdb-6.8.50.20090209.orig/gdb/infrun.c	2009-02-09 16:12:23.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/infrun.c	2009-02-09 16:21:55.000000000 +0100
+@@ -3278,6 +3278,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
  #endif
  	  target_terminal_inferior ();
  
@@ -386,10 +386,10 @@
  	  /* If requested, stop when the dynamic linker notifies
  	     gdb of events.  This allows the user to get control
  	     and place breakpoints in initializer routines for
-Index: gdb-6.8.50.20081209/gdb/objfiles.c
+Index: gdb-6.8.50.20090209/gdb/objfiles.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/objfiles.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/objfiles.c	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/objfiles.c	2009-01-15 17:35:22.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/objfiles.c	2009-02-09 16:21:55.000000000 +0100
 @@ -51,6 +51,9 @@
  #include "arch-utils.h"
  #include "exec.h"
@@ -421,11 +421,21 @@
  }
  
  /* Create the terminating entry of OBJFILE's minimal symbol table.
-Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
+@@ -458,6 +458,9 @@ free_objfile (struct objfile *objfile)
+   if (objfile == rt_common_objfile)
+     rt_common_objfile = NULL;
+ 
++  if (objfile == symfile_objfile)
++    symfile_objfile = NULL;
++
+   /* Before the symbol table code was redone to make it easier to
+      selectively load and remove information particular to a specific
+      linkage unit, gdb used to do these things whenever the monolithic
+Index: gdb-6.8.50.20090209/gdb/solib-svr4.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/solib-svr4.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/solib-svr4.c	2008-12-14 14:56:49.000000000 +0100
-@@ -44,6 +44,7 @@
+--- gdb-6.8.50.20090209.orig/gdb/solib-svr4.c	2009-02-09 16:02:35.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/solib-svr4.c	2009-02-09 16:21:55.000000000 +0100
+@@ -45,6 +45,7 @@
  #include "exec.h"
  #include "auxv.h"
  #include "exceptions.h"
@@ -433,7 +443,7 @@
  
  static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
  static int svr4_have_link_map_offsets (void);
-@@ -286,7 +287,9 @@ static CORE_ADDR main_lm_addr;
+@@ -287,7 +288,9 @@ static CORE_ADDR main_lm_addr;
  
  /* Local function prototypes */
  
@@ -443,7 +453,7 @@
  
  static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
  
-@@ -520,10 +523,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
+@@ -521,10 +524,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
    int arch_size, step, sect_size;
    long dyn_tag;
    CORE_ADDR dyn_ptr, dyn_addr;
@@ -456,7 +466,7 @@
  
    if (abfd == NULL)
      return 0;
-@@ -531,19 +536,81 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
+@@ -532,19 +537,81 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
    if (arch_size == -1)
     return 0;
  
@@ -540,7 +550,7 @@
  
    /* Iterate over BUF and scan for DYNTAG.  If found, set PTR and return.  */
    step = (arch_size == 32) ? sizeof (Elf32_External_Dyn)
-@@ -564,26 +631,105 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
+@@ -565,26 +632,105 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
  	dyn_tag = bfd_h_get_64 (abfd, (bfd_byte *) x_dynp_64->d_tag);
  	dyn_ptr = bfd_h_get_64 (abfd, (bfd_byte *) x_dynp_64->d_un.d_ptr);
        }
@@ -665,7 +675,7 @@
    }
  
    return 0;
-@@ -773,6 +919,10 @@ solib_svr4_r_map (void)
+@@ -774,6 +920,10 @@ solib_svr4_r_map (void)
    struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
    struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
  
@@ -676,7 +686,7 @@
    return read_memory_typed_address (debug_base + lmo->r_map_offset, ptr_type);
  }
  
-@@ -944,6 +1094,11 @@ svr4_current_sos (void)
+@@ -945,6 +1095,11 @@ svr4_current_sos (void)
    struct so_list *head = 0;
    struct so_list **link_ptr = &head;
    CORE_ADDR ldsomap = 0;
@@ -688,7 +698,7 @@
  
    /* Always locate the debug struct, in case it has moved.  */
    debug_base = 0;
-@@ -952,10 +1107,19 @@ svr4_current_sos (void)
+@@ -953,10 +1108,19 @@ svr4_current_sos (void)
    /* If we can't find the dynamic linker's base structure, this
       must not be a dynamically linked executable.  Hmm.  */
    if (! debug_base)
@@ -709,7 +719,7 @@
    lm = solib_svr4_r_map ();
  
    while (lm)
-@@ -972,26 +1136,104 @@ svr4_current_sos (void)
+@@ -973,26 +1137,104 @@ svr4_current_sos (void)
        new->lm_info->lm = xzalloc (lmo->link_map_size);
        make_cleanup (xfree, new->lm_info->lm);
  
@@ -818,7 +828,7 @@
  	  target_read_string (LM_NAME (new), &buffer,
  			      SO_NAME_MAX_PATH_SIZE - 1, &errcode);
  	  if (errcode != 0)
-@@ -999,47 +1241,60 @@ svr4_current_sos (void)
+@@ -1000,47 +1242,60 @@ svr4_current_sos (void)
  		     safe_strerror (errcode));
  	  else
  	    {
@@ -912,7 +922,7 @@
  	}
  
        /* On Solaris, the dynamic linker is not in the normal list of
-@@ -1055,6 +1310,9 @@ svr4_current_sos (void)
+@@ -1056,6 +1311,9 @@ svr4_current_sos (void)
    if (head == NULL)
      return svr4_default_sos ();
  
@@ -922,7 +932,7 @@
    return head;
  }
  
-@@ -1086,7 +1344,7 @@ svr4_fetch_objfile_link_map (struct objf
+@@ -1087,7 +1345,7 @@ svr4_fetch_objfile_link_map (struct objf
  /* On some systems, the only way to recognize the link map entry for
     the main executable file is by looking at its name.  Return
     non-zero iff SONAME matches one of the known main executable names.  */
@@ -931,7 +941,7 @@
  static int
  match_main (char *soname)
  {
-@@ -1100,6 +1358,7 @@ match_main (char *soname)
+@@ -1101,6 +1359,7 @@ match_main (char *soname)
  
    return (0);
  }
@@ -939,7 +949,7 @@
  
  /* Return 1 if PC lies in the dynamic symbol resolution code of the
     SVR4 run time loader.  */
-@@ -1250,15 +1509,29 @@ enable_break (void)
+@@ -1251,15 +1510,29 @@ enable_break (void)
    /* Find the program interpreter; if not found, warn the user and drop
       into the old breakpoint at symbol code.  */
    interp_name = find_program_interpreter ();
@@ -969,7 +979,7 @@
  
        sym_addr = 0;
  
-@@ -1275,6 +1548,9 @@ enable_break (void)
+@@ -1276,6 +1549,9 @@ enable_break (void)
          {
  	  tmp_bfd = solib_bfd_open (interp_name);
  	}
@@ -979,7 +989,7 @@
        if (tmp_bfd == NULL)
  	goto bkpt_at_symbol;
  
-@@ -1328,16 +1604,16 @@ enable_break (void)
+@@ -1329,16 +1605,16 @@ enable_break (void)
        interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
        if (interp_sect)
  	{
@@ -1000,7 +1010,7 @@
  	  interp_plt_sect_high =
  	    interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect);
  	}
-@@ -1372,7 +1648,11 @@ enable_break (void)
+@@ -1373,7 +1649,11 @@ enable_break (void)
  
        if (sym_addr != 0)
  	{
@@ -1013,7 +1023,7 @@
  	  xfree (interp_name);
  	  return 1;
  	}
-@@ -1638,6 +1918,8 @@ svr4_solib_create_inferior_hook (void)
+@@ -1639,6 +1919,8 @@ svr4_solib_create_inferior_hook (void)
    while (tp->stop_signal != TARGET_SIGNAL_TRAP);
    inf->stop_soon = NO_STOP_QUIETLY;
  #endif /* defined(_SCO_DS) */
@@ -1022,7 +1032,7 @@
  }
  
  static void
-@@ -1819,6 +2101,75 @@ svr4_lp64_fetch_link_map_offsets (void)
+@@ -1820,6 +2102,75 @@ svr4_lp64_fetch_link_map_offsets (void)
  
    return lmp;
  }
@@ -1098,7 +1108,7 @@
  
  
  struct target_so_ops svr4_so_ops;
-@@ -1858,4 +2209,7 @@ _initialize_svr4_solib (void)
+@@ -1859,4 +2210,7 @@ _initialize_svr4_solib (void)
    svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code;
    svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol;
    svr4_so_ops.same = svr4_same;
@@ -1106,10 +1116,10 @@
 +  add_info ("linkmap", info_linkmap_command,
 +	    "Display the inferior's linkmap.");
  }
-Index: gdb-6.8.50.20081209/gdb/solib.c
+Index: gdb-6.8.50.20090209/gdb/solib.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/solib.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/solib.c	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/solib.c	2009-01-15 17:35:22.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/solib.c	2009-02-09 16:26:02.000000000 +0100
 @@ -80,6 +80,8 @@ set_solib_ops (struct gdbarch *gdbarch, 
  
  /* external data declarations */
@@ -1128,67 +1138,79 @@
  /*
  
     GLOBAL FUNCTION
-@@ -405,7 +409,6 @@ free_so (struct so_list *so)
-   xfree (so);
- }
- 
--
- /* Return address of first so_list entry in master shared object list.  */
- struct so_list *
- master_so_list (void)
-@@ -413,7 +416,6 @@ master_so_list (void)
-   return so_list_head;
- }
- 
--
- /* A small stub to get us past the arg-passing pinhole of catch_errors.  */
+@@ -425,10 +429,23 @@ free_so (struct so_list *so)
+       
+   if (so->abfd)
+     {
+-      bfd_filename = bfd_get_filename (so->abfd);
+-      if (! bfd_close (so->abfd))
+-	warning (_("cannot close \"%s\": %s"),
+-		 bfd_filename, bfd_errmsg (bfd_get_error ()));
++      struct objfile *objfile;
++
++      ALL_OBJFILES (objfile)
++	if (objfile->obfd == so->abfd)
++	  {
++	    gdb_assert (objfile->flags & OBJF_KEEPBFD);
++	    objfile->flags &= ~OBJF_KEEPBFD;
++	    break;
++	  }
++
++      if (!objfile)
++	{
++	  bfd_filename = bfd_get_filename (so->abfd);
++	  if (! bfd_close (so->abfd))
++	    warning (_("cannot close \"%s\": %s"),
++		     bfd_filename, bfd_errmsg (bfd_get_error ()));
++	}
+     }
  
- static int
-@@ -425,15 +427,40 @@ symbol_add_stub (void *arg)
+   if (bfd_filename)
+@@ -459,15 +461,40 @@ symbol_add_stub (void *arg)
    /* Have we already loaded this shared object?  */
    ALL_OBJFILES (so->objfile)
      {
 -      if (strcmp (so->objfile->name, so->so_name) == 0)
 +      /* Found an already loaded shared library.  */
 +      if (strcmp (so->objfile->name, so->so_name) == 0
-+          && !so->main)
- 	return 1;
++	  && !so->main)
++	return 1;
 +      /* Found an already loaded main executable.  This could happen in
-+         two circumstances.
-+         First case: the main file has already been read in
-+         as the first thing that gdb does at startup, and the file
-+         hasn't been relocated properly yet. Therefor we need to read
-+         it in with the proper section info.
-+         Second case: it has been read in with the correct relocation,
-+         and therefore we need to skip it.  */
++	 two circumstances.
++	 First case: the main file has already been read in
++	 as the first thing that gdb does at startup, and the file
++	 hasn't been relocated properly yet. Therefor we need to read
++	 it in with the proper section info.
++	 Second case: it has been read in with the correct relocation,
++	 and therefore we need to skip it.  */
 +      if (strcmp (so->objfile->name, so->so_name) == 0
-+          && so->main
-+          && so->main_relocated)
-+        return 1;
++	  && so->main
++	  && so->main_relocated)
+ 	return 1;
      }
  
    sap = build_section_addr_info_from_section_table (so->sections,
                                                      so->sections_end);
  
--  so->objfile = symbol_file_add (so->so_name, so->from_tty,
--				 sap, 0, OBJF_SHARED);
+-  so->objfile = symbol_file_add_from_bfd (so->abfd, so->from_tty,
+-					  sap, 0, OBJF_SHARED | OBJF_KEEPBFD);
 +  if (so->main)
 +    {
 +      if (debug_solib)
 +        fprintf_unfiltered (gdb_stdlog,
 +			    "symbol_add_stub: adding symbols for main\n");
-+      so->objfile = symbol_file_add (so->so_name, /*so->from_tty*/ 0,
-+   				     sap, 1, 0);
++      so->objfile = symbol_file_add_from_bfd (so->abfd, /*so->from_tty*/ 0,
++					      sap, 1, OBJF_KEEPBFD);
 +      so->main_relocated = 1;
 +    }
 +  else
-+    so->objfile = symbol_file_add (so->so_name, so->from_tty,
-+				   sap, 0, OBJF_SHARED);
++    so->objfile = symbol_file_add_from_bfd (so->abfd, so->from_tty,
++					    sap, 0, OBJF_SHARED | OBJF_KEEPBFD);
 +
    free_section_addr_info (sap);
  
    return (1);
-@@ -565,6 +592,10 @@ update_solib_list (int from_tty, struct 
+@@ -599,6 +626,10 @@ update_solib_list (int from_tty, struct 
  	    }
  	  else
  	    {
@@ -1199,7 +1221,7 @@
  	      if (! strcmp (gdb->so_original_name, i->so_original_name))
  		break;	      
  	    }
-@@ -619,28 +650,7 @@ update_solib_list (int from_tty, struct 
+@@ -653,28 +684,7 @@ update_solib_list (int from_tty, struct 
        /* Fill in the rest of each of the `struct so_list' nodes.  */
        for (i = inferior; i; i = i->next)
  	{
@@ -1229,7 +1251,7 @@
  
  	  /* Notify any observer that the shared object has been
               loaded now that we've added it to GDB's tables.  */
-@@ -736,6 +746,41 @@ solib_add (char *pattern, int from_tty, 
+@@ -770,6 +780,41 @@ solib_add (char *pattern, int from_tty, 
    }
  }
  
@@ -1271,7 +1293,7 @@
  
  /*
  
-@@ -1053,4 +1098,12 @@ This takes precedence over the environme
+@@ -1087,4 +1132,12 @@ This takes precedence over the environme
  				     reload_shared_libraries,
  				     show_solib_search_path,
  				     &setlist, &showlist);
@@ -1284,10 +1306,10 @@
 +			   NULL, NULL,
 +			   &setdebuglist, &showdebuglist);
  }
-Index: gdb-6.8.50.20081209/gdb/solist.h
+Index: gdb-6.8.50.20090209/gdb/solist.h
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/solist.h	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/solist.h	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/solist.h	2009-02-04 09:42:11.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/solist.h	2009-02-09 16:21:55.000000000 +0100
 @@ -61,6 +61,8 @@ struct so_list
      bfd *abfd;
      char symbols_loaded;	/* flag: symbols read in yet? */
@@ -1297,7 +1319,7 @@
      struct objfile *objfile;	/* objfile for loaded lib */
      struct section_table *sections;
      struct section_table *sections_end;
-@@ -138,4 +140,10 @@ struct symbol *solib_global_lookup (cons
+@@ -149,4 +151,10 @@ struct symbol *solib_global_lookup (cons
  				    const char *linkage_name,
  				    const domain_enum domain);
  
@@ -1308,10 +1330,10 @@
 +extern int debug_solib;
 +
  #endif
-Index: gdb-6.8.50.20081209/gdb/symfile-mem.c
+Index: gdb-6.8.50.20090209/gdb/symfile-mem.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/symfile-mem.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/symfile-mem.c	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/symfile-mem.c	2009-02-09 15:49:25.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/symfile-mem.c	2009-02-09 16:21:55.000000000 +0100
 @@ -116,7 +116,7 @@ symbol_file_add_from_memory (struct bfd 
        }
  
@@ -1321,10 +1343,10 @@
  
    /* This might change our ideas about frames already looked at.  */
    reinit_frame_cache ();
-Index: gdb-6.8.50.20081209/gdb/symfile.c
+Index: gdb-6.8.50.20090209/gdb/symfile.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/symfile.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/symfile.c	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/symfile.c	2009-02-09 16:03:45.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/symfile.c	2009-02-09 16:21:55.000000000 +0100
 @@ -47,6 +47,7 @@
  #include "readline/readline.h"
  #include "gdb_assert.h"
@@ -1351,7 +1373,7 @@
      {
        asection *lower_sect;
        asection *sect;
-@@ -916,17 +917,21 @@ new_symfile_objfile (struct objfile *obj
+@@ -917,17 +918,21 @@ new_symfile_objfile (struct objfile *obj
    /* If this is the main symbol file we have to clean up all users of the
       old main symbol file. Otherwise it is sufficient to fixup all the
       breakpoints that may have been redefined by this symbol file.  */
@@ -1375,7 +1397,7 @@
  
    /* We're done reading the symbol file; finish off complaints.  */
    clear_complaints (&symfile_complaints, 0, verbo);
-@@ -969,7 +974,7 @@ symbol_file_add_with_addrs_or_offsets (b
+@@ -970,7 +975,7 @@ symbol_file_add_with_addrs_or_offsets (b
       interactively wiping out any existing symbols.  */
  
    if ((have_full_symbols () || have_partial_symbols ())
@@ -1384,7 +1406,7 @@
        && from_tty
        && !query ("Load new symbol table from \"%s\"? ", name))
      error (_("Not confirmed."));
-@@ -1160,6 +1165,10 @@ symbol_file_clear (int from_tty)
+@@ -1161,6 +1166,10 @@ symbol_file_clear (int from_tty)
  		    symfile_objfile->name)
  	  : !query (_("Discard symbol table? "))))
      error (_("Not confirmed."));
@@ -1395,7 +1417,7 @@
      free_all_objfiles ();
  
      /* solib descriptors may have handles to objfiles.  Since their
-@@ -3259,6 +3268,8 @@ reread_symbols (void)
+@@ -3260,6 +3269,8 @@ reread_symbols (void)
  	      /* Discard cleanups as symbol reading was successful.  */
  	      discard_cleanups (old_cleanups);
  
@@ -1404,7 +1426,7 @@
  	      /* If the mtime has changed between the time we set new_modtime
  	         and now, we *want* this to be out of date, so don't call stat
  	         again now.  */
-@@ -3628,6 +3639,7 @@ clear_symtab_users (void)
+@@ -3629,6 +3640,7 @@ clear_symtab_users (void)
    breakpoint_re_set ();
    set_default_breakpoint (0, 0, 0, 0);
    clear_pc_function_cache ();
@@ -1412,11 +1434,11 @@
    observer_notify_new_objfile (NULL);
  
    /* Clear globals which might have pointed into a removed objfile.
-Index: gdb-6.8.50.20081209/gdb/varobj.c
+Index: gdb-6.8.50.20090209/gdb/varobj.c
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/varobj.c	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/varobj.c	2008-12-14 14:56:49.000000000 +0100
-@@ -1116,6 +1116,62 @@ install_new_value (struct varobj *var, s
+--- gdb-6.8.50.20090209.orig/gdb/varobj.c	2009-02-05 18:28:21.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/varobj.c	2009-02-09 16:21:55.000000000 +0100
+@@ -1123,6 +1123,62 @@ install_new_value (struct varobj *var, s
    return changed;
  }
  
@@ -1479,10 +1501,10 @@
  /* Update the values for a variable and its children.  This is a
     two-pronged attack.  First, re-parse the value for the root's
     expression to see if it's changed.  Then go all the way
-Index: gdb-6.8.50.20081209/gdb/varobj.h
+Index: gdb-6.8.50.20090209/gdb/varobj.h
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/varobj.h	2008-12-14 14:55:58.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/varobj.h	2008-12-14 14:56:49.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/varobj.h	2009-01-03 06:57:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/varobj.h	2009-02-09 16:21:55.000000000 +0100
 @@ -141,4 +141,6 @@ extern int varobj_editable_p (struct var
  
  extern int varobj_floating_p (struct varobj *var);
@@ -1490,10 +1512,10 @@
 +extern void varobj_refresh(void);
 +
  #endif /* VAROBJ_H */
-Index: gdb-6.8.50.20081209/gdb/target.h
+Index: gdb-6.8.50.20090209/gdb/target.h
 ===================================================================
---- gdb-6.8.50.20081209.orig/gdb/target.h	2008-12-14 11:52:54.000000000 +0100
-+++ gdb-6.8.50.20081209/gdb/target.h	2008-12-14 14:57:21.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/target.h	2009-02-09 16:02:42.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/target.h	2009-02-09 16:21:55.000000000 +0100
 @@ -524,7 +524,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-security-errata-20050610.patch:

Index: gdb-6.3-security-errata-20050610.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.3-security-errata-20050610.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- gdb-6.3-security-errata-20050610.patch	14 Dec 2008 14:05:15 -0000	1.5
+++ gdb-6.3-security-errata-20050610.patch	11 Feb 2009 00:04:47 -0000	1.6
@@ -19,10 +19,10 @@
         (source_command): Update documentation.  Check permissions if
         FROM_TTY is -1.
 
-Index: gdb-6.8.50.20081128/gdb/cli/cli-cmds.c
+Index: gdb-6.8.50.20090209/gdb/cli/cli-cmds.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/cli/cli-cmds.c	2008-12-07 10:12:24.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/cli/cli-cmds.c	2008-12-07 13:04:06.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/cli/cli-cmds.c	2009-01-14 21:40:07.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/cli/cli-cmds.c	2009-02-09 15:45:39.000000000 +0100
 @@ -36,6 +36,7 @@
  #include "objfiles.h"
  #include "source.h"
@@ -31,7 +31,7 @@
  
  #include "ui-out.h"
  
-@@ -460,7 +461,7 @@ source_script (char *file, int from_tty)
+@@ -462,7 +463,7 @@ source_script (char *file, int from_tty)
  
    if (fd == -1)
      {
@@ -40,7 +40,7 @@
  	perror_with_name (file);
        else
  	{
-@@ -469,9 +470,33 @@ source_script (char *file, int from_tty)
+@@ -471,9 +472,33 @@ source_script (char *file, int from_tty)
  	}
      }
  
@@ -74,10 +74,10 @@
    do_cleanups (old_cleanups);
  }
  
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.exp	2008-12-07 10:13:01.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.exp	2009-02-09 15:45:39.000000000 +0100
 @@ -0,0 +1,98 @@
 +#   Copyright 2005
 +#   Free Software Foundation, Inc.
@@ -177,31 +177,31 @@
 +}
 +
 +remote_exec build "rm .gdbinit"
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.sample
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.sample
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.sample	2008-12-07 10:13:01.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.sample	2009-02-09 15:45:39.000000000 +0100
 @@ -0,0 +1 @@
 +echo "\nin gdbinit"
-Index: gdb-6.8.50.20081128/gdb/main.c
+Index: gdb-6.8.50.20090209/gdb/main.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/main.c	2008-12-07 10:12:24.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/main.c	2008-12-07 12:58:37.000000000 +0100
-@@ -690,7 +690,7 @@ Excess command line arguments ignored. (
- 
-       if (!inhibit_gdbinit)
- 	{
--	  catch_command_errors (source_script, homeinit, 0, RETURN_MASK_ALL);
-+	  catch_command_errors (source_script, homeinit, -1, RETURN_MASK_ALL);
- 	}
- 
-       /* Do stats; no need to do them elsewhere since we'll only
-@@ -778,7 +778,7 @@ Can't attach to process and specify a co
-       || memcmp ((char *) &homebuf, (char *) &cwdbuf, sizeof (struct stat)))
-     if (!inhibit_gdbinit)
-       {
--	catch_command_errors (source_script, gdbinit, 0, RETURN_MASK_ALL);
-+	catch_command_errors (source_script, gdbinit, -1, RETURN_MASK_ALL);
-       }
+--- gdb-6.8.50.20090209.orig/gdb/main.c	2009-01-28 16:01:00.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/main.c	2009-02-09 15:46:33.000000000 +0100
+@@ -783,7 +783,7 @@ Excess command line arguments ignored. (
+      debugging or what directory you are in.  */
+ 
+   if (home_gdbinit && !inhibit_gdbinit)
+-    catch_command_errors (source_script, home_gdbinit, 0, RETURN_MASK_ALL);
++    catch_command_errors (source_script, home_gdbinit, -1, RETURN_MASK_ALL);
+ 
+   /* Now perform all the actions indicated by the arguments.  */
+   if (cdarg != NULL)
+@@ -852,7 +852,7 @@ Can't attach to process and specify a co
+   /* Read the .gdbinit file in the current directory, *if* it isn't
+      the same as the $HOME/.gdbinit file (it should exist, also).  */
+   if (local_gdbinit && !inhibit_gdbinit)
+-    catch_command_errors (source_script, local_gdbinit, 0, RETURN_MASK_ALL);
++    catch_command_errors (source_script, local_gdbinit, -1, RETURN_MASK_ALL);
  
    for (i = 0; i < ncmd; i++)
+     {

gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch:

Index: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch	14 Dec 2008 14:05:16 -0000	1.7
+++ gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch	11 Feb 2009 00:04:47 -0000	1.8
@@ -30,11 +30,11 @@
   <81a2>     DW_AT_name        : (indirect string, offset: 0x280e): __errno_location
   <81a8>     DW_AT_MIPS_linkage_name: (indirect string, offset: 0x2808): *__GI___errno_location
 
-Index: gdb-6.8.50.20081128/gdb/dwarf2read.c
+Index: gdb-6.8.50.20090209/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/dwarf2read.c	2008-12-04 10:26:18.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/dwarf2read.c	2008-12-04 10:26:40.000000000 +0100
-@@ -5886,8 +5886,8 @@ read_partial_die (struct partial_die_inf
+--- gdb-6.8.50.20090209.orig/gdb/dwarf2read.c	2009-02-09 15:50:59.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/dwarf2read.c	2009-02-09 15:51:57.000000000 +0100
+@@ -6031,8 +6031,8 @@ read_partial_die (struct partial_die_inf
  	{
  	case DW_AT_name:
  
@@ -45,7 +45,7 @@
  	    part_die->name = DW_STRING (&attr);
  	  break;
  	case DW_AT_comp_dir:
-@@ -5895,7 +5895,9 @@ read_partial_die (struct partial_die_inf
+@@ -6040,7 +6040,9 @@ read_partial_die (struct partial_die_inf
  	    part_die->dirname = DW_STRING (&attr);
  	  break;
  	case DW_AT_MIPS_linkage_name:
@@ -56,7 +56,7 @@
  	  break;
  	case DW_AT_low_pc:
  	  has_low_pc_attr = 1;
-@@ -8129,9 +8131,13 @@ dwarf2_linkage_name (struct die_info *di
+@@ -8278,9 +8280,13 @@ dwarf2_linkage_name (struct die_info *di
  {
    struct attribute *attr;
  
@@ -73,36 +73,37 @@
    attr = dwarf2_attr (die, DW_AT_name, cu);
    if (attr && DW_STRING (attr))
      return DW_STRING (attr);
-Index: gdb-6.8.50.20081128/gdb/gdbtypes.c
+Index: gdb-6.8.50.20090209/gdb/gdbtypes.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/gdbtypes.c	2008-11-10 21:53:43.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/gdbtypes.c	2008-12-04 10:26:40.000000000 +0100
-@@ -3141,6 +3141,8 @@ gdbtypes_post_init (struct gdbarch *gdba
+--- gdb-6.8.50.20090209.orig/gdb/gdbtypes.c	2009-02-09 15:38:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/gdbtypes.c	2009-02-09 15:56:14.000000000 +0100
+@@ -3643,6 +3643,8 @@ gdbtypes_post_init (struct gdbarch *gdba
      init_type (TYPE_CODE_INT, 
  	       gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
- 	       0, "int", (struct objfile *) NULL);
+ 	       0, "int", OBJFILE_INTERNAL);
 +  builtin_type->builtin_int_ptr =
 +    make_pointer_type (builtin_type->builtin_int, NULL);
    builtin_type->builtin_unsigned_int =
      init_type (TYPE_CODE_INT, 
  	       gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
-@@ -3250,6 +3252,11 @@ gdbtypes_post_init (struct gdbarch *gdba
- 	       "<text variable, no debug info>", NULL);
+@@ -3752,6 +3754,12 @@ gdbtypes_post_init (struct gdbarch *gdba
+ 	       "<text variable, no debug info>", OBJFILE_INTERNAL);
    TYPE_TARGET_TYPE (builtin_type->nodebug_text_symbol) =
      builtin_type->builtin_int;
 +  builtin_type->nodebug_text_symbol_errno_location =
 +    init_type (TYPE_CODE_FUNC, 1, 0, 
-+	       "<text variable for __errno_location, no debug info>", NULL);
++	       "<text variable for __errno_location, no debug info>",
++	       OBJFILE_INTERNAL);
 +  TYPE_TARGET_TYPE (builtin_type->nodebug_text_symbol_errno_location) =
 +    builtin_type->builtin_int_ptr;
    builtin_type->nodebug_data_symbol =
      init_type (TYPE_CODE_INT, 
  	       gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
-Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
+Index: gdb-6.8.50.20090209/gdb/gdbtypes.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/gdbtypes.h	2008-10-28 18:19:56.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/gdbtypes.h	2008-12-04 10:26:40.000000000 +0100
-@@ -975,6 +975,7 @@ struct builtin_type
+--- gdb-6.8.50.20090209.orig/gdb/gdbtypes.h	2009-02-09 15:38:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/gdbtypes.h	2009-02-09 15:51:57.000000000 +0100
+@@ -1050,6 +1050,7 @@ struct builtin_type
  
    /* Types used for symbols with no debug information.  */
    struct type *nodebug_text_symbol;
@@ -110,7 +111,7 @@
    struct type *nodebug_data_symbol;
    struct type *nodebug_unknown_symbol;
    struct type *nodebug_tls_symbol;
-@@ -987,6 +988,7 @@ struct builtin_type
+@@ -1062,6 +1063,7 @@ struct builtin_type
    struct type *builtin_char;
    struct type *builtin_short;
    struct type *builtin_int;
@@ -118,10 +119,10 @@
    struct type *builtin_long;
    struct type *builtin_signed_char;
    struct type *builtin_unsigned_char;
-Index: gdb-6.8.50.20081128/gdb/parse.c
+Index: gdb-6.8.50.20090209/gdb/parse.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/parse.c	2008-11-24 18:05:43.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/parse.c	2008-12-04 10:26:40.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/parse.c	2009-01-03 06:57:52.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/parse.c	2009-02-09 15:51:57.000000000 +0100
 @@ -449,7 +449,12 @@ write_exp_msymbol (struct minimal_symbol
      case mst_text:
      case mst_file_text:
@@ -136,11 +137,11 @@
        break;
  
      case mst_data:
-Index: gdb-6.8.50.20081128/gdb/target.c
+Index: gdb-6.8.50.20090209/gdb/target.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/target.c	2008-12-04 10:24:58.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/target.c	2008-12-04 10:29:07.000000000 +0100
-@@ -850,6 +850,25 @@ pop_all_targets (int quitting)
+--- gdb-6.8.50.20090209.orig/gdb/target.c	2009-02-09 15:50:39.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/target.c	2009-02-09 15:51:57.000000000 +0100
+@@ -842,6 +842,25 @@ pop_all_targets (int quitting)
    pop_all_targets_above (dummy_stratum, quitting);
  }
  
@@ -166,7 +167,7 @@
  /* Using the objfile specified in OBJFILE, find the address for the
     current thread's thread-local storage with offset OFFSET.  */
  CORE_ADDR
-@@ -931,7 +950,28 @@ target_translate_tls_address (struct obj
+@@ -932,7 +951,28 @@ target_translate_tls_address (struct obj
    /* It wouldn't be wrong here to try a gdbarch method, too; finding
       TLS is an ABI-specific thing.  But we don't do that yet.  */
    else
@@ -196,10 +197,10 @@
  
    return addr;
  }
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.c	2008-12-04 10:26:40.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.c	2009-02-09 15:51:57.000000000 +0100
 @@ -0,0 +1,28 @@
 +/* This testcase is part of GDB, the GNU debugger.
 +
@@ -229,10 +230,10 @@
 +
 +  return 0;	/* breakpoint */
 +}
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.exp	2008-12-04 10:26:40.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.exp	2009-02-09 15:51:57.000000000 +0100
 @@ -0,0 +1,67 @@
 +# Copyright 2007 Free Software Foundation, Inc.
 +

gdb-6.5-sharedlibrary-path.patch:

Index: gdb-6.5-sharedlibrary-path.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.5-sharedlibrary-path.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- gdb-6.5-sharedlibrary-path.patch	14 Dec 2008 14:05:16 -0000	1.4
+++ gdb-6.5-sharedlibrary-path.patch	11 Feb 2009 00:04:47 -0000	1.5
@@ -80,11 +80,9 @@
 +   bug-gdb at prep.ai.mit.edu  */
 +
 +__thread int var = 42;
-Index: gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp	2008-02-27 09:00:15.000000000 +0100
-@@ -0,0 +1,81 @@
+--- /dev/null	2009-02-10 00:19:00.494289687 +0100
++++ gdb-6.8.50.20090209-x/gdb/testsuite/gdb.threads/tls-sepdebug.exp	2009-02-10 00:49:38.000000000 +0100
+@@ -0,0 +1,86 @@
 +# Copyright 2006 Free Software Foundation, Inc.
 +
 +# This program is free software; you can redistribute it and/or modify
@@ -109,14 +107,17 @@
 +set srcmainfile   ${testfile}-main.c
 +set srcsharedfile ${testfile}-shared.c
 +
-+# DO NOT use ${objdir} obsolute reference here as we test relative directories
-+# below and the absolute pathnames must not get encoded to the binaries.
++set binmainfile        ${objdir}/${subdir}/${testfile}-main
++set binsharedbase      ${testfile}-shared.so
++set binsharedfile      ${objdir}/${subdir}/${binsharedbase}
++set binshareddebugfile ${objdir}/${subdir}/${binsharedbase}.debug
 +
-+set binmainfile        ${testfile}-main
-+set binsharedfile      ${testfile}-shared.so
-+set binshareddebugfile ${testfile}-shared.so.debug
++# Use explicit -soname as otherwise the full path to the library would get
++# encoded into ${binmainfile} making LD_LIBRARY_PATH tests useless.
 +
-+if  { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" {debug}] != "" } {
++# FIXME: gcc dependency (-Wl,-soname).
++
++if  { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" [list debug additional_flags=-Wl,-soname=${binsharedbase}]] != "" } {
 +    untested "Couldn't compile test library"
 +    return -1
 +}
@@ -130,7 +131,9 @@
 +    remote_exec build "objcopy --add-gnu-debuglink=${binshareddebugfile} ${binsharedfile}"
 +}
 +
-+if  { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcmainfile}" "${binmainfile}" executable [list debug shlib=${binsharedfile}]] != "" } {
++# Do not use `shlib=' as it will automatically add also -rpath for gcc.
++
++if  { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcmainfile} ${binsharedfile}" "${binmainfile}" executable {debug}] != "" } {
 +    untested "Couldn't compile test program"
 +    return -1
 +}
@@ -141,7 +144,7 @@
 +# \$PWD is easy - it is the absolute way
 +# ${subdir} would fail on "print var"
 +
-+foreach ld_library_path { \$PWD ${subdir} } name { absolute relative }  {
++foreach ld_library_path [list [pwd]/${subdir} ./${subdir}] name { absolute relative }  {
 +
 +    gdb_exit
 +    gdb_start

gdb-6.6-multifork-debugreg.patch:

Index: gdb-6.6-multifork-debugreg.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.6-multifork-debugreg.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- gdb-6.6-multifork-debugreg.patch	14 Dec 2008 14:05:16 -0000	1.8
+++ gdb-6.6-multifork-debugreg.patch	11 Feb 2009 00:04:47 -0000	1.9
@@ -28,10 +28,10 @@
 	* s390-nat.c (s390_fix_watch_points): Fix its compilation failure
 	- rename it to S390_FIX_WATCH_POINTS_LIST.
 
-Index: gdb-6.8.50.20081128/gdb/amd64-linux-nat.c
+Index: gdb-6.8.50.20090209/gdb/amd64-linux-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/amd64-linux-nat.c	2008-12-07 10:09:19.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/amd64-linux-nat.c	2008-12-07 10:10:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/amd64-linux-nat.c	2009-02-09 16:02:27.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/amd64-linux-nat.c	2009-02-09 16:03:30.000000000 +0100
 @@ -408,25 +408,43 @@ amd64_linux_dr_set (ptid_t ptid, int reg
  void
  amd64_linux_dr_set_control (unsigned long control)
@@ -128,11 +128,10 @@
  
  
  /* This function is called by libthread_db as part of its handling of
-@@ -520,6 +573,43 @@ amd64_linux_child_post_startup_inferior 
-   i386_cleanup_dregs ();
-   super_post_startup_inferior (ptid);
+@@ -755,6 +808,42 @@ amd64_linux_siginfo_fixup (struct siginf
+     return 0;
  }
-+
+ 
 +static int (*amd64_linux_super_follow_fork) (struct target_ops *ops,
 +					     int follow_child);
 +
@@ -169,10 +168,10 @@
 +  return (*amd64_linux_super_follow_fork) (ops, follow_child);
 +}
 +
- 
- 
  /* Provide a prototype to silence -Wmissing-prototypes.  */
-@@ -558,6 +648,9 @@ _initialize_amd64_linux_nat (void)
+ void _initialize_amd64_linux_nat (void);
+ 
+@@ -791,6 +880,9 @@ _initialize_amd64_linux_nat (void)
    linux_elfcore_write_prstatus = amd64_linux_elfcore_write_prstatus;
    linux_elfcore_write_prfpreg = amd64_linux_elfcore_write_prfpreg;
  
@@ -182,10 +181,10 @@
    /* Register the target.  */
    linux_nat_add_target (t);
    linux_nat_set_new_thread (t, amd64_linux_new_thread);
-Index: gdb-6.8.50.20081128/gdb/config/i386/nm-i386.h
+Index: gdb-6.8.50.20090209/gdb/config/i386/nm-i386.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/config/i386/nm-i386.h	2008-03-01 05:39:36.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/config/i386/nm-i386.h	2008-12-07 10:09:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/config/i386/nm-i386.h	2009-01-03 06:57:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/config/i386/nm-i386.h	2009-02-09 16:02:42.000000000 +0100
 @@ -120,6 +120,8 @@ extern int i386_stopped_by_watchpoint (v
  
  #endif /* I386_WATCHPOINTS_IN_TARGET_VECTOR */
@@ -195,10 +194,10 @@
  #endif /* I386_USE_GENERIC_WATCHPOINTS */
  
  #endif /* NM_I386_H */
-Index: gdb-6.8.50.20081128/gdb/i386-linux-nat.c
+Index: gdb-6.8.50.20090209/gdb/i386-linux-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/i386-linux-nat.c	2008-03-13 13:22:13.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/i386-linux-nat.c	2008-12-07 10:09:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/i386-linux-nat.c	2009-01-03 06:57:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/i386-linux-nat.c	2009-02-09 16:02:42.000000000 +0100
 @@ -634,21 +634,42 @@ i386_linux_dr_set_control (unsigned long
    ptid_t ptid;
  
@@ -342,11 +341,11 @@
    /* Register the target.  */
    linux_nat_add_target (t);
    linux_nat_set_new_thread (t, i386_linux_new_thread);
-Index: gdb-6.8.50.20081128/gdb/i386-nat.c
+Index: gdb-6.8.50.20090209/gdb/i386-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/i386-nat.c	2008-03-01 05:39:36.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/i386-nat.c	2008-12-07 10:09:20.000000000 +0100
-@@ -545,6 +545,17 @@ i386_remove_watchpoint (CORE_ADDR addr, 
+--- gdb-6.8.50.20090209.orig/gdb/i386-nat.c	2009-01-03 06:57:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/i386-nat.c	2009-02-09 16:02:42.000000000 +0100
+@@ -546,6 +546,17 @@ i386_remove_watchpoint (CORE_ADDR addr, 
    return retval;
  }
  
@@ -364,10 +363,10 @@
  /* Return non-zero if we can watch a memory region that starts at
     address ADDR and whose length is LEN bytes.  */
  
-Index: gdb-6.8.50.20081128/gdb/ia64-linux-nat.c
+Index: gdb-6.8.50.20090209/gdb/ia64-linux-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/ia64-linux-nat.c	2008-12-07 10:06:03.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/ia64-linux-nat.c	2008-12-07 10:09:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/ia64-linux-nat.c	2009-02-09 15:48:43.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/ia64-linux-nat.c	2009-02-09 16:02:42.000000000 +0100
 @@ -583,6 +583,12 @@ ia64_linux_insert_watchpoint (CORE_ADDR 
    return 0;
  }
@@ -467,10 +466,10 @@
    /* Register the target.  */
    linux_nat_add_target (t);
    linux_nat_set_new_thread (t, ia64_linux_new_thread);
-Index: gdb-6.8.50.20081128/gdb/ppc-linux-nat.c
+Index: gdb-6.8.50.20090209/gdb/ppc-linux-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/ppc-linux-nat.c	2008-11-18 22:39:47.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/ppc-linux-nat.c	2008-12-07 10:09:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/ppc-linux-nat.c	2009-01-03 06:57:52.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/ppc-linux-nat.c	2009-02-09 16:02:42.000000000 +0100
 @@ -1118,6 +1118,12 @@ ppc_linux_insert_watchpoint (CORE_ADDR a
    return 0;
  }
@@ -563,10 +562,10 @@
    /* Register the target.  */
    linux_nat_add_target (t);
    linux_nat_set_new_thread (t, ppc_linux_new_thread);
-Index: gdb-6.8.50.20081128/gdb/s390-nat.c
+Index: gdb-6.8.50.20090209/gdb/s390-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/s390-nat.c	2007-11-07 07:36:57.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/s390-nat.c	2008-12-07 10:09:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/s390-nat.c	2007-11-07 07:36:57.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/s390-nat.c	2009-02-09 16:02:42.000000000 +0100
 @@ -283,21 +283,15 @@ s390_stopped_by_watchpoint (void)
  }
  
@@ -721,10 +720,10 @@
    /* Register the target.  */
    linux_nat_add_target (t);
    linux_nat_set_new_thread (t, s390_fix_watch_points);
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c	2008-12-07 10:09:20.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c	2009-02-09 16:02:42.000000000 +0100
 @@ -0,0 +1,172 @@
 +/* Test case for forgotten hw-watchpoints after fork()-off of a process.
 +
@@ -898,10 +897,10 @@
 +#else
 +# error "!FOLLOW_PARENT && !FOLLOW_CHILD"
 +#endif
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c	2008-12-07 10:09:20.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c	2009-02-09 16:02:42.000000000 +0100
 @@ -0,0 +1,154 @@
 +/* Test case for forgotten hw-watchpoints after fork()-off of a process.
 +
@@ -1057,10 +1056,10 @@
 +
 +  return 0;
 +}
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.c	2008-12-07 10:09:20.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.c	2009-02-09 16:02:42.000000000 +0100
 @@ -0,0 +1,56 @@
 +/* Test case for forgotten hw-watchpoints after fork()-off of a process.
 +
@@ -1118,10 +1117,10 @@
 +
 +  return 0;
 +}
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.exp	2008-12-07 10:09:20.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.exp	2009-02-09 16:02:42.000000000 +0100
 @@ -0,0 +1,140 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -1263,11 +1262,11 @@
 +if {[istarget "*-*-linux*"]} {
 +    test child FOLLOW_CHILD
 +}
-Index: gdb-6.8.50.20081128/gdb/doc/gdb.texinfo
+Index: gdb-6.8.50.20090209/gdb/doc/gdb.texinfo
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/doc/gdb.texinfo	2008-12-07 10:09:20.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/doc/gdb.texinfo	2008-12-07 10:10:20.000000000 +0100
-@@ -3587,6 +3587,14 @@ confident that no other thread can becom
+--- gdb-6.8.50.20090209.orig/gdb/doc/gdb.texinfo	2009-02-09 16:02:35.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/doc/gdb.texinfo	2009-02-09 16:02:42.000000000 +0100
+@@ -3588,6 +3588,14 @@ confident that no other thread can becom
  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.)
@@ -1282,11 +1281,11 @@
  @end quotation
  
  @xref{set remote hardware-watchpoint-limit}.
-Index: gdb-6.8.50.20081128/gdb/config/i386/nm-linux.h
+Index: gdb-6.8.50.20090209/gdb/config/i386/nm-linux.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/config/i386/nm-linux.h	2008-03-01 05:39:36.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/config/i386/nm-linux.h	2008-12-07 10:09:20.000000000 +0100
-@@ -45,6 +45,16 @@ extern void i386_linux_dr_reset_addr (in
+--- gdb-6.8.50.20090209.orig/gdb/config/i386/nm-linux.h	2009-01-03 06:57:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/config/i386/nm-linux.h	2009-02-09 16:02:42.000000000 +0100
+@@ -46,6 +46,16 @@ extern void i386_linux_dr_reset_addr (in
  extern unsigned long i386_linux_dr_get_status (void);
  #define I386_DR_LOW_GET_STATUS() \
    i386_linux_dr_get_status ()
@@ -1303,10 +1302,10 @@
  
  
  #ifdef HAVE_PTRACE_GETFPXREGS
-Index: gdb-6.8.50.20081128/gdb/config/i386/nm-linux64.h
+Index: gdb-6.8.50.20090209/gdb/config/i386/nm-linux64.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/config/i386/nm-linux64.h	2008-03-01 05:39:36.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/config/i386/nm-linux64.h	2008-12-07 10:09:20.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/config/i386/nm-linux64.h	2009-01-03 06:57:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/config/i386/nm-linux64.h	2009-02-09 16:02:42.000000000 +0100
 @@ -51,4 +51,14 @@ extern unsigned long amd64_linux_dr_get_
  #define I386_DR_LOW_GET_STATUS() \
    amd64_linux_dr_get_status ()
@@ -1322,11 +1321,11 @@
 +  amd64_linux_remove_watchpoint (addr, len, type)
 +
  #endif /* nm-linux64.h */
-Index: gdb-6.8.50.20081128/gdb/target.h
+Index: gdb-6.8.50.20090209/gdb/target.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/target.h	2008-12-07 10:09:19.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/target.h	2008-12-07 10:10:38.000000000 +0100
-@@ -1123,7 +1123,9 @@ extern char *normal_pid_to_str (ptid_t p
+--- gdb-6.8.50.20090209.orig/gdb/target.h	2009-02-09 15:49:25.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/target.h	2009-02-09 16:02:42.000000000 +0100
+@@ -1113,7 +1113,9 @@ extern char *normal_pid_to_str (ptid_t p
  #ifndef target_insert_watchpoint
  #define	target_insert_watchpoint(addr, len, type)	\
       (*current_target.to_insert_watchpoint) (addr, len, type)

gdb-6.7-testsuite-stable-results.patch:

Index: gdb-6.7-testsuite-stable-results.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.7-testsuite-stable-results.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- gdb-6.7-testsuite-stable-results.patch	14 Dec 2008 14:05:16 -0000	1.5
+++ gdb-6.7-testsuite-stable-results.patch	11 Feb 2009 00:04:47 -0000	1.6
@@ -1,3 +1,5 @@
+gdb/testsuite/gdb.base/fileio.c:
+gdb/testsuite/gdb.base/fileio.exp:
 2007-12-08  Jan Kratochvil  <jan.kratochvil at redhat.com>
 
 	* gdb.base/fileio.c (ROOTSUBDIR): New macro.
@@ -6,6 +8,18 @@
 	* gdb.base/fileio.exp: Change the startup and finish cleanup.
 	Change the test file reference to be into the `fileio.dir' directory.
 
+
+sources/gdb/testsuite/gdb.base/dump.exp:
+Found on RHEL-5.s390x.
+
+
+gdb-6.8.50.20090209/gdb/testsuite/gdb.base/auxv.exp:
+random FAIL: gdb.base/auxv.exp: matching auxv data from live and gcore
+
+
+gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp:
+frames-invalid can happen asynchronously.
+
 --- ./gdb/testsuite/gdb.base/fileio.c	13 Jun 2006 08:55:22 -0000	1.10
 +++ ./gdb/testsuite/gdb.base/fileio.c	8 Dec 2007 16:04:10 -0000
 @@ -58,6 +58,8 @@ system (const char * string);
@@ -88,11 +102,6 @@
  
  set timeout $oldtimeout
  return 0
-
-
-
-Found on RHEL-5.s390x.
-
 --- sources/gdb/testsuite/gdb.base/dump.exp-orig	2008-08-28 11:44:40.000000000 +0200
 +++ sources/gdb/testsuite/gdb.base/dump.exp	2008-08-28 11:44:49.000000000 +0200
 @@ -493,8 +493,10 @@ if ![string compare $is64bitonly "no"] t
@@ -107,3 +116,93 @@
  	"array partial with expressions" 4 "intarray2\[3\]"
  
    gdb_test "print intarray2\[2\] == 0" " = 1" "element 2 not changed, == 4"
+--- gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp-orig	2009-02-09 16:31:11.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp	2009-02-09 21:27:38.000000000 +0100
+@@ -286,7 +286,7 @@ if [target_info exists gdb,nosignals] {
+ } else {
+     send_gdb "signal SIGUSR1\n"
+     gdb_expect {
+-	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
++	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\r\n(\r\n\032\032frames-invalid\r\n)*\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
+ 	    { pass "send SIGUSR1" }
+ 	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*${srcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
+ 	    { setup_xfail "*-*-*" 1270
+--- ./gdb/testsuite/gdb.base/auxv.exp	2009-02-11 00:54:54.000000000 +0100
++++ ./gdb/testsuite/gdb.base/auxv.exp	2009-02-11 00:51:30.000000000 +0100
+@@ -78,8 +78,10 @@ proc fetch_auxv {test} {
+ 
+     set auxv_lines {}
+     set bad -1
++    # Former trailing `\[\r\n\]+' may eat just \r leaving \n in the buffer
++    # corrupting the next matches.
+     if {[gdb_test_multiple "info auxv" $test {
+-	-re "info auxv\[\r\n\]+" {
++	-re "info auxv\r\n" {
+ 	    exp_continue
+ 	}
+ 	-ex "The program has no auxiliary information now" {
+@@ -94,20 +96,20 @@ proc fetch_auxv {test} {
+ 	    set bad 1
+ 	    exp_continue
+ 	}
+-	-re "^\[0-9\]+\[ \t\]+(AT_\[^ \t\]+)\[^\r\n\]+\[\r\n\]+" {
++	-re "^\[0-9\]+\[ \t\]+(AT_\[^ \t\]+)\[^\r\n\]+\r\n" {
+ 	    lappend auxv_lines $expect_out(0,string)
+ 	    exp_continue
+ 	}
+-	-re "^\[0-9\]+\[ \t\]+\\?\\?\\?\[^\r\n\]+\[\r\n\]+" {
++	-re "^\[0-9\]+\[ \t\]+\\?\\?\\?\[^\r\n\]+\r\n" {
+ 	    warning "Unrecognized tag value: $expect_out(0,string)"
+ 	    set bad 1
+ 	    lappend auxv_lines $expect_out(0,string)
+ 	    exp_continue
+ 	}
+-	-re ".*$gdb_prompt $" {
++	-re "$gdb_prompt $" {
+ 	    incr bad
+ 	}
+-	-re "^\[^\r\n\]+\[\r\n\]+" {
++	-re "^\[^\r\n\]+\r\n" {
+ 	    if {!$bad} {
+ 		warning "Unrecognized output: $expect_out(0,string)"
+ 		set bad 1
+--- ./gdb/testsuite/gdb.base/callfuncs.exp	2009-01-03 06:58:03.000000000 +0100
++++ ./gdb/testsuite/gdb.base/callfuncs.exp	2009-02-11 00:51:42.000000000 +0100
+@@ -249,15 +249,17 @@ proc fetch_all_registers {test} {
+ 
+     set all_registers_lines {}
+     set bad -1
++    # Former trailing `\[\r\n\]+' may eat just \r leaving \n in the buffer
++    # corrupting the next matches.
+     if {[gdb_test_multiple "info all-registers" $test {
+-	-re "info all-registers\[\r\n\]+" {
++	-re "info all-registers\r\n" {
+ 	    exp_continue
+ 	}
+ 	-ex "The program has no registers now" {
+ 	    set bad 1
+ 	    exp_continue
+ 	}
+-	-re "^bspstore\[ \t\]+\[^\r\n\]+\[\r\n\]+" {
++	-re "^bspstore\[ \t\]+\[^\r\n\]+\r\n" {
+ 	    if [istarget "ia64-*-*"] {
+ 		# Filter out bspstore which is specially tied to bsp,
+ 		# giving spurious differences.
+@@ -266,14 +268,14 @@ proc fetch_all_registers {test} {
+ 	    }
+ 	    exp_continue
+ 	}
+-	-re "^\[^ \t\]+\[ \t\]+\[^\r\n\]+\[\r\n\]+" {
++	-re "^\[^ \t\]+\[ \t\]+\[^\r\n\]+\r\n" {
+ 	    lappend all_registers_lines $expect_out(0,string)
+ 	    exp_continue
+ 	}
+-	-re ".*$gdb_prompt $" {
++	-re "$gdb_prompt $" {
+ 	    incr bad
+ 	}
+-	-re "^\[^\r\n\]+\[\r\n\]+" {
++	-re "^\[^\r\n\]+\r\n" {
+ 	    if {!$bad} {
+ 		warning "Unrecognized output: $expect_out(0,string)"
+ 		set bad 1

gdb-6.8-attach-signalled-detach-stopped.patch:

Index: gdb-6.8-attach-signalled-detach-stopped.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-attach-signalled-detach-stopped.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gdb-6.8-attach-signalled-detach-stopped.patch	5 Feb 2009 15:54:26 -0000	1.3
+++ gdb-6.8-attach-signalled-detach-stopped.patch	11 Feb 2009 00:04:47 -0000	1.4
@@ -1,8 +1,8 @@
-Index: gdb-6.8.50.20081128/gdb/linux-nat.c
+Index: gdb-6.8.50.20090209/gdb/linux-nat.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/linux-nat.c	2008-12-06 21:48:18.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/linux-nat.c	2008-12-06 22:00:42.000000000 +0100
-@@ -199,6 +199,9 @@ blocked.  */
+--- gdb-6.8.50.20090209.orig/gdb/linux-nat.c	2009-02-09 16:12:23.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/linux-nat.c	2009-02-09 16:15:30.000000000 +0100
+@@ -204,6 +204,9 @@ blocked.  */
  static struct target_ops *linux_ops;
  static struct target_ops linux_ops_saved;
  
@@ -12,7 +12,7 @@
  /* The method to call, if any, when a new thread is attached.  */
  static void (*linux_nat_new_thread) (ptid_t);
  
-@@ -871,7 +874,14 @@ linux_child_follow_fork (struct target_o
+@@ -902,7 +905,14 @@ linux_child_follow_fork (struct target_o
  	  fork_save_infrun_state (fp, 0);
  	}
        else
@@ -27,8 +27,8 @@
 +	}
  
        inferior_ptid = ptid_build (child_pid, child_pid, 0);
-       add_inferior (child_pid);
-@@ -1203,6 +1213,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
+ 
+@@ -1229,6 +1239,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
        if (debug_linux_nat)
  	fprintf_unfiltered (gdb_stdlog,
  			    "LNPAW: Attaching to a stopped process\n");
@@ -36,7 +36,7 @@
  
        /* The process is definitely stopped.  It is in a job control
  	 stop, unless the kernel predates the TASK_STOPPED /
-@@ -1535,6 +1546,9 @@ GPT: lwp %s had signal %s, but it is in 
+@@ -1561,6 +1572,9 @@ GPT: lwp %s had signal %s, but it is in 
  	*status = lp->status;
      }
  
@@ -46,16 +46,16 @@
    return 0;
  }
  
-@@ -1631,6 +1645,8 @@ linux_nat_detach (struct target_ops *ops
-   inferior_ptid = pid_to_ptid (pid);
-   linux_ops->to_detach (ops, args, from_tty);
- 
-+  pid_was_stopped = 0;
+@@ -1671,6 +1685,8 @@ linux_nat_detach (struct target_ops *ops
+     }
+   else
+     linux_ops->to_detach (ops, args, from_tty);
 +
-   if (target_can_async_p ())
-     drain_queued_events (pid);
++  pid_was_stopped = 0;
  }
-@@ -1787,6 +1803,14 @@ linux_nat_resume (ptid_t ptid, int step_
+ 
+ /* Resume LP.  */
+@@ -1825,6 +1841,14 @@ linux_nat_resume (ptid_t ptid, int step_
       resume_callback.  */
    lp->stopped = 0;
  
@@ -70,7 +70,7 @@
    if (resume_all)
      iterate_over_lwps (resume_callback, NULL);
  
-@@ -3281,6 +3305,8 @@ linux_nat_mourn_inferior (struct target_
+@@ -3316,6 +3340,8 @@ linux_nat_mourn_inferior (struct target_
         there are other viable forks to debug.  Delete the exiting
         one and context-switch to the first available.  */
      linux_fork_mourn_inferior ();
@@ -78,83 +78,12 @@
 +  pid_was_stopped = 0;
  }
  
- static LONGEST
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.c
-===================================================================
---- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attach-stopped.c	2008-05-01 20:50:14.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.c	2008-12-06 21:57:23.000000000 +0100
-@@ -1,19 +1,20 @@
- /* This testcase is part of GDB, the GNU debugger.
- 
--   Copyright 2008 Free Software Foundation, Inc.
-+   Copyright 2005-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
-+   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, see <http://www.gnu.org/licenses/>.  */
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- 
- /* This program is intended to be started outside of gdb, then
-    manually stopped via a signal.  */
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.exp
+ /* Convert a native/host siginfo object, into/from the siginfo in the
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attach-stopped.exp
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attach-stopped.exp	2008-05-01 20:50:14.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.exp	2008-12-06 21:57:23.000000000 +0100
-@@ -1,26 +1,33 @@
--# Copyright 2008
--# Free Software Foundation, Inc.
-+# Copyright 2005-2007
- 
- # 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
-+# 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, see <http://www.gnu.org/licenses/>.
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- 
- # This test was created by modifying attach.exp.
- # This file was created by Jeff Johnston <jjohnstn at redhat.com>.
- # This file was updated by Jan Kratochvil <jan.kratochvil at redhat.com>.
- 
-+if $tracelevel then {
-+    strace $tracelevel
-+}
-+
-+set prms_id 0
-+set bug_id 0
-+
- # This test only works on Linux
--if { ![isnative] || [is_remote host] || ![istarget *-linux*] } {
--    continue
-+if { ![istarget "*-*-linux-gnu*"] } {
-+    return 0
- }
- 
- set testfile "attach-stopped"
-@@ -63,7 +70,65 @@ proc corefunc { threadtype } {
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.threads/attach-stopped.exp	2009-01-03 06:58:07.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attach-stopped.exp	2009-02-09 16:12:41.000000000 +0100
+@@ -62,7 +62,65 @@ proc corefunc { threadtype } {
      gdb_reinitialize_dir $srcdir/$subdir
      gdb_load ${binfile}
  
@@ -221,39 +150,10 @@
         
      set test "$threadtype: attach2 to stopped, after setting file"
      gdb_test_multiple "attach $testpid" "$test" {
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.c
-===================================================================
---- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attachstop-mt.c	2008-05-01 20:50:14.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.c	2008-12-06 21:57:23.000000000 +0100
-@@ -1,19 +1,20 @@
- /* This testcase is part of GDB, the GNU debugger.
- 
--   Copyright 2008 Free Software Foundation, Inc.
-+   Copyright 2005 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
-+   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, see <http://www.gnu.org/licenses/>.  */
-+   along with this program; if not, write to the Free Software
-+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- 
- /* This program is intended to be started outside of gdb, then
-    manually stopped via a signal.  */
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attachstop-mt.exp
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attachstop-mt.exp	2008-09-28 13:39:45.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.exp	2008-12-06 21:57:23.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.threads/attachstop-mt.exp	2009-01-03 06:58:07.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attachstop-mt.exp	2009-02-09 16:12:41.000000000 +0100
 @@ -176,12 +176,23 @@ gdb_test "bt" ".*sleep.*(func|main).*" "
  # Exit and detach the process.
  gdb_exit

gdb-6.8-bz377541-vla.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.4 -r 1.5 gdb-6.8-bz377541-vla.patch
Index: gdb-6.8-bz377541-vla.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-bz377541-vla.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- gdb-6.8-bz377541-vla.patch	14 Dec 2008 14:05:17 -0000	1.4
+++ gdb-6.8-bz377541-vla.patch	11 Feb 2009 00:04:47 -0000	1.5
@@ -1,5 +1,104 @@
+diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
+index a6d5757..5c44b52 100644
+--- a/gdb/ada-lang.c
++++ b/gdb/ada-lang.c
+@@ -1666,8 +1666,8 @@ ada_type_of_array (struct value *arr, int bounds)
+         return NULL;
+       while (arity > 0)
+         {
+-          struct type *range_type = alloc_type (objf);
+-          struct type *array_type = alloc_type (objf);
++          struct type *range_type = alloc_type (objf, NULL);
++          struct type *array_type = alloc_type (objf, NULL);
+           struct value *low = desc_one_bound (descriptor, arity, 0);
+           struct value *high = desc_one_bound (descriptor, arity, 1);
+           arity -= 1;
+@@ -1774,9 +1774,9 @@ packed_array_type (struct type *type, long *elt_bits)
+   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
+     return type;
+ 
+-  new_type = alloc_type (TYPE_OBJFILE (type));
+   new_elt_type = packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
+                                     elt_bits);
++  new_type = alloc_type (TYPE_OBJFILE (type), new_elt_type);
+   create_array_type (new_type, new_elt_type, TYPE_INDEX_TYPE (type));
+   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
+   TYPE_NAME (new_type) = ada_type_name (type);
+@@ -6790,7 +6790,7 @@ variant_field_index (struct type *type)
+ static struct type *
+ empty_record (struct objfile *objfile)
+ {
+-  struct type *type = alloc_type (objfile);
++  struct type *type = alloc_type (objfile, NULL);
+   TYPE_CODE (type) = TYPE_CODE_STRUCT;
+   TYPE_NFIELDS (type) = 0;
+   TYPE_FIELDS (type) = NULL;
+@@ -6847,7 +6847,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
+         nfields++;
+     }
+ 
+-  rtype = alloc_type (TYPE_OBJFILE (type));
++  rtype = alloc_type (TYPE_OBJFILE (type), NULL);
+   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
+   INIT_CPLUS_SPECIFIC (rtype);
+   TYPE_NFIELDS (rtype) = nfields;
+@@ -7034,7 +7034,8 @@ template_to_static_fixed_type (struct type *type0)
+         new_type = static_unwrap_type (field_type);
+       if (type == type0 && new_type != field_type)
+         {
+-          TYPE_TARGET_TYPE (type0) = type = alloc_type (TYPE_OBJFILE (type0));
++          TYPE_TARGET_TYPE (type0) = type = alloc_type (TYPE_OBJFILE (type0),
++							NULL);
+           TYPE_CODE (type) = TYPE_CODE (type0);
+           INIT_CPLUS_SPECIFIC (type);
+           TYPE_NFIELDS (type) = nfields;
+@@ -7079,7 +7080,7 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
+   else
+     dval = dval0;
+ 
+-  rtype = alloc_type (TYPE_OBJFILE (type));
++  rtype = alloc_type (TYPE_OBJFILE (type), NULL);
+   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
+   INIT_CPLUS_SPECIFIC (rtype);
+   TYPE_NFIELDS (rtype) = nfields;
+@@ -7251,7 +7252,7 @@ to_fixed_array_type (struct type *type0, struct value *dval,
+       if (elt_type0 == elt_type)
+         result = type0;
+       else
+-        result = create_array_type (alloc_type (TYPE_OBJFILE (type0)),
++        result = create_array_type (alloc_type (TYPE_OBJFILE (type0), NULL),
+                                     elt_type, TYPE_INDEX_TYPE (type0));
+     }
+   else
+@@ -7281,7 +7282,7 @@ to_fixed_array_type (struct type *type0, struct value *dval,
+           struct type *range_type =
+             to_fixed_range_type (TYPE_FIELD_NAME (index_type_desc, i),
+                                  dval, TYPE_OBJFILE (type0));
+-          result = create_array_type (alloc_type (TYPE_OBJFILE (type0)),
++          result = create_array_type (alloc_type (TYPE_OBJFILE (type0), NULL),
+                                       result, range_type);
+         }
+       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
+@@ -9546,7 +9547,7 @@ to_fixed_range_type (char *name, struct value *dval, struct objfile *objfile)
+       if (L < INT_MIN || U > INT_MAX)
+ 	return raw_type;
+       else
+-	return create_range_type (alloc_type (objfile), raw_type, 
++	return create_range_type (alloc_type (objfile, NULL), raw_type, 
+ 				  discrete_type_low_bound (raw_type),
+ 				  discrete_type_high_bound (raw_type));
+     }
+@@ -9611,7 +9612,7 @@ to_fixed_range_type (char *name, struct value *dval, struct objfile *objfile)
+ 
+       if (objfile == NULL)
+         objfile = TYPE_OBJFILE (base_type);
+-      type = create_range_type (alloc_type (objfile), base_type, L, U);
++      type = create_range_type (alloc_type (objfile, NULL), base_type, L, U);
+       TYPE_NAME (type) = name;
+       return type;
+     }
 diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
-index b18e437..7095e46 100644
+index 0929516..2aaf9ad 100644
 --- a/gdb/c-typeprint.c
 +++ b/gdb/c-typeprint.c
 @@ -559,7 +559,12 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
@@ -16,11 +115,24 @@
  	&& !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
  	fprintf_filtered (stream, "%d",
  			  (TYPE_LENGTH (type)
+diff --git a/gdb/coffread.c b/gdb/coffread.c
+index 6059d68..6a24c2c 100644
+--- a/gdb/coffread.c
++++ b/gdb/coffread.c
+@@ -346,7 +346,7 @@ coff_alloc_type (int index)
+      We will fill it in later if we find out how.  */
+   if (type == NULL)
+     {
+-      type = alloc_type (current_objfile);
++      type = alloc_type (current_objfile, NULL);
+       *type_addr = type;
+     }
+   return type;
 diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c
-index 707c0de..9b4c726 100644
+index 75a4ec7..aa8ab33 100644
 --- a/gdb/dwarf2expr.c
 +++ b/gdb/dwarf2expr.c
-@@ -738,6 +738,13 @@ execute_stack_op (struct dwarf_expr_context *ctx,
+@@ -752,6 +752,13 @@ execute_stack_op (struct dwarf_expr_context *ctx,
  	  ctx->initialized = 0;
  	  goto no_push;
  
@@ -35,7 +147,7 @@
  	  error (_("Unhandled dwarf expression opcode 0x%x"), op);
  	}
 diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h
-index 5d9581c..b79f811 100644
+index 7047922..a287b6f 100644
 --- a/gdb/dwarf2expr.h
 +++ b/gdb/dwarf2expr.h
 @@ -67,10 +67,10 @@ struct dwarf_expr_context
@@ -51,7 +163,7 @@
    /* The current depth of dwarf expression recursion, via DW_OP_call*,
       DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
 diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 080cd06..a70b2fc 100644
+index cad3db8..65751a4 100644
 --- a/gdb/dwarf2loc.c
 +++ b/gdb/dwarf2loc.c
 @@ -107,6 +107,9 @@ struct dwarf_expr_baton
@@ -226,9 +338,9 @@
  /* Evaluate a location description, starting at DATA and with length
     SIZE, to find the current location of variable VAR in the context
     of FRAME.  */
-@@ -201,8 +327,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -200,8 +326,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+ 			  struct dwarf2_per_cu_data *per_cu)
  {
-   struct gdbarch *arch = get_frame_arch (frame);
    struct value *retval;
 -  struct dwarf_expr_baton baton;
    struct dwarf_expr_context *ctx;
@@ -236,7 +348,7 @@
  
    if (size == 0)
      {
-@@ -212,19 +338,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -211,19 +337,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
        return retval;
      }
  
@@ -257,7 +369,7 @@
    if (ctx->num_pieces > 0)
      {
        int i;
-@@ -262,6 +377,10 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -261,6 +376,10 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
      {
        CORE_ADDR address = dwarf_expr_fetch (ctx, 0);
  
@@ -268,7 +380,7 @@
        retval = allocate_value (SYMBOL_TYPE (var));
        VALUE_LVAL (retval) = lval_memory;
        set_value_lazy (retval, 1);
-@@ -270,7 +389,7 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -269,7 +388,7 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
  
    set_value_initialized (retval, ctx->initialized);
  
@@ -277,7 +389,7 @@
  
[...4086 lines suppressed...]
-@@ -1094,8 +1149,12 @@ value_coerce_array (struct value *arg1)
+@@ -1154,8 +1221,12 @@ value_coerce_array (struct value *arg1)
    if (VALUE_LVAL (arg1) != lval_memory)
      error (_("Attempt to take address of value not located in memory."));
  
@@ -3660,11 +4877,170 @@
  }
  
  /* Given a value which is a function, return a value which is a pointer
+@@ -2989,8 +3060,6 @@ value_slice (struct value *array, int lowbound, int length)
+       || lowbound + length - 1 > upperbound)
+     error (_("slice out of range"));
+ 
+-  /* FIXME-type-allocation: need a way to free this type when we are
+-     done with it.  */
+   slice_range_type = create_range_type ((struct type *) NULL,
+ 					TYPE_TARGET_TYPE (range_type),
+ 					lowbound, 
+diff --git a/gdb/value.c b/gdb/value.c
+index 4d4329e..47739c9 100644
+--- a/gdb/value.c
++++ b/gdb/value.c
+@@ -225,7 +225,9 @@ allocate_value_lazy (struct type *type)
+   val->next = all_values;
+   all_values = val;
+   val->type = type;
++  type_incref (type);
+   val->enclosing_type = type;
++  type_incref (type);
+   VALUE_LVAL (val) = not_lval;
+   VALUE_ADDRESS (val) = 0;
+   VALUE_FRAME_ID (val) = null_frame_id;
+@@ -269,13 +271,9 @@ struct value *
+ allocate_repeat_value (struct type *type, int count)
+ {
+   int low_bound = current_language->string_lower_bound;		/* ??? */
+-  /* FIXME-type-allocation: need a way to free this type when we are
+-     done with it.  */
+   struct type *range_type
+   = create_range_type ((struct type *) NULL, builtin_type_int32,
+ 		       low_bound, count + low_bound - 1);
+-  /* FIXME-type-allocation: need a way to free this type when we are
+-     done with it.  */
+   return allocate_value (create_array_type ((struct type *) NULL,
+ 					    type, range_type));
+ }
+@@ -335,6 +333,8 @@ value_type (struct value *value)
+ void
+ deprecated_set_value_type (struct value *value, struct type *type)
+ {
++  type_incref (type);
++  type_decref (value->type);
+   value->type = type;
+ }
+ 
+@@ -552,6 +552,9 @@ value_free (struct value *val)
+ {
+   if (val)
+     {
++      type_decref (val->type);
++      type_decref (val->enclosing_type);
++
+       if (VALUE_LVAL (val) == lval_computed)
+ 	{
+ 	  struct lval_funcs *funcs = val->location.computed.funcs;
+@@ -655,6 +658,8 @@ value_copy (struct value *arg)
+     val = allocate_value_lazy (encl_type);
+   else
+     val = allocate_value (encl_type);
++  type_incref (arg->type);
++  type_decref (val->type);
+   val->type = arg->type;
+   VALUE_LVAL (val) = VALUE_LVAL (arg);
+   val->location = arg->location;
+@@ -693,6 +698,7 @@ set_value_component_location (struct value *component, struct value *whole)
+     VALUE_LVAL (component) = VALUE_LVAL (whole);
+ 
+   component->location = whole->location;
++
+   if (VALUE_LVAL (whole) == lval_computed)
+     {
+       struct lval_funcs *funcs = whole->location.computed.funcs;
+@@ -700,6 +706,8 @@ set_value_component_location (struct value *component, struct value *whole)
+       if (funcs->copy_closure)
+         component->location.computed.closure = funcs->copy_closure (whole);
+     }
++
++  object_address_get_data (value_type (whole), &VALUE_ADDRESS (component));
+ }
+ 
+ 
+@@ -830,6 +838,25 @@ show_values (char *num_exp, int from_tty)
+       num_exp[1] = '\0';
+     }
+ }
++
++/* Sanity check for memory leaks and proper types reference counting.  */
++
++static void
++value_history_cleanup (void *unused)
++{
++  while (value_history_chain)
++    {
++      struct value_history_chunk *chunk = value_history_chain;
++      int i;
++
++      for (i = 0; i < ARRAY_SIZE (chunk->values); i++)
++      	value_free (chunk->values[i]);
++
++      value_history_chain = chunk->next;
++      xfree (chunk);
++    }
++  value_history_count = 0;
++}
+ 
+ /* Internal variables.  These are variables within the debugger
+    that hold values assigned by debugger commands.
+@@ -1067,12 +1094,21 @@ preserve_one_value (struct value *value, struct objfile *objfile,
+ 		    htab_t copied_types)
+ {
+   if (TYPE_OBJFILE (value->type) == objfile)
+-    value->type = copy_type_recursive (objfile, value->type, copied_types);
++    {
++      /* No need to decref the old type here, since we know it has no
++	 reference count.  */
++      value->type = copy_type_recursive (value->type, copied_types);
++      type_incref (value->type);
++    }
+ 
+   if (TYPE_OBJFILE (value->enclosing_type) == objfile)
+-    value->enclosing_type = copy_type_recursive (objfile,
+-						 value->enclosing_type,
+-						 copied_types);
++    {
++      /* No need to decref the old type here, since we know it has no
++	 reference count.  */
++      value->enclosing_type = copy_type_recursive (value->enclosing_type,
++						   copied_types);
++      type_incref (value->enclosing_type);
++    }
+ }
+ 
+ /* Update the internal variables and value history when OBJFILE is
+@@ -1461,6 +1497,8 @@ value_static_field (struct type *type, int fieldno)
+ struct value *
+ value_change_enclosing_type (struct value *val, struct type *new_encl_type)
+ {
++  type_incref (new_encl_type);
++  type_decref (val->enclosing_type);
+   if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val))) 
+     val->contents =
+       (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
+@@ -1516,6 +1554,8 @@ value_primitive_field (struct value *arg1, int offset,
+ 	  memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
+ 		  TYPE_LENGTH (value_enclosing_type (arg1)));
+ 	}
++      type_incref (type);
++      type_decref (v->type);
+       v->type = type;
+       v->offset = value_offset (arg1);
+       v->embedded_offset = (offset + value_embedded_offset (arg1)
+@@ -1944,4 +1984,6 @@ init-if-undefined VARIABLE = EXPRESSION\n\
+ Set an internal VARIABLE to the result of the EXPRESSION if it does not\n\
+ exist or does not contain a value.  The EXPRESSION is not evaluated if the\n\
+ VARIABLE is already initialized."));
++
++  make_final_cleanup (value_history_cleanup, NULL);
+ }
 diff --git a/gdb/value.h b/gdb/value.h
-index a882004..f6aece1 100644
+index aa43365..ad5306a 100644
 --- a/gdb/value.h
 +++ b/gdb/value.h
-@@ -286,6 +286,10 @@ extern struct value *value_from_decfloat (struct type *type,
+@@ -348,6 +348,10 @@ extern struct value *value_from_decfloat (struct type *type,
  					  const gdb_byte *decbytes);
  extern struct value *value_from_string (char *string);
  
@@ -3675,20 +5051,7 @@
  extern struct value *value_at (struct type *type, CORE_ADDR addr);
  extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
  
-@@ -557,9 +561,9 @@ extern int val_print_string (CORE_ADDR addr, int len, int width,
- 			     struct ui_file *stream,
- 			     const struct value_print_options *options);
- 
--extern void print_variable_value (struct symbol *var,
--				  struct frame_info *frame,
--				  struct ui_file *stream);
-+extern void print_variable_value_nl (struct symbol *var,
-+				     struct frame_info *frame,
-+				     struct ui_file *stream);
- 
- extern int check_field (struct type *, const char *);
- 
-@@ -590,5 +594,7 @@ extern struct value *value_allocate_space_in_inferior (int);
+@@ -658,5 +662,7 @@ extern struct value *value_allocate_space_in_inferior (int);
  
  extern struct value *value_of_local (const char *name, int complain);
  

gdb-6.8-bz466901-backtrace-full-prelinked.patch:

Index: gdb-6.8-bz466901-backtrace-full-prelinked.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-bz466901-backtrace-full-prelinked.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gdb-6.8-bz466901-backtrace-full-prelinked.patch	14 Dec 2008 14:05:18 -0000	1.3
+++ gdb-6.8-bz466901-backtrace-full-prelinked.patch	11 Feb 2009 00:04:48 -0000	1.4
@@ -121,7 +121,7 @@
 +# No locals.
 +
 +# `abort' can get expressed as `*__GI_abort'.
-+gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\ti = -?\[0-9\].*in main \\(.*" "Backtrace after abort()"
++gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\r\n\[\t \]+i = -?\[0-9\].*in main \\(.*" "Backtrace after abort()"
 Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000

gdb-6.8-constant-watchpoints.patch:

Index: gdb-6.8-constant-watchpoints.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-constant-watchpoints.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- gdb-6.8-constant-watchpoints.patch	14 Dec 2008 14:05:18 -0000	1.4
+++ gdb-6.8-constant-watchpoints.patch	11 Feb 2009 00:04:48 -0000	1.5
@@ -18,11 +18,11 @@
 	gdb.base/watchpoint.c (global_ptr_ptr): New variable.
 	(func4): New testing code for GLOBAL_PTR_PTR.
 
-Index: gdb-6.8.50.20081128/gdb/breakpoint.c
+Index: gdb-6.8.50.20090209/gdb/breakpoint.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/breakpoint.c	2008-12-01 16:13:12.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/breakpoint.c	2008-12-03 00:00:08.000000000 +0100
-@@ -770,7 +770,15 @@ is_hardware_watchpoint (struct breakpoin
+--- gdb-6.8.50.20090209.orig/gdb/breakpoint.c	2009-02-09 15:39:01.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/breakpoint.c	2009-02-09 16:04:10.000000000 +0100
+@@ -769,7 +769,15 @@ is_hardware_watchpoint (struct breakpoin
     If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
     value chain.  The caller must free the values individually.  If
     VAL_CHAIN is NULL, all generated values will be left on the value
@@ -39,7 +39,7 @@
  
  static void
  fetch_watchpoint_value (struct expression *exp, struct value **valp,
-@@ -5824,7 +5832,7 @@ watch_command_1 (char *arg, int accessfl
+@@ -5862,7 +5870,7 @@ watch_command_1 (char *arg, int accessfl
    struct symtab_and_line sal;
    struct expression *exp;
    struct block *exp_valid_block;
@@ -48,7 +48,7 @@
    struct frame_info *frame;
    struct frame_info *prev_frame = NULL;
    char *exp_start = NULL;
-@@ -5910,6 +5918,27 @@ watch_command_1 (char *arg, int accessfl
+@@ -5954,6 +5962,27 @@ watch_command_1 (char *arg, int accessfl
    exp_valid_block = innermost_block;
    mark = value_mark ();
    fetch_watchpoint_value (exp, &val, NULL, NULL);
@@ -76,10 +76,10 @@
    if (val != NULL)
      release_value (val);
  
-Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
+Index: gdb-6.8.50.20090209/gdb/gdbtypes.h
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/gdbtypes.h	2008-12-02 22:53:14.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/gdbtypes.h	2008-12-03 00:00:08.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/gdbtypes.h	2009-02-09 15:51:57.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/gdbtypes.h	2009-02-09 16:04:10.000000000 +0100
 @@ -70,7 +70,22 @@ enum type_code
      TYPE_CODE_UNION,		/* C union or Pascal variant part */
      TYPE_CODE_ENUM,		/* Enumeration type */
@@ -104,11 +104,11 @@
      TYPE_CODE_INT,		/* Integer type */
  
      /* Floating type.  This is *NOT* a complex type.  Beware, there are parts
-Index: gdb-6.8.50.20081128/gdb/doc/gdb.texinfo
+Index: gdb-6.8.50.20090209/gdb/doc/gdb.texinfo
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/doc/gdb.texinfo	2008-12-02 23:43:49.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/doc/gdb.texinfo	2008-12-03 00:00:08.000000000 +0100
-@@ -3479,6 +3479,18 @@ This command prints a list of watchpoint
+--- gdb-6.8.50.20090209.orig/gdb/doc/gdb.texinfo	2009-02-09 16:02:42.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/doc/gdb.texinfo	2009-02-09 16:04:10.000000000 +0100
+@@ -3480,6 +3480,18 @@ This command prints a list of watchpoint
  it is the same as @code{info break} (@pxref{Set Breaks}).
  @end table
  
@@ -127,10 +127,10 @@
  @value{GDBN} sets a @dfn{hardware watchpoint} if possible.  Hardware
  watchpoints execute very quickly, and the debugger reports a change in
  value at the exact instruction where the change occurs.  If @value{GDBN}
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.c
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.base/watchpoint.c	2008-03-03 14:24:12.000000000 +0100
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.c	2008-12-03 00:00:08.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.base/watchpoint.c	2008-03-03 14:24:12.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.c	2009-02-09 16:04:10.000000000 +0100
 @@ -40,6 +40,7 @@ struct foo struct1, struct2, *ptr1, *ptr
  int doread = 0;
  
@@ -150,10 +150,10 @@
  }
  
  int main ()
-Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.exp
 ===================================================================
---- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.base/watchpoint.exp	2008-08-06 14:52:07.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp	2008-12-03 00:01:07.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.base/watchpoint.exp	2009-01-03 06:58:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.exp	2009-02-09 16:05:03.000000000 +0100
 @@ -641,7 +641,21 @@ proc test_watchpoint_and_breakpoint {} {
  	}
      }
@@ -177,9 +177,9 @@
  proc test_inaccessible_watchpoint {} {
      global gdb_prompt
  
-@@ -650,7 +664,8 @@ proc test_inaccessible_watchpoint {} {
+@@ -662,7 +676,8 @@ proc test_inaccessible_watchpoint {} {
+ 	}
  
-     if [runto func4] then {
  	gdb_test "watch *global_ptr" ".*atchpoint \[0-9\]+: \\*global_ptr"
 -	gdb_test "next" ".*global_ptr = buf.*"
 +	gdb_test "set \$global_ptr_breakpoint_number = \$bpnum" ""
@@ -187,7 +187,7 @@
  	gdb_test_multiple "next" "next over ptr init" {
  	    -re ".*atchpoint \[0-9\]+: \\*global_ptr\r\n\r\nOld value = .*\r\nNew value = 3 .*\r\n.*$gdb_prompt $" {
  		# We can not test for <unknown> here because NULL may be readable.
-@@ -663,6 +678,28 @@ proc test_inaccessible_watchpoint {} {
+@@ -675,6 +690,28 @@ proc test_inaccessible_watchpoint {} {
  		pass "next over buffer set"
  	    }
  	}
@@ -216,7 +216,7 @@
      }
  }
      
-@@ -830,6 +867,17 @@ if [initialize] then {
+@@ -842,6 +879,17 @@ if [initialize] then {
      }
  
      test_watchpoint_and_breakpoint

gdb-6.8-inlining-addon.patch:

Index: gdb-6.8-inlining-addon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-6.8-inlining-addon.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- gdb-6.8-inlining-addon.patch	9 Feb 2009 12:35:37 -0000	1.2
+++ gdb-6.8-inlining-addon.patch	11 Feb 2009 00:04:48 -0000	1.3
@@ -1,3 +1,10 @@
+infcall.c <unwind_on_signal_p>:
+Revert the change of: gdb-6.8-inlining.patch
+causing: FAIL: gdb.base/unwindonsignal.exp: unwindonsignal, stack unwound
+
+resume() -> target_resume() move of clear_inline_frame_state() is for:
+gdb.mi/mi-nsmoribund.exp
+
 Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-bt.c
 ===================================================================
 --- gdb-6.8.50.20081214.orig/gdb/testsuite/gdb.opt/inline-bt.c	2009-02-09 13:28:48.000000000 +0100
@@ -597,6 +604,15 @@
 ===================================================================
 --- gdb-6.8.50.20081214.orig/gdb/infrun.c	2009-02-09 13:29:51.000000000 +0100
 +++ gdb-6.8.50.20081214/gdb/infrun.c	2009-02-09 13:30:16.000000000 +0100
+@@ -1147,8 +1150,6 @@ a command like `return' or `jump' to con
+ 	    step = 0;
+ 	}
+ 
+-      clear_inline_frame_state (resume_ptid);
+-
+       if (debug_displaced
+           && use_displaced_stepping (gdbarch)
+           && tp->trap_expected)
 @@ -1201,6 +1201,8 @@ clear_proceed_status_thread (struct thre
  
    /* Discard any remaining commands or status from previous stop.  */
@@ -606,6 +622,24 @@
  }
  
  static int
+--- ./gdb/target.c	2009-02-10 23:45:59.000000000 +0100
++++ ./gdb/target.c	2009-02-10 23:43:29.000000000 +0100
+@@ -41,6 +41,7 @@
+ #include "target-descriptions.h"
+ #include "gdbthread.h"
+ #include "solib.h"
++#include "inline-frame.h"
+ 
+ static void target_info (char *, int);
+ 
+@@ -1938,6 +1939,7 @@ target_pid_to_str (ptid_t ptid)
+ void
+ target_resume (ptid_t ptid, int step, enum target_signal signal)
+ {
++  clear_inline_frame_state (ptid);
+   dcache_invalidate (target_dcache);
+   (*current_target.to_resume) (ptid, step, signal);
+   set_executing (ptid, 1);
 Index: gdb-6.8.50.20081214/gdb/inline-frame.h
 ===================================================================
 --- gdb-6.8.50.20081214.orig/gdb/inline-frame.h	2009-02-09 13:28:48.000000000 +0100
@@ -621,3 +655,23 @@
  /* Return the number of hidden functions inlined into the current
     frame.  */
  
+--- gdb-6.8.50.20090209/gdb/infcall.c	2009-02-10 00:16:10.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/infcall.c-removed	2009-02-10 00:15:58.000000000 +0100
+@@ -841,8 +841,15 @@ When the function is done executing, GDB
+ 
+ 	  if (unwind_on_signal_p)
+ 	    {
+-	      /* The user wants the context restored.  Calling error will
+-	         run inf_status_cleanup, which does all the work.  */
++	      /* The user wants the context restored. */
++
++	      /* We must get back to the frame we were before the
++		 dummy call.  */
++	      dummy_frame_pop (dummy_id);
++
++	      /* We also need to restore inferior status to that before the
++		 dummy call.  */
++	      restore_inferior_status (inf_status);
+ 
+ 	      /* FIXME: Insert a bunch of wrap_here; name can be very
+ 		 long if it's a C++ name with arguments and stuff.  */

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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- gdb-6.8-inlining.patch	14 Dec 2008 14:43:40 -0000	1.6
+++ gdb-6.8-inlining.patch	11 Feb 2009 00:04:48 -0000	1.7
@@ -5,24 +5,26 @@
 
 Removed dwarf_expr_frame_base NULL check duplicity with *-vla.patch.
 
-Index: gdb-6.8.50.20081214/gdb/NEWS
+Index: gdb-6.8.50.20090209/gdb/NEWS
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/NEWS	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/NEWS	2008-12-14 15:31:03.000000000 +0100
-@@ -26,6 +26,9 @@ completions will be "f1" and "f2".
- operators when expanding macros.  It also supports variable-arity
- macros.
+--- gdb-6.8.50.20090209.orig/gdb/NEWS	2009-02-07 16:00:57.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/NEWS	2009-02-09 16:06:54.000000000 +0100
+@@ -1,6 +1,11 @@
+ 		What has changed in GDB?
+ 	     (Organized release by release)
  
++*** Fedora changes
++
 +* Inlined functions are now supported.  They show up in backtraces, and
 +the "step", "next", and "finish" commands handle them automatically.
 +
- * New remote packets
+ *** Changes since GDB 6.8
  
- qSearch:memory:
-Index: gdb-6.8.50.20081214/gdb/block.c
+ * GDB now supports automatic retrieval of shared library files from
+Index: gdb-6.8.50.20090209/gdb/block.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/block.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/block.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/block.c	2009-01-03 06:57:50.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/block.c	2009-02-09 16:06:00.000000000 +0100
 @@ -47,8 +47,16 @@ contained_in (const struct block *a, con
  {
    if (!a || !b)
@@ -65,10 +67,10 @@
  /* Return the blockvector immediately containing the innermost lexical
     block containing the specified pc value and section, or 0 if there
     is none.  PBLOCK is a pointer to the block.  If PBLOCK is NULL, we
-Index: gdb-6.8.50.20081214/gdb/block.h
+Index: gdb-6.8.50.20090209/gdb/block.h
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/block.h	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/block.h	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/block.h	2009-01-03 06:57:50.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/block.h	2009-02-09 16:06:00.000000000 +0100
 @@ -65,7 +65,7 @@ struct block
    CORE_ADDR endaddr;
  
@@ -87,10 +89,10 @@
  extern int contained_in (const struct block *, const struct block *);
  
  extern struct blockvector *blockvector_for_pc (CORE_ADDR, struct block **);
-Index: gdb-6.8.50.20081214/gdb/blockframe.c
+Index: gdb-6.8.50.20090209/gdb/blockframe.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/blockframe.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/blockframe.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/blockframe.c	2009-01-03 06:57:50.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/blockframe.c	2009-02-09 16:06:00.000000000 +0100
 @@ -36,6 +36,7 @@
  #include "command.h"
  #include "gdbcmd.h"
@@ -159,11 +161,11 @@
  	return frame;
  
        frame = get_prev_frame (frame);
-Index: gdb-6.8.50.20081214/gdb/breakpoint.c
+Index: gdb-6.8.50.20090209/gdb/breakpoint.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/breakpoint.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/breakpoint.c	2008-12-14 15:31:03.000000000 +0100
-@@ -2572,19 +2572,21 @@ watchpoint_check (void *p)
+--- gdb-6.8.50.20090209.orig/gdb/breakpoint.c	2009-02-09 16:04:10.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/breakpoint.c	2009-02-09 16:06:00.000000000 +0100
+@@ -2615,19 +2615,21 @@ watchpoint_check (void *p)
      within_current_scope = 1;
    else
      {
@@ -193,7 +195,7 @@
  
        /* in_function_epilogue_p() returns a non-zero value if we're still
  	 in the function but the stack frame has already been invalidated.
-@@ -2596,10 +2598,9 @@ watchpoint_check (void *p)
+@@ -2639,10 +2641,9 @@ watchpoint_check (void *p)
  	 that the watchpoint frame couldn't be found by frame_find_by_id()
  	 because the current PC is currently in an epilogue.  Calling
  	 gdbarch_in_function_epilogue_p() also when fr == NULL fixes that. */
@@ -206,7 +208,7 @@
  	/* If we end up stopping, the current frame will get selected
  	   in normal_stop.  So this call to select_frame won't affect
  	   the user.  */
-@@ -2833,7 +2834,7 @@ bpstat_check_breakpoint_conditions (bpst
+@@ -2876,7 +2877,7 @@ bpstat_check_breakpoint_conditions (bpst
    struct breakpoint *b = bl->owner;
  
    if (frame_id_p (b->frame_id)
@@ -215,7 +217,7 @@
      bs->stop = 0;
    else if (bs->stop)
      {
-@@ -2848,8 +2849,12 @@ bpstat_check_breakpoint_conditions (bpst
+@@ -2891,8 +2892,12 @@ bpstat_check_breakpoint_conditions (bpst
        
        if (bl->cond && bl->owner->disposition != disp_del_at_next_stop)
  	{
@@ -230,7 +232,7 @@
  	  select_frame (get_current_frame ());
  	  value_is_zero
  	    = catch_errors (breakpoint_cond_eval, (bl->cond),
-@@ -4820,6 +4825,11 @@ set_momentary_breakpoint (struct symtab_
+@@ -4862,6 +4867,11 @@ set_momentary_breakpoint (struct symtab_
  			  enum bptype type)
  {
    struct breakpoint *b;
@@ -242,7 +244,7 @@
    b = set_raw_breakpoint (sal, type);
    b->enable_state = bp_enabled;
    b->disposition = disp_donttouch;
-@@ -5832,7 +5842,6 @@ watch_command_1 (char *arg, int accessfl
+@@ -5872,7 +5882,6 @@ watch_command_1 (char *arg, int accessfl
    struct block *exp_valid_block;
    struct value *val, *mark, *val_chain;
    struct frame_info *frame;
@@ -250,7 +252,7 @@
    char *exp_start = NULL;
    char *exp_end = NULL;
    char *tok, *id_tok_start, *end_tok;
-@@ -5987,34 +5996,34 @@ watch_command_1 (char *arg, int accessfl
+@@ -6033,34 +6042,34 @@ watch_command_1 (char *arg, int accessfl
      bp_type = bp_watchpoint;
  
    frame = block_innermost_frame (exp_valid_block);
@@ -303,7 +305,7 @@
      }
  
    /* Now set up the breakpoint.  */
-@@ -6195,7 +6204,6 @@ until_break_command (char *arg, int from
+@@ -6241,7 +6250,6 @@ until_break_command (char *arg, int from
    struct symtabs_and_lines sals;
    struct symtab_and_line sal;
    struct frame_info *frame = get_selected_frame (NULL);
@@ -311,7 +313,7 @@
    struct breakpoint *breakpoint;
    struct breakpoint *breakpoint2 = NULL;
    struct cleanup *old_chain;
-@@ -6228,20 +6236,22 @@ until_break_command (char *arg, int from
+@@ -6274,20 +6282,22 @@ until_break_command (char *arg, int from
         we don't specify a frame at which we need to stop.  */
      breakpoint = set_momentary_breakpoint (sal, null_frame_id, bp_until);
    else
@@ -340,10 +342,10 @@
  					      bp_until);
        make_cleanup_delete_breakpoint (breakpoint2);
      }
-Index: gdb-6.8.50.20081214/gdb/buildsym.c
+Index: gdb-6.8.50.20090209/gdb/buildsym.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/buildsym.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/buildsym.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/buildsym.c	2009-01-03 06:57:50.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/buildsym.c	2009-02-09 16:06:00.000000000 +0100
 @@ -1159,6 +1159,12 @@ end_symtab (CORE_ADDR end_addr, struct o
  	  struct symbol *sym;
  	  struct dict_iterator iter;
@@ -357,11 +359,11 @@
  	  for (sym = dict_iterator_first (BLOCK_DICT (block), &iter);
  	       sym != NULL;
  	       sym = dict_iterator_next (&iter))
-Index: gdb-6.8.50.20081214/gdb/doc/gdb.texinfo
+Index: gdb-6.8.50.20090209/gdb/doc/gdb.texinfo
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/doc/gdb.texinfo	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/doc/gdb.texinfo	2008-12-14 15:31:03.000000000 +0100
-@@ -147,6 +147,7 @@ software in general.  We will miss him.
+--- gdb-6.8.50.20090209.orig/gdb/doc/gdb.texinfo	2009-02-09 16:04:10.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/doc/gdb.texinfo	2009-02-09 16:06:00.000000000 +0100
+@@ -137,6 +137,7 @@ software in general.  We will miss him.
  * Stack::                       Examining the stack
  * Source::                      Examining source files
  * Data::                        Examining data
@@ -369,7 +371,7 @@
  * Macros::                      Preprocessor Macros
  * Tracepoints::                 Debugging remote targets non-intrusively
  * Overlays::                    Debugging programs that use overlays
-@@ -1813,7 +1814,7 @@ To request debugging information, specif
+@@ -1812,7 +1813,7 @@ To request debugging information, specif
  the compiler.
  
  Programs that are to be shipped to your customers are compiled with
@@ -378,7 +380,7 @@
  compilers are unable to handle the @samp{-g} and @samp{-O} options
  together.  Using those compilers, you cannot generate optimized
  executables containing debugging information.
-@@ -1822,22 +1823,7 @@ executables containing debugging informa
+@@ -1821,22 +1822,7 @@ executables containing debugging informa
  without @samp{-O}, making it possible to debug optimized code.  We
  recommend that you @emph{always} use @samp{-g} whenever you compile a
  program.  You may think your program is correct, but there is no sense
@@ -402,7 +404,7 @@
  
  Older versions of the @sc{gnu} C compiler permitted a variant option
  @w{@samp{-gg}} for debugging information.  @value{GDBN} no longer supports this
-@@ -8271,6 +8257,107 @@ $1 = 1
+@@ -8297,6 +8283,107 @@ $1 = 1
  $2 = (void *) 0x8049560
  @end smallexample
  
@@ -510,10 +512,10 @@
  @node Macros
  @chapter C Preprocessor Macros
  
-Index: gdb-6.8.50.20081214/gdb/dwarf2loc.c
+Index: gdb-6.8.50.20090209/gdb/dwarf2loc.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/dwarf2loc.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/dwarf2loc.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/dwarf2loc.c	2009-02-09 15:38:54.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/dwarf2loc.c	2009-02-09 16:06:00.000000000 +0100
 @@ -31,6 +31,7 @@
  #include "regcache.h"
  #include "objfiles.h"
@@ -534,11 +536,11 @@
  
    /* If we found a frame-relative symbol then it was certainly within
       some function associated with a frame. If we can't find the frame,
-Index: gdb-6.8.50.20081214/gdb/dwarf2read.c
+Index: gdb-6.8.50.20090209/gdb/dwarf2read.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/dwarf2read.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/dwarf2read.c	2008-12-14 15:31:03.000000000 +0100
-@@ -45,6 +45,7 @@
+--- gdb-6.8.50.20090209.orig/gdb/dwarf2read.c	2009-02-09 16:03:46.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/dwarf2read.c	2009-02-09 16:06:00.000000000 +0100
+@@ -46,6 +46,7 @@
  #include "hashtab.h"
  #include "command.h"
  #include "gdbcmd.h"
@@ -546,7 +548,7 @@
  #include "addrmap.h"
  #include "top.h"
  
-@@ -2787,12 +2788,8 @@ process_die (struct die_info *die, struc
+@@ -2788,12 +2789,8 @@ process_die (struct die_info *die, struc
        read_file_scope (die, cu);
        break;
      case DW_TAG_subprogram:
@@ -560,7 +562,7 @@
        break;
      case DW_TAG_lexical_block:
      case DW_TAG_try_block:
-@@ -3055,10 +3052,25 @@ read_func_scope (struct die_info *die, s
+@@ -3056,10 +3053,25 @@ read_func_scope (struct die_info *die, s
    CORE_ADDR lowpc;
    CORE_ADDR highpc;
    struct die_info *child_die;
@@ -587,7 +589,7 @@
  
    baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
  
-@@ -6942,6 +6954,9 @@ die_specification (struct die_info *die,
+@@ -6949,6 +6961,9 @@ die_specification (struct die_info *die,
  					     *spec_cu);
  
    if (spec_attr == NULL)
@@ -597,7 +599,7 @@
      return NULL;
    else
      return follow_die_ref (die, spec_attr, spec_cu);
-@@ -7625,6 +7640,7 @@ new_symbol (struct die_info *die, struct
+@@ -7632,6 +7647,7 @@ new_symbol (struct die_info *die, struct
    struct attribute *attr = NULL;
    struct attribute *attr2 = NULL;
    CORE_ADDR baseaddr;
@@ -605,7 +607,7 @@
  
    baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
  
-@@ -7654,13 +7670,17 @@ new_symbol (struct die_info *die, struct
+@@ -7661,13 +7677,17 @@ new_symbol (struct die_info *die, struct
  	SYMBOL_TYPE (sym) = type;
        else
  	SYMBOL_TYPE (sym) = die_type (die, cu);
@@ -625,7 +627,7 @@
        if (attr)
  	{
  	  int file_index = DW_UNSND (attr);
-@@ -7707,6 +7727,14 @@ new_symbol (struct die_info *die, struct
+@@ -7714,6 +7734,14 @@ new_symbol (struct die_info *die, struct
  	      add_symbol_to_list (sym, cu->list_in_scope);
  	    }
  	  break;
@@ -640,7 +642,7 @@
  	case DW_TAG_variable:
  	  /* Compilation with minimal debug info may result in variables
  	     with missing type entries. Change the misleading `void' type
-@@ -7754,7 +7782,14 @@ new_symbol (struct die_info *die, struct
+@@ -7761,7 +7789,14 @@ new_symbol (struct die_info *die, struct
  	    }
  	  break;
  	case DW_TAG_formal_parameter:
@@ -656,10 +658,10 @@
  	  attr = dwarf2_attr (die, DW_AT_location, cu);
  	  if (attr)
  	    {
-Index: gdb-6.8.50.20081214/gdb/frame-unwind.c
+Index: gdb-6.8.50.20090209/gdb/frame-unwind.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/frame-unwind.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/frame-unwind.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/frame-unwind.c	2009-01-03 06:57:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/frame-unwind.c	2009-02-09 16:06:00.000000000 +0100
 @@ -21,6 +21,7 @@
  #include "frame.h"
  #include "frame-unwind.h"
@@ -680,10 +682,10 @@
    return table;
  }
  
-Index: gdb-6.8.50.20081214/gdb/frame.c
+Index: gdb-6.8.50.20090209/gdb/frame.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/frame.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/frame.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/frame.c	2009-02-09 15:48:46.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/frame.c	2009-02-09 16:06:00.000000000 +0100
 @@ -41,8 +41,14 @@
  #include "objfiles.h"
  #include "exceptions.h"
@@ -868,7 +870,7 @@
  get_frame_func (struct frame_info *this_frame)
  {
    struct frame_info *next_frame = this_frame->next;
-@@ -1217,7 +1290,6 @@ frame_register_unwind_location (struct f
+@@ -1226,7 +1299,6 @@ frame_register_unwind_location (struct f
  static struct frame_info *
  get_prev_frame_1 (struct frame_info *this_frame)
  {
@@ -876,7 +878,7 @@
    struct frame_id this_id;
    struct gdbarch *gdbarch;
  
-@@ -1257,6 +1329,14 @@ get_prev_frame_1 (struct frame_info *thi
+@@ -1266,6 +1338,14 @@ get_prev_frame_1 (struct frame_info *thi
    this_frame->prev_p = 1;
    this_frame->stop_reason = UNWIND_NO_REASON;
  
@@ -891,7 +893,7 @@
    /* Check that this frame's ID was valid.  If it wasn't, don't try to
       unwind to the prev frame.  Be careful to not apply this test to
       the sentinel frame.  */
-@@ -1324,7 +1404,8 @@ get_prev_frame_1 (struct frame_info *thi
+@@ -1333,7 +1413,8 @@ get_prev_frame_1 (struct frame_info *thi
    if (this_frame->level > 0
        && gdbarch_pc_regnum (gdbarch) >= 0
        && get_frame_type (this_frame) == NORMAL_FRAME
@@ -901,7 +903,7 @@
      {
        int optimized, realnum, nrealnum;
        enum lval_type lval, nlval;
-@@ -1353,6 +1434,17 @@ get_prev_frame_1 (struct frame_info *thi
+@@ -1362,6 +1443,17 @@ get_prev_frame_1 (struct frame_info *thi
  	}
      }
  
@@ -919,7 +921,7 @@
    /* Allocate the new frame but do not wire it in to the frame chain.
       Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along
       frame->next to pull some fancy tricks (of course such code is, by
-@@ -1511,7 +1603,7 @@ get_prev_frame (struct frame_info *this_
+@@ -1484,7 +1576,7 @@ get_prev_frame (struct frame_info *this_
       the main function when we created the dummy frame, the dummy frame will 
       point inside the main function.  */
    if (this_frame->level >= 0
@@ -928,7 +930,7 @@
        && !backtrace_past_main
        && inside_main_func (this_frame))
      /* Don't unwind past main().  Note, this is done _before_ the
-@@ -1556,8 +1648,9 @@ get_prev_frame (struct frame_info *this_
+@@ -1529,8 +1621,9 @@ get_prev_frame (struct frame_info *this_
       from main returns directly to the caller of main.  Since we don't
       stop at main, we should at least stop at the entry point of the
       application.  */
@@ -940,7 +942,7 @@
        && inside_entry_func (this_frame))
      {
        frame_debug_got_null_frame (this_frame, "inside entry func");
-@@ -1568,7 +1661,8 @@ get_prev_frame (struct frame_info *this_
+@@ -1541,7 +1634,8 @@ get_prev_frame (struct frame_info *this_
       like a SIGSEGV or a dummy frame, and hence that NORMAL frames
       will never unwind a zero PC.  */
    if (this_frame->level > 0
@@ -950,7 +952,7 @@
        && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME
        && get_frame_pc (this_frame) == 0)
      {
-@@ -1593,7 +1687,7 @@ CORE_ADDR
+@@ -1566,7 +1660,7 @@ CORE_ADDR
  get_frame_pc (struct frame_info *frame)
  {
    gdb_assert (frame->next != NULL);
@@ -959,7 +961,7 @@
  }
  
  /* Return an address that falls within THIS_FRAME's code block.  */
-@@ -1638,17 +1732,58 @@ get_frame_address_in_block (struct frame
+@@ -1611,17 +1705,58 @@ get_frame_address_in_block (struct frame
       We check the type of NEXT_FRAME first, since it is already
       known; frame type is determined by the unwinder, and since
       we have THIS_FRAME we've already selected an unwinder for
@@ -1022,7 +1024,7 @@
    /* If FRAME is not the innermost frame, that normally means that
       FRAME->pc points at the return instruction (which is *after* the
       call instruction), and we want to get the line containing the
-@@ -1658,15 +1793,8 @@ pc_notcurrent (struct frame_info *frame)
+@@ -1631,15 +1766,8 @@ pc_notcurrent (struct frame_info *frame)
       PC and such a PC indicates the current (rather than next)
       instruction/line, consequently, for such cases, want to get the
       line containing fi->pc.  */
@@ -1040,19 +1042,10 @@
  }
  
  /* Per "frame.h", return the ``address'' of the frame.  Code should
-@@ -1747,7 +1875,7 @@ get_frame_type (struct frame_info *frame
-   return frame->unwind->type;
- }
- 
--void
-+static void
- deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
- {
-   if (frame_debug)
-Index: gdb-6.8.50.20081214/gdb/frame.h
+Index: gdb-6.8.50.20090209/gdb/frame.h
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/frame.h	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/frame.h	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/frame.h	2009-02-05 18:28:20.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/frame.h	2009-02-09 16:06:00.000000000 +0100
 @@ -34,6 +34,9 @@
     frame_unwind_WHAT...(): Unwind THIS frame's WHAT from the NEXT
     frame.
@@ -1106,7 +1099,7 @@
    /* In a signal handler, various OSs handle this in various ways.
       The main thing is that the frame may be far from normal.  */
    SIGTRAMP_FRAME,
-@@ -340,6 +358,7 @@ extern CORE_ADDR get_frame_base (struct 
+@@ -345,6 +363,7 @@ extern CORE_ADDR get_frame_base (struct 
  
     instead, since that avoids the bug.  */
  extern struct frame_id get_frame_id (struct frame_info *fi);
@@ -1114,25 +1107,10 @@
  extern struct frame_id frame_unwind_id (struct frame_info *next_frame);
  
  /* Assuming that a frame is `normal', return its base-address, or 0 if
-@@ -660,14 +679,6 @@ extern struct frame_info *deprecated_saf
- 
- extern struct frame_info *create_new_frame (CORE_ADDR base, CORE_ADDR pc);
- 
--/* FIXME: cagney/2002-12-06: Has the PC in the current frame changed?
--   "infrun.c", Thanks to gdbarch_decr_pc_after_break, can change the PC after
--   the initial frame create.  This puts things back in sync.
--
--   This replaced: frame->pc = ....; */
--extern void deprecated_update_frame_pc_hack (struct frame_info *frame,
--					     CORE_ADDR pc);
--
- /* FIXME: cagney/2002-12-18: Has the frame's base changed?  Or to be
-    more exact, was that initial guess at the frame's base as returned
-    by the deleted read_fp() wrong?  If it was, fix it.  This shouldn't
-Index: gdb-6.8.50.20081214/gdb/gdbthread.h
+Index: gdb-6.8.50.20090209/gdb/gdbthread.h
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/gdbthread.h	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/gdbthread.h	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/gdbthread.h	2009-01-18 18:42:16.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/gdbthread.h	2009-02-09 16:06:00.000000000 +0100
 @@ -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.  */
@@ -1147,28 +1125,32 @@
    int current_line;
    struct symtab *current_symtab;
  
-Index: gdb-6.8.50.20081214/gdb/infcall.c
+Index: gdb-6.8.50.20090209/gdb/infcall.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/infcall.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/infcall.c	2008-12-14 15:31:03.000000000 +0100
-@@ -734,11 +734,8 @@ The program being debugged exited while 
+--- gdb-6.8.50.20090209.orig/gdb/infcall.c	2009-01-19 20:05:00.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/infcall.c	2009-02-09 16:08:45.000000000 +0100
+@@ -841,15 +841,8 @@ When the function is done executing, GDB
  
  	  if (unwind_on_signal_p)
  	    {
 -	      /* The user wants the context restored. */
 -
 -	      /* We must get back to the frame we were before the
--		 dummy call. */
--	      frame_pop (get_current_frame ());
+-		 dummy call.  */
+-	      dummy_frame_pop (dummy_id);
+-
+-	      /* We also need to restore inferior status to that before the
+-		 dummy call.  */
+-	      restore_inferior_status (inf_status);
 +	      /* The user wants the context restored.  Calling error will
 +	         run inf_status_cleanup, which does all the work.  */
  
  	      /* FIXME: Insert a bunch of wrap_here; name can be very
  		 long if it's a C++ name with arguments and stuff.  */
-Index: gdb-6.8.50.20081214/gdb/infcmd.c
+Index: gdb-6.8.50.20090209/gdb/infcmd.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/infcmd.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/infcmd.c	2008-12-14 15:37:04.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/infcmd.c	2009-01-26 00:35:51.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/infcmd.c	2009-02-09 16:06:00.000000000 +0100
 @@ -52,6 +52,7 @@
  #include "cli/cli-decode.h"
  #include "gdbthread.h"
@@ -1177,7 +1159,7 @@
  
  /* Functions exported for general use, in inferior.h: */
  
-@@ -722,6 +723,17 @@ Can't resume all threads and specify pro
+@@ -739,6 +740,17 @@ Can't resume all threads and specify pro
    continue_1 (all_threads);
  }
  
@@ -1195,7 +1177,7 @@
  /* Step until outside of current statement.  */
  
  static void
-@@ -899,6 +911,20 @@ step_once (int skip_subroutines, int sin
+@@ -916,6 +928,20 @@ step_once (int skip_subroutines, int sin
  	 THREAD is set.  */
        struct thread_info *tp = inferior_thread ();
        clear_proceed_status ();
@@ -1216,7 +1198,7 @@
  
        frame = get_current_frame ();
        tp->step_frame_id = get_frame_id (frame);
-@@ -1155,6 +1181,7 @@ until_next_command (int from_tty)
+@@ -1168,6 +1194,7 @@ until_next_command (int from_tty)
    clear_proceed_status ();
  
    frame = get_current_frame ();
@@ -1224,7 +1206,7 @@
  
    /* Step until either exited from this function or greater
       than the current line (if in symbolic section) or pc (if
-@@ -1182,7 +1209,6 @@ until_next_command (int from_tty)
+@@ -1195,7 +1222,6 @@ until_next_command (int from_tty)
      }
  
    tp->step_over_calls = STEP_OVER_ALL;
@@ -1232,7 +1214,7 @@
  
    tp->step_multi = 0;		/* Only one call to proceed */
  
-@@ -1515,6 +1541,37 @@ finish_command (char *arg, int from_tty)
+@@ -1528,6 +1554,37 @@ finish_command (char *arg, int from_tty)
  
    clear_proceed_status ();
  
@@ -1270,11 +1252,11 @@
    /* Find the function we will return from.  */
  
    function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));
-Index: gdb-6.8.50.20081214/gdb/inferior.h
+Index: gdb-6.8.50.20090209/gdb/inferior.h
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/inferior.h	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/inferior.h	2008-12-14 15:31:03.000000000 +0100
-@@ -249,6 +249,9 @@ extern void error_is_running (void);
+--- gdb-6.8.50.20090209.orig/gdb/inferior.h	2009-02-09 15:39:01.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/inferior.h	2009-02-09 16:06:00.000000000 +0100
+@@ -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);
  
@@ -1284,19 +1266,19 @@
  /* From infcmd.c */
  
  extern void tty_command (char *, int);
-Index: gdb-6.8.50.20081214/gdb/infrun.c
+Index: gdb-6.8.50.20090209/gdb/infrun.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/infrun.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/infrun.c	2008-12-14 15:31:03.000000000 +0100
-@@ -45,6 +45,7 @@
- #include "language.h"
- #include "solib.h"
- #include "main.h"
-+#include "inline-frame.h"
- 
+--- gdb-6.8.50.20090209.orig/gdb/infrun.c	2009-02-09 16:02:31.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/infrun.c	2009-02-09 16:09:19.000000000 +0100
+@@ -48,6 +48,7 @@
  #include "gdb_assert.h"
  #include "mi/mi-common.h"
-@@ -206,7 +207,7 @@ static unsigned char *signal_program;
+ #include "event-top.h"
++#include "inline-frame.h"
+ 
+ /* Prototypes for local functions */
+ 
+@@ -205,7 +206,7 @@ static unsigned char *signal_program;
  
  /* Value to pass to target_resume() to cause all threads to resume */
  
@@ -1305,7 +1287,7 @@
  
  /* Command list pointer for the "stop" placeholder.  */
  
-@@ -1147,6 +1148,8 @@ a command like `return' or `jump' to con
+@@ -1146,6 +1147,8 @@ a command like `return' or `jump' to con
  	    step = 0;
  	}
  
@@ -1314,7 +1296,7 @@
        if (debug_displaced
            && use_displaced_stepping (gdbarch)
            && tp->trap_expected)
-@@ -1188,6 +1191,7 @@ clear_proceed_status_thread (struct thre
+@@ -1187,6 +1190,7 @@ clear_proceed_status_thread (struct thre
    tp->step_range_start = 0;
    tp->step_range_end = 0;
    tp->step_frame_id = null_frame_id;
@@ -1322,7 +1304,7 @@
    tp->step_over_calls = STEP_OVER_UNDEBUGGABLE;
    tp->stop_requested = 0;
  
-@@ -1532,6 +1536,9 @@ init_wait_for_inferior (void)
+@@ -1531,6 +1535,9 @@ init_wait_for_inferior (void)
    init_infwait_state ();
  
    displaced_step_clear ();
@@ -1332,7 +1314,7 @@
  }
  
  
-@@ -1587,7 +1594,7 @@ struct execution_control_state
+@@ -1586,7 +1593,7 @@ struct execution_control_state
    int wait_some_more;
  };
  
@@ -1341,7 +1323,7 @@
  
  void handle_inferior_event (struct execution_control_state *ecs);
  
-@@ -1903,10 +1910,21 @@ fetch_inferior_event (void *client_data)
+@@ -1944,10 +1951,21 @@ fetch_inferior_event (void *client_data)
      display_gdb_prompt (0);
  }
  
@@ -1364,7 +1346,7 @@
  init_execution_control_state (struct execution_control_state *ecs)
  {
    ecs->random_signal = 0;
-@@ -1917,16 +1935,10 @@ init_execution_control_state (struct exe
+@@ -1958,16 +1976,10 @@ init_execution_control_state (struct exe
  void
  init_thread_stepping_state (struct thread_info *tss)
  {
@@ -1381,7 +1363,7 @@
  }
  
  /* Return the cached copy of the last pid/waitstatus returned by
-@@ -2096,6 +2108,22 @@ ensure_not_running (void)
+@@ -2137,6 +2149,22 @@ ensure_not_running (void)
      error_is_running ();
  }
  
@@ -1404,7 +1386,7 @@
  /* Given an execution control state that has been freshly filled in
     by an event from the inferior, figure out what it means and take
     appropriate action.  */
-@@ -2787,6 +2815,12 @@ targets should add new threads to the th
+@@ -2828,6 +2856,12 @@ targets should add new threads to the th
    ecs->random_signal = 0;
    stopped_by_random_signal = 0;
  
@@ -1417,7 +1399,7 @@
    if (ecs->event_thread->stop_signal == TARGET_SIGNAL_TRAP
        && ecs->event_thread->trap_expected
        && gdbarch_single_step_through_delay_p (current_gdbarch)
-@@ -3019,8 +3053,8 @@ process_event_stop_test:
+@@ -3060,8 +3094,8 @@ process_event_stop_test:
  	  && ecs->event_thread->stop_signal != TARGET_SIGNAL_0
  	  && (ecs->event_thread->step_range_start <= stop_pc
  	      && stop_pc < ecs->event_thread->step_range_end)
@@ -1428,7 +1410,7 @@
  	  && ecs->event_thread->step_resume_breakpoint == NULL)
  	{
  	  /* The inferior is about to take a signal that will take it
-@@ -3406,10 +3440,10 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
+@@ -3447,10 +3481,10 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
       NOTE: frame_id_eq will never report two invalid frame IDs as
       being equal, so to get into this block, both the current and
       previous frame must have valid frame IDs.  */
@@ -1442,7 +1424,7 @@
  	  || execution_direction == EXEC_REVERSE))
      {
        CORE_ADDR real_stop_pc;
-@@ -3652,6 +3686,82 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
+@@ -3693,6 +3727,82 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
        return;
      }
  
@@ -1525,7 +1507,7 @@
    if ((stop_pc == stop_pc_sal.pc)
        && (ecs->event_thread->current_line != stop_pc_sal.line
   	  || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
-@@ -3677,9 +3787,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
+@@ -3718,9 +3828,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
  
    ecs->event_thread->step_range_start = stop_pc_sal.pc;
    ecs->event_thread->step_range_end = stop_pc_sal.end;
@@ -1536,25 +1518,7 @@
  
    if (debug_infrun)
       fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n");
-@@ -4203,17 +4311,6 @@ normal_stop (void)
-       previous_inferior_ptid = inferior_ptid;
-     }
- 
--  /* NOTE drow/2004-01-17: Is this still necessary?  */
--  /* Make sure that the current_frame's pc is correct.  This
--     is a correction for setting up the frame info before doing
--     gdbarch_decr_pc_after_break */
--  if (target_has_execution)
--    /* FIXME: cagney/2002-12-06: Has the PC changed?  Thanks to
--       gdbarch_decr_pc_after_break, the program counter can change.  Ask the
--       frame code to check for this and sort out any resultant mess.
--       gdbarch_decr_pc_after_break needs to just go away.  */
--    deprecated_update_frame_pc_hack (get_current_frame (), read_pc ());
--
-   if (!breakpoints_always_inserted_mode () && target_has_execution)
-     {
-       if (remove_breakpoints ())
-@@ -4790,6 +4887,7 @@ struct inferior_status
+@@ -4987,6 +5095,7 @@ struct inferior_status
    CORE_ADDR step_range_start;
    CORE_ADDR step_range_end;
    struct frame_id step_frame_id;
@@ -1562,7 +1526,7 @@
    enum step_over_calls_kind step_over_calls;
    CORE_ADDR step_resume_break_address;
    int stop_after_trap;
-@@ -4828,6 +4926,7 @@ save_inferior_status (int restore_stack_
+@@ -5016,6 +5125,7 @@ save_inferior_status (void)
    inf_status->step_range_start = tp->step_range_start;
    inf_status->step_range_end = tp->step_range_end;
    inf_status->step_frame_id = tp->step_frame_id;
@@ -1570,7 +1534,7 @@
    inf_status->step_over_calls = tp->step_over_calls;
    inf_status->stop_after_trap = stop_after_trap;
    inf_status->stop_soon = inf->stop_soon;
-@@ -4883,6 +4982,7 @@ restore_inferior_status (struct inferior
+@@ -5069,6 +5179,7 @@ restore_inferior_status (struct inferior
    tp->step_range_start = inf_status->step_range_start;
    tp->step_range_end = inf_status->step_range_end;
    tp->step_frame_id = inf_status->step_frame_id;
@@ -1578,10 +1542,10 @@
    tp->step_over_calls = inf_status->step_over_calls;
    stop_after_trap = inf_status->stop_after_trap;
    inf->stop_soon = inf_status->stop_soon;
-Index: gdb-6.8.50.20081214/gdb/inline-frame.c
+Index: gdb-6.8.50.20090209/gdb/inline-frame.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/inline-frame.c	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/inline-frame.c	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,382 @@
 +/* Inline frame unwinder for GDB.
 +
@@ -1965,10 +1929,10 @@
 +
 +  return inline_count;
 +}
-Index: gdb-6.8.50.20081214/gdb/inline-frame.h
+Index: gdb-6.8.50.20090209/gdb/inline-frame.h
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/inline-frame.h	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/inline-frame.h	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,62 @@
 +/* Definitions for inline frame support.
 +
@@ -2032,10 +1996,10 @@
 +int frame_inlined_callees (struct frame_info *this_frame);
 +
 +#endif /* !defined (INLINE_FRAME_H) */
-Index: gdb-6.8.50.20081214/gdb/minsyms.c
+Index: gdb-6.8.50.20090209/gdb/minsyms.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/minsyms.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/minsyms.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/minsyms.c	2009-02-09 16:02:28.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/minsyms.c	2009-02-09 16:06:00.000000000 +0100
 @@ -767,7 +767,7 @@ prim_record_minimal_symbol_and_info (con
  
    if (msym_bunch_index == BUNCH_SIZE)
@@ -2045,10 +2009,10 @@
        msym_bunch_index = 0;
        new->next = msym_bunch;
        msym_bunch = new;
-Index: gdb-6.8.50.20081214/gdb/s390-tdep.c
+Index: gdb-6.8.50.20090209/gdb/s390-tdep.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/s390-tdep.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/s390-tdep.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/s390-tdep.c	2009-01-03 06:57:53.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/s390-tdep.c	2009-02-09 16:06:00.000000000 +0100
 @@ -1182,6 +1182,7 @@ s390_prologue_frame_unwind_cache (struct
    CORE_ADDR prev_sp;
    int frame_pointer;
@@ -2082,10 +2046,10 @@
  	  || get_frame_type (get_next_frame (this_frame)) != NORMAL_FRAME))
      {
        /* See the comment in s390_in_function_epilogue_p on why this is
-Index: gdb-6.8.50.20081214/gdb/stack.c
+Index: gdb-6.8.50.20090209/gdb/stack.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/stack.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/stack.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/stack.c	2009-01-26 20:09:58.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/stack.c	2009-02-09 16:06:00.000000000 +0100
 @@ -45,6 +45,7 @@
  #include "valprint.h"
  #include "gdbthread.h"
@@ -2200,7 +2164,7 @@
      {
        printf_filtered (" called by frame at ");
        fputs_filtered (paddress (get_frame_base (calling_frame_info)),
-@@ -1453,7 +1493,9 @@ print_frame_local_vars (struct frame_inf
+@@ -1449,7 +1489,9 @@ print_frame_local_vars (struct frame_inf
        if (print_block_frame_locals (block, frame, num_tabs, stream))
  	values_printed = 1;
        /* After handling the function's top-level block, stop.  Don't
@@ -2211,7 +2175,7 @@
        if (BLOCK_FUNCTION (block))
  	break;
        block = BLOCK_SUPERBLOCK (block);
-@@ -1524,7 +1566,9 @@ print_frame_label_vars (struct frame_inf
+@@ -1520,7 +1562,9 @@ print_frame_label_vars (struct frame_inf
  	return;
  
        /* After handling the function's top-level block, stop.  Don't
@@ -2222,7 +2186,7 @@
        if (BLOCK_FUNCTION (block))
  	break;
        block = BLOCK_SUPERBLOCK (block);
-@@ -1795,6 +1839,9 @@ return_command (char *retval_exp, int fr
+@@ -1790,6 +1834,9 @@ return_command (char *retval_exp, int fr
    thisframe = get_selected_frame ("No selected frame.");
    thisfun = get_frame_function (thisframe);
  
@@ -2232,10 +2196,10 @@
    /* Compute the return value.  If the computation triggers an error,
       let it bail.  If the return type can't be handled, set
       RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
-Index: gdb-6.8.50.20081214/gdb/symtab.c
+Index: gdb-6.8.50.20090209/gdb/symtab.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/symtab.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/symtab.c	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/symtab.c	2009-02-09 16:02:29.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/symtab.c	2009-02-09 16:06:00.000000000 +0100
 @@ -1373,10 +1373,13 @@ lookup_symbol_aux_local (const char *nam
        sym = lookup_symbol_aux_block (name, linkage_name, block, domain);
        if (sym != NULL)
@@ -2407,7 +2371,7 @@
      ALL_BLOCK_SYMBOLS (b, iter, sym)
        {
  	COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
-@@ -4305,6 +4345,25 @@ skip_prologue_using_sal (CORE_ADDR func_
+@@ -4315,6 +4355,25 @@ skip_prologue_using_sal (CORE_ADDR func_
  	     line mark the prologue -> body transition.  */
  	  if (sal.line >= prologue_sal.line)
  	    break;
@@ -2433,10 +2397,10 @@
  	  /* The case in which compiler's optimizer/scheduler has
  	     moved instructions into the prologue.  We look ahead in
  	     the function looking for address ranges whose
-Index: gdb-6.8.50.20081214/gdb/symtab.h
+Index: gdb-6.8.50.20090209/gdb/symtab.h
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/symtab.h	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/symtab.h	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/symtab.h	2009-02-06 22:33:58.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/symtab.h	2009-02-09 16:06:00.000000000 +0100
 @@ -556,9 +556,18 @@ struct symbol
  
    unsigned is_argument : 1;
@@ -2467,10 +2431,10 @@
  #define SYMBOL_TYPE(symbol)		(symbol)->type
  #define SYMBOL_LINE(symbol)		(symbol)->line
  #define SYMBOL_SYMTAB(symbol)		(symbol)->symtab
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.base/break.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/break.exp
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/testsuite/gdb.base/break.exp	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.base/break.exp	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.base/break.exp	2009-01-19 20:05:01.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/break.exp	2009-02-09 16:06:00.000000000 +0100
 @@ -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)"
@@ -2485,10 +2449,10 @@
      -re ".*$gdb_prompt " {
  	fail "run until breakpoint set at small function, optimized file"
      }
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.cp/annota2.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.cp/annota2.exp
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/testsuite/gdb.cp/annota2.exp	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.cp/annota2.exp	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.cp/annota2.exp	2009-01-03 06:58:04.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.cp/annota2.exp	2009-02-09 16:06:00.000000000 +0100
 @@ -119,10 +119,11 @@ gdb_expect {
  # continue until exit
  # this will test:
@@ -2502,10 +2466,10 @@
  	  { pass "continue until exit" }
    -re ".*$gdb_prompt$"     { fail "continue to exit" }
    timeout	            { fail "continue to exit (timeout)" }
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-bt.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-bt.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-bt.c	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-bt.c	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,47 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -2554,10 +2518,10 @@
 +
 +  return 0;
 +}
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-bt.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-bt.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-bt.exp	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-bt.exp	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,63 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2622,10 +2586,10 @@
 +gdb_test "info frame" ".*inlined into frame.*" "func1 inlined (3)"
 +gdb_test "up" "#2  .*func2.*" "up from func1 (3)"
 +gdb_test "info frame" ".*inlined into frame.*" "func2 inlined (3)"
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-cmds.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-cmds.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-cmds.c	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-cmds.c	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,85 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -2712,10 +2676,10 @@
 +
 +  return 0;
 +}
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-cmds.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-cmds.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-cmds.exp	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-cmds.exp	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,279 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2996,10 +2960,10 @@
 +gdb_test "info frame" ".*inlined into frame.*" "outer_inline2 inlined"
 +gdb_test "up" "#4  main.*" "up from outer_inline2"
 +gdb_test "info frame" ".*\n caller of frame.*" "main not inlined"
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-locals.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-locals.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-locals.c	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-locals.c	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,52 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -3053,10 +3017,10 @@
 +
 +  return 0;
 +}
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-locals.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-locals.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-locals.exp	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-locals.exp	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,118 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -3176,10 +3140,10 @@
 +}
 +
 +gdb_test "print array\[0\]" "\\\$$decimal = 184" "print local (3)"
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-markers.c
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-markers.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-markers.c	2008-12-14 15:31:03.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/inline-markers.c	2009-02-09 16:06:00.000000000 +0100
 @@ -0,0 +1,36 @@
 +/* Copyright (C) 2008 Free Software Foundation, Inc.
 +
@@ -3217,10 +3181,10 @@
 +{
 +  inlined_fn (); /* inlined */
 +}
-Index: gdb-6.8.50.20081214/gdb/testsuite/lib/gdb.exp
+Index: gdb-6.8.50.20090209/gdb/testsuite/lib/gdb.exp
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/testsuite/lib/gdb.exp	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/testsuite/lib/gdb.exp	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/lib/gdb.exp	2009-02-09 16:02:35.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/testsuite/lib/gdb.exp	2009-02-09 16:06:00.000000000 +0100
 @@ -1471,6 +1471,37 @@ proc skip_hp_tests {} {
      return $skip_hp
  }
@@ -3259,11 +3223,11 @@
  set compiler_info		"unknown"
  set gcc_compiled		0
  set hp_cc_compiler		0
-Index: gdb-6.8.50.20081214/gdb/valops.c
+Index: gdb-6.8.50.20090209/gdb/valops.c
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/valops.c	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/valops.c	2008-12-14 15:31:03.000000000 +0100
-@@ -1051,7 +1051,7 @@ value_of_variable (struct symbol *var, s
+--- gdb-6.8.50.20090209.orig/gdb/valops.c	2009-02-09 15:40:36.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/valops.c	2009-02-09 16:06:00.000000000 +0100
+@@ -1074,7 +1074,7 @@ value_of_variable (struct symbol *var, s
        frame = block_innermost_frame (b);
        if (!frame)
  	{
@@ -3272,11 +3236,11 @@
  	      && SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)))
  	    error (_("No frame is currently executing in block %s."),
  		   SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
-Index: gdb-6.8.50.20081214/gdb/Makefile.in
+Index: gdb-6.8.50.20090209/gdb/Makefile.in
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/Makefile.in	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/Makefile.in	2008-12-14 15:31:03.000000000 +0100
-@@ -630,6 +630,7 @@ SFILES = ada-exp.y ada-lang.c ada-typepr
+--- gdb-6.8.50.20090209.orig/gdb/Makefile.in	2009-02-09 16:02:35.000000000 +0100
++++ gdb-6.8.50.20090209/gdb/Makefile.in	2009-02-09 16:06:00.000000000 +0100
+@@ -634,6 +634,7 @@ SFILES = ada-exp.y ada-lang.c ada-typepr
  	inf-loop.c \
  	infcall.c \
  	infcmd.c inflow.c infrun.c \
@@ -3284,7 +3248,7 @@
  	interps.c \
  	jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \
  	language.c linespec.c \
-@@ -800,6 +801,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $
+@@ -804,6 +805,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $
  	user-regs.o \
  	frame.o frame-unwind.o doublest.o \
  	frame-base.o \
@@ -3292,10 +3256,10 @@
  	gnu-v2-abi.o gnu-v3-abi.o cp-abi.o cp-support.o \
  	cp-namespace.o \
  	reggroups.o regset.o \
-Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/Makefile.in
+Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/Makefile.in
 ===================================================================
---- gdb-6.8.50.20081214.orig/gdb/testsuite/gdb.opt/Makefile.in	2008-12-14 15:30:03.000000000 +0100
-+++ gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/Makefile.in	2008-12-14 15:31:03.000000000 +0100
+--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.opt/Makefile.in	2008-04-18 01:06:54.000000000 +0200
++++ gdb-6.8.50.20090209/gdb/testsuite/gdb.opt/Makefile.in	2009-02-09 16:06:00.000000000 +0100
 @@ -1,7 +1,7 @@
  VPATH = @srcdir@
  srcdir = @srcdir@


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb.spec,v
retrieving revision 1.320
retrieving revision 1.321
diff -u -r1.320 -r1.321
--- gdb.spec	9 Feb 2009 12:35:37 -0000	1.320
+++ gdb.spec	11 Feb 2009 00:04:48 -0000	1.321
@@ -9,11 +9,11 @@
 # Set version to contents of gdb/version.in.
 # NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 
 # and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
-Version: 6.8.50.20081214
+Version: 6.8.50.20090209
 
 # 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: 2%{?_with_upstream:.upstream}%{?dist}
+Release: 1%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+
 Group: Development/Debuggers
@@ -125,9 +125,6 @@
 # Test sibling threads to set threaded watchpoints for x86 and x86-64
 Patch145: gdb-6.3-threaded-watchpoints2-20050225.patch
 
-# Fix unexpected compiler warning messages.
-Patch147: gdb-6.3-warnings-20050317.patch
-
 # Fix printing of inherited members
 Patch148: gdb-6.3-inheritance-20050324.patch
 
@@ -377,12 +374,6 @@
 # Fix resolving of variables at locations lists in prelinked libs (BZ 466901).
 Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch
 
-# Enable hardware watchpoints if created before starting inferior.
-Patch349: gdb-watchpoint-hw-without-inferior.patch
-
-# Fix upstream testsuite regression + make Fortran tests gfortran compatible.
-Patch351: gdb-fortran-testsuite-gfortran.patch
-
 BuildRequires: ncurses-devel texinfo gettext flex bison expat-devel
 Requires: readline
 BuildRequires: readline-devel
@@ -484,7 +475,6 @@
 %patch259 -p1
 %patch142 -p1
 %patch145 -p1
-%patch147 -p1
 %patch148 -p1
 %patch150 -p1
 %patch151 -p1
@@ -569,8 +559,6 @@
 %patch337 -p1
 %patch343 -p1
 %patch348 -p1
-%patch349 -p1
-%patch351 -p1
 %patch124 -p1
 
 find -name "*.orig" | xargs rm -f
@@ -834,6 +822,9 @@
 %endif
 
 %changelog
+* Wed Feb 11 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090209-1
+- Upgrade to the FSF GDB gdb-6.8.50 snapshot.
+
 * Mon Feb  9 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20081214-2
 - Fix crash / implement `finish' into inlined functions (BZ 479781).
 - Drop the gdb.threads/attach-into-signal.exp change as obsolete.


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/sources,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- sources	14 Dec 2008 14:43:40 -0000	1.27
+++ sources	11 Feb 2009 00:04:48 -0000	1.28
@@ -1 +1 @@
-92a6d781eafdf1412c4516f1bdd979bb  gdb-6.8.50.20081214.tar.bz2
+9fba745cff7bbcea11795ee45b362f06  gdb-6.8.50.20090209.tar.bz2


--- gdb-6.3-warnings-20050317.patch DELETED ---


--- gdb-fortran-testsuite-gfortran.patch DELETED ---


--- gdb-watchpoint-hw-without-inferior.patch DELETED ---




More information about the fedora-extras-commits mailing list