public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gdb] gdb-17.2-rebase-f44: Rebase to 7.9-branch snapshot 7.8.90.20150202.
@ 2026-06-27 23:56 Jan Kratochvil
  0 siblings, 0 replies; only message in thread
From: Jan Kratochvil @ 2026-06-27 23:56 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/gdb
            Branch : gdb-17.2-rebase-f44
            Commit : 072837144cd6fe153f540c555471dbbedc4e603f
            Author : Jan Kratochvil <jan.kratochvil@redhat.com>
            Date   : 2015-02-02T23:09:42+01:00
            Stats  : +1054/-1033 in 14 file(s)
            URL    : https://src.fedoraproject.org/rpms/gdb/c/072837144cd6fe153f540c555471dbbedc4e603f?branch=gdb-17.2-rebase-f44

            Log:
            Rebase to 7.9-branch snapshot 7.8.90.20150202.

- Temporarily disable dg-extract-results.py to fix gdb.sum sorting.

---
diff --git a/.gitignore b/.gitignore
index d98d850..532b8cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 /gdb-libstdc++-v3-python-r155978.tar.bz2
-/gdb-7.8.50.20150108.tar.xz
+/gdb-7.8.90.20150202.tar.xz

diff --git a/gdb-6.5-BEA-testsuite.patch b/gdb-6.5-BEA-testsuite.patch
index 7c5778c..b338bf7 100644
--- a/gdb-6.5-BEA-testsuite.patch
+++ b/gdb-6.5-BEA-testsuite.patch
@@ -474,7 +474,7 @@ Index: gdb-7.6/gdb/testsuite/gdb.threads/threadcrash.sh
 +    local FAILURES=0
 +    
 +    mustNotHave '??' || ((FAILURES++))
-+    mustHaveCorrectAmount 12 threadcrash.c: || ((FAILURES++))
++    mustHaveCorrectAmount 11 threadcrash.c: || ((FAILURES++))
 +    
 +    mustHaveSevenThreads || ((FAILURES++))
 +    mustHaveSequence sleep "makeSyscall (ignored=" || ((FAILURES++))

diff --git a/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch b/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch
index 8c4162a..023a7ff 100644
--- a/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch
+++ b/gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch
@@ -21,10 +21,10 @@
 
 	Port to GDB-6.8pre.
 
-Index: gdb-7.8.50.20141228/gdb/infrun.c
+Index: gdb-7.8.90.20150125/gdb/infrun.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/infrun.c	2014-12-28 21:33:41.301547880 +0100
-+++ gdb-7.8.50.20141228/gdb/infrun.c	2015-01-01 17:00:08.212920690 +0100
+--- gdb-7.8.90.20150125.orig/gdb/infrun.c	2015-01-25 08:36:16.651716159 +0100
++++ gdb-7.8.90.20150125/gdb/infrun.c	2015-01-25 08:36:26.491758571 +0100
 @@ -86,7 +86,7 @@ static void follow_inferior_reset_breakp
  static void set_schedlock_func (char *args, int from_tty,
  				struct cmd_list_element *c);
@@ -120,7 +120,7 @@ Index: gdb-7.8.50.20141228/gdb/infrun.c
  
    /* Wait for it to stop (if not standalone)
       and in any case decode why it stopped, and act accordingly.  */
-@@ -5674,14 +5690,16 @@ switch_back_to_stepped_thread (struct ex
+@@ -5684,14 +5700,16 @@ switch_back_to_stepped_thread (struct ex
  
  /* Is thread TP in the middle of single-stepping?  */
  
@@ -142,11 +142,11 @@ Index: gdb-7.8.50.20141228/gdb/infrun.c
  }
  
  /* Inferior has stepped into a subroutine call with source code that
-Index: gdb-7.8.50.20141228/gdb/linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/linux-nat.c	2014-12-28 21:33:41.303547882 +0100
-+++ gdb-7.8.50.20141228/gdb/linux-nat.c	2014-12-28 21:33:45.827551687 +0100
-@@ -2519,7 +2519,11 @@ static int
+--- gdb-7.8.90.20150125.orig/gdb/linux-nat.c	2015-01-25 08:36:16.653716168 +0100
++++ gdb-7.8.90.20150125/gdb/linux-nat.c	2015-01-25 08:36:26.492758576 +0100
+@@ -2648,7 +2648,11 @@ static int
  select_singlestep_lwp_callback (struct lwp_info *lp, void *data)
  {
    if (lp->last_resume_kind == resume_step
@@ -159,10 +159,10 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
      return 1;
    else
      return 0;
-Index: gdb-7.8.50.20141228/gdb/linux-nat.h
+Index: gdb-7.8.90.20150125/gdb/linux-nat.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/linux-nat.h	2014-12-28 21:33:41.304547882 +0100
-+++ gdb-7.8.50.20141228/gdb/linux-nat.h	2014-12-28 21:33:45.827551687 +0100
+--- gdb-7.8.90.20150125.orig/gdb/linux-nat.h	2015-01-25 08:36:16.653716168 +0100
++++ gdb-7.8.90.20150125/gdb/linux-nat.h	2015-01-25 08:36:44.948838126 +0100
 @@ -18,6 +18,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
  
@@ -171,21 +171,21 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.h
  
  #include <signal.h>
  
-@@ -59,8 +60,8 @@ struct lwp_info
-   /* If non-zero, a pending wait status.  */
-   int status;
+@@ -88,8 +89,8 @@ struct lwp_info
+      running and not stepping, this is 0.  */
+   CORE_ADDR stop_pc;
  
 -  /* Non-zero if we were stepping this LWP.  */
 -  int step;
 +  /* The kind of stepping of this LWP.  */
 +  enum resume_step step;
  
-   /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data
-      watchpoint trap.  */
-Index: gdb-7.8.50.20141228/gdb/infrun.h
+   /* The reason the LWP last stopped, if we need to track it
+      (breakpoint, watchpoint, etc.)  */
+Index: gdb-7.8.90.20150125/gdb/infrun.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/infrun.h	2014-12-28 21:33:45.827551687 +0100
-+++ gdb-7.8.50.20141228/gdb/infrun.h	2014-12-28 21:34:13.516574981 +0100
+--- gdb-7.8.90.20150125.orig/gdb/infrun.h	2015-01-25 08:36:16.654716172 +0100
++++ gdb-7.8.90.20150125/gdb/infrun.h	2015-01-25 08:36:26.493758580 +0100
 @@ -92,7 +92,14 @@ extern void proceed (CORE_ADDR, enum gdb
  
  /* The `resume' routine should only be called in special circumstances.
@@ -202,10 +202,10 @@ Index: gdb-7.8.50.20141228/gdb/infrun.h
  
  /* Return a ptid representing the set of threads that we will proceed,
     in the perspective of the user/frontend.  */
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
+Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp	2014-12-28 21:33:41.304547882 +0100
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp	2014-12-28 21:33:45.827551687 +0100
+--- gdb-7.8.90.20150125.orig/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp	2015-01-25 08:36:16.654716172 +0100
++++ gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp	2015-01-25 08:36:26.493758580 +0100
 @@ -97,7 +97,7 @@ gdb_test "set debug infrun 1"
  
  gdb_test \

diff --git a/gdb-6.8-attach-signalled-detach-stopped.patch b/gdb-6.8-attach-signalled-detach-stopped.patch
index bd5d09c..fd66073 100644
--- a/gdb-6.8-attach-signalled-detach-stopped.patch
+++ b/gdb-6.8-attach-signalled-detach-stopped.patch
@@ -1,7 +1,7 @@
-Index: gdb-7.8.50.20141228/gdb/linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/linux-nat.c	2015-01-05 22:52:01.115978026 +0100
-+++ gdb-7.8.50.20141228/gdb/linux-nat.c	2015-01-05 22:52:23.147074710 +0100
+--- gdb-7.8.90.20150125.orig/gdb/linux-nat.c	2015-01-25 08:42:49.381408899 +0100
++++ gdb-7.8.90.20150125/gdb/linux-nat.c	2015-01-25 08:43:16.378525322 +0100
 @@ -174,6 +174,9 @@ blocked.  */
  static struct target_ops *linux_ops;
  static struct target_ops linux_ops_saved;
@@ -12,7 +12,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
  /* The method to call, if any, when a new thread is attached.  */
  static void (*linux_nat_new_thread) (struct lwp_info *);
  
-@@ -915,6 +918,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
+@@ -924,6 +927,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
        if (debug_linux_nat)
  	fprintf_unfiltered (gdb_stdlog,
  			    "LNPAW: Attaching to a stopped process\n");
@@ -20,7 +20,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
  
        /* The process is definitely stopped.  It is in a job control
  	 stop, unless the kernel predates the TASK_STOPPED /
-@@ -1337,6 +1341,9 @@ get_pending_status (struct lwp_info *lp,
+@@ -1424,6 +1428,9 @@ get_pending_status (struct lwp_info *lp,
  			    gdb_signal_to_string (signo));
      }
  
@@ -30,7 +30,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
    return 0;
  }
  
-@@ -1450,6 +1457,8 @@ linux_nat_detach (struct target_ops *ops
+@@ -1537,6 +1544,8 @@ linux_nat_detach (struct target_ops *ops
      }
    else
      linux_ops->to_detach (ops, args, from_tty);
@@ -38,8 +38,8 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
 +  pid_was_stopped = 0;
  }
  
- /* Resume LP.  */
-@@ -1631,6 +1640,14 @@ linux_nat_resume (struct target_ops *ops
+ /* Resume execution of the inferior process.  If STEP is nonzero,
+@@ -1741,6 +1750,14 @@ linux_nat_resume (struct target_ops *ops
        return;
      }
  
@@ -54,7 +54,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
    if (resume_many)
      iterate_over_lwps (ptid, linux_nat_resume_callback, lp);
  
-@@ -3696,6 +3713,8 @@ linux_nat_mourn_inferior (struct target_
+@@ -3723,6 +3740,8 @@ linux_nat_mourn_inferior (struct target_
  
    /* Let the arch-specific native code know this process is gone.  */
    linux_nat_forget_process (pid);
@@ -63,10 +63,10 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
  }
  
  /* Convert a native/host siginfo object, into/from the siginfo in the
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/attach-stopped.exp
+Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/testsuite/gdb.threads/attach-stopped.exp	2015-01-05 22:52:01.115978026 +0100
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/attach-stopped.exp	2015-01-05 22:52:23.148074714 +0100
+--- gdb-7.8.90.20150125.orig/gdb/testsuite/gdb.threads/attach-stopped.exp	2015-01-25 08:42:49.382408903 +0100
++++ gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp	2015-01-25 08:43:16.379525327 +0100
 @@ -61,7 +61,65 @@ proc corefunc { threadtype } {
      gdb_reinitialize_dir $srcdir/$subdir
      gdb_load ${binfile}
@@ -134,10 +134,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/attach-stopped.exp
         
      set test "$threadtype: attach2 to stopped, after setting file"
      gdb_test_multiple "attach $testpid" "$test" {
-Index: gdb-7.8.50.20141228/gdb/infrun.c
+Index: gdb-7.8.90.20150125/gdb/infrun.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/infrun.c	2015-01-05 22:42:48.773501429 +0100
-+++ gdb-7.8.50.20141228/gdb/infrun.c	2015-01-05 22:53:47.274443903 +0100
+--- gdb-7.8.90.20150125.orig/gdb/infrun.c	2015-01-25 08:42:49.385408916 +0100
++++ gdb-7.8.90.20150125/gdb/infrun.c	2015-01-25 08:43:16.381525335 +0100
 @@ -600,6 +600,11 @@ holding the child stopped.  Try \"set de
  				child_pid);
  	    }

diff --git a/gdb-attach-fail-reasons-5of5.patch b/gdb-attach-fail-reasons-5of5.patch
index e6d9102..18198c5 100644
--- a/gdb-attach-fail-reasons-5of5.patch
+++ b/gdb-attach-fail-reasons-5of5.patch
@@ -37,10 +37,10 @@ gdb/gdbserver/
 	(linux_create_inferior, linux_tracefork_child): Call it instead of
 	direct ptrace.
 
-Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c
+Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/nat/linux-ptrace.c	2015-01-01 21:38:14.691209094 +0100
-+++ gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c	2015-01-01 21:39:34.670157506 +0100
+--- gdb-7.8.90.20150125.orig/gdb/nat/linux-ptrace.c	2015-01-25 08:36:55.710884511 +0100
++++ gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c	2015-01-25 08:38:43.157347627 +0100
 @@ -25,6 +25,10 @@
  
  #include <stdint.h>
@@ -60,8 +60,8 @@ Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c
 +  linux_ptrace_create_warnings (buffer);
  }
  
- #if defined __i386__ || defined __x86_64__
-@@ -568,6 +574,22 @@ linux_ptrace_init_warnings (void)
+ /* See linux-ptrace.h.  */
+@@ -595,6 +601,22 @@ linux_ptrace_init_warnings (void)
    linux_ptrace_test_ret_to_nx ();
  }
  
@@ -84,23 +84,23 @@ Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c
  /* Set additional ptrace flags to use.  Some such flags may be checked
     by the implementation above.  This function must be called before
     any other function in this file; otherwise the flags may not take
-Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.h
+Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/nat/linux-ptrace.h	2015-01-01 21:38:21.280204844 +0100
-+++ gdb-7.8.50.20141228/gdb/nat/linux-ptrace.h	2015-01-01 21:39:00.542179519 +0100
-@@ -90,6 +90,7 @@ struct buffer;
+--- gdb-7.8.90.20150125.orig/gdb/nat/linux-ptrace.h	2015-01-25 08:37:02.800915071 +0100
++++ gdb-7.8.90.20150125/gdb/nat/linux-ptrace.h	2015-01-25 08:38:16.565233009 +0100
+@@ -98,6 +98,7 @@ extern void linux_ptrace_attach_fail_rea
+ extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
  
- extern void linux_ptrace_attach_fail_reason (pid_t pid, struct buffer *buffer);
  extern void linux_ptrace_init_warnings (void);
 +extern void linux_ptrace_create_warnings (struct buffer *buffer);
  extern void linux_enable_event_reporting (pid_t pid, int attached);
  extern void linux_disable_event_reporting (pid_t pid);
  extern int linux_supports_tracefork (void);
-Index: gdb-7.8.50.20141228/gdb/configure.ac
+Index: gdb-7.8.90.20150125/gdb/configure.ac
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/configure.ac	2015-01-01 21:38:14.692209094 +0100
-+++ gdb-7.8.50.20141228/gdb/configure.ac	2015-01-01 21:38:21.281204843 +0100
-@@ -2116,6 +2116,10 @@ case $host_os in
+--- gdb-7.8.90.20150125.orig/gdb/configure.ac	2015-01-25 08:36:55.712884520 +0100
++++ gdb-7.8.90.20150125/gdb/configure.ac	2015-01-25 08:37:02.801915075 +0100
+@@ -2117,6 +2117,10 @@ case $host_os in
  esac
  AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
  
@@ -111,10 +111,10 @@ Index: gdb-7.8.50.20141228/gdb/configure.ac
  dnl Handle optional features that can be enabled.
  
  # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
-Index: gdb-7.8.50.20141228/gdb/gdbserver/configure.ac
+Index: gdb-7.8.90.20150125/gdb/gdbserver/configure.ac
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbserver/configure.ac	2015-01-01 21:38:14.693209093 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbserver/configure.ac	2015-01-01 21:38:21.281204843 +0100
+--- gdb-7.8.90.20150125.orig/gdb/gdbserver/configure.ac	2015-01-25 08:36:55.712884520 +0100
++++ gdb-7.8.90.20150125/gdb/gdbserver/configure.ac	2015-01-25 08:37:02.801915075 +0100
 @@ -461,6 +461,10 @@ if $want_ipa ; then
     fi
  fi
@@ -126,11 +126,11 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/configure.ac
  AC_SUBST(GDBSERVER_DEPFILES)
  AC_SUBST(GDBSERVER_LIBS)
  AC_SUBST(srv_xmlbuiltin)
-Index: gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c
+Index: gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbserver/linux-low.c	2015-01-01 21:38:14.695209091 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c	2015-01-01 21:38:21.282204843 +0100
-@@ -537,6 +537,29 @@ add_lwp (ptid_t ptid)
+--- gdb-7.8.90.20150125.orig/gdb/gdbserver/linux-low.c	2015-01-25 08:36:55.714884529 +0100
++++ gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c	2015-01-25 08:37:02.803915084 +0100
+@@ -591,6 +591,29 @@ add_lwp (ptid_t ptid)
    return lwp;
  }
  
@@ -160,7 +160,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c
  /* Start an inferior process and returns its pid.
     ALLARGS is a vector of program-name and args. */
  
-@@ -578,7 +601,7 @@ linux_create_inferior (char *program, ch
+@@ -632,7 +655,7 @@ linux_create_inferior (char *program, ch
    if (pid == 0)
      {
        close_most_fds ();
@@ -169,11 +169,11 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c
  
  #ifndef __ANDROID__ /* Bionic doesn't use SIGRTMIN the way glibc does.  */
        signal (__SIGRTMIN + 1, SIG_DFL);
-Index: gdb-7.8.50.20141228/gdb/inf-ptrace.c
+Index: gdb-7.8.90.20150125/gdb/inf-ptrace.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/inf-ptrace.c	2015-01-01 21:38:14.695209091 +0100
-+++ gdb-7.8.50.20141228/gdb/inf-ptrace.c	2015-01-01 21:38:21.282204843 +0100
-@@ -66,7 +66,15 @@ static void
+--- gdb-7.8.90.20150125.orig/gdb/inf-ptrace.c	2015-01-25 08:36:55.715884533 +0100
++++ gdb-7.8.90.20150125/gdb/inf-ptrace.c	2015-01-25 08:37:02.803915084 +0100
+@@ -67,7 +67,15 @@ static void
  inf_ptrace_me (void)
  {
    /* "Trace me, Dr. Memory!"  */
@@ -189,11 +189,11 @@ Index: gdb-7.8.50.20141228/gdb/inf-ptrace.c
  }
  
  /* Start a new inferior Unix child process.  EXEC_FILE is the file to
-Index: gdb-7.8.50.20141228/gdb/linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/linux-nat.c	2015-01-01 21:38:14.697209090 +0100
-+++ gdb-7.8.50.20141228/gdb/linux-nat.c	2015-01-01 21:38:21.283204842 +0100
-@@ -1099,6 +1099,7 @@ linux_nat_create_inferior (struct target
+--- gdb-7.8.90.20150125.orig/gdb/linux-nat.c	2015-01-25 08:36:55.717884541 +0100
++++ gdb-7.8.90.20150125/gdb/linux-nat.c	2015-01-25 08:37:52.054127362 +0100
+@@ -1109,6 +1109,7 @@ linux_nat_create_inferior (struct target
  #ifdef HAVE_PERSONALITY
    int personality_orig = 0, personality_set = 0;
  #endif /* HAVE_PERSONALITY */
@@ -201,7 +201,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
  
    /* The fork_child mechanism is synchronous and calls target_wait, so
       we have to mask the async mode.  */
-@@ -1123,7 +1124,10 @@ linux_nat_create_inferior (struct target
+@@ -1133,7 +1134,10 @@ linux_nat_create_inferior (struct target
    /* Make sure we report all signals during startup.  */
    linux_nat_pass_signals (ops, 0, NULL);
  
@@ -213,7 +213,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
  
  #ifdef HAVE_PERSONALITY
    if (personality_set)
-@@ -1135,6 +1139,24 @@ linux_nat_create_inferior (struct target
+@@ -1145,6 +1149,24 @@ linux_nat_create_inferior (struct target
  		 safe_strerror (errno));
      }
  #endif /* HAVE_PERSONALITY */
@@ -237,11 +237,11 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
 +    }
  }
  
- static void
-Index: gdb-7.8.50.20141228/gdb/config.in
+ /* Callback for linux_proc_attach_tgid_threads.  Attach to PTID if not
+Index: gdb-7.8.90.20150125/gdb/config.in
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/config.in	2015-01-01 21:38:14.697209090 +0100
-+++ gdb-7.8.50.20141228/gdb/config.in	2015-01-01 21:38:21.284204842 +0100
+--- gdb-7.8.90.20150125.orig/gdb/config.in	2015-01-25 08:36:55.718884546 +0100
++++ gdb-7.8.90.20150125/gdb/config.in	2015-01-25 08:37:02.805915092 +0100
 @@ -213,6 +213,9 @@
  /* Define if librpm library is being used. */
  #undef HAVE_LIBRPM
@@ -262,11 +262,11 @@ Index: gdb-7.8.50.20141228/gdb/config.in
  /* Define to 1 if you have the `setlocale' function. */
  #undef HAVE_SETLOCALE
  
-Index: gdb-7.8.50.20141228/gdb/configure
+Index: gdb-7.8.90.20150125/gdb/configure
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/configure	2015-01-01 21:38:14.701209087 +0100
-+++ gdb-7.8.50.20141228/gdb/configure	2015-01-01 21:38:21.286204840 +0100
-@@ -13269,6 +13269,64 @@ cat >>confdefs.h <<_ACEOF
+--- gdb-7.8.90.20150125.orig/gdb/configure	2015-01-25 08:36:55.722884563 +0100
++++ gdb-7.8.90.20150125/gdb/configure	2015-01-25 08:37:02.809915110 +0100
+@@ -13270,6 +13270,64 @@ cat >>confdefs.h <<_ACEOF
  _ACEOF
  
  
@@ -331,10 +331,10 @@ Index: gdb-7.8.50.20141228/gdb/configure
  
  # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
  # except that the argument to --with-sysroot is optional.
-Index: gdb-7.8.50.20141228/gdb/gdbserver/config.in
+Index: gdb-7.8.90.20150125/gdb/gdbserver/config.in
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbserver/config.in	2015-01-01 21:38:14.702209087 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbserver/config.in	2015-01-01 21:38:39.365193179 +0100
+--- gdb-7.8.90.20150125.orig/gdb/gdbserver/config.in	2015-01-25 08:36:55.724884572 +0100
++++ gdb-7.8.90.20150125/gdb/gdbserver/config.in	2015-01-25 08:37:02.809915110 +0100
 @@ -75,6 +75,9 @@
  /* Define to 1 if you have the `mcheck' library (-lmcheck). */
  #undef HAVE_LIBMCHECK
@@ -355,10 +355,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/config.in
  /* Define to 1 if you have the <sgtty.h> header file. */
  #undef HAVE_SGTTY_H
  
-Index: gdb-7.8.50.20141228/gdb/gdbserver/configure
+Index: gdb-7.8.90.20150125/gdb/gdbserver/configure
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbserver/configure	2015-01-01 21:38:14.704209086 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbserver/configure	2015-01-01 21:38:21.288204839 +0100
+--- gdb-7.8.90.20150125.orig/gdb/gdbserver/configure	2015-01-25 08:36:55.726884580 +0100
++++ gdb-7.8.90.20150125/gdb/gdbserver/configure	2015-01-25 08:37:02.811915118 +0100
 @@ -6199,6 +6199,64 @@ if $want_ipa ; then
     fi
  fi

diff --git a/gdb-compile-warn_unused_result.patch b/gdb-compile-warn_unused_result.patch
deleted file mode 100644
index 4324004..0000000
--- a/gdb-compile-warn_unused_result.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb-7.8.50.20141228/gdb/compile/compile.c-orig	2014-12-28 02:48:43.000000000 +0100
-+++ gdb-7.8.50.20141228/gdb/compile/compile.c	2015-01-05 23:03:33.383016039 +0100
-@@ -172,7 +172,7 @@ do_rmdir (void *arg)
-   
-   gdb_assert (strncmp (dir, TMP_PREFIX, strlen (TMP_PREFIX)) == 0);
-   zap = concat ("rm -rf ", dir, (char *) NULL);
--  system (zap);
-+  if (system (zap)) {}
- }
- 
- /* Return the name of the temporary directory to use for .o files, and

diff --git a/gdb-no-dg-extract-results-py.patch b/gdb-no-dg-extract-results-py.patch
new file mode 100644
index 0000000..40e1fea
--- /dev/null
+++ b/gdb-no-dg-extract-results-py.patch
@@ -0,0 +1,589 @@
+diff -dup -ruNp gdb-7.8.90.20150202-orig/gdb/testsuite/dg-extract-results.py gdb-7.8.90.20150202/gdb/testsuite/dg-extract-results.py
+--- gdb-7.8.90.20150202-orig/gdb/testsuite/dg-extract-results.py	2015-02-02 02:58:29.000000000 +0100
++++ gdb-7.8.90.20150202/gdb/testsuite/dg-extract-results.py	1970-01-01 01:00:00.000000000 +0100
+@@ -1,585 +0,0 @@
+-#!/usr/bin/python
+-#
+-# Copyright (C) 2014-2015 Free Software Foundation, Inc.
+-#
+-# This script 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, or (at your option)
+-# any later version.
+-
+-import sys
+-import getopt
+-import re
+-import io
+-from datetime import datetime
+-from operator import attrgetter
+-
+-# True if unrecognised lines should cause a fatal error.  Might want to turn
+-# this on by default later.
+-strict = False
+-
+-# True if the order of .log segments should match the .sum file, false if
+-# they should keep the original order.
+-sort_logs = True
+-
+-# A version of open() that is safe against whatever binary output
+-# might be added to the log.
+-def safe_open (filename):
+-    if sys.version_info >= (3, 0):
+-        return open (filename, 'r', errors = 'surrogateescape')
+-    return open (filename, 'r')
+-
+-# Force stdout to handle escape sequences from a safe_open file.
+-if sys.version_info >= (3, 0):
+-    sys.stdout = io.TextIOWrapper (sys.stdout.buffer,
+-                                   errors = 'surrogateescape')
+-
+-class Named:
+-    def __init__ (self, name):
+-        self.name = name
+-
+-class ToolRun (Named):
+-    def __init__ (self, name):
+-        Named.__init__ (self, name)
+-        # The variations run for this tool, mapped by --target_board name.
+-        self.variations = dict()
+-
+-    # Return the VariationRun for variation NAME.
+-    def get_variation (self, name):
+-        if name not in self.variations:
+-            self.variations[name] = VariationRun (name)
+-        return self.variations[name]
+-
+-class VariationRun (Named):
+-    def __init__ (self, name):
+-        Named.__init__ (self, name)
+-        # A segment of text before the harness runs start, describing which
+-        # baseboard files were loaded for the target.
+-        self.header = None
+-        # The harnesses run for this variation, mapped by filename.
+-        self.harnesses = dict()
+-        # A list giving the number of times each type of result has
+-        # been seen.
+-        self.counts = []
+-
+-    # Return the HarnessRun for harness NAME.
+-    def get_harness (self, name):
+-        if name not in self.harnesses:
+-            self.harnesses[name] = HarnessRun (name)
+-        return self.harnesses[name]
+-
+-class HarnessRun (Named):
+-    def __init__ (self, name):
+-        Named.__init__ (self, name)
+-        # Segments of text that make up the harness run, mapped by a test-based
+-        # key that can be used to order them.
+-        self.segments = dict()
+-        # Segments of text that make up the harness run but which have
+-        # no recognized test results.  These are typically harnesses that
+-        # are completely skipped for the target.
+-        self.empty = []
+-        # A list of results.  Each entry is a pair in which the first element
+-        # is a unique sorting key and in which the second is the full
+-        # PASS/FAIL line.
+-        self.results = []
+-
+-    # Add a segment of text to the harness run.  If the segment includes
+-    # test results, KEY is an example of one of them, and can be used to
+-    # combine the individual segments in order.  If the segment has no
+-    # test results (e.g. because the harness doesn't do anything for the
+-    # current configuration) then KEY is None instead.  In that case
+-    # just collect the segments in the order that we see them.
+-    def add_segment (self, key, segment):
+-        if key:
+-            assert key not in self.segments
+-            self.segments[key] = segment
+-        else:
+-            self.empty.append (segment)
+-
+-class Segment:
+-    def __init__ (self, filename, start):
+-        self.filename = filename
+-        self.start = start
+-        self.lines = 0
+-
+-class Prog:
+-    def __init__ (self):
+-        # The variations specified on the command line.
+-        self.variations = []
+-        # The variations seen in the input files.
+-        self.known_variations = set()
+-        # The tools specified on the command line.
+-        self.tools = []
+-        # Whether to create .sum rather than .log output.
+-        self.do_sum = True
+-        # Regexps used while parsing.
+-        self.test_run_re = re.compile (r'^Test Run By (\S+) on (.*)$')
+-        self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$')
+-        self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED'
+-                                     r'|WARNING|ERROR|UNSUPPORTED|UNTESTED'
+-                                     r'|KFAIL):\s*(.+)')
+-        self.completed_re = re.compile (r'.* completed at (.*)')
+-        # Pieces of text to write at the head of the output.
+-        # start_line is a pair in which the first element is a datetime
+-        # and in which the second is the associated 'Test Run By' line.
+-        self.start_line = None
+-        self.native_line = ''
+-        self.target_line = ''
+-        self.host_line = ''
+-        self.acats_premable = ''
+-        # Pieces of text to write at the end of the output.
+-        # end_line is like start_line but for the 'runtest completed' line.
+-        self.acats_failures = []
+-        self.version_output = ''
+-        self.end_line = None
+-        # Known summary types.
+-        self.count_names = [
+-            '# of expected passes\t\t',
+-            '# of unexpected failures\t',
+-            '# of unexpected successes\t',
+-            '# of expected failures\t\t',
+-            '# of unknown successes\t\t',
+-            '# of known failures\t\t',
+-            '# of untested testcases\t\t',
+-            '# of unresolved testcases\t',
+-            '# of unsupported tests\t\t'
+-        ]
+-        self.runs = dict()
+-
+-    def usage (self):
+-        name = sys.argv[0]
+-        sys.stderr.write ('Usage: ' + name
+-                          + ''' [-t tool] [-l variant-list] [-L] log-or-sum-file ...
+-
+-    tool           The tool (e.g. g++, libffi) for which to create a
+-                   new test summary file.  If not specified then output
+-                   is created for all tools.
+-    variant-list   One or more test variant names.  If the list is
+-                   not specified then one is constructed from all
+-                   variants in the files for <tool>.
+-    sum-file       A test summary file with the format of those
+-                   created by runtest from DejaGnu.
+-    If -L is used, merge *.log files instead of *.sum.  In this
+-    mode the exact order of lines may not be preserved, just different
+-    Running *.exp chunks should be in correct order.
+-''')
+-        sys.exit (1)
+-
+-    def fatal (self, what, string):
+-        if not what:
+-            what = sys.argv[0]
+-        sys.stderr.write (what + ': ' + string + '\n')
+-        sys.exit (1)
+-
+-    # Parse the command-line arguments.
+-    def parse_cmdline (self):
+-        try:
+-            (options, self.files) = getopt.getopt (sys.argv[1:], 'l:t:L')
+-            if len (self.files) == 0:
+-                self.usage()
+-            for (option, value) in options:
+-                if option == '-l':
+-                    self.variations.append (value)
+-                elif option == '-t':
+-                    self.tools.append (value)
+-                else:
+-                    self.do_sum = False
+-        except getopt.GetoptError as e:
+-            self.fatal (None, e.msg)
+-
+-    # Try to parse time string TIME, returning an arbitrary time on failure.
+-    # Getting this right is just a nice-to-have so failures should be silent.
+-    def parse_time (self, time):
+-        try:
+-            return datetime.strptime (time, '%c')
+-        except ValueError:
+-            return datetime.now()
+-
+-    # Parse an integer and abort on failure.
+-    def parse_int (self, filename, value):
+-        try:
+-            return int (value)
+-        except ValueError:
+-            self.fatal (filename, 'expected an integer, got: ' + value)
+-
+-    # Return a list that represents no test results.
+-    def zero_counts (self):
+-        return [0 for x in self.count_names]
+-
+-    # Return the ToolRun for tool NAME.
+-    def get_tool (self, name):
+-        if name not in self.runs:
+-            self.runs[name] = ToolRun (name)
+-        return self.runs[name]
+-
+-    # Add the result counts in list FROMC to TOC.
+-    def accumulate_counts (self, toc, fromc):
+-        for i in range (len (self.count_names)):
+-            toc[i] += fromc[i]
+-
+-    # Parse the list of variations after 'Schedule of variations:'.
+-    # Return the number seen.
+-    def parse_variations (self, filename, file):
+-        num_variations = 0
+-        while True:
+-            line = file.readline()
+-            if line == '':
+-                self.fatal (filename, 'could not parse variation list')
+-            if line == '\n':
+-                break
+-            self.known_variations.add (line.strip())
+-            num_variations += 1
+-        return num_variations
+-
+-    # Parse from the first line after 'Running target ...' to the end
+-    # of the run's summary.
+-    def parse_run (self, filename, file, tool, variation, num_variations):
+-        header = None
+-        harness = None
+-        segment = None
+-        final_using = 0
+-
+-        # If this is the first run for this variation, add any text before
+-        # the first harness to the header.
+-        if not variation.header:
+-            segment = Segment (filename, file.tell())
+-            variation.header = segment
+-
+-        # Parse up until the first line of the summary.
+-        if num_variations == 1:
+-            end = '\t\t=== ' + tool.name + ' Summary ===\n'
+-        else:
+-            end = ('\t\t=== ' + tool.name + ' Summary for '
+-                   + variation.name + ' ===\n')
+-        while True:
+-            line = file.readline()
+-            if line == '':
+-                self.fatal (filename, 'no recognised summary line')
+-            if line == end:
+-                break
+-
+-            # Look for the start of a new harness.
+-            if line.startswith ('Running ') and line.endswith (' ...\n'):
+-                # Close off the current harness segment, if any.
+-                if harness:
+-                    segment.lines -= final_using
+-                    harness.add_segment (first_key, segment)
+-                name = line[len ('Running '):-len(' ...\n')]
+-                harness = variation.get_harness (name)
+-                segment = Segment (filename, file.tell())
+-                first_key = None
+-                final_using = 0
+-                continue
+-
+-            # Record test results.  Associate the first test result with
+-            # the harness segment, so that if a run for a particular harness
+-            # has been split up, we can reassemble the individual segments
+-            # in a sensible order.
+-            #
+-            # dejagnu sometimes issues warnings about the testing environment
+-            # before running any tests.  Treat them as part of the header
+-            # rather than as a test result.
+-            match = self.result_re.match (line)
+-            if match and (harness or not line.startswith ('WARNING:')):
+-                if not harness:
+-                    self.fatal (filename, 'saw test result before harness name')
+-                name = match.group (2)
+-                # Ugly hack to get the right order for gfortran.
+-                if name.startswith ('gfortran.dg/g77/'):
+-                    name = 'h' + name
+-                key = (name, len (harness.results))
+-                harness.results.append ((key, line))
+-                if not first_key and sort_logs:
+-                    first_key = key
+-
+-            # 'Using ...' lines are only interesting in a header.  Splitting
+-            # the test up into parallel runs leads to more 'Using ...' lines
+-            # than there would be in a single log.
+-            if line.startswith ('Using '):
+-                final_using += 1
+-            else:
+-                final_using = 0
+-
+-            # Add other text to the current segment, if any.
+-            if segment:
+-                segment.lines += 1
+-
+-        # Close off the final harness segment, if any.
+-        if harness:
+-            segment.lines -= final_using
+-            harness.add_segment (first_key, segment)
+-
+-        # Parse the rest of the summary (the '# of ' lines).
+-        if len (variation.counts) == 0:
+-            variation.counts = self.zero_counts()
+-        while True:
+-            before = file.tell()
+-            line = file.readline()
+-            if line == '':
+-                break
+-            if line == '\n':
+-                continue
+-            if not line.startswith ('# '):
+-                file.seek (before)
+-                break
+-            found = False
+-            for i in range (len (self.count_names)):
+-                if line.startswith (self.count_names[i]):
+-                    count = line[len (self.count_names[i]):-1].strip()
+-                    variation.counts[i] += self.parse_int (filename, count)
+-                    found = True
+-                    break
+-            if not found:
+-                self.fatal (filename, 'unknown test result: ' + line[:-1])
+-
+-    # Parse an acats run, which uses a different format from dejagnu.
+-    # We have just skipped over '=== acats configuration ==='.
+-    def parse_acats_run (self, filename, file):
+-        # Parse the preamble, which describes the configuration and logs
+-        # the creation of support files.
+-        record = (self.acats_premable == '')
+-        if record:
+-            self.acats_premable = '\t\t=== acats configuration ===\n'
+-        while True:
+-            line = file.readline()
+-            if line == '':
+-                self.fatal (filename, 'could not parse acats preamble')
+-            if line == '\t\t=== acats tests ===\n':
+-                break
+-            if record:
+-                self.acats_premable += line
+-
+-        # Parse the test results themselves, using a dummy variation name.
+-        tool = self.get_tool ('acats')
+-        variation = tool.get_variation ('none')
+-        self.parse_run (filename, file, tool, variation, 1)
+-
+-        # Parse the failure list.
+-        while True:
+-            before = file.tell()
+-            line = file.readline()
+-            if line.startswith ('*** FAILURES: '):
+-                self.acats_failures.append (line[len ('*** FAILURES: '):-1])
+-                continue
+-            file.seek (before)
+-            break
+-
+-    # Parse the final summary at the end of a log in order to capture
+-    # the version output that follows it.
+-    def parse_final_summary (self, filename, file):
+-        record = (self.version_output == '')
+-        while True:
+-            line = file.readline()
+-            if line == '':
+-                break
+-            if line.startswith ('# of '):
+-                continue
+-            if record:
+-                self.version_output += line
+-            if line == '\n':
+-                break
+-
+-    # Parse a .log or .sum file.
+-    def parse_file (self, filename, file):
+-        tool = None
+-        target = None
+-        num_variations = 1
+-        while True:
+-            line = file.readline()
+-            if line == '':
+-                return
+-
+-            # Parse the list of variations, which comes before the test
+-            # runs themselves.
+-            if line.startswith ('Schedule of variations:'):
+-                num_variations = self.parse_variations (filename, file)
+-                continue
+-
+-            # Parse a testsuite run for one tool/variation combination.
+-            if line.startswith ('Running target '):
+-                name = line[len ('Running target '):-1]
+-                if not tool:
+-                    self.fatal (filename, 'could not parse tool name')
+-                if name not in self.known_variations:
+-                    self.fatal (filename, 'unknown target: ' + name)
+-                self.parse_run (filename, file, tool,
+-                                tool.get_variation (name),
+-                                num_variations)
+-                # If there is only one variation then there is no separate
+-                # summary for it.  Record any following version output.
+-                if num_variations == 1:
+-                    self.parse_final_summary (filename, file)
+-                continue
+-
+-            # Parse the start line.  In the case where several files are being
+-            # parsed, pick the one with the earliest time.
+-            match = self.test_run_re.match (line)
+-            if match:
+-                time = self.parse_time (match.group (2))
+-                if not self.start_line or self.start_line[0] > time:
+-                    self.start_line = (time, line)
+-                continue
+-
+-            # Parse the form used for native testing.
+-            if line.startswith ('Native configuration is '):
+-                self.native_line = line
+-                continue
+-
+-            # Parse the target triplet.
+-            if line.startswith ('Target is '):
+-                self.target_line = line
+-                continue
+-
+-            # Parse the host triplet.
+-            if line.startswith ('Host   is '):
+-                self.host_line = line
+-                continue
+-
+-            # Parse the acats premable.
+-            if line == '\t\t=== acats configuration ===\n':
+-                self.parse_acats_run (filename, file)
+-                continue
+-
+-            # Parse the tool name.
+-            match = self.tool_re.match (line)
+-            if match:
+-                tool = self.get_tool (match.group (1))
+-                continue
+-
+-            # Skip over the final summary (which we instead create from
+-            # individual runs) and parse the version output.
+-            if tool and line == '\t\t=== ' + tool.name + ' Summary ===\n':
+-                if file.readline() != '\n':
+-                    self.fatal (filename, 'expected blank line after summary')
+-                self.parse_final_summary (filename, file)
+-                continue
+-
+-            # Parse the completion line.  In the case where several files
+-            # are being parsed, pick the one with the latest time.
+-            match = self.completed_re.match (line)
+-            if match:
+-                time = self.parse_time (match.group (1))
+-                if not self.end_line or self.end_line[0] < time:
+-                    self.end_line = (time, line)
+-                continue
+-
+-            # Sanity check to make sure that important text doesn't get
+-            # dropped accidentally.
+-            if strict and line.strip() != '':
+-                self.fatal (filename, 'unrecognised line: ' + line[:-1])
+-
+-    # Output a segment of text.
+-    def output_segment (self, segment):
+-        with safe_open (segment.filename) as file:
+-            file.seek (segment.start)
+-            for i in range (segment.lines):
+-                sys.stdout.write (file.readline())
+-
+-    # Output a summary giving the number of times each type of result has
+-    # been seen.
+-    def output_summary (self, tool, counts):
+-        for i in range (len (self.count_names)):
+-            name = self.count_names[i]
+-            # dejagnu only prints result types that were seen at least once,
+-            # but acats always prints a number of unexpected failures.
+-            if (counts[i] > 0
+-                or (tool.name == 'acats'
+-                    and name.startswith ('# of unexpected failures'))):
+-                sys.stdout.write ('%s%d\n' % (name, counts[i]))
+-
+-    # Output unified .log or .sum information for a particular variation,
+-    # with a summary at the end.
+-    def output_variation (self, tool, variation):
+-        self.output_segment (variation.header)
+-        for harness in sorted (variation.harnesses.values(),
+-                               key = attrgetter ('name')):
+-            sys.stdout.write ('Running ' + harness.name + ' ...\n')
+-            if self.do_sum:
+-                harness.results.sort()
+-                for (key, line) in harness.results:
+-                    sys.stdout.write (line)
+-            else:
+-                # Rearrange the log segments into test order (but without
+-                # rearranging text within those segments).
+-                for key in sorted (harness.segments.keys()):
+-                    self.output_segment (harness.segments[key])
+-                for segment in harness.empty:
+-                    self.output_segment (segment)
+-        if len (self.variations) > 1:
+-            sys.stdout.write ('\t\t=== ' + tool.name + ' Summary for '
+-                              + variation.name + ' ===\n\n')
+-            self.output_summary (tool, variation.counts)
+-
+-    # Output unified .log or .sum information for a particular tool,
+-    # with a summary at the end.
+-    def output_tool (self, tool):
+-        counts = self.zero_counts()
+-        if tool.name == 'acats':
+-            # acats doesn't use variations, so just output everything.
+-            # It also has a different approach to whitespace.
+-            sys.stdout.write ('\t\t=== ' + tool.name + ' tests ===\n')
+-            for variation in tool.variations.values():
+-                self.output_variation (tool, variation)
+-                self.accumulate_counts (counts, variation.counts)
+-            sys.stdout.write ('\t\t=== ' + tool.name + ' Summary ===\n')
+-        else:
+-            # Output the results in the usual dejagnu runtest format.
+-            sys.stdout.write ('\n\t\t=== ' + tool.name + ' tests ===\n\n'
+-                              'Schedule of variations:\n')
+-            for name in self.variations:
+-                if name in tool.variations:
+-                    sys.stdout.write ('    ' + name + '\n')
+-            sys.stdout.write ('\n')
+-            for name in self.variations:
+-                if name in tool.variations:
+-                    variation = tool.variations[name]
+-                    sys.stdout.write ('Running target '
+-                                      + variation.name + '\n')
+-                    self.output_variation (tool, variation)
+-                    self.accumulate_counts (counts, variation.counts)
+-            sys.stdout.write ('\n\t\t=== ' + tool.name + ' Summary ===\n\n')
+-        self.output_summary (tool, counts)
+-
+-    def main (self):
+-        self.parse_cmdline()
+-        try:
+-            # Parse the input files.
+-            for filename in self.files:
+-                with safe_open (filename) as file:
+-                    self.parse_file (filename, file)
+-
+-            # Decide what to output.
+-            if len (self.variations) == 0:
+-                self.variations = sorted (self.known_variations)
+-            else:
+-                for name in self.variations:
+-                    if name not in self.known_variations:
+-                        self.fatal (None, 'no results for ' + name)
+-            if len (self.tools) == 0:
+-                self.tools = sorted (self.runs.keys())
+-
+-            # Output the header.
+-            if self.start_line:
+-                sys.stdout.write (self.start_line[1])
+-            sys.stdout.write (self.native_line)
+-            sys.stdout.write (self.target_line)
+-            sys.stdout.write (self.host_line)
+-            sys.stdout.write (self.acats_premable)
+-
+-            # Output the main body.
+-            for name in self.tools:
+-                if name not in self.runs:
+-                    self.fatal (None, 'no results for ' + name)
+-                self.output_tool (self.runs[name])
+-
+-            # Output the footer.
+-            if len (self.acats_failures) > 0:
+-                sys.stdout.write ('*** FAILURES: '
+-                                  + ' '.join (self.acats_failures) + '\n')
+-            sys.stdout.write (self.version_output)
+-            if self.end_line:
+-                sys.stdout.write (self.end_line[1])
+-        except IOError as e:
+-            self.fatal (e.filename, e.strerror)
+-
+-Prog().main()

diff --git a/gdb-py-frame-rip-test-fix.patch b/gdb-py-frame-rip-test-fix.patch
deleted file mode 100644
index 57a930c..0000000
--- a/gdb-py-frame-rip-test-fix.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2015-01/msg00110.html
-Subject: [testsuite patch] Fix new FAIL: py-frame.exp: test Frame.read_register(rip)
-
-
---/04w6evG8XlLl3ft
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-Hi,
-
-for x86_64 -m32 run one gets:
-
-+FAIL: gdb.python/py-frame.exp: test Frame.read_register(rip)
-
-I do not have x32 OS here but the %rip test should PASS there I think.
-
-OK for check-in?
-
-The code is there since:
-	commit 5f3b99cfed3803f0b099152f54aac7cb90a2b926
-	Author: Sasha Smundak <asmundak@google.com>
-	Date:   Wed Sep 3 16:34:47 2014 -0700
-	    Add support for reading frame registers to Python API.
-
-
-Jan
-
---/04w6evG8XlLl3ft
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline; filename=1
-
-gdb/testsuite/
-2015-01-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* gdb.python/py-frame.exp (test Frame.read_register(rip)): Use
-	is_amd64_regs_target.
-
-diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp
-index bf2e1ce..984acfc 100644
---- a/gdb/testsuite/gdb.python/py-frame.exp
-+++ b/gdb/testsuite/gdb.python/py-frame.exp
-@@ -106,7 +106,7 @@ gdb_test "python print ('result = %s' % (f0.read_register('pc') == f0.pc()))" \
-   "test Frame.read_register(pc)"
- 
- # On x86-64, PC is in $rip register.
--if {[istarget x86_64-*]} {
-+if {[is_amd64_regs_target]} {
-     gdb_test "python print ('result = %s' % (f0.read_register('pc') == f0.read_register('rip')))" \
- 	" = True" \
- 	"test Frame.read_register(rip)"
-
---/04w6evG8XlLl3ft--
-

diff --git a/gdb-rhbz795424-bitpos-20of25.patch b/gdb-rhbz795424-bitpos-20of25.patch
index 28e6abc..f08f978 100644
--- a/gdb-rhbz795424-bitpos-20of25.patch
+++ b/gdb-rhbz795424-bitpos-20of25.patch
@@ -463,10 +463,10 @@ Content-Type: text/x-patch
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=bitpos-main.patch
 
-Index: gdb-7.8.50.20141228/gdb/ada-lang.c
+Index: gdb-7.8.90.20150125/gdb/ada-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ada-lang.c	2015-01-06 22:44:41.508318717 +0100
-+++ gdb-7.8.50.20141228/gdb/ada-lang.c	2015-01-06 22:44:43.164326752 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ada-lang.c	2015-01-25 08:39:10.810466816 +0100
++++ gdb-7.8.90.20150125/gdb/ada-lang.c	2015-01-25 08:39:14.650483368 +0100
 @@ -74,7 +74,7 @@ static struct type *desc_bounds_type (st
  
  static struct value *desc_bounds (struct value *);
@@ -698,7 +698,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
    gdb_byte *buf = alloca (len);
    CORE_ADDR addr;
  
-@@ -6405,7 +6408,7 @@ value_tag_from_contents_and_address (str
+@@ -6436,7 +6439,7 @@ value_tag_from_contents_and_address (str
  				     const gdb_byte *valaddr,
                                       CORE_ADDR address)
  {
@@ -707,7 +707,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
    struct type *tag_type;
  
    if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
-@@ -6870,7 +6873,7 @@ ada_in_variant (LONGEST val, struct type
+@@ -6901,7 +6904,7 @@ ada_in_variant (LONGEST val, struct type
     only in that it can handle packed values of arbitrary type.  */
  
  static struct value *
@@ -716,7 +716,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
                             struct type *arg_type)
  {
    struct type *type;
-@@ -6882,7 +6885,7 @@ ada_value_primitive_field (struct value
+@@ -6913,7 +6916,7 @@ ada_value_primitive_field (struct value
  
    if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
      {
@@ -725,7 +725,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
        int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
  
        return ada_value_primitive_packed_val (arg1, value_contents (arg1),
-@@ -6909,9 +6912,9 @@ ada_value_primitive_field (struct value
+@@ -6940,9 +6943,9 @@ ada_value_primitive_field (struct value
     Returns 1 if found, 0 otherwise.  */
  
  static int
@@ -737,7 +737,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  		   int *index_p)
  {
    int i;
-@@ -6929,8 +6932,8 @@ find_struct_field (const char *name, str
+@@ -6960,8 +6963,8 @@ find_struct_field (const char *name, str
  
    for (i = 0; i < TYPE_NFIELDS (type); i += 1)
      {
@@ -748,7 +748,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
        const char *t_field_name = TYPE_FIELD_NAME (type, i);
  
        if (t_field_name == NULL)
-@@ -7000,7 +7003,7 @@ num_visible_fields (struct type *type)
+@@ -7031,7 +7034,7 @@ num_visible_fields (struct type *type)
     Searches recursively through wrapper fields (e.g., '_parent').  */
  
  static struct value *
@@ -757,7 +757,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
                           struct type *type)
  {
    int i;
-@@ -7033,7 +7036,7 @@ ada_search_struct_field (char *name, str
+@@ -7064,7 +7067,7 @@ ada_search_struct_field (char *name, str
            int j;
            struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
  									i));
@@ -766,7 +766,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  
            for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
              {
-@@ -7051,8 +7054,8 @@ ada_search_struct_field (char *name, str
+@@ -7082,8 +7085,8 @@ ada_search_struct_field (char *name, str
    return NULL;
  }
  
@@ -777,7 +777,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  
  
  /* Return field #INDEX in ARG, where the index is that returned by
-@@ -7061,7 +7064,7 @@ static struct value *ada_index_struct_fi
+@@ -7092,7 +7095,7 @@ static struct value *ada_index_struct_fi
   * If found, return value, else return NULL.  */
  
  static struct value *
@@ -786,7 +786,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  			struct type *type)
  {
    return ada_index_struct_field_1 (&index, arg, offset, type);
-@@ -7073,7 +7076,7 @@ ada_index_struct_field (int index, struc
+@@ -7104,7 +7107,7 @@ ada_index_struct_field (int index, struc
   * *INDEX_P.  */
  
  static struct value *
@@ -795,7 +795,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  			  struct type *type)
  {
    int i;
-@@ -7163,7 +7166,8 @@ ada_value_struct_elt (struct value *arg,
+@@ -7194,7 +7197,8 @@ ada_value_struct_elt (struct value *arg,
      v = ada_search_struct_field (name, arg, 0, t);
    else
      {
@@ -805,7 +805,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
        struct type *field_type;
        CORE_ADDR address;
  
-@@ -7480,8 +7484,8 @@ ada_coerce_ref (struct value *val0)
+@@ -7511,8 +7515,8 @@ ada_coerce_ref (struct value *val0)
  /* Return OFF rounded upward if necessary to a multiple of
     ALIGNMENT (a power of 2).  */
  
@@ -816,7 +816,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  {
    return (off + alignment - 1) & ~(alignment - 1);
  }
-@@ -7863,10 +7867,9 @@ ada_template_to_fixed_record_type_1 (str
+@@ -7894,10 +7898,9 @@ ada_template_to_fixed_record_type_1 (str
    struct value *mark = value_mark ();
    struct value *dval;
    struct type *rtype;
@@ -829,7 +829,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
    int f;
  
    /* Compute the number of fields in this record type that are going
-@@ -7944,7 +7947,7 @@ ada_template_to_fixed_record_type_1 (str
+@@ -7975,7 +7978,7 @@ ada_template_to_fixed_record_type_1 (str
  	     that follow this one.  */
  	  if (ada_is_aligner_type (field_type))
  	    {
@@ -838,7 +838,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
  
  	      field_valaddr = cond_offset_host (field_valaddr, field_offset);
  	      field_address = cond_offset_target (field_address, field_offset);
-@@ -8080,11 +8083,11 @@ ada_template_to_fixed_record_type_1 (str
+@@ -8111,11 +8114,11 @@ ada_template_to_fixed_record_type_1 (str
    if (TYPE_LENGTH (type) <= 0)
      {
        if (TYPE_NAME (rtype))
@@ -854,7 +854,7 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
      }
    else
      {
-@@ -8508,7 +8511,8 @@ to_fixed_array_type (struct type *type0,
+@@ -8539,7 +8542,8 @@ to_fixed_array_type (struct type *type0,
  	 type was a regular (non-packed) array type.  As a result, the
  	 bitsize of the array elements needs to be set again, and the array
  	 length needs to be recomputed based on that bitsize.  */
@@ -864,10 +864,10 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.c
        int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
  
        TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
-Index: gdb-7.8.50.20141228/gdb/ada-lang.h
+Index: gdb-7.8.90.20150125/gdb/ada-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ada-lang.h	2015-01-06 22:44:41.509318722 +0100
-+++ gdb-7.8.50.20141228/gdb/ada-lang.h	2015-01-06 22:44:43.164326752 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ada-lang.h	2015-01-25 08:39:10.812466825 +0100
++++ gdb-7.8.90.20150125/gdb/ada-lang.h	2015-01-25 08:39:14.650483368 +0100
 @@ -179,7 +179,7 @@ extern void ada_print_type (struct type
  extern void ada_print_typedef (struct type *type, struct symbol *new_symbol,
  			       struct ui_file *stream);
@@ -895,10 +895,10 @@ Index: gdb-7.8.50.20141228/gdb/ada-lang.h
                                                       struct type *);
  
  extern struct type *ada_coerce_to_simple_array_type (struct type *);
-Index: gdb-7.8.50.20141228/gdb/ada-typeprint.c
+Index: gdb-7.8.90.20150125/gdb/ada-typeprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ada-typeprint.c	2015-01-06 22:44:41.509318722 +0100
-+++ gdb-7.8.50.20141228/gdb/ada-typeprint.c	2015-01-06 22:44:43.165326757 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ada-typeprint.c	2015-01-25 08:39:10.812466825 +0100
++++ gdb-7.8.90.20150125/gdb/ada-typeprint.c	2015-01-25 08:39:14.651483372 +0100
 @@ -883,8 +883,8 @@ ada_print_type (struct type *type0, cons
  	    const char *name = ada_type_name (type);
  
@@ -920,10 +920,10 @@ Index: gdb-7.8.50.20141228/gdb/ada-typeprint.c
  	break;
        case TYPE_CODE_ENUM:
  	if (show < 0)
-Index: gdb-7.8.50.20141228/gdb/ada-valprint.c
+Index: gdb-7.8.90.20150125/gdb/ada-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ada-valprint.c	2015-01-06 22:44:41.510318727 +0100
-+++ gdb-7.8.50.20141228/gdb/ada-valprint.c	2015-01-06 22:44:43.165326757 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ada-valprint.c	2015-01-25 08:39:10.814466834 +0100
++++ gdb-7.8.90.20150125/gdb/ada-valprint.c	2015-01-25 08:39:14.651483372 +0100
 @@ -33,11 +33,11 @@
  #include "objfiles.h"
  
@@ -1077,10 +1077,10 @@ Index: gdb-7.8.50.20141228/gdb/ada-valprint.c
  	       struct ui_file *stream, int recurse,
  	       const struct value *val,
  	       const struct value_print_options *options)
-Index: gdb-7.8.50.20141228/gdb/annotate.c
+Index: gdb-7.8.90.20150125/gdb/annotate.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/annotate.c	2015-01-06 22:44:41.510318727 +0100
-+++ gdb-7.8.50.20141228/gdb/annotate.c	2015-01-06 22:44:43.165326757 +0100
+--- gdb-7.8.90.20150125.orig/gdb/annotate.c	2015-01-25 08:39:10.814466834 +0100
++++ gdb-7.8.90.20150125/gdb/annotate.c	2015-01-25 08:39:14.652483376 +0100
 @@ -542,21 +542,21 @@ annotate_frame_end (void)
  }
  \f
@@ -1107,10 +1107,10 @@ Index: gdb-7.8.50.20141228/gdb/annotate.c
  }
  
  void
-Index: gdb-7.8.50.20141228/gdb/annotate.h
+Index: gdb-7.8.90.20150125/gdb/annotate.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/annotate.h	2015-01-06 22:44:41.510318727 +0100
-+++ gdb-7.8.50.20141228/gdb/annotate.h	2015-01-06 22:44:43.165326757 +0100
+--- gdb-7.8.90.20150125.orig/gdb/annotate.h	2015-01-25 08:39:10.815466838 +0100
++++ gdb-7.8.90.20150125/gdb/annotate.h	2015-01-25 08:39:14.652483376 +0100
 @@ -92,8 +92,8 @@ extern void annotate_frame_source_end (v
  extern void annotate_frame_where (void);
  extern void annotate_frame_end (void);
@@ -1122,10 +1122,10 @@ Index: gdb-7.8.50.20141228/gdb/annotate.h
  extern void annotate_elt_rep_end (void);
  extern void annotate_elt (void);
  extern void annotate_array_section_end (void);
-Index: gdb-7.8.50.20141228/gdb/arm-linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/arm-linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/arm-linux-nat.c	2015-01-06 22:44:41.511318732 +0100
-+++ gdb-7.8.50.20141228/gdb/arm-linux-nat.c	2015-01-06 22:44:43.166326762 +0100
+--- gdb-7.8.90.20150125.orig/gdb/arm-linux-nat.c	2015-01-25 08:39:10.815466838 +0100
++++ gdb-7.8.90.20150125/gdb/arm-linux-nat.c	2015-01-25 08:39:14.652483376 +0100
 @@ -1186,7 +1186,7 @@ arm_linux_remove_hw_breakpoint (struct t
     ADDR?  */
  static int
@@ -1135,10 +1135,10 @@ Index: gdb-7.8.50.20141228/gdb/arm-linux-nat.c
  {
    const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap ();
    CORE_ADDR max_wp_length, aligned_addr;
-Index: gdb-7.8.50.20141228/gdb/ax-gdb.c
+Index: gdb-7.8.90.20150125/gdb/ax-gdb.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ax-gdb.c	2015-01-06 22:44:41.512318737 +0100
-+++ gdb-7.8.50.20141228/gdb/ax-gdb.c	2015-01-06 22:44:43.166326762 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ax-gdb.c	2015-01-25 08:39:10.817466846 +0100
++++ gdb-7.8.90.20150125/gdb/ax-gdb.c	2015-01-25 08:39:14.653483381 +0100
 @@ -82,12 +82,12 @@ static void gen_traced_pop (struct gdbar
  static void gen_sign_extend (struct agent_expr *, struct type *);
  static void gen_extend (struct agent_expr *, struct type *);
@@ -1238,10 +1238,10 @@ Index: gdb-7.8.50.20141228/gdb/ax-gdb.c
  {
    int i, rslt;
    int nbases = TYPE_N_BASECLASSES (type);
-Index: gdb-7.8.50.20141228/gdb/ax-general.c
+Index: gdb-7.8.90.20150125/gdb/ax-general.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ax-general.c	2015-01-06 22:44:41.512318737 +0100
-+++ gdb-7.8.50.20141228/gdb/ax-general.c	2015-01-06 22:44:43.167326767 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ax-general.c	2015-01-25 08:39:10.818466851 +0100
++++ gdb-7.8.90.20150125/gdb/ax-general.c	2015-01-25 08:39:14.653483381 +0100
 @@ -193,7 +193,7 @@ ax_zero_ext (struct agent_expr *x, int n
  
  /* Append a trace_quick instruction to EXPR, to record N bytes.  */
@@ -1251,10 +1251,10 @@ Index: gdb-7.8.50.20141228/gdb/ax-general.c
  {
    /* N must fit in a byte.  */
    if (n < 0 || n > 255)
-Index: gdb-7.8.50.20141228/gdb/ax.h
+Index: gdb-7.8.90.20150125/gdb/ax.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ax.h	2015-01-06 22:44:41.512318737 +0100
-+++ gdb-7.8.50.20141228/gdb/ax.h	2015-01-06 22:44:43.167326767 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ax.h	2015-01-25 08:39:10.818466851 +0100
++++ gdb-7.8.90.20150125/gdb/ax.h	2015-01-25 08:39:14.654483385 +0100
 @@ -207,7 +207,7 @@ extern void ax_ext (struct agent_expr *E
  extern void ax_zero_ext (struct agent_expr *EXPR, int N);
  
@@ -1264,10 +1264,10 @@ Index: gdb-7.8.50.20141228/gdb/ax.h
  
  /* Append a goto op to EXPR.  OP is the actual op (must be aop_goto or
     aop_if_goto).  We assume we don't know the target offset yet,
-Index: gdb-7.8.50.20141228/gdb/breakpoint.c
+Index: gdb-7.8.90.20150125/gdb/breakpoint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/breakpoint.c	2015-01-06 22:44:41.516318756 +0100
-+++ gdb-7.8.50.20141228/gdb/breakpoint.c	2015-01-06 22:44:43.170326781 +0100
+--- gdb-7.8.90.20150125.orig/gdb/breakpoint.c	2015-01-25 08:39:10.824466877 +0100
++++ gdb-7.8.90.20150125/gdb/breakpoint.c	2015-01-25 08:39:14.657483398 +0100
 @@ -2191,9 +2191,9 @@ should_be_inserted (struct bp_location *
  	{
  	  fprintf_unfiltered (gdb_stdlog,
@@ -1280,7 +1280,7 @@ Index: gdb-7.8.50.20141228/gdb/breakpoint.c
  	}
        return 0;
      }
-@@ -6943,7 +6943,7 @@ breakpoint_address_match (struct address
+@@ -6976,7 +6976,7 @@ breakpoint_address_match (struct address
  
  static int
  breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
@@ -1289,7 +1289,7 @@ Index: gdb-7.8.50.20141228/gdb/breakpoint.c
  				CORE_ADDR addr2)
  {
    return ((gdbarch_has_global_breakpoints (target_gdbarch ())
-@@ -11667,7 +11667,7 @@ can_use_hardware_watchpoint (struct valu
+@@ -11700,7 +11700,7 @@ can_use_hardware_watchpoint (struct valu
  		      && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
  		{
  		  CORE_ADDR vaddr = value_address (v);
@@ -1298,10 +1298,10 @@ Index: gdb-7.8.50.20141228/gdb/breakpoint.c
  		  int num_regs;
  
  		  len = (target_exact_watchpoints
-Index: gdb-7.8.50.20141228/gdb/breakpoint.h
+Index: gdb-7.8.90.20150125/gdb/breakpoint.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/breakpoint.h	2015-01-06 22:44:41.517318761 +0100
-+++ gdb-7.8.50.20141228/gdb/breakpoint.h	2015-01-06 22:44:43.170326781 +0100
+--- gdb-7.8.90.20150125.orig/gdb/breakpoint.h	2015-01-25 08:39:10.826466885 +0100
++++ gdb-7.8.90.20150125/gdb/breakpoint.h	2015-01-25 08:39:14.658483402 +0100
 @@ -236,7 +236,7 @@ struct bp_target_info
  
    /* If this is a ranged breakpoint, then this field contains the
@@ -1320,10 +1320,10 @@ Index: gdb-7.8.50.20141228/gdb/breakpoint.h
  
    /* Type of hardware watchpoint.  */
    enum target_hw_bp_type watchpoint_type;
-Index: gdb-7.8.50.20141228/gdb/c-lang.c
+Index: gdb-7.8.90.20150125/gdb/c-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/c-lang.c	2015-01-06 22:44:41.518318766 +0100
-+++ gdb-7.8.50.20141228/gdb/c-lang.c	2015-01-06 22:44:43.170326781 +0100
+--- gdb-7.8.90.20150125.orig/gdb/c-lang.c	2015-01-25 08:39:10.826466885 +0100
++++ gdb-7.8.90.20150125/gdb/c-lang.c	2015-01-25 08:39:14.658483402 +0100
 @@ -187,7 +187,7 @@ c_printchar (int c, struct type *type, s
  
  void
@@ -1351,10 +1351,10 @@ Index: gdb-7.8.50.20141228/gdb/c-lang.c
  
  		if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type),
  					 &low_bound, &high_bound) < 0)
-Index: gdb-7.8.50.20141228/gdb/c-lang.h
+Index: gdb-7.8.90.20150125/gdb/c-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/c-lang.h	2015-01-06 22:44:41.518318766 +0100
-+++ gdb-7.8.50.20141228/gdb/c-lang.h	2015-01-06 22:44:43.171326786 +0100
+--- gdb-7.8.90.20150125.orig/gdb/c-lang.h	2015-01-25 08:39:10.827466890 +0100
++++ gdb-7.8.90.20150125/gdb/c-lang.h	2015-01-25 08:39:14.659483406 +0100
 @@ -74,7 +74,7 @@ extern void c_print_typedef (struct type
  			     struct ui_file *);
  
@@ -1390,10 +1390,10 @@ Index: gdb-7.8.50.20141228/gdb/c-lang.h
  					struct ui_file *, int,
  					const struct value *,
  					const struct value_print_options *,
-Index: gdb-7.8.50.20141228/gdb/c-valprint.c
+Index: gdb-7.8.90.20150125/gdb/c-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/c-valprint.c	2015-01-06 22:44:41.518318766 +0100
-+++ gdb-7.8.50.20141228/gdb/c-valprint.c	2015-01-06 22:44:43.171326786 +0100
+--- gdb-7.8.90.20150125.orig/gdb/c-valprint.c	2015-01-25 08:39:10.827466890 +0100
++++ gdb-7.8.90.20150125/gdb/c-valprint.c	2015-01-25 08:39:14.659483406 +0100
 @@ -132,7 +132,7 @@ static const struct generic_val_print_de
  
  void
@@ -1435,10 +1435,10 @@ Index: gdb-7.8.50.20141228/gdb/c-valprint.c
    struct value_print_options opts = *options;
  
    opts.deref_ref = 1;
-Index: gdb-7.8.50.20141228/gdb/cp-abi.c
+Index: gdb-7.8.90.20150125/gdb/cp-abi.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/cp-abi.c	2015-01-06 22:44:41.518318766 +0100
-+++ gdb-7.8.50.20141228/gdb/cp-abi.c	2015-01-06 22:44:43.171326786 +0100
+--- gdb-7.8.90.20150125.orig/gdb/cp-abi.c	2015-01-25 08:39:10.827466890 +0100
++++ gdb-7.8.90.20150125/gdb/cp-abi.c	2015-01-25 08:39:14.659483406 +0100
 @@ -64,13 +64,13 @@ is_operator_name (const char *name)
    return (*current_cp_abi.is_operator_name) (name);
  }
@@ -1474,10 +1474,10 @@ Index: gdb-7.8.50.20141228/gdb/cp-abi.c
  {
    struct type *ret = NULL;
    volatile struct gdb_exception e;
-Index: gdb-7.8.50.20141228/gdb/cp-abi.h
+Index: gdb-7.8.90.20150125/gdb/cp-abi.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/cp-abi.h	2015-01-06 22:44:41.519318770 +0100
-+++ gdb-7.8.50.20141228/gdb/cp-abi.h	2015-01-06 22:44:43.171326786 +0100
+--- gdb-7.8.90.20150125.orig/gdb/cp-abi.h	2015-01-25 08:39:10.828466894 +0100
++++ gdb-7.8.90.20150125/gdb/cp-abi.h	2015-01-25 08:39:14.659483406 +0100
 @@ -108,7 +108,7 @@ extern struct value *value_virtual_fn_fi
  					     struct fn_field *f,
  					     int j,
@@ -1532,10 +1532,10 @@ Index: gdb-7.8.50.20141228/gdb/cp-abi.h
    void (*print_method_ptr) (const gdb_byte *contents,
  			    struct type *type,
  			    struct ui_file *stream);
-Index: gdb-7.8.50.20141228/gdb/cp-valprint.c
+Index: gdb-7.8.90.20150125/gdb/cp-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/cp-valprint.c	2015-01-06 22:44:41.519318770 +0100
-+++ gdb-7.8.50.20141228/gdb/cp-valprint.c	2015-01-06 22:44:43.172326791 +0100
+--- gdb-7.8.90.20150125.orig/gdb/cp-valprint.c	2015-01-25 08:39:10.829466898 +0100
++++ gdb-7.8.90.20150125/gdb/cp-valprint.c	2015-01-25 08:39:14.660483411 +0100
 @@ -80,7 +80,7 @@ static void cp_print_static_field (struc
  				   const struct value_print_options *);
  
@@ -1609,10 +1609,10 @@ Index: gdb-7.8.50.20141228/gdb/cp-valprint.c
        int skip;
        struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
        const char *basename = TYPE_NAME (baseclass);
-Index: gdb-7.8.50.20141228/gdb/d-lang.h
+Index: gdb-7.8.90.20150125/gdb/d-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/d-lang.h	2015-01-06 22:44:41.519318770 +0100
-+++ gdb-7.8.50.20141228/gdb/d-lang.h	2015-01-06 22:44:43.172326791 +0100
+--- gdb-7.8.90.20150125.orig/gdb/d-lang.h	2015-01-25 08:39:10.829466898 +0100
++++ gdb-7.8.90.20150125/gdb/d-lang.h	2015-01-25 08:39:14.660483411 +0100
 @@ -71,7 +71,7 @@ extern const struct builtin_d_type *buil
  /* Defined in d-valprint.c  */
  
@@ -1622,10 +1622,10 @@ Index: gdb-7.8.50.20141228/gdb/d-lang.h
  			 struct ui_file *stream, int recurse,
  			 const struct value *val,
  			 const struct value_print_options *options);
-Index: gdb-7.8.50.20141228/gdb/d-valprint.c
+Index: gdb-7.8.90.20150125/gdb/d-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/d-valprint.c	2015-01-06 22:44:41.519318770 +0100
-+++ gdb-7.8.50.20141228/gdb/d-valprint.c	2015-01-06 22:44:43.172326791 +0100
+--- gdb-7.8.90.20150125.orig/gdb/d-valprint.c	2015-01-25 08:39:10.829466898 +0100
++++ gdb-7.8.90.20150125/gdb/d-valprint.c	2015-01-25 08:39:14.660483411 +0100
 @@ -29,7 +29,7 @@
  
  static int
@@ -1648,10 +1648,10 @@ Index: gdb-7.8.50.20141228/gdb/d-valprint.c
               const struct value_print_options *options)
  {
    int ret;
-Index: gdb-7.8.50.20141228/gdb/doublest.c
+Index: gdb-7.8.90.20150125/gdb/doublest.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/doublest.c	2015-01-06 22:44:41.520318775 +0100
-+++ gdb-7.8.50.20141228/gdb/doublest.c	2015-01-06 22:44:43.172326791 +0100
+--- gdb-7.8.90.20150125.orig/gdb/doublest.c	2015-01-25 08:39:10.830466903 +0100
++++ gdb-7.8.90.20150125/gdb/doublest.c	2015-01-25 08:39:14.661483415 +0100
 @@ -765,7 +765,7 @@ floatformat_from_doublest (const struct
     but not passed on by GDB.  This should be fixed.  */
  
@@ -1672,10 +1672,10 @@ Index: gdb-7.8.50.20141228/gdb/doublest.c
    return format;
  }
  
-Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
+Index: gdb-7.8.90.20150125/gdb/dwarf2loc.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/dwarf2loc.c	2015-01-06 22:44:41.522318785 +0100
-+++ gdb-7.8.50.20141228/gdb/dwarf2loc.c	2015-01-06 22:44:43.173326796 +0100
+--- gdb-7.8.90.20150125.orig/gdb/dwarf2loc.c	2015-01-25 08:39:10.833466916 +0100
++++ gdb-7.8.90.20150125/gdb/dwarf2loc.c	2015-01-25 08:40:00.580681336 +0100
 @@ -1557,19 +1557,19 @@ insert_bits (unsigned int datum,
     BITS_BIG_ENDIAN is taken directly from gdbarch.  */
  
@@ -1786,10 +1786,10 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
    struct dwarf_expr_piece *piece = NULL;
 -  LONGEST byte_offset;
 +  LONGEST byte_offset, bit_offset;
+   enum bfd_endian byte_order;
  
    type = check_typedef (value_type (value));
-   if (TYPE_CODE (type) != TYPE_CODE_PTR)
-@@ -2025,7 +2026,7 @@ indirect_pieced_value (struct value *val
+@@ -2026,7 +2027,7 @@ indirect_pieced_value (struct value *val
    for (i = 0; i < c->n_pieces && bit_length > 0; i++)
      {
        struct dwarf_expr_piece *p = &c->pieces[i];
@@ -1798,7 +1798,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
  
        if (bit_offset > 0)
  	{
-@@ -2303,7 +2304,7 @@ dwarf2_evaluate_loc_desc_full (struct ty
+@@ -2309,7 +2310,7 @@ dwarf2_evaluate_loc_desc_full (struct ty
  	    struct value *value = dwarf_expr_fetch (ctx, 0);
  	    gdb_byte *contents;
  	    const gdb_byte *val_bytes;
@@ -1807,10 +1807,10 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
  
  	    if (byte_offset + TYPE_LENGTH (type) > n)
  	      invalid_synthetic_pointer ();
-Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
+Index: gdb-7.8.90.20150125/gdb/dwarf2read.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c	2015-01-06 22:44:41.526318805 +0100
-+++ gdb-7.8.50.20141228/gdb/dwarf2read.c	2015-01-06 22:44:43.177326815 +0100
+--- gdb-7.8.90.20150125.orig/gdb/dwarf2read.c	2015-01-25 08:39:10.840466946 +0100
++++ gdb-7.8.90.20150125/gdb/dwarf2read.c	2015-01-25 08:39:14.667483441 +0100
 @@ -1883,12 +1883,12 @@ dwarf2_complex_location_expr_complaint (
  }
  
@@ -1839,10 +1839,10 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  
  	      attr = dwarf2_attr (die, DW_AT_byte_size, cu);
  	      if (attr)
-Index: gdb-7.8.50.20141228/gdb/eval.c
+Index: gdb-7.8.90.20150125/gdb/eval.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/eval.c	2015-01-06 22:44:41.528318814 +0100
-+++ gdb-7.8.50.20141228/gdb/eval.c	2015-01-06 22:44:43.178326820 +0100
+--- gdb-7.8.90.20150125.orig/gdb/eval.c	2015-01-25 08:39:10.842466954 +0100
++++ gdb-7.8.90.20150125/gdb/eval.c	2015-01-25 08:39:14.668483445 +0100
 @@ -314,7 +314,8 @@ evaluate_struct_tuple (struct value *str
    while (--nargs >= 0)
      {
@@ -1905,10 +1905,10 @@ Index: gdb-7.8.50.20141228/gdb/eval.c
  	struct value_print_options opts;
  
  	get_user_print_options (&opts);
-Index: gdb-7.8.50.20141228/gdb/f-lang.c
+Index: gdb-7.8.90.20150125/gdb/f-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/f-lang.c	2015-01-06 22:44:41.529318819 +0100
-+++ gdb-7.8.50.20141228/gdb/f-lang.c	2015-01-06 22:44:43.178326820 +0100
+--- gdb-7.8.90.20150125.orig/gdb/f-lang.c	2015-01-25 08:39:10.843466959 +0100
++++ gdb-7.8.90.20150125/gdb/f-lang.c	2015-01-25 08:39:14.668483445 +0100
 @@ -103,7 +103,7 @@ f_printchar (int c, struct type *type, s
  
  static void
@@ -1918,10 +1918,10 @@ Index: gdb-7.8.50.20141228/gdb/f-lang.c
  	    const struct value_print_options *options)
  {
    const char *type_encoding = f_get_encoding (type);
-Index: gdb-7.8.50.20141228/gdb/f-lang.h
+Index: gdb-7.8.90.20150125/gdb/f-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/f-lang.h	2015-01-06 22:44:41.529318819 +0100
-+++ gdb-7.8.50.20141228/gdb/f-lang.h	2015-01-06 22:44:43.178326820 +0100
+--- gdb-7.8.90.20150125.orig/gdb/f-lang.h	2015-01-25 08:39:10.843466959 +0100
++++ gdb-7.8.90.20150125/gdb/f-lang.h	2015-01-25 08:39:14.668483445 +0100
 @@ -30,7 +30,7 @@ extern void f_error (char *);	/* Defined
  extern void f_print_type (struct type *, const char *, struct ui_file *, int,
  			  int, const struct type_print_options *);
@@ -1931,10 +1931,10 @@ Index: gdb-7.8.50.20141228/gdb/f-lang.h
  			 struct ui_file *, int,
  			 const struct value *,
  			 const struct value_print_options *);
-Index: gdb-7.8.50.20141228/gdb/f-valprint.c
+Index: gdb-7.8.90.20150125/gdb/f-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/f-valprint.c	2015-01-06 22:44:41.529318819 +0100
-+++ gdb-7.8.50.20141228/gdb/f-valprint.c	2015-01-06 22:45:07.746446028 +0100
+--- gdb-7.8.90.20150125.orig/gdb/f-valprint.c	2015-01-25 08:39:10.843466959 +0100
++++ gdb-7.8.90.20150125/gdb/f-valprint.c	2015-01-25 08:39:14.668483445 +0100
 @@ -38,7 +38,7 @@ extern void _initialize_f_valprint (void
  static void info_common_command (char *, int);
  static void f77_get_dynamic_length_of_aggregate (struct type *);
@@ -1994,10 +1994,10 @@ Index: gdb-7.8.50.20141228/gdb/f-valprint.c
  	     const struct value *original_value,
  	     const struct value_print_options *options)
  {
-Index: gdb-7.8.50.20141228/gdb/findvar.c
+Index: gdb-7.8.90.20150125/gdb/findvar.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/findvar.c	2015-01-06 22:44:41.529318819 +0100
-+++ gdb-7.8.50.20141228/gdb/findvar.c	2015-01-06 22:44:43.179326825 +0100
+--- gdb-7.8.90.20150125.orig/gdb/findvar.c	2015-01-25 08:39:10.844466963 +0100
++++ gdb-7.8.90.20150125/gdb/findvar.c	2015-01-25 08:39:14.669483449 +0100
 @@ -626,7 +626,7 @@ struct value *
  default_value_from_register (struct gdbarch *gdbarch, struct type *type,
                               int regnum, struct frame_id frame_id)
@@ -2030,10 +2030,10 @@ Index: gdb-7.8.50.20141228/gdb/findvar.c
  
        /* If the register length is larger than the number of bytes
           remaining to copy, then only copy the appropriate bytes.  */
-Index: gdb-7.8.50.20141228/gdb/frame.c
+Index: gdb-7.8.90.20150125/gdb/frame.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/frame.c	2015-01-06 22:44:41.530318824 +0100
-+++ gdb-7.8.50.20141228/gdb/frame.c	2015-01-06 22:44:43.180326830 +0100
+--- gdb-7.8.90.20150125.orig/gdb/frame.c	2015-01-25 08:39:10.845466967 +0100
++++ gdb-7.8.90.20150125/gdb/frame.c	2015-01-25 08:39:14.669483449 +0100
 @@ -1269,7 +1269,7 @@ deprecated_frame_register_read (struct f
  
  int
@@ -2052,10 +2052,10 @@ Index: gdb-7.8.50.20141228/gdb/frame.c
  
    /* Copy the data.  */
    while (len > 0)
-Index: gdb-7.8.50.20141228/gdb/frame.h
+Index: gdb-7.8.90.20150125/gdb/frame.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/frame.h	2015-01-06 22:44:41.530318824 +0100
-+++ gdb-7.8.50.20141228/gdb/frame.h	2015-01-06 22:44:43.180326830 +0100
+--- gdb-7.8.90.20150125.orig/gdb/frame.h	2015-01-25 08:39:10.845466967 +0100
++++ gdb-7.8.90.20150125/gdb/frame.h	2015-01-25 08:39:14.670483454 +0100
 @@ -583,7 +583,7 @@ extern void put_frame_register (struct f
     contents are optimized out or unavailable, set *OPTIMIZEDP,
     *UNAVAILABLEP accordingly.  */
@@ -2065,11 +2065,11 @@ Index: gdb-7.8.50.20141228/gdb/frame.h
  				     gdb_byte *myaddr,
  				     int *optimizedp, int *unavailablep);
  
-Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
+Index: gdb-7.8.90.20150125/gdb/gdbtypes.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbtypes.c	2015-01-06 22:44:41.532318834 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbtypes.c	2015-01-06 22:44:43.181326835 +0100
-@@ -2477,7 +2477,7 @@ allocate_gnat_aux_type (struct type *typ
+--- gdb-7.8.90.20150125.orig/gdb/gdbtypes.c	2015-01-25 08:39:10.848466980 +0100
++++ gdb-7.8.90.20150125/gdb/gdbtypes.c	2015-01-25 08:39:14.671483458 +0100
+@@ -2478,7 +2478,7 @@ allocate_gnat_aux_type (struct type *typ
     least as long as OBJFILE.  */
  
  struct type *
@@ -2078,7 +2078,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
  	   const char *name, struct objfile *objfile)
  {
    struct type *type;
-@@ -2717,8 +2717,8 @@ is_public_ancestor (struct type *base, s
+@@ -2718,8 +2718,8 @@ is_public_ancestor (struct type *base, s
  
  static int
  is_unique_ancestor_worker (struct type *base, struct type *dclass,
@@ -2089,7 +2089,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
  			   CORE_ADDR address, struct value *val)
  {
    int i, count = 0;
-@@ -2729,7 +2729,7 @@ is_unique_ancestor_worker (struct type *
+@@ -2730,7 +2730,7 @@ is_unique_ancestor_worker (struct type *
    for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
      {
        struct type *iter;
@@ -2098,7 +2098,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
  
        iter = check_typedef (TYPE_BASECLASS (dclass, i));
  
-@@ -2770,7 +2770,7 @@ is_unique_ancestor_worker (struct type *
+@@ -2771,7 +2771,7 @@ is_unique_ancestor_worker (struct type *
  int
  is_unique_ancestor (struct type *base, struct value *val)
  {
@@ -2107,7 +2107,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
  
    return is_unique_ancestor_worker (base, value_type (val), &offset,
  				    value_contents_for_printing (val),
-@@ -3915,7 +3915,7 @@ recursive_dump_type (struct type *type,
+@@ -3916,7 +3916,7 @@ recursive_dump_type (struct type *type,
        break;
      }
    puts_filtered ("\n");
@@ -2116,7 +2116,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
    if (TYPE_OBJFILE_OWNED (type))
      {
        printfi_filtered (spaces, "objfile ");
-@@ -4039,8 +4039,8 @@ recursive_dump_type (struct type *type,
+@@ -4040,8 +4040,8 @@ recursive_dump_type (struct type *type,
  			  idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
        else
  	printfi_filtered (spaces + 2,
@@ -2127,7 +2127,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
  			  TYPE_FIELD_BITSIZE (type, idx));
        gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
        printf_filtered (" name '%s' (",
-@@ -4397,7 +4397,7 @@ copy_type (const struct type *type)
+@@ -4398,7 +4398,7 @@ copy_type (const struct type *type)
  
  struct type *
  arch_type (struct gdbarch *gdbarch,
@@ -2136,10 +2136,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
  {
    struct type *type;
  
-Index: gdb-7.8.50.20141228/gdb/gdbtypes.h
+Index: gdb-7.8.90.20150125/gdb/gdbtypes.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbtypes.h	2015-01-06 22:44:41.533318838 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbtypes.h	2015-01-06 22:44:43.181326835 +0100
+--- gdb-7.8.90.20150125.orig/gdb/gdbtypes.h	2015-01-25 08:39:10.849466984 +0100
++++ gdb-7.8.90.20150125/gdb/gdbtypes.h	2015-01-25 08:39:14.671483458 +0100
 @@ -598,7 +598,7 @@ struct main_type
  	   gdbarch_bits_big_endian=0 targets, it is the bit offset to
  	   the LSB.  */
@@ -2173,10 +2173,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.h
  extern struct type *arch_integer_type (struct gdbarch *, int, int, char *);
  extern struct type *arch_character_type (struct gdbarch *, int, int, char *);
  extern struct type *arch_boolean_type (struct gdbarch *, int, int, char *);
-Index: gdb-7.8.50.20141228/gdb/gnu-v2-abi.c
+Index: gdb-7.8.90.20150125/gdb/gnu-v2-abi.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gnu-v2-abi.c	2015-01-06 22:44:41.533318838 +0100
-+++ gdb-7.8.50.20141228/gdb/gnu-v2-abi.c	2015-01-06 22:44:43.181326835 +0100
+--- gdb-7.8.90.20150125.orig/gdb/gnu-v2-abi.c	2015-01-25 08:39:10.849466984 +0100
++++ gdb-7.8.90.20150125/gdb/gnu-v2-abi.c	2015-01-25 08:39:14.672483462 +0100
 @@ -82,7 +82,7 @@ gnuv2_is_operator_name (const char *name
     TYPE is the type in which F is located.  */
  static struct value *
@@ -2228,10 +2228,10 @@ Index: gdb-7.8.50.20141228/gdb/gnu-v2-abi.c
  	    gnuv2_baseclass_offset (type, i, valaddr,
  				    embedded_offset, address, val);
  
-Index: gdb-7.8.50.20141228/gdb/gnu-v3-abi.c
+Index: gdb-7.8.90.20150125/gdb/gnu-v3-abi.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gnu-v3-abi.c	2015-01-06 22:44:41.534318843 +0100
-+++ gdb-7.8.50.20141228/gdb/gnu-v3-abi.c	2015-01-06 22:44:43.181326835 +0100
+--- gdb-7.8.90.20150125.orig/gdb/gnu-v3-abi.c	2015-01-25 08:39:10.850466989 +0100
++++ gdb-7.8.90.20150125/gdb/gnu-v3-abi.c	2015-01-25 08:39:14.672483462 +0100
 @@ -108,7 +108,7 @@ build_gdb_vtable_type (struct gdbarch *a
  {
    struct type *t;
@@ -2306,10 +2306,10 @@ Index: gdb-7.8.50.20141228/gdb/gnu-v3-abi.c
        struct type *basetype;
  
        if (BASETYPE_VIA_VIRTUAL (domain, i))
-Index: gdb-7.8.50.20141228/gdb/go-lang.h
+Index: gdb-7.8.90.20150125/gdb/go-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/go-lang.h	2015-01-06 22:44:41.534318843 +0100
-+++ gdb-7.8.50.20141228/gdb/go-lang.h	2015-01-06 22:44:43.182326840 +0100
+--- gdb-7.8.90.20150125.orig/gdb/go-lang.h	2015-01-25 08:39:10.850466989 +0100
++++ gdb-7.8.90.20150125/gdb/go-lang.h	2015-01-25 08:39:14.672483462 +0100
 @@ -85,7 +85,7 @@ extern void go_print_type (struct type *
  /* Defined in go-valprint.c.  */
  
@@ -2319,10 +2319,10 @@ Index: gdb-7.8.50.20141228/gdb/go-lang.h
  			  struct ui_file *stream, int recurse,
  			  const struct value *val,
  			  const struct value_print_options *options);
-Index: gdb-7.8.50.20141228/gdb/go-valprint.c
+Index: gdb-7.8.90.20150125/gdb/go-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/go-valprint.c	2015-01-06 22:44:41.534318843 +0100
-+++ gdb-7.8.50.20141228/gdb/go-valprint.c	2015-01-06 22:44:43.182326840 +0100
+--- gdb-7.8.90.20150125.orig/gdb/go-valprint.c	2015-01-25 08:39:10.851466993 +0100
++++ gdb-7.8.90.20150125/gdb/go-valprint.c	2015-01-25 08:39:14.672483462 +0100
 @@ -37,7 +37,7 @@
  
  static void
@@ -2345,10 +2345,10 @@ Index: gdb-7.8.50.20141228/gdb/go-valprint.c
  	      const struct value_print_options *options)
  {
    CHECK_TYPEDEF (type);
-Index: gdb-7.8.50.20141228/gdb/inf-ttrace.c
+Index: gdb-7.8.90.20150125/gdb/inf-ttrace.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/inf-ttrace.c	2015-01-06 22:44:41.535318848 +0100
-+++ gdb-7.8.50.20141228/gdb/inf-ttrace.c	2015-01-06 22:44:43.182326840 +0100
+--- gdb-7.8.90.20150125.orig/gdb/inf-ttrace.c	2015-01-25 08:39:10.851466993 +0100
++++ gdb-7.8.90.20150125/gdb/inf-ttrace.c	2015-01-25 08:39:14.673483467 +0100
 @@ -366,7 +366,7 @@ inf_ttrace_can_use_hw_breakpoint (struct
  
  static int
@@ -2358,10 +2358,10 @@ Index: gdb-7.8.50.20141228/gdb/inf-ttrace.c
  {
    return 1;
  }
-Index: gdb-7.8.50.20141228/gdb/jv-lang.c
+Index: gdb-7.8.90.20150125/gdb/jv-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/jv-lang.c	2015-01-06 22:44:41.535318848 +0100
-+++ gdb-7.8.50.20141228/gdb/jv-lang.c	2015-01-06 22:44:43.182326840 +0100
+--- gdb-7.8.90.20150125.orig/gdb/jv-lang.c	2015-01-25 08:39:10.852466997 +0100
++++ gdb-7.8.90.20150125/gdb/jv-lang.c	2015-01-25 08:39:14.673483467 +0100
 @@ -436,7 +436,7 @@ java_link_class_type (struct gdbarch *gd
    for (i = TYPE_N_BASECLASSES (type); i < nfields; i++)
      {
@@ -2380,10 +2380,10 @@ Index: gdb-7.8.50.20141228/gdb/jv-lang.c
  	       const struct value_print_options *options)
  {
    const char *type_encoding = java_get_encoding (type);
-Index: gdb-7.8.50.20141228/gdb/jv-lang.h
+Index: gdb-7.8.90.20150125/gdb/jv-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/jv-lang.h	2015-01-06 22:44:41.535318848 +0100
-+++ gdb-7.8.50.20141228/gdb/jv-lang.h	2015-01-06 22:44:43.182326840 +0100
+--- gdb-7.8.90.20150125.orig/gdb/jv-lang.h	2015-01-25 08:39:10.852466997 +0100
++++ gdb-7.8.90.20150125/gdb/jv-lang.h	2015-01-25 08:39:14.673483467 +0100
 @@ -43,8 +43,8 @@ struct builtin_java_type
  
  extern const struct builtin_java_type *builtin_java_type (struct gdbarch *);
@@ -2395,10 +2395,10 @@ Index: gdb-7.8.50.20141228/gdb/jv-lang.h
  			    const struct value *,
  			    const struct value_print_options *);
  
-Index: gdb-7.8.50.20141228/gdb/jv-valprint.c
+Index: gdb-7.8.90.20150125/gdb/jv-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/jv-valprint.c	2015-01-06 22:44:41.535318848 +0100
-+++ gdb-7.8.50.20141228/gdb/jv-valprint.c	2015-01-06 22:44:43.182326840 +0100
+--- gdb-7.8.90.20150125.orig/gdb/jv-valprint.c	2015-01-25 08:39:10.852466997 +0100
++++ gdb-7.8.90.20150125/gdb/jv-valprint.c	2015-01-25 08:39:14.674483471 +0100
 @@ -265,7 +265,7 @@ java_value_print (struct value *val, str
  
  static void
@@ -2417,10 +2417,10 @@ Index: gdb-7.8.50.20141228/gdb/jv-valprint.c
  		struct ui_file *stream, int recurse,
  		const struct value *val,
  		const struct value_print_options *options)
-Index: gdb-7.8.50.20141228/gdb/language.c
+Index: gdb-7.8.90.20150125/gdb/language.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/language.c	2015-01-06 22:44:41.536318853 +0100
-+++ gdb-7.8.50.20141228/gdb/language.c	2015-01-06 22:44:43.183326844 +0100
+--- gdb-7.8.90.20150125.orig/gdb/language.c	2015-01-25 08:39:10.853467002 +0100
++++ gdb-7.8.90.20150125/gdb/language.c	2015-01-25 08:39:14.674483471 +0100
 @@ -720,7 +720,7 @@ unk_lang_printchar (int c, struct type *
  
  static void
@@ -2439,10 +2439,10 @@ Index: gdb-7.8.50.20141228/gdb/language.c
  		    struct ui_file *stream, int recurse,
  		    const struct value *val,
  		    const struct value_print_options *options)
-Index: gdb-7.8.50.20141228/gdb/language.h
+Index: gdb-7.8.90.20150125/gdb/language.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/language.h	2015-01-06 22:44:41.536318853 +0100
-+++ gdb-7.8.50.20141228/gdb/language.h	2015-01-06 22:44:43.183326844 +0100
+--- gdb-7.8.90.20150125.orig/gdb/language.h	2015-01-25 08:39:10.853467002 +0100
++++ gdb-7.8.90.20150125/gdb/language.h	2015-01-25 08:39:14.674483471 +0100
 @@ -189,7 +189,7 @@ struct language_defn
  			  struct ui_file * stream);
  
@@ -2461,10 +2461,10 @@ Index: gdb-7.8.50.20141228/gdb/language.h
  			  struct ui_file *stream, int recurse,
  			  const struct value *val,
  			  const struct value_print_options *options);
-Index: gdb-7.8.50.20141228/gdb/m2-lang.c
+Index: gdb-7.8.90.20150125/gdb/m2-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/m2-lang.c	2015-01-06 22:44:41.536318853 +0100
-+++ gdb-7.8.50.20141228/gdb/m2-lang.c	2015-01-06 22:44:43.183326844 +0100
+--- gdb-7.8.90.20150125.orig/gdb/m2-lang.c	2015-01-25 08:39:10.853467002 +0100
++++ gdb-7.8.90.20150125/gdb/m2-lang.c	2015-01-25 08:39:14.674483471 +0100
 @@ -104,10 +104,10 @@ m2_printchar (int c, struct type *type,
  
  static void
@@ -2499,10 +2499,10 @@ Index: gdb-7.8.50.20141228/gdb/m2-lang.c
  	  i = rep1 - 1;
  	  things_printed += options->repeat_count_threshold;
  	  need_comma = 1;
-Index: gdb-7.8.50.20141228/gdb/m2-lang.h
+Index: gdb-7.8.90.20150125/gdb/m2-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/m2-lang.h	2015-01-06 22:44:41.536318853 +0100
-+++ gdb-7.8.50.20141228/gdb/m2-lang.h	2015-01-06 22:44:43.183326844 +0100
+--- gdb-7.8.90.20150125.orig/gdb/m2-lang.h	2015-01-25 08:39:10.854467006 +0100
++++ gdb-7.8.90.20150125/gdb/m2-lang.h	2015-01-25 08:39:14.675483475 +0100
 @@ -34,7 +34,7 @@ extern void m2_print_typedef (struct typ
  extern int m2_is_long_set (struct type *type);
  extern int m2_is_unbounded_array (struct type *type);
@@ -2512,10 +2512,10 @@ Index: gdb-7.8.50.20141228/gdb/m2-lang.h
  			  struct ui_file *, int,
  			  const struct value *,
  			  const struct value_print_options *);
-Index: gdb-7.8.50.20141228/gdb/m2-typeprint.c
+Index: gdb-7.8.90.20150125/gdb/m2-typeprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/m2-typeprint.c	2015-01-06 22:44:41.537318858 +0100
-+++ gdb-7.8.50.20141228/gdb/m2-typeprint.c	2015-01-06 22:44:43.183326844 +0100
+--- gdb-7.8.90.20150125.orig/gdb/m2-typeprint.c	2015-01-25 08:39:10.854467006 +0100
++++ gdb-7.8.90.20150125/gdb/m2-typeprint.c	2015-01-25 08:39:14.675483475 +0100
 @@ -230,9 +230,12 @@ static void m2_array (struct type *type,
  	  m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1);
  	}
@@ -2532,10 +2532,10 @@ Index: gdb-7.8.50.20141228/gdb/m2-typeprint.c
      }
    fprintf_filtered (stream, "] OF ");
    m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags);
-Index: gdb-7.8.50.20141228/gdb/m2-valprint.c
+Index: gdb-7.8.90.20150125/gdb/m2-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/m2-valprint.c	2015-01-06 22:44:41.537318858 +0100
-+++ gdb-7.8.50.20141228/gdb/m2-valprint.c	2015-01-06 22:44:43.183326844 +0100
+--- gdb-7.8.90.20150125.orig/gdb/m2-valprint.c	2015-01-25 08:39:10.854467006 +0100
++++ gdb-7.8.90.20150125/gdb/m2-valprint.c	2015-01-25 08:39:14.675483475 +0100
 @@ -35,7 +35,7 @@ static int print_unpacked_pointer (struc
  				   struct ui_file *stream);
  static void
@@ -2601,10 +2601,10 @@ Index: gdb-7.8.50.20141228/gdb/m2-valprint.c
  
  		  /* Look for a NULL char.  */
  		  for (temp_len = 0;
-Index: gdb-7.8.50.20141228/gdb/memrange.c
+Index: gdb-7.8.90.20150125/gdb/memrange.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/memrange.c	2015-01-06 22:44:41.537318858 +0100
-+++ gdb-7.8.50.20141228/gdb/memrange.c	2015-01-06 22:44:43.184326849 +0100
+--- gdb-7.8.90.20150125.orig/gdb/memrange.c	2015-01-25 08:39:10.854467006 +0100
++++ gdb-7.8.90.20150125/gdb/memrange.c	2015-01-25 08:39:14.675483475 +0100
 @@ -21,8 +21,8 @@
  #include "memrange.h"
  
@@ -2616,10 +2616,10 @@ Index: gdb-7.8.50.20141228/gdb/memrange.c
  {
    ULONGEST h, l;
  
-Index: gdb-7.8.50.20141228/gdb/memrange.h
+Index: gdb-7.8.90.20150125/gdb/memrange.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/memrange.h	2015-01-06 22:44:41.537318858 +0100
-+++ gdb-7.8.50.20141228/gdb/memrange.h	2015-01-06 22:44:43.184326849 +0100
+--- gdb-7.8.90.20150125.orig/gdb/memrange.h	2015-01-25 08:39:10.855467010 +0100
++++ gdb-7.8.90.20150125/gdb/memrange.h	2015-01-25 08:39:14.675483475 +0100
 @@ -30,7 +30,7 @@ struct mem_range
    CORE_ADDR start;
  
@@ -2640,10 +2640,10 @@ Index: gdb-7.8.50.20141228/gdb/memrange.h
  
  /* Returns true if ADDR is in RANGE.  */
  
-Index: gdb-7.8.50.20141228/gdb/mips-linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/mips-linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/mips-linux-nat.c	2015-01-06 22:44:41.537318858 +0100
-+++ gdb-7.8.50.20141228/gdb/mips-linux-nat.c	2015-01-06 22:44:43.184326849 +0100
+--- gdb-7.8.90.20150125.orig/gdb/mips-linux-nat.c	2015-01-25 08:39:10.855467010 +0100
++++ gdb-7.8.90.20150125/gdb/mips-linux-nat.c	2015-01-25 08:39:14.676483480 +0100
 @@ -586,7 +586,7 @@ mips_linux_stopped_data_address (struct
  
  static int
@@ -2653,10 +2653,10 @@ Index: gdb-7.8.50.20141228/gdb/mips-linux-nat.c
  {
    struct pt_watch_regs dummy_regs;
    int i;
-Index: gdb-7.8.50.20141228/gdb/opencl-lang.c
+Index: gdb-7.8.90.20150125/gdb/opencl-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/opencl-lang.c	2015-01-06 22:44:41.538318863 +0100
-+++ gdb-7.8.50.20141228/gdb/opencl-lang.c	2015-01-06 22:44:43.184326849 +0100
+--- gdb-7.8.90.20150125.orig/gdb/opencl-lang.c	2015-01-25 08:39:10.856467015 +0100
++++ gdb-7.8.90.20150125/gdb/opencl-lang.c	2015-01-25 08:39:14.676483480 +0100
 @@ -78,11 +78,11 @@ builtin_opencl_type (struct gdbarch *gdb
  
  static struct type *
@@ -2733,10 +2733,10 @@ Index: gdb-7.8.50.20141228/gdb/opencl-lang.c
  
        if (!value_bits_synthetic_pointer (c->val,
  					 c->indices[i] * elsize + comp_offset,
-Index: gdb-7.8.50.20141228/gdb/p-lang.c
+Index: gdb-7.8.90.20150125/gdb/p-lang.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/p-lang.c	2015-01-06 22:44:41.538318863 +0100
-+++ gdb-7.8.50.20141228/gdb/p-lang.c	2015-01-06 22:44:43.184326849 +0100
+--- gdb-7.8.90.20150125.orig/gdb/p-lang.c	2015-01-25 08:39:10.856467015 +0100
++++ gdb-7.8.90.20150125/gdb/p-lang.c	2015-01-25 08:39:14.676483480 +0100
 @@ -95,8 +95,8 @@ pascal_main_name (void)
     are not multiple of TARGET_CHAR_BIT then the results are wrong
     but this does not happen for Free Pascal nor for GPC.  */
@@ -2784,10 +2784,10 @@ Index: gdb-7.8.50.20141228/gdb/p-lang.c
  	  i = rep1 - 1;
  	  things_printed += options->repeat_count_threshold;
  	  need_comma = 1;
-Index: gdb-7.8.50.20141228/gdb/p-lang.h
+Index: gdb-7.8.90.20150125/gdb/p-lang.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/p-lang.h	2015-01-06 22:44:41.538318863 +0100
-+++ gdb-7.8.50.20141228/gdb/p-lang.h	2015-01-06 22:44:43.184326849 +0100
+--- gdb-7.8.90.20150125.orig/gdb/p-lang.h	2015-01-25 08:39:10.856467015 +0100
++++ gdb-7.8.90.20150125/gdb/p-lang.h	2015-01-25 08:39:14.676483480 +0100
 @@ -36,7 +36,7 @@ extern void pascal_print_type (struct ty
  extern void pascal_print_typedef (struct type *, struct symbol *,
  				  struct ui_file *);
@@ -2822,10 +2822,10 @@ Index: gdb-7.8.50.20141228/gdb/p-lang.h
  					      CORE_ADDR, struct ui_file *,
  					      int,
  					      const struct value *,
-Index: gdb-7.8.50.20141228/gdb/p-valprint.c
+Index: gdb-7.8.90.20150125/gdb/p-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/p-valprint.c	2015-01-06 22:44:41.539318868 +0100
-+++ gdb-7.8.50.20141228/gdb/p-valprint.c	2015-01-06 22:44:43.185326854 +0100
+--- gdb-7.8.90.20150125.orig/gdb/p-valprint.c	2015-01-25 08:39:10.857467019 +0100
++++ gdb-7.8.90.20150125/gdb/p-valprint.c	2015-01-25 08:39:14.677483484 +0100
 @@ -57,7 +57,7 @@ static const struct generic_val_print_de
  
  void
@@ -2887,10 +2887,10 @@ Index: gdb-7.8.50.20141228/gdb/p-valprint.c
        volatile struct gdb_exception ex;
        int skip = 0;
  
-Index: gdb-7.8.50.20141228/gdb/ppc-linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/ppc-linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/ppc-linux-nat.c	2015-01-06 22:44:41.539318868 +0100
-+++ gdb-7.8.50.20141228/gdb/ppc-linux-nat.c	2015-01-06 22:44:43.185326854 +0100
+--- gdb-7.8.90.20150125.orig/gdb/ppc-linux-nat.c	2015-01-25 08:39:10.858467023 +0100
++++ gdb-7.8.90.20150125/gdb/ppc-linux-nat.c	2015-01-25 08:39:14.677483484 +0100
 @@ -1501,7 +1501,7 @@ ppc_linux_can_use_hw_breakpoint (struct
  
  static int
@@ -2900,10 +2900,10 @@ Index: gdb-7.8.50.20141228/gdb/ppc-linux-nat.c
  {
    /* Handle sub-8-byte quantities.  */
    if (len <= 0)
-Index: gdb-7.8.50.20141228/gdb/printcmd.c
+Index: gdb-7.8.90.20150125/gdb/printcmd.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/printcmd.c	2015-01-06 22:44:41.540318872 +0100
-+++ gdb-7.8.50.20141228/gdb/printcmd.c	2015-01-06 22:44:43.185326854 +0100
+--- gdb-7.8.90.20150125.orig/gdb/printcmd.c	2015-01-25 08:39:10.858467023 +0100
++++ gdb-7.8.90.20150125/gdb/printcmd.c	2015-01-25 08:39:14.678483488 +0100
 @@ -285,7 +285,7 @@ print_formatted (struct value *val, int
  		 struct ui_file *stream)
  {
@@ -2922,10 +2922,10 @@ Index: gdb-7.8.50.20141228/gdb/printcmd.c
    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
  
    /* String printing should go through val_print_scalar_formatted.  */
-Index: gdb-7.8.50.20141228/gdb/procfs.c
+Index: gdb-7.8.90.20150125/gdb/procfs.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/procfs.c	2015-01-06 22:44:41.541318877 +0100
-+++ gdb-7.8.50.20141228/gdb/procfs.c	2015-01-06 22:44:43.186326859 +0100
+--- gdb-7.8.90.20150125.orig/gdb/procfs.c	2015-01-25 08:39:10.860467032 +0100
++++ gdb-7.8.90.20150125/gdb/procfs.c	2015-01-25 08:39:14.679483493 +0100
 @@ -4859,7 +4859,7 @@ procfs_remove_watchpoint (struct target_
  
  static int
@@ -2935,10 +2935,10 @@ Index: gdb-7.8.50.20141228/gdb/procfs.c
  {
    /* The man page for proc(4) on Solaris 2.6 and up says that the
       system can support "thousands" of hardware watchpoints, but gives
-Index: gdb-7.8.50.20141228/gdb/python/py-prettyprint.c
+Index: gdb-7.8.90.20150125/gdb/python/py-prettyprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/python/py-prettyprint.c	2015-01-06 22:44:41.541318877 +0100
-+++ gdb-7.8.50.20141228/gdb/python/py-prettyprint.c	2015-01-06 22:44:43.186326859 +0100
+--- gdb-7.8.90.20150125.orig/gdb/python/py-prettyprint.c	2015-01-25 08:39:10.860467032 +0100
++++ gdb-7.8.90.20150125/gdb/python/py-prettyprint.c	2015-01-25 08:39:14.679483493 +0100
 @@ -686,7 +686,7 @@ print_children (PyObject *printer, const
  enum ext_lang_rc
  gdbpy_apply_val_pretty_printer (const struct extension_language_defn *extlang,
@@ -2948,10 +2948,10 @@ Index: gdb-7.8.50.20141228/gdb/python/py-prettyprint.c
  				struct ui_file *stream, int recurse,
  				const struct value *val,
  				const struct value_print_options *options,
-Index: gdb-7.8.50.20141228/gdb/regcache.c
+Index: gdb-7.8.90.20150125/gdb/regcache.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/regcache.c	2015-01-06 22:44:41.542318882 +0100
-+++ gdb-7.8.50.20141228/gdb/regcache.c	2015-01-06 22:44:43.187326864 +0100
+--- gdb-7.8.90.20150125.orig/gdb/regcache.c	2015-01-25 08:39:10.861467036 +0100
++++ gdb-7.8.90.20150125/gdb/regcache.c	2015-01-25 08:39:14.680483497 +0100
 @@ -941,7 +941,7 @@ typedef void (regcache_write_ftype) (str
  
  static enum register_status
@@ -2997,10 +2997,10 @@ Index: gdb-7.8.50.20141228/gdb/regcache.c
  {
    struct regcache_descr *descr = regcache->descr;
  
-Index: gdb-7.8.50.20141228/gdb/regcache.h
+Index: gdb-7.8.90.20150125/gdb/regcache.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/regcache.h	2015-01-06 22:44:41.542318882 +0100
-+++ gdb-7.8.50.20141228/gdb/regcache.h	2015-01-06 22:44:43.187326864 +0100
+--- gdb-7.8.90.20150125.orig/gdb/regcache.h	2015-01-25 08:39:10.861467036 +0100
++++ gdb-7.8.90.20150125/gdb/regcache.h	2015-01-25 08:39:14.680483497 +0100
 @@ -92,9 +92,9 @@ extern void regcache_raw_write_unsigned
  
  extern enum register_status
@@ -3028,10 +3028,10 @@ Index: gdb-7.8.50.20141228/gdb/regcache.h
  
  /* Special routines to read/write the PC.  */
  
-Index: gdb-7.8.50.20141228/gdb/remote.c
+Index: gdb-7.8.90.20150125/gdb/remote.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/remote.c	2015-01-06 22:44:41.544318892 +0100
-+++ gdb-7.8.50.20141228/gdb/remote.c	2015-01-06 22:44:43.188326869 +0100
+--- gdb-7.8.90.20150125.orig/gdb/remote.c	2015-01-25 08:39:10.864467049 +0100
++++ gdb-7.8.90.20150125/gdb/remote.c	2015-01-25 08:39:14.682483505 +0100
 @@ -8371,7 +8371,7 @@ int remote_hw_breakpoint_limit = -1;
  
  static int
@@ -3041,10 +3041,10 @@ Index: gdb-7.8.50.20141228/gdb/remote.c
  {
    if (remote_hw_watchpoint_length_limit == 0)
      return 0;
-Index: gdb-7.8.50.20141228/gdb/spu-multiarch.c
+Index: gdb-7.8.90.20150125/gdb/spu-multiarch.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/spu-multiarch.c	2015-01-06 22:44:41.545318897 +0100
-+++ gdb-7.8.50.20141228/gdb/spu-multiarch.c	2015-01-06 22:44:43.188326869 +0100
+--- gdb-7.8.90.20150125.orig/gdb/spu-multiarch.c	2015-01-25 08:39:10.865467053 +0100
++++ gdb-7.8.90.20150125/gdb/spu-multiarch.c	2015-01-25 08:39:14.683483510 +0100
 @@ -117,7 +117,7 @@ spu_thread_architecture (struct target_o
  /* Override the to_region_ok_for_hw_watchpoint routine.  */
  static int
@@ -3054,10 +3054,10 @@ Index: gdb-7.8.50.20141228/gdb/spu-multiarch.c
  {
    struct target_ops *ops_beneath = find_target_beneath (self);
  
-Index: gdb-7.8.50.20141228/gdb/stack.c
+Index: gdb-7.8.90.20150125/gdb/stack.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/stack.c	2015-01-06 22:44:41.546318902 +0100
-+++ gdb-7.8.50.20141228/gdb/stack.c	2015-01-06 22:44:43.189326874 +0100
+--- gdb-7.8.90.20150125.orig/gdb/stack.c	2015-01-25 08:39:10.866467058 +0100
++++ gdb-7.8.90.20150125/gdb/stack.c	2015-01-25 08:39:14.683483510 +0100
 @@ -175,7 +175,7 @@ print_stack_frame (struct frame_info *fr
     argument (not just the first nameless argument).  */
  
@@ -3096,10 +3096,10 @@ Index: gdb-7.8.50.20141228/gdb/stack.c
  
        if (highest_offset == -1)
  	start = gdbarch_frame_args_skip (get_frame_arch (frame));
-Index: gdb-7.8.50.20141228/gdb/symmisc.c
+Index: gdb-7.8.90.20150125/gdb/symmisc.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/symmisc.c	2015-01-06 22:44:41.546318902 +0100
-+++ gdb-7.8.50.20141228/gdb/symmisc.c	2015-01-06 22:44:43.189326874 +0100
+--- gdb-7.8.90.20150125.orig/gdb/symmisc.c	2015-01-25 08:39:10.866467058 +0100
++++ gdb-7.8.90.20150125/gdb/symmisc.c	2015-01-25 08:39:14.684483514 +0100
 @@ -534,11 +534,11 @@ print_symbol (void *args)
  
  	case LOC_CONST_BYTES:
@@ -3115,10 +3115,10 @@ Index: gdb-7.8.50.20141228/gdb/symmisc.c
  	    for (i = 0; i < TYPE_LENGTH (type); i++)
  	      fprintf_filtered (outfile, " %02x",
  				(unsigned) SYMBOL_VALUE_BYTES (symbol)[i]);
-Index: gdb-7.8.50.20141228/gdb/target.c
+Index: gdb-7.8.90.20150125/gdb/target.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/target.c	2015-01-06 22:44:41.547318906 +0100
-+++ gdb-7.8.50.20141228/gdb/target.c	2015-01-06 22:44:43.190326878 +0100
+--- gdb-7.8.90.20150125.orig/gdb/target.c	2015-01-25 08:39:10.867467062 +0100
++++ gdb-7.8.90.20150125/gdb/target.c	2015-01-25 08:39:14.684483514 +0100
 @@ -54,7 +54,7 @@ static int default_watchpoint_addr_withi
  						 CORE_ADDR, CORE_ADDR, int);
  
@@ -3137,10 +3137,10 @@ Index: gdb-7.8.50.20141228/gdb/target.c
  {
    return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
  }
-Index: gdb-7.8.50.20141228/gdb/target.h
+Index: gdb-7.8.90.20150125/gdb/target.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/target.h	2015-01-06 22:44:41.547318906 +0100
-+++ gdb-7.8.50.20141228/gdb/target.h	2015-01-06 22:44:43.190326878 +0100
+--- gdb-7.8.90.20150125.orig/gdb/target.h	2015-01-25 08:39:10.868467066 +0100
++++ gdb-7.8.90.20150125/gdb/target.h	2015-01-25 08:39:14.685483518 +0100
 @@ -489,7 +489,7 @@ struct target_ops
      /* Documentation of this routine is provided with the corresponding
         target_* macro.  */
@@ -3150,10 +3150,10 @@ Index: gdb-7.8.50.20141228/gdb/target.h
        TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint);
  
      int (*to_can_accel_watchpoint_condition) (struct target_ops *,
-Index: gdb-7.8.50.20141228/gdb/tracepoint.c
+Index: gdb-7.8.90.20150125/gdb/tracepoint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/tracepoint.c	2015-01-06 22:44:41.549318916 +0100
-+++ gdb-7.8.50.20141228/gdb/tracepoint.c	2015-01-06 22:44:43.191326883 +0100
+--- gdb-7.8.90.20150125.orig/gdb/tracepoint.c	2015-01-25 08:39:10.870467075 +0100
++++ gdb-7.8.90.20150125/gdb/tracepoint.c	2015-01-25 08:39:14.686483523 +0100
 @@ -928,13 +928,13 @@ add_register (struct collection_list *co
  static void
  add_memrange (struct collection_list *memranges, 
@@ -3247,10 +3247,10 @@ Index: gdb-7.8.50.20141228/gdb/tracepoint.c
  	}
        if (BLOCK_FUNCTION (block))
  	break;
-Index: gdb-7.8.50.20141228/gdb/typeprint.c
+Index: gdb-7.8.90.20150125/gdb/typeprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/typeprint.c	2015-01-06 22:44:41.550318921 +0100
-+++ gdb-7.8.50.20141228/gdb/typeprint.c	2015-01-06 22:44:43.191326883 +0100
+--- gdb-7.8.90.20150125.orig/gdb/typeprint.c	2015-01-25 08:39:10.871467079 +0100
++++ gdb-7.8.90.20150125/gdb/typeprint.c	2015-01-25 08:39:14.686483523 +0100
 @@ -402,7 +402,7 @@ whatis_exp (char *exp, int show)
    struct type *real_type = NULL;
    struct type *type;
@@ -3260,10 +3260,10 @@ Index: gdb-7.8.50.20141228/gdb/typeprint.c
    int using_enc = 0;
    struct value_print_options opts;
    struct type_print_options flags = default_ptype_flags;
-Index: gdb-7.8.50.20141228/gdb/valarith.c
+Index: gdb-7.8.90.20150125/gdb/valarith.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valarith.c	2015-01-06 22:44:41.550318921 +0100
-+++ gdb-7.8.50.20141228/gdb/valarith.c	2015-01-06 22:45:54.011670512 +0100
+--- gdb-7.8.90.20150125.orig/gdb/valarith.c	2015-01-25 08:39:10.872467084 +0100
++++ gdb-7.8.90.20150125/gdb/valarith.c	2015-01-25 08:39:14.686483523 +0100
 @@ -188,12 +188,13 @@ value_subscript (struct value *array, LO
     to doubles, but no longer does.  */
  
@@ -3323,10 +3323,10 @@ Index: gdb-7.8.50.20141228/gdb/valarith.c
  
    for (i = 0; i < len; i++)
      {
-Index: gdb-7.8.50.20141228/gdb/valops.c
+Index: gdb-7.8.90.20150125/gdb/valops.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valops.c	2015-01-06 22:44:41.555318945 +0100
-+++ gdb-7.8.50.20141228/gdb/valops.c	2015-01-06 22:44:43.192326888 +0100
+--- gdb-7.8.90.20150125.orig/gdb/valops.c	2015-01-25 08:39:10.877467105 +0100
++++ gdb-7.8.90.20150125/gdb/valops.c	2015-01-25 08:39:14.687483527 +0100
 @@ -47,11 +47,11 @@ static int typecmp (int staticp, int var
  		    struct field t1[], struct value *t2[]);
  
@@ -3645,10 +3645,10 @@ Index: gdb-7.8.50.20141228/gdb/valops.c
    int using_enc = 0;
    struct value *new_val;
  
-Index: gdb-7.8.50.20141228/gdb/valprint.c
+Index: gdb-7.8.90.20150125/gdb/valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valprint.c	2015-01-06 22:44:41.557318955 +0100
-+++ gdb-7.8.50.20141228/gdb/valprint.c	2015-01-06 22:44:43.193326893 +0100
+--- gdb-7.8.90.20150125.orig/gdb/valprint.c	2015-01-25 08:39:10.879467114 +0100
++++ gdb-7.8.90.20150125/gdb/valprint.c	2015-01-25 08:39:14.688483531 +0100
 @@ -298,7 +298,7 @@ val_print_scalar_type_p (struct type *ty
  int
  valprint_check_validity (struct ui_file *stream,
@@ -3741,10 +3741,10 @@ Index: gdb-7.8.50.20141228/gdb/valprint.c
  		  const char *encoding, int force_ellipses,
  		  int quote_char, int c_style_terminator,
  		  const struct value_print_options *options)
-Index: gdb-7.8.50.20141228/gdb/valprint.h
+Index: gdb-7.8.90.20150125/gdb/valprint.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valprint.h	2015-01-06 22:44:41.557318955 +0100
-+++ gdb-7.8.50.20141228/gdb/valprint.h	2015-01-06 22:44:43.193326893 +0100
+--- gdb-7.8.90.20150125.orig/gdb/valprint.h	2015-01-25 08:39:10.880467118 +0100
++++ gdb-7.8.90.20150125/gdb/valprint.h	2015-01-25 08:39:14.688483531 +0100
 @@ -115,11 +115,11 @@ extern void maybe_print_array_index (str
                                       struct ui_file *stream,
  				     const struct value_print_options *);
@@ -3795,10 +3795,10 @@ Index: gdb-7.8.50.20141228/gdb/valprint.h
  			      const char *encoding, int force_ellipses,
  			      int quote_char, int c_style_terminator,
  			      const struct value_print_options *options);
-Index: gdb-7.8.50.20141228/gdb/value.c
+Index: gdb-7.8.90.20150125/gdb/value.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/value.c	2015-01-06 22:44:41.562318979 +0100
-+++ gdb-7.8.50.20141228/gdb/value.c	2015-01-06 22:44:43.194326898 +0100
+--- gdb-7.8.90.20150125.orig/gdb/value.c	2015-01-25 08:39:10.885467140 +0100
++++ gdb-7.8.90.20150125/gdb/value.c	2015-01-25 08:39:14.689483536 +0100
 @@ -66,10 +66,10 @@ struct internal_function
  struct range
  {
@@ -4129,10 +4129,10 @@ Index: gdb-7.8.50.20141228/gdb/value.c
  
    /* Normalize BITPOS.  */
    addr += bitpos / 8;
-Index: gdb-7.8.50.20141228/gdb/value.h
+Index: gdb-7.8.90.20150125/gdb/value.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/value.h	2015-01-06 22:44:41.563318984 +0100
-+++ gdb-7.8.50.20141228/gdb/value.h	2015-01-06 22:44:43.195326903 +0100
+--- gdb-7.8.90.20150125.orig/gdb/value.h	2015-01-25 08:39:10.887467148 +0100
++++ gdb-7.8.90.20150125/gdb/value.h	2015-01-25 08:39:14.690483540 +0100
 @@ -131,8 +131,8 @@ extern void set_value_parent (struct val
     within the registers structure.  Note also the member
     embedded_offset below.  */
@@ -4373,10 +4373,10 @@ Index: gdb-7.8.50.20141228/gdb/value.h
  
  /* User function handler.  */
  
-Index: gdb-7.8.50.20141228/gdb/s390-linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/s390-linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/s390-linux-nat.c	2015-01-06 22:44:41.564318989 +0100
-+++ gdb-7.8.50.20141228/gdb/s390-linux-nat.c	2015-01-06 22:44:43.195326903 +0100
+--- gdb-7.8.90.20150125.orig/gdb/s390-linux-nat.c	2015-01-25 08:39:10.887467148 +0100
++++ gdb-7.8.90.20150125/gdb/s390-linux-nat.c	2015-01-25 08:39:14.690483540 +0100
 @@ -544,7 +544,7 @@ s390_can_use_hw_breakpoint (struct targe
  
  static int
@@ -4386,10 +4386,10 @@ Index: gdb-7.8.50.20141228/gdb/s390-linux-nat.c
  {
    return 1;
  }
-Index: gdb-7.8.50.20141228/gdb/extension-priv.h
+Index: gdb-7.8.90.20150125/gdb/extension-priv.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/extension-priv.h	2015-01-06 22:44:41.564318989 +0100
-+++ gdb-7.8.50.20141228/gdb/extension-priv.h	2015-01-06 22:44:43.195326903 +0100
+--- gdb-7.8.90.20150125.orig/gdb/extension-priv.h	2015-01-25 08:39:10.887467148 +0100
++++ gdb-7.8.90.20150125/gdb/extension-priv.h	2015-01-25 08:39:14.690483540 +0100
 @@ -175,7 +175,7 @@ struct extension_language_ops
    enum ext_lang_rc (*apply_val_pretty_printer)
      (const struct extension_language_defn *,
@@ -4399,10 +4399,10 @@ Index: gdb-7.8.50.20141228/gdb/extension-priv.h
       struct ui_file *stream, int recurse,
       const struct value *val, const struct value_print_options *options,
       const struct language_defn *language);
-Index: gdb-7.8.50.20141228/gdb/python/python-internal.h
+Index: gdb-7.8.90.20150125/gdb/python/python-internal.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/python/python-internal.h	2015-01-06 22:44:41.564318989 +0100
-+++ gdb-7.8.50.20141228/gdb/python/python-internal.h	2015-01-06 22:44:43.195326903 +0100
+--- gdb-7.8.90.20150125.orig/gdb/python/python-internal.h	2015-01-25 08:39:10.888467153 +0100
++++ gdb-7.8.90.20150125/gdb/python/python-internal.h	2015-01-25 08:39:14.691483544 +0100
 @@ -313,7 +313,7 @@ extern int gdbpy_auto_load_enabled (cons
  extern enum ext_lang_rc gdbpy_apply_val_pretty_printer
    (const struct extension_language_defn *,
@@ -4412,10 +4412,10 @@ Index: gdb-7.8.50.20141228/gdb/python/python-internal.h
     struct ui_file *stream, int recurse,
     const struct value *val,
     const struct value_print_options *options,
-Index: gdb-7.8.50.20141228/gdb/target-delegates.c
+Index: gdb-7.8.90.20150125/gdb/target-delegates.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/target-delegates.c	2015-01-06 22:44:41.565318994 +0100
-+++ gdb-7.8.50.20141228/gdb/target-delegates.c	2015-01-06 22:44:43.196326907 +0100
+--- gdb-7.8.90.20150125.orig/gdb/target-delegates.c	2015-01-25 08:39:10.889467157 +0100
++++ gdb-7.8.90.20150125/gdb/target-delegates.c	2015-01-25 08:39:14.691483544 +0100
 @@ -634,14 +634,14 @@ debug_watchpoint_addr_within_range (stru
  }
  
@@ -4442,10 +4442,10 @@ Index: gdb-7.8.50.20141228/gdb/target-delegates.c
    fputs_unfiltered (") = ", gdb_stdlog);
    target_debug_print_int (result);
    fputs_unfiltered ("\n", gdb_stdlog);
-Index: gdb-7.8.50.20141228/gdb/aarch64-linux-nat.c
+Index: gdb-7.8.90.20150125/gdb/aarch64-linux-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/aarch64-linux-nat.c	2015-01-06 22:44:41.565318994 +0100
-+++ gdb-7.8.50.20141228/gdb/aarch64-linux-nat.c	2015-01-06 22:44:43.196326907 +0100
+--- gdb-7.8.90.20150125.orig/gdb/aarch64-linux-nat.c	2015-01-25 08:39:10.889467157 +0100
++++ gdb-7.8.90.20150125/gdb/aarch64-linux-nat.c	2015-01-25 08:39:14.692483549 +0100
 @@ -1389,7 +1389,7 @@ aarch64_linux_remove_watchpoint (struct
  
  static int
@@ -4455,10 +4455,10 @@ Index: gdb-7.8.50.20141228/gdb/aarch64-linux-nat.c
  {
    CORE_ADDR aligned_addr;
  
-Index: gdb-7.8.50.20141228/gdb/nat/x86-dregs.c
+Index: gdb-7.8.90.20150125/gdb/nat/x86-dregs.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/nat/x86-dregs.c	2015-01-06 22:44:41.566318999 +0100
-+++ gdb-7.8.50.20141228/gdb/nat/x86-dregs.c	2015-01-06 22:44:43.197326912 +0100
+--- gdb-7.8.90.20150125.orig/gdb/nat/x86-dregs.c	2015-01-25 08:39:10.890467161 +0100
++++ gdb-7.8.90.20150125/gdb/nat/x86-dregs.c	2015-01-25 08:39:14.692483549 +0100
 @@ -384,7 +384,7 @@ x86_remove_aligned_watchpoint (struct x8
  
  static int
@@ -4477,10 +4477,10 @@ Index: gdb-7.8.50.20141228/gdb/nat/x86-dregs.c
  {
    int nregs;
  
-Index: gdb-7.8.50.20141228/gdb/compile/compile-c-support.c
+Index: gdb-7.8.90.20150125/gdb/compile/compile-c-support.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/compile/compile-c-support.c	2015-01-06 22:44:41.566318999 +0100
-+++ gdb-7.8.50.20141228/gdb/compile/compile-c-support.c	2015-01-06 22:44:43.197326912 +0100
+--- gdb-7.8.90.20150125.orig/gdb/compile/compile-c-support.c	2015-01-25 08:39:10.890467161 +0100
++++ gdb-7.8.90.20150125/gdb/compile/compile-c-support.c	2015-01-25 08:39:14.692483549 +0100
 @@ -277,11 +277,11 @@ generate_register_struct (struct ui_file
  
  	      default:
@@ -4495,10 +4495,10 @@ Index: gdb-7.8.50.20141228/gdb/compile/compile-c-support.c
  	      }
  	    fputs_unfiltered (";\n", stream);
  
-Index: gdb-7.8.50.20141228/gdb/nat/x86-dregs.h
+Index: gdb-7.8.90.20150125/gdb/nat/x86-dregs.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/nat/x86-dregs.h	2015-01-06 22:44:41.566318999 +0100
-+++ gdb-7.8.50.20141228/gdb/nat/x86-dregs.h	2015-01-06 22:44:43.197326912 +0100
+--- gdb-7.8.90.20150125.orig/gdb/nat/x86-dregs.h	2015-01-25 08:39:10.890467161 +0100
++++ gdb-7.8.90.20150125/gdb/nat/x86-dregs.h	2015-01-25 08:39:14.692483549 +0100
 @@ -112,7 +112,7 @@ extern int x86_dr_remove_watchpoint (str
  /* Return non-zero if we can watch a memory region that starts at
     address ADDR and whose length is LEN bytes.  */
@@ -4508,10 +4508,10 @@ Index: gdb-7.8.50.20141228/gdb/nat/x86-dregs.h
  
  /* If the inferior has some break/watchpoint that triggered, set the
     address associated with that break/watchpoint and return true.
-Index: gdb-7.8.50.20141228/gdb/x86-nat.c
+Index: gdb-7.8.90.20150125/gdb/x86-nat.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/x86-nat.c	2015-01-06 22:44:41.566318999 +0100
-+++ gdb-7.8.50.20141228/gdb/x86-nat.c	2015-01-06 22:44:43.197326912 +0100
+--- gdb-7.8.90.20150125.orig/gdb/x86-nat.c	2015-01-25 08:39:10.890467161 +0100
++++ gdb-7.8.90.20150125/gdb/x86-nat.c	2015-01-25 08:39:14.693483553 +0100
 @@ -178,7 +178,7 @@ x86_remove_watchpoint (struct target_ops
  
  static int

diff --git a/gdb-slow-gstack-performance.patch b/gdb-slow-gstack-performance.patch
deleted file mode 100644
index c895e7f..0000000
--- a/gdb-slow-gstack-performance.patch
+++ /dev/null
@@ -1,349 +0,0 @@
-Date: Thu, 2 Oct 2014 17:56:53 +0200
-From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
-To: Doug Evans <dje at google dot com>
-Cc: gdb-patches at sourceware dot org
-Subject: [patchv2] Fix 100x slowdown regression on DWZ files
-Message-ID: <20141002155653.GA9001@host2.jankratochvil.net>
-
---cNdxnHkX5QqsyA0e
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-On Thu, 02 Oct 2014 01:51:38 +0200, Doug Evans wrote:
-> I tested this patch with --target_board=dwarf4-gdb-index
-> and got a failure in m-static.exp:
-
-That is particularly with -fdebug-types-section.
-
-
-> Type units read the line table in a separate path,
-
-OK, therefore I dropped that separate struct dwarf2_lineinfo
-and reused struct line_header instead.
-
-
-> OTOH, I do want to avoid any confusion that this patch may inadvertently
-> introduce. For example, IIUC with your patch as is,
-> if we read a partial_unit first, before a compile_unit
-> that has the same stmt_list value, we'll do more processing in
-> dwarf_decode_lines than we really need to since we only need a file
-> number to symtab mapping. And if we later read in a compile_unit
-> with the same stmt_value we'll call dwarf_decode_lines again,
-> and this time we need the pc/line mapping it computes.
-> Whereas if we process these in the opposite order we'll only call
-> dwarf_decode_lines once. I'm sure this will be confusing at first
-> to some later developer going through this code.
-> [I could be missing something of course, and I'm happy for any corrections.]
-
-Implemented (omitting some story why I did not include it before).
-
-
-> The code that processes stmt_list for type_units is in setup_type_unit_groups.
-> Note that this code goes to the trouble of re-initializing the buildsym
-> machinery (see the calls to restart_symtab in dwarf2read.c) when we process
-> the second and subsequent type units that share a stmt_list value.
-> This is something that used to be done before your patch and will no
-> longer be done with your patch (since if we get a cache hit we exit).
-> It may be that the type_unit support is doing this unnecessarily,
-> which would be great because we can then simplify it.
-
-I hope this patch should no longer break -fdebug-types-section.
-If it additionally enables some future optimization for -fdebug-types-section
-the better.
-
-
->  > +  /* Offset of line number information in .debug_line section.  */
->  > +  sect_offset offset;
->  > +  unsigned offset_in_dwz : 1;
-> 
-> IWBN to document why offset_in_dwz is here.
-> It's not obvious why it's needed.
-+
-On Thu, 02 Oct 2014 01:57:03 +0200, Doug Evans wrote:
-> Ah, I guess the offset_in_dwz flag will ensure dwarf_decode_lines gets called
-> twice regardless of order.  But is that the only reason for the flag?
-
-I have added there now:
-+  /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
-
-If one removes it regressions really happen.  What happens is that this
-line_header_hash (former lineinfo_hash) is in struct dwarf2_per_objfile which
-is common for both objfile and its objfile.dwz (that one is normally in
-/usr/lib/debug/.dwz/ - common for multiple objfiles).  And there are two
-different DIEs at offset 0xb - one in objfile and one in objfile.dwz - which
-would match single line_header if offset_in_dwz was not there.
-
-Also existing dwarf2read.c code usually transfers "dwz flag" together with DIE
-offset, such as:
-	dwarf2_find_containing_comp_unit (sect_offset offset,
-					  unsigned int offset_in_dwz,
-					  struct objfile *objfile)
-This reminds me - why doesn't similar ambiguity happen also for dwp_file?
-I am unfortunately not much aware of the dwp implementation details.
-
-
->  > -      struct line_header *line_header
->  > -	= dwarf_decode_line_header (line_offset, cu);
->  > +      dwarf2_per_objfile->lineinfo_hash =
-> 
-> As much as I prefer "=" going here, convention says to put it on the
-> next line.
-
-I have changed it but this was just blind copy from existing line 21818.
-
-
->  > +	htab_create_alloc_ex (127, dwarf2_lineinfo_hash, dwarf2_lineinfo_eq,
-> 
-> I don't have any data, but 127 seems high.
-
-I have not changed it but this was just blind copy from existing line 21818.
-
-
-> I wouldn't change it, I just wanted to ask if you have any data
-> guiding this choice.
-
-Tuning some constants really makes no sense when GDB has missing + insanely
-complicated data structures and in consequence GDB is using inappropriate data
-structures with bad algorithmic complexity.  One needs to switch GDB to C++
-and its STL before one can start talking about data structures performance.
-
-
-No regressions on {x86_64,x86_64-m32,i686}-fedora20-linux-gnu in DWZ mode and
-in -fdebug-types-section mode.
-
-
-Thanks,
-Jan
-
---cNdxnHkX5QqsyA0e
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline; filename="partialunit5.patch"
-
-gdb/
-2014-10-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Fix 100x slowdown regression on DWZ files.
-	* dwarf2read.c (struct dwarf2_per_objfile): Add line_header_hash.
-	(struct line_header): Add offset and offset_in_dwz.
-	(dwarf_decode_lines): Add parameter decode_mapping to the declaration.
-	(free_line_header_voidp): New declaration.
-	(line_header_hash, line_header_eq): New functions.
-	(dwarf2_build_include_psymtabs): Update dwarf_decode_lines caller.
-	(handle_DW_AT_stmt_list): Use dwarf2_per_objfile->line_header_hash.
-	(free_line_header_voidp): New function.
-	(dwarf_decode_line_header): Initialize offset and offset_in_dwz.
-	(dwarf_decode_lines): New parameter decode_mapping, use it.
-
-Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
-===================================================================
---- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c	2015-01-05 22:45:32.823240453 +0100
-+++ gdb-7.8.50.20141228/gdb/dwarf2read.c	2015-01-05 22:49:35.270332647 +0100
-@@ -309,6 +309,9 @@ struct dwarf2_per_objfile
- 
-   /* The CUs we recently read.  */
-   VEC (dwarf2_per_cu_ptr) *just_read_cus;
-+
-+  /* Table containing line_header indexed by offset and offset_in_dwz.  */
-+  htab_t line_header_hash;
- };
- 
- static struct dwarf2_per_objfile *dwarf2_per_objfile;
-@@ -1025,6 +1028,12 @@ typedef void (die_reader_func_ftype) (co
-    which contains the following information.  */
- struct line_header
- {
-+  /* Offset of line number information in .debug_line section.  */
-+  sect_offset offset;
-+
-+  /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
-+  unsigned offset_in_dwz : 1;
-+
-   unsigned int total_length;
-   unsigned short version;
-   unsigned int header_length;
-@@ -1513,7 +1522,7 @@ static struct line_header *dwarf_decode_
- 
- static void dwarf_decode_lines (struct line_header *, const char *,
- 				struct dwarf2_cu *, struct partial_symtab *,
--				CORE_ADDR);
-+				CORE_ADDR, int decode_mapping);
- 
- static void dwarf2_start_subfile (const char *, const char *);
- 
-@@ -2057,6 +2066,8 @@ get_section_file_name (const struct dwar
- /* Return the id of SECTION.
-    Returns 0 if SECTION doesn't exist.  */
- 
-+static void free_line_header_voidp (void *arg);
-+
- static int
- get_section_id (const struct dwarf2_section_info *section)
- {
-@@ -2461,6 +2472,29 @@ dwarf2_get_dwz_file (void)
-   dwarf2_per_objfile->dwz_file = result;
-   return result;
- }
-+
-+/* Hash function for line_header_hash.  */
-+
-+static hashval_t
-+line_header_hash (const void *item)
-+{
-+  const struct line_header *ofs = item;
-+
-+  return ofs->offset.sect_off ^ ofs->offset_in_dwz;
-+}
-+
-+/* Equality function for line_header_hash.  */
-+
-+static int
-+line_header_eq (const void *item_lhs, const void *item_rhs)
-+{
-+  const struct line_header *ofs_lhs = item_lhs;
-+  const struct line_header *ofs_rhs = item_rhs;
-+
-+  return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
-+	  && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
-+}
-+
- \f
- /* DWARF quick_symbols_functions support.  */
- 
-@@ -4454,7 +4488,7 @@ dwarf2_build_include_psymtabs (struct dw
-     return;  /* No linetable, so no includes.  */
- 
-   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
--  dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow);
-+  dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
- 
-   free_line_header (lh);
- }
-@@ -9002,24 +9036,64 @@ static void
- handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
- 			const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
- {
-+  struct objfile *objfile = dwarf2_per_objfile->objfile;
-   struct attribute *attr;
-+  unsigned int line_offset;
-+  struct line_header *line_header, line_header_local;
-+  unsigned u;
-+  void **slot;
-+  int decode_mapping;
- 
-   gdb_assert (! cu->per_cu->is_debug_types);
- 
-   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
--  if (attr)
-+  if (attr == NULL)
-+    return;
-+
-+  line_offset = DW_UNSND (attr);
-+
-+  if (dwarf2_per_objfile->line_header_hash == NULL)
-     {
--      unsigned int line_offset = DW_UNSND (attr);
--      struct line_header *line_header
--	= dwarf_decode_line_header (line_offset, cu);
--
--      if (line_header)
--	{
--	  cu->line_header = line_header;
--	  make_cleanup (free_cu_line_header, cu);
--	  dwarf_decode_lines (line_header, comp_dir, cu, NULL, lowpc);
--	}
-+      dwarf2_per_objfile->line_header_hash
-+	= htab_create_alloc_ex (127, line_header_hash, line_header_eq,
-+				free_line_header_voidp,
-+				&objfile->objfile_obstack,
-+				hashtab_obstack_allocate,
-+				dummy_obstack_deallocate);
-+    }
-+
-+  line_header_local.offset.sect_off = line_offset;
-+  line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
-+  slot = htab_find_slot (dwarf2_per_objfile->line_header_hash,
-+			 &line_header_local, NO_INSERT);
-+
-+  /* For DW_TAG_compile_unit we need info like symtab::linetable which
-+     is not present in *SLOT.  */
-+  if (die->tag == DW_TAG_partial_unit && slot != NULL)
-+    {
-+      gdb_assert (*slot != NULL);
-+      cu->line_header = *slot;
-+      return;
-+    }
-+
-+  line_header = dwarf_decode_line_header (line_offset, cu);
-+  if (line_header == NULL)
-+    return;
-+  cu->line_header = line_header;
-+
-+  slot = htab_find_slot (dwarf2_per_objfile->line_header_hash,
-+			 &line_header_local, INSERT);
-+  gdb_assert (slot != NULL);
-+  if (*slot == NULL)
-+    *slot = line_header;
-+  else
-+    {
-+      gdb_assert (die->tag != DW_TAG_partial_unit);
-+      make_cleanup (free_cu_line_header, cu);
-     }
-+  decode_mapping = (die->tag != DW_TAG_partial_unit);
-+  dwarf_decode_lines (line_header, comp_dir, cu, NULL, lowpc,
-+		      decode_mapping);
- }
- 
- /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
-@@ -16917,6 +16991,16 @@ free_line_header (struct line_header *lh
-   xfree (lh);
- }
- 
-+/* Stub for free_line_header to match void * callback types.  */
-+
-+static void
-+free_line_header_voidp (void *arg)
-+{
-+  struct line_header *lh = arg;
-+
-+  free_line_header (lh);
-+}
-+
- /* Add an entry to LH's include directory table.  */
- 
- static void
-@@ -17047,6 +17131,9 @@ dwarf_decode_line_header (unsigned int o
-   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
-                           (void *) lh);
- 
-+  lh->offset.sect_off = offset;
-+  lh->offset_in_dwz = cu->per_cu->is_dwz;
-+
-   line_ptr = section->buffer + offset;
- 
-   /* Read in the header.  */
-@@ -17674,17 +17761,22 @@ dwarf_decode_lines_1 (struct line_header
-    E.g. expand_line_sal requires this when finding psymtabs to expand.
-    A good testcase for this is mb-inline.exp.
- 
--   LOWPC is the lowest address in CU (or 0 if not known).  */
-+   LOWPC is the lowest address in CU (or 0 if not known).
-+
-+   Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
-+   for its PC<->lines mapping information.  Otherwise only filenames
-+   tables is read in.  */
- 
- static void
- dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
- 		    struct dwarf2_cu *cu, struct partial_symtab *pst,
--		    CORE_ADDR lowpc)
-+		    CORE_ADDR lowpc, int decode_mapping)
- {
-   struct objfile *objfile = cu->objfile;
-   const int decode_for_pst_p = (pst != NULL);
- 
--  dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
-+  if (decode_mapping)
-+    dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
- 
-   if (decode_for_pst_p)
-     {

diff --git a/gdb-tekhex-regression-revert.patch b/gdb-tekhex-regression-revert.patch
deleted file mode 100644
index 683775f..0000000
--- a/gdb-tekhex-regression-revert.patch
+++ /dev/null
@@ -1,151 +0,0 @@
--R for 85880250e591a51624d24db653aaace0c5ce5943
-https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=85880250e591a51624d24db653aaace0c5ce5943;hp=fce10a8494efa8faec
-
-[buildbot] GDB regression on 85880250e591a51624d24db653aaace0c5ce5943
-https://sourceware.org/ml/binutils/2015-01/msg00044.html
-
-diff --git a/bfd/coff-i860.c b/bfd/coff-i860.c
-index 8573a8d..2122c0d 100644
---- a/bfd/coff-i860.c
-+++ b/bfd/coff-i860.c
-@@ -467,10 +467,7 @@ static reloc_howto_type howto_table[] =
-    FIXME: This macro refers to symbols and asect; these are from the
-    calling function, not the macro arguments.  */
- 
--/* PR 17512: file: 0a38fb7c
--   Set an addend value, even if it is not going to be used.  A tool
--   like coffdump might be used to print out the contents of the reloc.  */
--#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) (cache_ptr)->addend = 0
-+#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)
- 
- /* We use the special COFF backend linker.  */
- #define coff_relocate_section _bfd_coff_generic_relocate_section
-diff --git a/bfd/tekhex.c b/bfd/tekhex.c
-index 9444117..969b812 100644
---- a/bfd/tekhex.c
-+++ b/bfd/tekhex.c
-@@ -267,7 +267,7 @@ typedef struct tekhex_data_struct
- #define enda(x) (x->vma + x->size)
- 
- static bfd_boolean
--getvalue (char **srcp, bfd_vma *valuep, char * endp)
-+getvalue (char **srcp, bfd_vma *valuep)
- {
-   char *src = *srcp;
-   bfd_vma value = 0;
-@@ -279,7 +279,7 @@ getvalue (char **srcp, bfd_vma *valuep, char * endp)
-   len = hex_value (*src++);
-   if (len == 0)
-     len = 16;
--  while (len-- && src < endp)
-+  while (len--)
-     {
-       if (!ISHEX (*src))
- 	return FALSE;
-@@ -288,11 +288,11 @@ getvalue (char **srcp, bfd_vma *valuep, char * endp)
- 
-   *srcp = src;
-   *valuep = value;
--  return len == 0;
-+  return TRUE;
- }
- 
- static bfd_boolean
--getsym (char *dstp, char **srcp, unsigned int *lenp, char * endp)
-+getsym (char *dstp, char **srcp, unsigned int *lenp)
- {
-   char *src = *srcp;
-   unsigned int i;
-@@ -304,7 +304,7 @@ getsym (char *dstp, char **srcp, unsigned int *lenp, char * endp)
-   len = hex_value (*src++);
-   if (len == 0)
-     len = 16;
--  for (i = 0; i < len && src < endp; i++)
-+  for (i = 0; i < len; i++)
-     dstp[i] = src[i];
-   dstp[i] = 0;
-   *srcp = src + i;
-@@ -354,7 +354,7 @@ insert_byte (bfd *abfd, int value, bfd_vma addr)
-   how big the data is.  */
- 
- static bfd_boolean
--first_phase (bfd *abfd, int type, char *src, char * src_end)
-+first_phase (bfd *abfd, int type, char *src)
- {
-   asection *section, *alt_section;
-   unsigned int len;
-@@ -368,21 +368,21 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
-       {
- 	bfd_vma addr;
- 
--	if (!getvalue (&src, &addr, src_end))
-+	if (!getvalue (&src, &addr))
- 	  return FALSE;
- 
--	while (*src && src < src_end - 1)
-+	while (*src)
- 	  {
- 	    insert_byte (abfd, HEX (src), addr);
- 	    src += 2;
- 	    addr++;
- 	  }
--	return TRUE;
-       }
- 
-+      return TRUE;
-     case '3':
-       /* Symbol record, read the segment.  */
--      if (!getsym (sym, &src, &len, src_end))
-+      if (!getsym (sym, &src, &len))
- 	return FALSE;
-       section = bfd_get_section_by_name (abfd, sym);
-       if (section == NULL)
-@@ -403,9 +403,9 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
- 	    {
- 	    case '1':		/* Section range.  */
- 	      src++;
--	      if (!getvalue (&src, &section->vma, src_end))
-+	      if (!getvalue (&src, &section->vma))
- 		return FALSE;
--	      if (!getvalue (&src, &val, src_end))
-+	      if (!getvalue (&src, &val))
- 		return FALSE;
- 	      section->size = val - section->vma;
- 	      section->flags = SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC;
-@@ -432,7 +432,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
- 		abfd->flags |= HAS_SYMS;
- 		new_symbol->prev = abfd->tdata.tekhex_data->symbols;
- 		abfd->tdata.tekhex_data->symbols = new_symbol;
--		if (!getsym (sym, &src, &len, src_end))
-+		if (!getsym (sym, &src, &len))
- 		  return FALSE;
- 		new_symbol->symbol.name = (const char *)
-                     bfd_alloc (abfd, (bfd_size_type) len + 1);
-@@ -480,7 +480,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
- 			new_symbol->symbol.section = alt_section;
- 		      }
- 		  }
--		if (!getvalue (&src, &val, src_end))
-+		if (!getvalue (&src, &val))
- 		  return FALSE;
- 		new_symbol->symbol.value = val - section->vma;
- 		break;
-@@ -498,7 +498,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
-    record.  */
- 
- static bfd_boolean
--pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *, char *))
-+pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *))
- {
-   unsigned int chars_on_line;
-   bfd_boolean is_eof = FALSE;
-@@ -539,7 +539,8 @@ pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *, char *))
- 
-       /* Put a null at the end.  */
-       src[chars_on_line] = 0;
--      if (!func (abfd, type, src, src + chars_on_line))
-+
-+      if (!func (abfd, type, src))
- 	return FALSE;
-     }
- 

diff --git a/gdb-vla-intel.patch b/gdb-vla-intel.patch
index 17308f5..9b86bde 100644
--- a/gdb-vla-intel.patch
+++ b/gdb-vla-intel.patch
@@ -6,10 +6,10 @@ GIT snapshot:
 commit 511bff520372ffc10fa2ff569c176bdf1e6e475d
 
 
-Index: gdb-7.8.50.20141228/gdb/c-valprint.c
+Index: gdb-7.8.90.20150126/gdb/c-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/c-valprint.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/c-valprint.c	2015-01-06 23:03:07.424684753 +0100
+--- gdb-7.8.90.20150126.orig/gdb/c-valprint.c	2015-01-26 07:47:25.832758314 +0100
++++ gdb-7.8.90.20150126/gdb/c-valprint.c	2015-01-26 07:47:42.394829861 +0100
 @@ -537,7 +537,16 @@ c_value_print (struct value *val, struct
  	{
  	  /* normal case */
@@ -28,10 +28,10 @@ Index: gdb-7.8.50.20141228/gdb/c-valprint.c
  	  fprintf_filtered (stream, ") ");
  	}
      }
-Index: gdb-7.8.50.20141228/gdb/dwarf2loc.h
+Index: gdb-7.8.90.20150126/gdb/dwarf2loc.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/dwarf2loc.h	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/dwarf2loc.h	2015-01-06 23:03:07.424684753 +0100
+--- gdb-7.8.90.20150126.orig/gdb/dwarf2loc.h	2015-01-26 07:47:25.832758314 +0100
++++ gdb-7.8.90.20150126/gdb/dwarf2loc.h	2015-01-26 07:47:42.395829865 +0100
 @@ -111,6 +111,11 @@ int dwarf2_evaluate_property (const stru
  			      CORE_ADDR address,
  			      CORE_ADDR *value);
@@ -44,14 +44,14 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.h
  /* A helper for the compiler interface that compiles a single dynamic
     property to C code.
  
-Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
+Index: gdb-7.8.90.20150126/gdb/dwarf2read.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/dwarf2read.c	2015-01-06 23:04:09.691986881 +0100
-@@ -1844,6 +1844,12 @@ static void free_dwo_file_cleanup (void
- static void process_cu_includes (void);
- 
+--- gdb-7.8.90.20150126.orig/gdb/dwarf2read.c	2015-01-26 07:47:25.845758371 +0100
++++ gdb-7.8.90.20150126/gdb/dwarf2read.c	2015-01-26 07:48:05.833931116 +0100
+@@ -1855,6 +1855,12 @@ static void process_cu_includes (void);
  static void check_producer (struct dwarf2_cu *cu);
+ 
+ static void free_line_header_voidp (void *arg);
 +
 +static int
 +attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
@@ -61,7 +61,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  \f
  /* Various complaints about symbol reading that don't abort the process.  */
  
-@@ -14241,29 +14247,92 @@ read_tag_string_type (struct die_info *d
+@@ -14354,29 +14360,92 @@ read_tag_string_type (struct die_info *d
    struct gdbarch *gdbarch = get_objfile_arch (objfile);
    struct type *type, *range_type, *index_type, *char_type;
    struct attribute *attr;
@@ -161,7 +161,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
    char_type = language_string_char_type (cu->language_defn, gdbarch);
    type = create_string_type (NULL, char_type, range_type);
  
-@@ -14580,13 +14649,15 @@ read_base_type (struct die_info *die, st
+@@ -14693,13 +14762,15 @@ read_base_type (struct die_info *die, st
    return set_die_type (die, type, cu);
  }
  
@@ -178,7 +178,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  {
    struct dwarf2_property_baton *baton;
    struct obstack *obstack = &cu->objfile->objfile_obstack;
-@@ -14599,8 +14670,25 @@ attr_to_dynamic_prop (const struct attri
+@@ -14712,8 +14783,25 @@ attr_to_dynamic_prop (const struct attri
        baton = obstack_alloc (obstack, sizeof (*baton));
        baton->referenced_type = NULL;
        baton->locexpr.per_cu = cu->per_cu;
@@ -206,7 +206,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
        prop->data.baton = baton;
        prop->kind = PROP_LOCEXPR;
        gdb_assert (prop->data.baton != NULL);
-@@ -14630,8 +14718,28 @@ attr_to_dynamic_prop (const struct attri
+@@ -14743,8 +14831,28 @@ attr_to_dynamic_prop (const struct attri
  	  baton = obstack_alloc (obstack, sizeof (*baton));
  	  baton->referenced_type = die_type (target_die, target_cu);
  	  baton->locexpr.per_cu = cu->per_cu;
@@ -237,7 +237,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  	  prop->data.baton = baton;
  	  prop->kind = PROP_LOCEXPR;
  	  gdb_assert (prop->data.baton != NULL);
-@@ -14666,7 +14774,7 @@ read_subrange_type (struct die_info *die
+@@ -14779,7 +14887,7 @@ read_subrange_type (struct die_info *die
    struct type *base_type, *orig_base_type;
    struct type *range_type;
    struct attribute *attr;
@@ -246,7 +246,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
    int low_default_is_valid;
    int high_bound_is_count = 0;
    const char *name;
-@@ -14686,7 +14794,9 @@ read_subrange_type (struct die_info *die
+@@ -14799,7 +14907,9 @@ read_subrange_type (struct die_info *die
  
    low.kind = PROP_CONST;
    high.kind = PROP_CONST;
@@ -256,7 +256,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  
    /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
       omitting DW_AT_lower_bound.  */
-@@ -14719,19 +14829,26 @@ read_subrange_type (struct die_info *die
+@@ -14832,19 +14942,26 @@ read_subrange_type (struct die_info *die
        break;
      }
  
@@ -286,7 +286,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  	{
  	  /* If bounds are constant do the final calculation here.  */
  	  if (low.kind == PROP_CONST && high.kind == PROP_CONST)
-@@ -14795,7 +14912,7 @@ read_subrange_type (struct die_info *die
+@@ -14908,7 +15025,7 @@ read_subrange_type (struct die_info *die
        && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
      high.data.const_val |= negative_mask;
  
@@ -295,7 +295,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
  
    if (high_bound_is_count)
      TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
-@@ -21860,7 +21977,44 @@ set_die_type (struct die_info *die, stru
+@@ -21994,7 +22111,44 @@ set_die_type (struct die_info *die, stru
  
    /* Read DW_AT_data_location and set in type.  */
    attr = dwarf2_attr (die, DW_AT_data_location, cu);
@@ -341,10 +341,10 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
      {
        TYPE_DATA_LOCATION (type)
          = obstack_alloc (&objfile->objfile_obstack, sizeof (prop));
-Index: gdb-7.8.50.20141228/gdb/f-typeprint.c
+Index: gdb-7.8.90.20150126/gdb/f-typeprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/f-typeprint.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/f-typeprint.c	2015-01-06 23:03:07.428684772 +0100
+--- gdb-7.8.90.20150126.orig/gdb/f-typeprint.c	2015-01-26 07:47:25.846758375 +0100
++++ gdb-7.8.90.20150126/gdb/f-typeprint.c	2015-01-26 07:47:42.402829895 +0100
 @@ -30,6 +30,7 @@
  #include "gdbcore.h"
  #include "target.h"
@@ -429,10 +429,10 @@ Index: gdb-7.8.50.20141228/gdb/f-typeprint.c
        if (arrayprint_recurse_level == 1)
  	fprintf_filtered (stream, ")");
        else
-Index: gdb-7.8.50.20141228/gdb/f-valprint.c
+Index: gdb-7.8.90.20150126/gdb/f-valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/f-valprint.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/f-valprint.c	2015-01-06 23:03:07.428684772 +0100
+--- gdb-7.8.90.20150126.orig/gdb/f-valprint.c	2015-01-26 07:47:25.847758379 +0100
++++ gdb-7.8.90.20150126/gdb/f-valprint.c	2015-01-26 07:47:42.403829900 +0100
 @@ -36,8 +36,6 @@
  
  extern void _initialize_f_valprint (void);
@@ -619,10 +619,10 @@ Index: gdb-7.8.50.20141228/gdb/f-valprint.c
            if (index != TYPE_NFIELDS (type) - 1)
              fputs_filtered (", ", stream);
          }
-Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
+Index: gdb-7.8.90.20150126/gdb/gdbtypes.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbtypes.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbtypes.c	2015-01-06 23:03:07.429684777 +0100
+--- gdb-7.8.90.20150126.orig/gdb/gdbtypes.c	2015-01-26 07:47:25.850758392 +0100
++++ gdb-7.8.90.20150126/gdb/gdbtypes.c	2015-01-26 07:47:42.404829904 +0100
 @@ -815,7 +815,8 @@ allocate_stub_method (struct type *type)
  struct type *
  create_range_type (struct type *result_type, struct type *index_type,
@@ -946,10 +946,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
    return new_type;
  }
  \f
-Index: gdb-7.8.50.20141228/gdb/gdbtypes.h
+Index: gdb-7.8.90.20150126/gdb/gdbtypes.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/gdbtypes.h	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/gdbtypes.h	2015-01-06 23:03:07.429684777 +0100
+--- gdb-7.8.90.20150126.orig/gdb/gdbtypes.h	2015-01-26 07:47:25.852758401 +0100
++++ gdb-7.8.90.20150126/gdb/gdbtypes.h	2015-01-26 07:47:42.405829908 +0100
 @@ -660,6 +660,10 @@ struct main_type
  
        struct dynamic_prop high;
@@ -1038,10 +1038,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.h
  				       const struct dynamic_prop *);
  
  extern struct type *create_array_type (struct type *, struct type *,
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp	2015-01-06 23:03:07.429684777 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp	2015-01-26 07:47:42.405829908 +0100
 @@ -0,0 +1,65 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1108,10 +1108,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
 +gdb_continue_to_breakpoint "vla2-deallocated"
 +gdb_test "print l" " = \\.FALSE\\." "print vla2 deallocated"
 +gdb_test "print vla2" " = <not allocated>" "print deallocated vla2"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.exp	2015-01-06 23:03:07.429684777 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp	2015-01-26 07:47:42.405829908 +0100
 @@ -0,0 +1,82 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1195,10 +1195,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.exp
 +  "print logicalvla(5,5,5) (2nd)"
 +gdb_test "print charactervla(5,5,5)" " = 'X'" \
 +  "print charactervla(5,5,5) (2nd)"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.f90	2015-01-06 23:03:07.429684777 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90	2015-01-26 07:47:42.405829908 +0100
 @@ -0,0 +1,51 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -1251,10 +1251,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.f90
 +  ! dummy statement for bp
 +  l = .FALSE.                             ! vlas-modified
 +end program vla_primitives
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp	2015-01-26 07:47:42.406829913 +0100
 @@ -0,0 +1,61 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1317,10 +1317,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.exp
 +  "print vla3 (after func2)"
 +gdb_test "ptype vla3" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
 +  "ptype vla3 (after func2)"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.f90	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90	2015-01-26 07:47:42.406829913 +0100
 @@ -0,0 +1,71 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -1393,10 +1393,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.f90
 +
 +  ret = .TRUE.                ! func2-returned
 +end program vla_func
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-history.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-history.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp	2015-01-26 07:47:42.406829913 +0100
 @@ -0,0 +1,62 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1460,10 +1460,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-history.exp
 +# Try to access history values for vla values.
 +gdb_test "print \$9" " = 1311" "print \$9"
 +gdb_test "print \$10" " = 1001" "print \$10"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp	2015-01-26 07:47:42.406829913 +0100
 @@ -0,0 +1,87 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1552,10 +1552,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
 +  "ptype array1(100) (arbitrary length)"
 +gdb_test "ptype array2(4,100)" "type = integer\\\(kind=4\\\)" \
 +  "ptype array2(4,100) (arbitrary length)"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp	2015-01-26 07:47:42.406829913 +0100
 @@ -0,0 +1,96 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1653,10 +1653,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype.exp
 +gdb_test "ptype vla2(5, 45, 20)" \
 +  "no such vector element because not allocated" \
 +  "ptype vla2(5, 45, 20) not allocated"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sizeof.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sizeof.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp	2015-01-26 07:47:42.406829913 +0100
 @@ -0,0 +1,46 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1704,10 +1704,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sizeof.exp
 +gdb_breakpoint [gdb_get_line_number "pvla-associated"]
 +gdb_continue_to_breakpoint "pvla-associated"
 +gdb_test "print sizeof(pvla)" " = 4000" "print sizeof associated pvla"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,44 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1753,10 +1753,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.exp
 +gdb_continue_to_breakpoint "single-element"
 +gdb_test "print pvla" " = \\\(5\\\)" "print single-element"
 +gdb_test "print pvla(1)" " = 5" "print one single-element"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.f90	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,30 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -1788,10 +1788,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.f90
 +
 +  pvla => null()        ! single-element
 +end program vla_stride
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,104 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -1897,10 +1897,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.exp
 +  "whatis var_char_p after associated"
 +gdb_test "ptype var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
 +  "ptype var_char_p after associated"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.f90	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,40 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -1942,10 +1942,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.f90
 +  var_char_p => null()
 +  l = associated(var_char_p)              ! var_char_p-not-associated
 +end program vla_strings
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sub.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sub.f90	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,82 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -2029,10 +2029,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sub.f90
 +
 +  call bar(sub_arr3, sub_arr1)
 +end program vla_sub
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp	2015-01-06 23:03:07.430684782 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,35 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -2069,10 +2069,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
 +gdb_test "p array1(100)" " = 100" "print arbitary array1(100)"
 +gdb_test "p array2(4,10)" " = 1" "print arbitary array2(4,10)"
 +gdb_test "p array2(4,100)" " = 1" "print arbitary array2(4,100)"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp	2015-01-06 23:03:07.431684787 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp	2015-01-26 07:47:42.407829917 +0100
 @@ -0,0 +1,49 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -2123,10 +2123,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
 +gdb_test "p sub_arr2(1, 1, 1)" " = 30" "sub_arr2(1, 1, 1) after finish"
 +gdb_test "p sub_arr2(2, 1, 1)" " = 20" "sub_arr2(2, 1, 1) after finish"
 +
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub.exp	2015-01-06 23:03:07.431684787 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp	2015-01-26 07:47:42.408829922 +0100
 @@ -0,0 +1,90 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -2218,10 +2218,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub.exp
 +  "set array(2,2,2) to 20 in subroutine (passed vla)"
 +gdb_test "print array2" " = \\( *\\( *\\( *30, *20, *3,\[()3, .\]*\\)" \
 +  "print array2 in foo after it was mofified in debugger (passed vla)"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value.exp	2015-01-06 23:03:07.431684787 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp	2015-01-26 07:47:42.408829922 +0100
 @@ -0,0 +1,148 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -2371,10 +2371,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value.exp
 +gdb_continue_to_breakpoint "pvla-deassociated"
 +gdb_test "print \$mypvar(1,3,8)" " = 1001" \
 +  "print \$mypvar(1,3,8) after deallocated"
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla.f90	2015-01-06 23:03:07.431684787 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90	2015-01-26 07:47:42.408829922 +0100
 @@ -0,0 +1,56 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -2432,10 +2432,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla.f90
 +  allocate (vla3 (2,2))               ! vla2-deallocated
 +  vla3(:,:) = 13
 +end program vla
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/mi-vla-fortran.exp	2015-01-06 23:03:07.431684787 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp	2015-01-26 07:47:42.408829922 +0100
 @@ -0,0 +1,182 @@
 +# Copyright 2014 Free Software Foundation, Inc.
 +
@@ -2619,10 +2619,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
 +
 +mi_gdb_exit
 +return 0
-Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/vla.f90
+Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/vla.f90	2015-01-06 23:03:07.431684787 +0100
++++ gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90	2015-01-26 07:47:42.409829926 +0100
 @@ -0,0 +1,42 @@
 +! Copyright 2014 Free Software Foundation, Inc.
 +!
@@ -2666,10 +2666,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/vla.f90
 +  pvla2 => null()
 +  l = associated(pvla2)       ! pvla2-set-to-null
 +end program vla
-Index: gdb-7.8.50.20141228/gdb/typeprint.c
+Index: gdb-7.8.90.20150126/gdb/typeprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/typeprint.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/typeprint.c	2015-01-06 23:03:07.431684787 +0100
+--- gdb-7.8.90.20150126.orig/gdb/typeprint.c	2015-01-26 07:47:25.856758418 +0100
++++ gdb-7.8.90.20150126/gdb/typeprint.c	2015-01-26 07:47:42.409829926 +0100
 @@ -456,6 +456,13 @@ whatis_exp (char *exp, int show)
  
    type = value_type (val);
@@ -2684,10 +2684,10 @@ Index: gdb-7.8.50.20141228/gdb/typeprint.c
    get_user_print_options (&opts);
    if (opts.objectprint)
      {
-Index: gdb-7.8.50.20141228/gdb/valarith.c
+Index: gdb-7.8.90.20150126/gdb/valarith.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valarith.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/valarith.c	2015-01-06 23:03:07.432684792 +0100
+--- gdb-7.8.90.20150126.orig/gdb/valarith.c	2015-01-26 07:47:25.857758422 +0100
++++ gdb-7.8.90.20150126/gdb/valarith.c	2015-01-26 07:47:42.409829926 +0100
 @@ -193,12 +193,31 @@ value_subscripted_rvalue (struct value *
    struct type *array_type = check_typedef (value_type (array));
    struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
@@ -2722,10 +2722,10 @@ Index: gdb-7.8.50.20141228/gdb/valarith.c
  
    if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
      v = allocate_value_lazy (elt_type);
-Index: gdb-7.8.50.20141228/gdb/valprint.c
+Index: gdb-7.8.90.20150126/gdb/valprint.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valprint.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/valprint.c	2015-01-06 23:03:07.432684792 +0100
+--- gdb-7.8.90.20150126.orig/gdb/valprint.c	2015-01-26 07:47:25.858758427 +0100
++++ gdb-7.8.90.20150126/gdb/valprint.c	2015-01-26 07:47:42.410829930 +0100
 @@ -303,6 +303,18 @@ valprint_check_validity (struct ui_file
  {
    CHECK_TYPEDEF (type);
@@ -2800,10 +2800,10 @@ Index: gdb-7.8.50.20141228/gdb/valprint.c
    return 1;
  }
  
-Index: gdb-7.8.50.20141228/gdb/valprint.h
+Index: gdb-7.8.90.20150126/gdb/valprint.h
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/valprint.h	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/valprint.h	2015-01-06 23:03:07.432684792 +0100
+--- gdb-7.8.90.20150126.orig/gdb/valprint.h	2015-01-26 07:47:25.859758431 +0100
++++ gdb-7.8.90.20150126/gdb/valprint.h	2015-01-26 07:47:42.410829930 +0100
 @@ -217,4 +217,8 @@ extern void output_command_const (const
  
  extern int val_print_scalar_type_p (struct type *type);
@@ -2813,10 +2813,10 @@ Index: gdb-7.8.50.20141228/gdb/valprint.h
 +extern void val_print_not_associated (struct ui_file *stream);
 +
  #endif
-Index: gdb-7.8.50.20141228/gdb/value.c
+Index: gdb-7.8.90.20150126/gdb/value.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/value.c	2015-01-06 22:51:17.663240907 +0100
-+++ gdb-7.8.50.20141228/gdb/value.c	2015-01-06 23:03:07.433684797 +0100
+--- gdb-7.8.90.20150126.orig/gdb/value.c	2015-01-26 07:47:25.860758435 +0100
++++ gdb-7.8.90.20150126/gdb/value.c	2015-01-26 07:47:42.411829935 +0100
 @@ -40,6 +40,7 @@
  #include "tracepoint.h"
  #include "cp-abi.h"
@@ -2919,11 +2919,11 @@ Index: gdb-7.8.50.20141228/gdb/value.c
  
        if (TYPE_LENGTH (type))
  	read_value_memory (val, 0, value_stack (val),
-Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
+Index: gdb-7.8.90.20150126/gdb/dwarf2loc.c
 ===================================================================
---- gdb-7.8.50.20141228.orig/gdb/dwarf2loc.c	2014-12-28 02:48:43.000000000 +0100
-+++ gdb-7.8.50.20141228/gdb/dwarf2loc.c	2015-01-06 23:05:55.296499287 +0100
-@@ -2326,6 +2346,11 @@ dwarf2_evaluate_loc_desc_full (struct ty
+--- gdb-7.8.90.20150126.orig/gdb/dwarf2loc.c	2015-01-26 07:47:25.862758444 +0100
++++ gdb-7.8.90.20150126/gdb/dwarf2loc.c	2015-01-26 07:47:42.412829939 +0100
+@@ -2293,6 +2293,11 @@ dwarf2_evaluate_loc_desc_full (struct ty
  	    int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0);
  
  	    do_cleanups (value_chain);
@@ -2935,7 +2935,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
  	    retval = value_at_lazy (type, address + byte_offset);
  	    if (in_stack_memory)
  	      set_value_stack (retval, 1);
-@@ -2546,6 +2546,19 @@ dwarf2_compile_property_to_c (struct ui_
+@@ -2552,6 +2557,19 @@ dwarf2_compile_property_to_c (struct ui_
  			     data, data + size, per_cu);
  }
  

diff --git a/gdb.spec b/gdb.spec
index a1592c5..d4af92b 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -22,11 +22,11 @@ Name: %{?scl_prefix}gdb
 # See timestamp of source gnulib installed into gdb/gnulib/ .
 %global snapgnulib 20121213
 %global tarname gdb-%{version}
-Version: 7.8.50.20150108
+Version: 7.8.90.20150202
 
 # 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: 1%{?dist}
+Release: 2%{?dist}
 
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL
 Group: Development/Debuggers
@@ -520,19 +520,14 @@ Patch925: gdb-fortran-frame-string.patch
 # Fix Python GIL with gdb.execute("continue") (Phil Muldoon, BZ 1116957).
 Patch927: gdb-python-gil.patch
 
-# Fix 'Slow gstack performance' (RH BZ 1103894, Jan Kratochvil).
-Patch973: gdb-slow-gstack-performance.patch
-
-# Fix 'compile' compilation warning/error.
-Patch977: gdb-compile-warn_unused_result.patch
-
 # Fix jit-reader.h for multi-lib.
 Patch978: gdb-jit-reader-multilib.patch
 
 # Fix gdb-7.9pre regressions / new FAILs.
 Patch979: gdb-6.8-bz457187-largefile-test-regression-fix.patch
-Patch980: gdb-py-frame-rip-test-fix.patch
-Patch981: gdb-tekhex-regression-revert.patch
+
+# Temporarily disable dg-extract-results.py to fix gdb.sum sorting.
+Patch982: gdb-no-dg-extract-results-py.patch
 
 %if 0%{!?rhel:1} || 0%{?rhel} > 6
 # RL_STATE_FEDORA_GDB would not be found for:
@@ -815,12 +810,9 @@ find -name "*.info*"|xargs rm -f
 %patch918 -p1
 %patch925 -p1
 %patch927 -p1
-%patch973 -p1
-%patch977 -p1
 %patch978 -p1
 %patch979 -p1
-%patch980 -p1
-%patch981 -p1
+%patch982 -p1
 
 %patch848 -p1
 %if 0%{!?el6:1}
@@ -1321,6 +1313,10 @@ then
 fi
 
 %changelog
+* Mon Feb  2 2015 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.8.90.20150202-2.fc22
+- Rebase to 7.9-branch snapshot 7.8.90.20150202.
+- Temporarily disable dg-extract-results.py to fix gdb.sum sorting.
+
 * Thu Jan  8 2015 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.8.50.20150108-1.fc22
 - Rebase to pre-7.9 snapshot 7.8.50.20150108.
 - Fix jit-reader.h for multi-lib.

diff --git a/sources b/sources
index ed96386..848bde3 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 4981307aa9619bbec5b73261e4e41c8d  gdb-libstdc++-v3-python-r155978.tar.bz2
-6b43f1079e9a6401c7277d6bd777bd7f  gdb-7.8.50.20150108.tar.xz
+3821d055a639644d09bd9734e59b051c  gdb-7.8.90.20150202.tar.xz

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-27 23:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-27 23:56 [rpms/gdb] gdb-17.2-rebase-f44: Rebase to 7.9-branch snapshot 7.8.90.20150202 Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox