[gdb] Rebase to FSF GDB 7.8.1.

Jan Kratochvil jankratochvil at fedoraproject.org
Thu Oct 30 21:21:17 UTC 2014


commit 43b0bce1db25f51fc4bd7b400f42984c8bca466b
Author: Jan Kratochvil <jan.kratochvil at redhat.com>
Date:   Thu Oct 30 22:21:18 2014 +0100

    Rebase to FSF GDB 7.8.1.

 .gitignore                                   |    2 +-
 gdb-async-stopped-on-pid-arg-1of2.patch      |  350 -----
 gdb-async-stopped-on-pid-arg-2of2.patch      |  217 ---
 gdb-async-stopped-on-pid-arg-testsuite.patch |   23 +-
 gdb-attach-fail-reasons-5of5.patch           |   78 +-
 gdb-babeltrace-configure.patch               |   85 --
 gdb-babeltrace-minsize.patch                 |  237 ----
 gdb-upstream.patch                           | 1803 --------------------------
 gdb.spec                                     |   26 +-
 python-framefilter-invalidarg.patch          |  596 ---------
 sources                                      |    2 +-
 11 files changed, 58 insertions(+), 3361 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 39bc2d8..e450f7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 /gdb-libstdc++-v3-python-r155978.tar.bz2
-/gdb-7.8.tar.gz
+/gdb-7.8.1.tar.xz
diff --git a/gdb-async-stopped-on-pid-arg-testsuite.patch b/gdb-async-stopped-on-pid-arg-testsuite.patch
index f50ead1..d516695 100644
--- a/gdb-async-stopped-on-pid-arg-testsuite.patch
+++ b/gdb-async-stopped-on-pid-arg-testsuite.patch
@@ -33,10 +33,10 @@ gdb/testsuite/
 	gdb_breakpoint, gdb_continue_to_breakpoint.
 	(test_command_line_attach_run): Kill ${testpid} in one exit path.
 
-diff --git a/gdb/testsuite/gdb.base/attach.c b/gdb/testsuite/gdb.base/attach.c
-index 0041b47..91b180c 100644
---- a/gdb/testsuite/gdb.base/attach.c
-+++ b/gdb/testsuite/gdb.base/attach.c
+Index: gdb-7.8.1/gdb/testsuite/gdb.base/attach.c
+===================================================================
+--- gdb-7.8.1.orig/gdb/testsuite/gdb.base/attach.c	2014-10-30 20:23:01.311595725 +0100
++++ gdb-7.8.1/gdb/testsuite/gdb.base/attach.c	2014-10-30 20:23:38.653574999 +0100
 @@ -5,6 +5,7 @@
     exit unless/until gdb sets the variable to non-zero.)
     */
@@ -58,10 +58,10 @@ index 0041b47..91b180c 100644
 -  return 0;
 +  return 0; /* postloop */
  }
-diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp
-index 6340496..5fb5c53 100644
---- a/gdb/testsuite/gdb.base/attach.exp
-+++ b/gdb/testsuite/gdb.base/attach.exp
+Index: gdb-7.8.1/gdb/testsuite/gdb.base/attach.exp
+===================================================================
+--- gdb-7.8.1.orig/gdb/testsuite/gdb.base/attach.exp	2014-10-30 20:23:01.311595725 +0100
++++ gdb-7.8.1/gdb/testsuite/gdb.base/attach.exp	2014-10-30 20:23:54.151562867 +0100
 @@ -256,11 +256,8 @@ proc do_attach_tests {} {
  
      # Verify that the modification really happened.
@@ -76,14 +76,11 @@ index 6340496..5fb5c53 100644
  
      # Allow the test process to exit, to cleanup after ourselves.
  
-@@ -451,6 +448,7 @@ proc test_command_line_attach_run {} {
- 		 "-iex set\\ height\\ 0 -iex set\\ width\\ 0 --pid=$testpid -ex \"start\""]
+@@ -418,6 +415,7 @@ proc test_command_line_attach_run {} {
+ 		     "-iex \"set height 0\" -iex \"set width 0\" --pid=$testpid -ex \"start\""]
  	if { $res != 0} {
  	    fail $test
 +	    remote_exec build "kill -9 ${testpid}"
  	    return $res
  	}
  	gdb_test_multiple "" $test {
-
---RnlQjJ0d97Da+TV1--
-
diff --git a/gdb-attach-fail-reasons-5of5.patch b/gdb-attach-fail-reasons-5of5.patch
index 1bb028b..75a7a5f 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/gdb/common/linux-ptrace.c
+Index: gdb-7.8.1/gdb/common/linux-ptrace.c
 ===================================================================
---- gdb-7.8.orig/gdb/common/linux-ptrace.c	2014-07-29 19:31:01.893149317 +0200
-+++ gdb-7.8/gdb/common/linux-ptrace.c	2014-07-29 19:31:05.806154887 +0200
+--- gdb-7.8.1.orig/gdb/common/linux-ptrace.c	2014-10-30 18:33:37.271097644 +0100
++++ gdb-7.8.1/gdb/common/linux-ptrace.c	2014-10-30 18:33:39.641092763 +0100
 @@ -32,6 +32,10 @@
  
  #include <stdint.h>
@@ -81,10 +81,10 @@ Index: gdb-7.8/gdb/common/linux-ptrace.c
 +			 "(gdb) shell sudo setsebool deny_ptrace=0"));
 +#endif /* HAVE_LIBSELINUX */
 +}
-Index: gdb-7.8/gdb/common/linux-ptrace.h
+Index: gdb-7.8.1/gdb/common/linux-ptrace.h
 ===================================================================
---- gdb-7.8.orig/gdb/common/linux-ptrace.h	2014-07-29 19:31:01.893149317 +0200
-+++ gdb-7.8/gdb/common/linux-ptrace.h	2014-07-29 19:31:05.807154887 +0200
+--- gdb-7.8.1.orig/gdb/common/linux-ptrace.h	2014-10-30 18:33:37.271097644 +0100
++++ gdb-7.8.1/gdb/common/linux-ptrace.h	2014-10-30 18:33:39.642092761 +0100
 @@ -85,6 +85,7 @@ struct buffer;
  
  extern void linux_ptrace_attach_fail_reason (pid_t pid, struct buffer *buffer);
@@ -93,11 +93,11 @@ Index: gdb-7.8/gdb/common/linux-ptrace.h
  extern void linux_enable_event_reporting (pid_t pid);
  extern void linux_disable_event_reporting (pid_t pid);
  extern int linux_supports_tracefork (void);
-Index: gdb-7.8/gdb/configure.ac
+Index: gdb-7.8.1/gdb/configure.ac
 ===================================================================
---- gdb-7.8.orig/gdb/configure.ac	2014-07-29 19:31:01.894149319 +0200
-+++ gdb-7.8/gdb/configure.ac	2014-07-29 19:31:05.807154887 +0200
-@@ -2158,6 +2158,10 @@ case $host_os in
+--- gdb-7.8.1.orig/gdb/configure.ac	2014-10-30 18:33:37.272097642 +0100
++++ gdb-7.8.1/gdb/configure.ac	2014-10-30 18:33:39.643092759 +0100
+@@ -2161,6 +2161,10 @@ case $host_os in
  esac
  AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
  
@@ -108,10 +108,10 @@ Index: gdb-7.8/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/gdb/gdbserver/configure.ac
+Index: gdb-7.8.1/gdb/gdbserver/configure.ac
 ===================================================================
---- gdb-7.8.orig/gdb/gdbserver/configure.ac	2014-07-29 19:31:01.895149320 +0200
-+++ gdb-7.8/gdb/gdbserver/configure.ac	2014-07-29 19:31:05.808154887 +0200
+--- gdb-7.8.1.orig/gdb/gdbserver/configure.ac	2014-10-30 18:33:37.273097640 +0100
++++ gdb-7.8.1/gdb/gdbserver/configure.ac	2014-10-30 18:33:39.643092759 +0100
 @@ -454,6 +454,10 @@ if $want_ipa ; then
     fi
  fi
@@ -123,10 +123,10 @@ Index: gdb-7.8/gdb/gdbserver/configure.ac
  AC_SUBST(GDBSERVER_DEPFILES)
  AC_SUBST(GDBSERVER_LIBS)
  AC_SUBST(srv_xmlbuiltin)
-Index: gdb-7.8/gdb/gdbserver/linux-low.c
+Index: gdb-7.8.1/gdb/gdbserver/linux-low.c
 ===================================================================
---- gdb-7.8.orig/gdb/gdbserver/linux-low.c	2014-07-29 19:31:01.897149323 +0200
-+++ gdb-7.8/gdb/gdbserver/linux-low.c	2014-07-29 19:31:05.809154889 +0200
+--- gdb-7.8.1.orig/gdb/gdbserver/linux-low.c	2014-10-30 18:33:37.275097636 +0100
++++ gdb-7.8.1/gdb/gdbserver/linux-low.c	2014-10-30 18:33:39.644092757 +0100
 @@ -541,6 +541,29 @@ add_lwp (ptid_t ptid)
    return lwp;
  }
@@ -166,10 +166,10 @@ Index: gdb-7.8/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/gdb/inf-ptrace.c
+Index: gdb-7.8.1/gdb/inf-ptrace.c
 ===================================================================
---- gdb-7.8.orig/gdb/inf-ptrace.c	2014-07-29 19:31:01.898149324 +0200
-+++ gdb-7.8/gdb/inf-ptrace.c	2014-07-29 19:31:05.809154889 +0200
+--- gdb-7.8.1.orig/gdb/inf-ptrace.c	2014-10-30 18:33:37.276097634 +0100
++++ gdb-7.8.1/gdb/inf-ptrace.c	2014-10-30 18:33:39.645092755 +0100
 @@ -105,7 +105,15 @@ static void
  inf_ptrace_me (void)
  {
@@ -186,10 +186,10 @@ Index: gdb-7.8/gdb/inf-ptrace.c
  }
  
  /* Start a new inferior Unix child process.  EXEC_FILE is the file to
-Index: gdb-7.8/gdb/linux-nat.c
+Index: gdb-7.8.1/gdb/linux-nat.c
 ===================================================================
---- gdb-7.8.orig/gdb/linux-nat.c	2014-07-29 19:31:01.899149326 +0200
-+++ gdb-7.8/gdb/linux-nat.c	2014-07-29 19:31:05.811154893 +0200
+--- gdb-7.8.1.orig/gdb/linux-nat.c	2014-10-30 18:33:37.277097631 +0100
++++ gdb-7.8.1/gdb/linux-nat.c	2014-10-30 18:33:39.646092753 +0100
 @@ -1291,6 +1291,7 @@ linux_nat_create_inferior (struct target
  #ifdef HAVE_PERSONALITY
    int personality_orig = 0, personality_set = 0;
@@ -235,11 +235,11 @@ Index: gdb-7.8/gdb/linux-nat.c
  }
  
  static void
-Index: gdb-7.8/gdb/config.in
+Index: gdb-7.8.1/gdb/config.in
 ===================================================================
---- gdb-7.8.orig/gdb/config.in	2014-07-29 19:31:01.900149327 +0200
-+++ gdb-7.8/gdb/config.in	2014-07-29 19:31:44.600210090 +0200
-@@ -219,6 +219,9 @@
+--- gdb-7.8.1.orig/gdb/config.in	2014-10-30 18:33:37.278097630 +0100
++++ gdb-7.8.1/gdb/config.in	2014-10-30 18:34:36.165976366 +0100
+@@ -216,6 +216,9 @@
  /* Define if librpm library is being used. */
  #undef HAVE_LIBRPM
  
@@ -249,21 +249,21 @@ Index: gdb-7.8/gdb/config.in
  /* Define to 1 if you have the <libunwind-ia64.h> header file. */
  #undef HAVE_LIBUNWIND_IA64_H
  
-@@ -354,6 +357,9 @@
+@@ -351,6 +354,9 @@
  /* Define to 1 if you have the `scm_new_smob' function. */
  #undef HAVE_SCM_NEW_SMOB
  
 +/* Define to 1 if you have the <selinux/selinux.h> header file. */
 +#undef HAVE_SELINUX_SELINUX_H
 +
- /* Define to 1 if you have the `setenv' function. */
- #undef HAVE_SETENV
+ /* Define to 1 if you have the `setlocale' function. */
+ #undef HAVE_SETLOCALE
  
-Index: gdb-7.8/gdb/configure
+Index: gdb-7.8.1/gdb/configure
 ===================================================================
---- gdb-7.8.orig/gdb/configure	2014-07-29 19:31:01.903149331 +0200
-+++ gdb-7.8/gdb/configure	2014-07-29 19:31:05.815154898 +0200
-@@ -13392,6 +13392,64 @@ cat >>confdefs.h <<_ACEOF
+--- gdb-7.8.1.orig/gdb/configure	2014-10-30 18:33:37.281097623 +0100
++++ gdb-7.8.1/gdb/configure	2014-10-30 18:33:39.649092747 +0100
+@@ -13400,6 +13400,64 @@ cat >>confdefs.h <<_ACEOF
  _ACEOF
  
  
@@ -328,10 +328,10 @@ Index: gdb-7.8/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/gdb/gdbserver/config.in
+Index: gdb-7.8.1/gdb/gdbserver/config.in
 ===================================================================
---- gdb-7.8.orig/gdb/gdbserver/config.in	2014-07-29 19:31:01.904149333 +0200
-+++ gdb-7.8/gdb/gdbserver/config.in	2014-07-29 19:31:05.815154898 +0200
+--- gdb-7.8.1.orig/gdb/gdbserver/config.in	2014-10-30 18:33:37.282097621 +0100
++++ gdb-7.8.1/gdb/gdbserver/config.in	2014-10-30 18:33:39.649092747 +0100
 @@ -81,6 +81,9 @@
  /* Define to 1 if you have the `mcheck' library (-lmcheck). */
  #undef HAVE_LIBMCHECK
@@ -352,10 +352,10 @@ Index: gdb-7.8/gdb/gdbserver/config.in
  /* Define to 1 if you have the <sgtty.h> header file. */
  #undef HAVE_SGTTY_H
  
-Index: gdb-7.8/gdb/gdbserver/configure
+Index: gdb-7.8.1/gdb/gdbserver/configure
 ===================================================================
---- gdb-7.8.orig/gdb/gdbserver/configure	2014-07-29 19:31:01.905149334 +0200
-+++ gdb-7.8/gdb/gdbserver/configure	2014-07-29 19:31:05.817154901 +0200
+--- gdb-7.8.1.orig/gdb/gdbserver/configure	2014-10-30 18:33:37.283097619 +0100
++++ gdb-7.8.1/gdb/gdbserver/configure	2014-10-30 18:33:39.650092745 +0100
 @@ -6170,6 +6170,64 @@ if $want_ipa ; then
     fi
  fi
diff --git a/gdb-upstream.patch b/gdb-upstream.patch
index 2c0cfc9..028fe7a 100644
--- a/gdb-upstream.patch
+++ b/gdb-upstream.patch
@@ -65,1806 +65,3 @@ index 0e0202d..d849b4c 100644
  # gdbserver does not have this issue.
  if ![is_remote target] {
      setup_kfail "*-*-*" gdb/15934
-From 63fcc8bcd98a8cd9672dd8672f663662f8caa811 Mon Sep 17 00:00:00 2001
-From: Pedro Alves <palves at redhat.com>
-Date: Wed, 1 Oct 2014 10:44:08 +0100
-Subject: [PATCH 13/37] Aarch64: Make CPSR a 32-bit register again in the
- target description
-
-This reverts commit a4d9ba85 - 'AARCH64: Change cpsr type to be
-64bit.'.
-
-Even though Linux's ptrace exposes CPSR as 64-bit, CPSR is really
-32-bit, and basing GDB's fundamentals on a particular OS's ptrace(2)
-implementation is a bad idea.
-
-In addition, while that commit intended to fix big endian Aarch64, it
-ended up breaking floating point debugging against GDBserver, for both
-big and little endian, because it changed the CPSR to be 64-bit in the
-features/aarch64-core.xml file, but missed regenerating the
-regformats/aarch64.dat file.  If we generate it now, we see this:
-
-  diff --git c/gdb/regformats/aarch64.dat w/gdb/regformats/aarch64.dat
-  index afe1028..0d32183 100644
-  --- c/gdb/regformats/aarch64.dat
-  +++ w/gdb/regformats/aarch64.dat
-  @@ -35,7 +35,7 @@ expedite:x29,sp,pc
-   64:x30
-   64:sp
-   64:pc
-  -32:cpsr
-  +64:cpsr
-   128:v0
-   128:v1
-   128:v2
-
-IOW, that commit left regformats/aarch64.dat still considering CPSR as
-32-bits.  regformats/aarch64.dat is used by GDBserver for its internal
-regcache layout, and for the g/G packet register block.  See the
-generated aarch64.c file in GDBserver's build dir.
-
-So the target description xml file that GDBserver reports to GDB is
-now claiming that CPSR is 64-bit, but what GDBserver actually puts in
-the g/G register packets is 32-bits.  Because GDB thinks CPSR is
-64-bit (because that's what the XML description says), GDB will be
-reading the remaining 32-bit bits of CPSR out of v0 (the register
-immediately afterwards), and then all the registers that follow CPSR
-in the register packet end up wrong in GDB, because they're being read
-from the wrong offsets...
-
-gdb/
-2014-10-01  Pedro Alves  <palves at redhat.com>
-
-	* features/aarch64-core.xml (cpsr): Change back to 32-bit.
-	* features/aarch64.c: Regenerate.
----
- gdb/ChangeLog                 | 5 +++++
- gdb/features/aarch64-core.xml | 2 +-
- gdb/features/aarch64.c        | 2 +-
- 3 files changed, 7 insertions(+), 2 deletions(-)
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,3 +1,8 @@
-+2014-10-01  Pedro Alves  <palves at redhat.com>
-+
-+	* features/aarch64-core.xml (cpsr): Change back to 32-bit.
-+	* features/aarch64.c: Regenerate.
-+
- 2014-09-11  Pedro Alves  <palves at redhat.com>
- 
- 	PR gdb/17347
---- a/gdb/features/aarch64-core.xml
-+++ b/gdb/features/aarch64-core.xml
-@@ -42,5 +42,5 @@
-   <reg name="sp" bitsize="64" type="data_ptr"/>
- 
-   <reg name="pc" bitsize="64" type="code_ptr"/>
--  <reg name="cpsr" bitsize="64"/>
-+  <reg name="cpsr" bitsize="32"/>
- </feature>
---- a/gdb/features/aarch64.c
-+++ b/gdb/features/aarch64.c
-@@ -50,7 +50,7 @@ initialize_tdesc_aarch64 (void)
-   tdesc_create_reg (feature, "x30", 30, 1, NULL, 64, "int");
-   tdesc_create_reg (feature, "sp", 31, 1, NULL, 64, "data_ptr");
-   tdesc_create_reg (feature, "pc", 32, 1, NULL, 64, "code_ptr");
--  tdesc_create_reg (feature, "cpsr", 33, 1, NULL, 64, "int");
-+  tdesc_create_reg (feature, "cpsr", 33, 1, NULL, 32, "int");
- 
-   feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.fpu");
-   field_type = tdesc_named_type (feature, "ieee_double");
--- 
-1.9.3
-
-From 244fe82b9c6542557a1c2d4d21af1092692d377f Mon Sep 17 00:00:00 2001
-From: Doug Evans <dje at google.com>
-Date: Wed, 15 Oct 2014 13:23:23 -0700
-Subject: [PATCH 29/37] PR python/17364
-
-gdb/ChangeLog:
-
-	* python/lib/gdb/__init__.py (packages): Add "printer".
-	* python/lib/gdb/command/bound_registers.py: Moved to ...
-	* python/lib/gdb/printer/bound_registers.py: ... here.
-	Add printer to global set of builtin printers.  Rename printer from
-	"bound" to "mpx_bound128".
-	* python/lib/gdb/printing.py (_builtin_pretty_printers): New global,
-	registered as global "builtin" printer.
-	(add_builtin_pretty_printer): New function.
-	* data-directory/Makefile.in (PYTHON_FILE_LIST): Update, and add
-	gdb/printer/__init__.py.
----
- gdb/ChangeLog                                 | 15 +++++++++
- gdb/data-directory/Makefile.in                |  5 +--
- gdb/python/lib/gdb/__init__.py                |  3 +-
- gdb/python/lib/gdb/command/bound_registers.py | 45 ---------------------------
- gdb/python/lib/gdb/printer/__init__.py        | 14 +++++++++
- gdb/python/lib/gdb/printer/bound_registers.py | 36 +++++++++++++++++++++
- gdb/python/lib/gdb/printing.py                | 14 +++++++++
- 7 files changed, 84 insertions(+), 48 deletions(-)
- delete mode 100644 gdb/python/lib/gdb/command/bound_registers.py
- create mode 100644 gdb/python/lib/gdb/printer/__init__.py
- create mode 100644 gdb/python/lib/gdb/printer/bound_registers.py
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,3 +1,18 @@
-+2014-10-15  Doug Evans  <dje at google.com>
-+	    Walfred Tedeschi  <walfred.tedeschi at intel.com>
-+
-+	PR python/17364
-+	* python/lib/gdb/__init__.py (packages): Add "printer".
-+	* python/lib/gdb/command/bound_registers.py: Moved to ...
-+	* python/lib/gdb/printer/bound_registers.py: ... here.
-+	Add printer to global set of builtin printers.  Rename printer from
-+	"bound" to "mpx_bound128".
-+	* python/lib/gdb/printing.py (_builtin_pretty_printers): New global,
-+	registered as global "builtin" printer.
-+	(add_builtin_pretty_printer): New function.
-+	* data-directory/Makefile.in (PYTHON_FILE_LIST): Update, and add
-+	gdb/printer/__init__.py.
-+
- 2014-10-01  Pedro Alves  <palves at redhat.com>
- 
- 	* features/aarch64-core.xml (cpsr): Change back to 32-bit.
---- a/gdb/data-directory/Makefile.in
-+++ b/gdb/data-directory/Makefile.in
-@@ -64,7 +64,6 @@ PYTHON_FILE_LIST = \
- 	gdb/printing.py \
- 	gdb/prompt.py \
- 	gdb/xmethod.py \
--	gdb/command/bound_registers.py \
- 	gdb/command/__init__.py \
- 	gdb/command/xmethods.py \
- 	gdb/command/frame_filters.py \
-@@ -73,7 +72,9 @@ PYTHON_FILE_LIST = \
- 	gdb/command/prompt.py \
- 	gdb/command/explore.py \
- 	gdb/function/__init__.py \
--	gdb/function/strfns.py
-+	gdb/function/strfns.py \
-+	gdb/printer/__init__.py \
-+	gdb/printer/bound_registers.py
- 
- @HAVE_PYTHON_TRUE at PYTHON_FILES = $(PYTHON_FILE_LIST)
- @HAVE_PYTHON_FALSE at PYTHON_FILES =
---- a/gdb/python/lib/gdb/__init__.py
-+++ b/gdb/python/lib/gdb/__init__.py
-@@ -81,7 +81,8 @@ PYTHONDIR = os.path.dirname(os.path.dirname(__file__))
- 
- packages = [
-     'function',
--    'command'
-+    'command',
-+    'printer'
- ]
- 
- # pkgutil.iter_modules is not available prior to Python 2.6.  Instead,
---- a/gdb/python/lib/gdb/command/bound_registers.py
-+++ /dev/null
-@@ -1,45 +0,0 @@
--# Pretty-printer utilities.
--# Copyright (C) 2013-2014 Free Software Foundation, Inc.
--
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 3 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
--import gdb.printing
--
--class BoundPrinter:
--    """Adds size field to a _rawbound128 type."""
--
--    def __init__ (self, val):
--        self.val = val
--
--    def to_string (self):
--        upper = self.val["ubound"]
--        lower = self.val["lbound"]
--        size  = (long) ((upper) - (lower))
--        if size > -1:
--            size = size + 1
--        result = '{lbound = %s, ubound = %s} : size %s' % (lower, upper, size)
--        return result
--
--# There are two pattern matching used: first one is related to a library
--# second is related to the type. Since we are displaying a register all
--# libraries are accepted. Type to be processed is the same present
--# in the xml file.
--
--def build_pretty_printer ():
--    pp = gdb.printing.RegexpCollectionPrettyPrinter (".*")
--    pp.add_printer ('bound', '^__gdb_builtin_type_bound128', BoundPrinter)
--    return pp
--
--gdb.printing.register_pretty_printer (gdb.current_objfile (),
--                                      build_pretty_printer ())
---- /dev/null
-+++ b/gdb/python/lib/gdb/printer/__init__.py
-@@ -0,0 +1,14 @@
-+# Copyright (C) 2014 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
---- /dev/null
-+++ b/gdb/python/lib/gdb/printer/bound_registers.py
-@@ -0,0 +1,36 @@
-+# Pretty-printers for bounds registers.
-+# Copyright (C) 2013-2014 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+
-+import gdb.printing
-+
-+class MpxBound128Printer:
-+    """Adds size field to a mpx __gdb_builtin_type_bound128 type."""
-+
-+    def __init__ (self, val):
-+        self.val = val
-+
-+    def to_string (self):
-+        upper = self.val["ubound"]
-+        lower = self.val["lbound"]
-+        size  = (long) ((upper) - (lower))
-+        if size > -1:
-+            size = size + 1
-+        result = '{lbound = %s, ubound = %s} : size %s' % (lower, upper, size)
-+        return result
-+
-+gdb.printing.add_builtin_pretty_printer ('mpx_bound128',
-+                                         '^__gdb_builtin_type_bound128',
-+                                         MpxBound128Printer)
---- a/gdb/python/lib/gdb/printing.py
-+++ b/gdb/python/lib/gdb/printing.py
-@@ -263,3 +263,17 @@ class FlagEnumerationPrinter(PrettyPrinter):
-             return _EnumInstance(self.enumerators, val)
-         else:
-             return None
-+
-+
-+# Builtin pretty-printers.
-+# The set is defined as empty, and files in printing/*.py add their printers
-+# to this with add_builtin_pretty_printer.
-+
-+_builtin_pretty_printers = RegexpCollectionPrettyPrinter("builtin")
-+
-+register_pretty_printer(None, _builtin_pretty_printers)
-+
-+# Add a builtin pretty-printer.
-+
-+def add_builtin_pretty_printer(name, regexp, printer):
-+    _builtin_pretty_printers.add_printer(name, regexp, printer)
--- 
-1.9.3
-
-From 92e08c0d191908b7315603558226c7ca0bfa86a5 Mon Sep 17 00:00:00 2001
-From: Pedro Alves <palves at redhat.com>
-Date: Fri, 17 Oct 2014 13:49:28 +0100
-Subject: [PATCH 32/37] Make common code handle target_terminal_* idempotency
-
-I found a place that should be giving back the terminal to the target,
-but only if the target was already owning it.  So I need to add a
-getter for who owns the terminal.
-
-The trouble is that several places/target have their own globals to
-track this state:
-
- - inflow.c:terminal_is_ours
- - remote.c:remote_async_terminal_ours_p
- - linux-nat.c:async_terminal_is_ours
- - go32-nat.c:terminal_is_ours
-
-While one might think of adding a new target_ops method to query this,
-conceptually, this state isn't really part of a particular target_ops.
-Considering multi-target, the core shouldn't have to ask all targets
-to know whether it's GDB that owns the terminal.  There's only one GDB
-(or rather, only one top level interpreter).
-
-So what this comment does is add a new global that is tracked by the
-core instead.  A subsequent pass may later remove the other globals.
-
-Tested on x86_64 Fedora 20, native and gdbserver.
-
-gdb/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	* target.c (enum terminal_state): New enum.
-	(terminal_state): New global.
-	(target_terminal_init): New function.
-	(target_terminal_inferior): Skip if inferior already owns the
-	terminal.
-	(target_terminal_ours, target_terminal_ours_for_output): New
-	functions.
-	* target.h (target_terminal_init): Convert to function prototype.
-	(target_terminal_ours_for_output): Convert to function prototype
-	and tweak comment.
-	(target_terminal_ours): Convert to function prototype and tweak
-	comment.
-	* windows-nat.c (do_initial_windows_stuff): Call
-	target_terminal_init instead of child_terminal_init_with_pgrp.
----
- gdb/ChangeLog     | 17 +++++++++++++++++
- gdb/target.c      | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- gdb/target.h      | 20 +++++++-------------
- gdb/windows-nat.c |  2 +-
- 4 files changed, 81 insertions(+), 14 deletions(-)
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,3 +1,20 @@
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
-+	* target.c (enum terminal_state): New enum.
-+	(terminal_state): New global.
-+	(target_terminal_init): New function.
-+	(target_terminal_inferior): Skip if inferior already owns the
-+	terminal.
-+	(target_terminal_ours, target_terminal_ours_for_output): New
-+	functions.
-+	* target.h (target_terminal_init): Convert to function prototype.
-+	(target_terminal_ours_for_output): Convert to function prototype
-+	and tweak comment.
-+	(target_terminal_ours): Convert to function prototype and tweak
-+	comment.
-+	* windows-nat.c (do_initial_windows_stuff): Call
-+	target_terminal_init instead of child_terminal_init_with_pgrp.
-+
- 2014-10-15  Doug Evans  <dje at google.com>
- 	    Walfred Tedeschi  <walfred.tedeschi at intel.com>
- 
---- a/gdb/target.c
-+++ b/gdb/target.c
-@@ -482,6 +482,35 @@ target_load (char *arg, int from_tty)
-   (*current_target.to_load) (&current_target, arg, from_tty);
- }
- 
-+/* Possible terminal states.  */
-+
-+enum terminal_state
-+  {
-+    /* The inferior's terminal settings are in effect.  */
-+    terminal_is_inferior = 0,
-+
-+    /* Some of our terminal settings are in effect, enough to get
-+       proper output.  */
-+    terminal_is_ours_for_output = 1,
-+
-+    /* Our terminal settings are in effect, for output and input.  */
-+    terminal_is_ours = 2
-+  };
-+
-+static enum terminal_state terminal_state;
-+
-+/* See target.h.  */
-+
-+void
-+target_terminal_init (void)
-+{
-+  (*current_target.to_terminal_init) (&current_target);
-+
-+  terminal_state = terminal_is_ours;
-+}
-+
-+/* See target.h.  */
-+
- void
- target_terminal_inferior (void)
- {
-@@ -492,9 +521,36 @@ target_terminal_inferior (void)
-   if (target_can_async_p () && !sync_execution)
-     return;
- 
-+  if (terminal_state == terminal_is_inferior)
-+    return;
-+
-   /* If GDB is resuming the inferior in the foreground, install
-      inferior's terminal modes.  */
-   (*current_target.to_terminal_inferior) (&current_target);
-+  terminal_state = terminal_is_inferior;
-+}
-+
-+/* See target.h.  */
-+
-+void
-+target_terminal_ours (void)
-+{
-+  if (terminal_state == terminal_is_ours)
-+    return;
-+
-+  (*current_target.to_terminal_ours) (&current_target);
-+  terminal_state = terminal_is_ours;
-+}
-+
-+/* See target.h.  */
-+
-+void
-+target_terminal_ours_for_output (void)
-+{
-+  if (terminal_state != terminal_is_inferior)
-+    return;
-+  (*current_target.to_terminal_ours_for_output) (&current_target);
-+  terminal_state = terminal_is_ours_for_output;
- }
- 
- static void
---- a/gdb/target.h
-+++ b/gdb/target.h
-@@ -1359,31 +1359,25 @@ extern int target_remove_breakpoint (struct gdbarch *gdbarch,
- /* Initialize the terminal settings we record for the inferior,
-    before we actually run the inferior.  */
- 
--#define target_terminal_init() \
--     (*current_target.to_terminal_init) (&current_target)
-+extern void target_terminal_init (void);
- 
- /* Put the inferior's terminal settings into effect.
-    This is preparation for starting or resuming the inferior.  */
- 
- extern void target_terminal_inferior (void);
- 
--/* Put some of our terminal settings into effect,
--   enough to get proper results from our output,
--   but do not change into or out of RAW mode
--   so that no input is discarded.
-+/* Put some of our terminal settings into effect, enough to get proper
-+   results from our output, but do not change into or out of RAW mode
-+   so that no input is discarded.  This is a no-op if terminal_ours
-+   was most recently called.  */
- 
--   After doing this, either terminal_ours or terminal_inferior
--   should be called to get back to a normal state of affairs.  */
--
--#define target_terminal_ours_for_output() \
--     (*current_target.to_terminal_ours_for_output) (&current_target)
-+extern void target_terminal_ours_for_output (void);
- 
- /* Put our terminal settings into effect.
-    First record the inferior's terminal settings
-    so they can be restored properly later.  */
- 
--#define target_terminal_ours() \
--     (*current_target.to_terminal_ours) (&current_target)
-+extern void target_terminal_ours (void);
- 
- /* Save our terminal settings.
-    This is called from TUI after entering or leaving the curses
---- a/gdb/windows-nat.c
-+++ b/gdb/windows-nat.c
-@@ -1744,7 +1744,7 @@ do_initial_windows_stuff (struct target_ops *ops, DWORD pid, int attaching)
-      current thread until we report an event out of windows_wait.  */
-   inferior_ptid = pid_to_ptid (pid);
- 
--  child_terminal_init_with_pgrp (pid);
-+  target_terminal_init ();
-   target_terminal_inferior ();
- 
-   windows_initialization_done = 0;
--- 
-1.9.3
-
-From 04f0515702a6e5711d71203fcc0ea488161ba086 Mon Sep 17 00:00:00 2001
-From: Pedro Alves <palves at redhat.com>
-Date: Fri, 17 Oct 2014 13:31:25 +0100
-Subject: [PATCH 33/37] PR gdb/17472: With annotations, input while executing
- in the foreground crashes readline/GDB
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Jan caught an intermittent GDB crash with the annota1.exp test:
-
- Starting program: .../gdb/testsuite/gdb.base/annota1 ^M
- [...]
- FAIL: gdb.base/annota1.exp: run until main breakpoint (timeout)
- [...]
- readline: readline_callback_read_char() called with no handler!^M
- ERROR: Process no longer exists
-
-All we need to is to continue the inferior in the foreground, and type
-a command while the inferior is running.  E.g.:
-
- (gdb) set annotate 2
-
- ▒▒pre-prompt
- (gdb)
- ▒▒prompt
- c
-
- ▒▒post-prompt
- Continuing.
-
- ▒▒starting
-
- ▒▒frames-invalid
-
- *inferior is running now*
-
- p 1<ret>
-
- readline: readline_callback_read_char() called with no handler!
- Aborted (core dumped)
- $
-
-
-When we run a foreground execution command we call
-target_terminal_inferior to stop GDB from processing input, and to put
-the inferior's terminal settings in effect.  Then we tell readline to
-hide the prompt with display_gdb_prompt, which clears readline's input
-callback too.  When the target stops, we call target_terminal_ours,
-which re-installs stdin in the event loop, and then we redisplay the
-prompt, reinstalling the readline callbacks.
-
-However, when annotations are in effect, the "frames-invalid"
-annotation code calls target_terminal_ours after 'resume' had already
-called target_terminal_inferior:
-
- (top-gdb) bt
- #0  0x000000000056b82f in annotate_frames_invalid () at gdb/annotate.c:219
- #1  0x000000000072e6cc in reinit_frame_cache () at gdb/frame.c:1705
- #2  0x0000000000594bb9 in registers_changed_ptid (ptid=...) at gdb/regcache.c:612
- #3  0x000000000064cca1 in target_resume (ptid=..., step=1, signal=GDB_SIGNAL_0) at gdb/target.c:2136
- #4  0x00000000005f57af in resume (step=1, sig=GDB_SIGNAL_0) at gdb/infrun.c:2263
- #5  0x00000000005f6051 in proceed (addr=18446744073709551615, siggnal=GDB_SIGNAL_DEFAULT, step=1) at gdb/infrun.c:2613
-
-And then once we hide the prompt and remove readline's input handler
-callback, we're in a bad state.  We end up with the target running
-supposedly in the foreground, but with stdin still installed on the
-event loop.  Any input then calls into readline, which aborts because
-no rl_linefunc callback handler is installed:
-
- Program received signal SIGABRT, Aborted.
- 0x0000003b36a35877 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
- 56        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
-
- (top-gdb) bt
- #0  0x0000003b36a35877 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
- #1  0x0000003b36a36f68 in __GI_abort () at abort.c:89
- During symbol reading, debug info gives source 9 included from file at zero line 0.
- During symbol reading, debug info gives command-line macro definition with non-zero line 19: _STDC_PREDEF_H 1.
- #2  0x0000000000784a25 in rl_callback_read_char () at src/readline/callback.c:116
- #3  0x0000000000619111 in rl_callback_read_char_wrapper (client_data=0x0) at src/gdb/event-top.c:167
- #4  0x00000000006194e7 in stdin_event_handler (error=0, client_data=0x0) at src/gdb/event-top.c:373
- #5  0x00000000006180da in handle_file_event (data=...) at src/gdb/event-loop.c:763
- #6  0x00000000006175c1 in process_event () at src/gdb/event-loop.c:340
- #7  0x0000000000617688 in gdb_do_one_event () at src/gdb/event-loop.c:404
- #8  0x00000000006176d8 in start_event_loop () at src/gdb/event-loop.c:429
- #9  0x0000000000619143 in cli_command_loop (data=0x0) at src/gdb/event-top.c:182
- #10 0x000000000060f4c8 in current_interp_command_loop () at src/gdb/interps.c:318
- #11 0x0000000000610691 in captured_command_loop (data=0x0) at src/gdb/main.c:323
- #12 0x000000000060c385 in catch_errors (func=0x610676 <captured_command_loop>, func_args=0x0, errstring=0x900241 "", mask=RETURN_MASK_ALL)
-     at src/gdb/exceptions.c:237
- #13 0x0000000000611b8f in captured_main (data=0x7fffffffd7b0) at src/gdb/main.c:1151
- #14 0x000000000060c385 in catch_errors (func=0x610a8e <captured_main>, func_args=0x7fffffffd7b0, errstring=0x900241 "", mask=RETURN_MASK_ALL)
-     at src/gdb/exceptions.c:237
- #15 0x0000000000611bb8 in gdb_main (args=0x7fffffffd7b0) at src/gdb/main.c:1159
- #16 0x000000000045ef57 in main (argc=3, argv=0x7fffffffd8b8) at src/gdb/gdb.c:32
-
-The fix is to make the annotation code call target_terminal_inferior
-again after printing, if the inferior's settings were in effect.
-
-While at it, when we're doing output only, instead of
-target_terminal_ours, we should call target_terminal_ours_for_output.
-The latter doesn't actually remove stdin from the event loop, and also
-leaves SIGINT forwarded to the target.
-
-New test included.
-
-Tested on x86_64 Fedora 20, native and gdbserver.
-
-gdb/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	PR gdb/17472
-	* annotate.c (annotate_breakpoints_invalid): Use
-	target_terminal_our_for_output instead of target_terminal_ours.
-	Give back the terminal to the target.
-	(annotate_frames_invalid): Likewise.
-
-gdb/testsuite/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	PR gdb/17472
-	* gdb.base/annota-input-while-running.c: New file.
-	* gdb.base/annota-input-while-running.exp: New file.
----
- gdb/ChangeLog                                      |   8 ++
- gdb/annotate.c                                     |  22 +++-
- gdb/target.c                                       |   8 ++
- gdb/target.h                                       |   5 +
- gdb/testsuite/ChangeLog                            |   6 +
- .../gdb.base/annota-input-while-running.c          |  25 ++++
- .../gdb.base/annota-input-while-running.exp        | 130 +++++++++++++++++++++
- 7 files changed, 202 insertions(+), 2 deletions(-)
- create mode 100644 gdb/testsuite/gdb.base/annota-input-while-running.c
- create mode 100644 gdb/testsuite/gdb.base/annota-input-while-running.exp
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,5 +1,13 @@
- 2014-10-17  Pedro Alves  <palves at redhat.com>
- 
-+	PR gdb/17472
-+	* annotate.c (annotate_breakpoints_invalid): Use
-+	target_terminal_our_for_output instead of target_terminal_ours.
-+	Give back the terminal to the target.
-+	(annotate_frames_invalid): Likewise.
-+
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
- 	* target.c (enum terminal_state): New enum.
- 	(terminal_state): New global.
- 	(target_terminal_init): New function.
---- a/gdb/annotate.c
-+++ b/gdb/annotate.c
-@@ -72,8 +72,17 @@ annotate_breakpoints_invalid (void)
-       && (!breakpoints_invalid_emitted
- 	  || async_background_execution_p ()))
-     {
--      target_terminal_ours ();
-+      /* If the inferior owns the terminal (e.g., we're resuming),
-+	 make sure to leave with the inferior still owning it.  */
-+      int was_inferior = target_terminal_is_inferior ();
-+
-+      target_terminal_ours_for_output ();
-+
-       printf_unfiltered (("\n\032\032breakpoints-invalid\n"));
-+
-+      if (was_inferior)
-+	target_terminal_inferior ();
-+
-       breakpoints_invalid_emitted = 1;
-     }
- }
-@@ -210,8 +219,17 @@ annotate_frames_invalid (void)
-       && (!frames_invalid_emitted
- 	  || async_background_execution_p ()))
-     {
--      target_terminal_ours ();
-+      /* If the inferior owns the terminal (e.g., we're resuming),
-+	 make sure to leave with the inferior still owning it.  */
-+      int was_inferior = target_terminal_is_inferior ();
-+
-+      target_terminal_ours_for_output ();
-+
-       printf_unfiltered (("\n\032\032frames-invalid\n"));
-+
-+      if (was_inferior)
-+	target_terminal_inferior ();
-+
-       frames_invalid_emitted = 1;
-     }
- }
---- a/gdb/target.c
-+++ b/gdb/target.c
-@@ -511,6 +511,14 @@ target_terminal_init (void)
- 
- /* See target.h.  */
- 
-+int
-+target_terminal_is_inferior (void)
-+{
-+  return (terminal_state == terminal_is_inferior);
-+}
-+
-+/* See target.h.  */
-+
- void
- target_terminal_inferior (void)
- {
---- a/gdb/target.h
-+++ b/gdb/target.h
-@@ -1356,6 +1356,11 @@ extern int target_insert_breakpoint (struct gdbarch *gdbarch,
- extern int target_remove_breakpoint (struct gdbarch *gdbarch,
- 				     struct bp_target_info *bp_tgt);
- 
-+/* Returns true if the terminal settings of the inferior are in
-+   effect.  */
-+
-+extern int target_terminal_is_inferior (void);
-+
- /* Initialize the terminal settings we record for the inferior,
-    before we actually run the inferior.  */
- 
-### a/gdb/testsuite/ChangeLog
-### b/gdb/testsuite/ChangeLog
-## -1,3 +1,9 @@
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
-+	PR gdb/17472
-+	* gdb.base/annota-input-while-running.c: New file.
-+	* gdb.base/annota-input-while-running.exp: New file.
-+
- 2014-09-11  Pedro Alves  <palves at redhat.com>
- 
- 	PR gdb/17347
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/annota-input-while-running.c
-@@ -0,0 +1,25 @@
-+/* This testcase is part of GDB, the GNU debugger.
-+
-+   Copyright 2014 Free Software Foundation, Inc.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#include <unistd.h>
-+
-+int
-+main (void)
-+{
-+  sleep (5);
-+  return 0; /* set break here */
-+}
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/annota-input-while-running.exp
-@@ -0,0 +1,130 @@
-+# Copyright 1999-2014 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+
-+# Test that annotations support doesn't leave GDB's terminal settings
-+# into effect when we run a foreground command.
-+
-+if [is_remote target] then {
-+    # We cannot use runto_main because of the different prompt we get
-+    # when using annotation level 2.
-+    return 0
-+}
-+
-+standard_testfile
-+
-+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug] == -1} {
-+    return -1
-+}
-+
-+# Break at main
-+
-+gdb_test "break main" \
-+    "Breakpoint.*at.* file .*$srcfile.*\\." \
-+    "breakpoint main"
-+
-+# NOTE: this prompt is OK only when the annotation level is > 1
-+# NOTE: When this prompt is in use the gdb_test procedure cannot be
-+# used because it assumes that the last char after the gdb_prompt is a
-+# white space.  This is not true with this annotated prompt.  So we
-+# must use the gdb_annota_test replacement below, or
-+# gdb_test_multiple.
-+
-+set old_gdb_prompt $gdb_prompt
-+set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
-+
-+# Like gdb_test, but cope with the annotation prompt.
-+proc gdb_annota_test {command pattern message} {
-+    global gdb_prompt
-+
-+    gdb_test_multiple $command $message {
-+	-re "$pattern$gdb_prompt$" {
-+	    pass "$message"
-+	}
-+	-re "$gdb_prompt$" {
-+	    fail "$message"
-+	}
-+    }
-+}
-+
-+# Set the annotation level to 2.
-+
-+set test "annotation set at level 2"
-+gdb_annota_test "set annotate 2" ".*" "annotation set at level 2"
-+
-+# Run to main.
-+
-+gdb_annota_test "run" \
-+    "\r\n\032\032post-prompt.*\r\n\r\n\032\032stopped.*" \
-+    "run until main breakpoint"
-+
-+set test "delete breakpoints"
-+gdb_test_multiple "delete" $test {
-+    -re "Delete all breakpoints. .y or n." {
-+	send_gdb "y\n"
-+	exp_continue
-+    }
-+    -re "$gdb_prompt$" {
-+	pass $test
-+    }
-+}
-+
-+# Set the target running, and then type something.  GDB used to have a
-+# bug where it'd be accepting input even though the target was
-+# supposedly resumed in the foreground.  This ultimately resulted in
-+# readline aborting.
-+
-+set linenum [gdb_get_line_number "set break here"]
-+
-+gdb_annota_test "break $linenum" \
-+    "Breakpoint .*$srcfile, line .*" \
-+    "break after sleep"
-+
-+# Continue, and wait a bit to make sure the inferior really starts
-+# running.  Wait less than much the program sleeps, which is 5
-+# seconds, though.
-+set saw_continuing 0
-+set test "continue"
-+gdb_test_multiple $test $test {
-+    -timeout 2
-+    -re "Continuing\\." {
-+	set saw_continuing 1
-+	exp_continue
-+    }
-+    timeout {
-+	gdb_assert $saw_continuing $test
-+    }
-+}
-+
-+# Type something.
-+send_gdb "print 1\n"
-+
-+# Poor buggy GDB would crash before the breakpoint was hit.
-+set test "breakpoint hit"
-+gdb_test_multiple "" $test {
-+    -re "stopped\r\n$gdb_prompt" {
-+	pass $test
-+    }
-+}
-+
-+set test "print command result"
-+gdb_test_multiple "" $test {
-+    -re "\r\n1\r\n\r\n\032\032value-history-end\r\n$gdb_prompt" {
-+	pass $test
-+    }
-+}
-+
-+# Restore the original prompt for the rest of the testsuite.
-+
-+set gdb_prompt $old_gdb_prompt
--- 
-1.9.3
-
-From e37951dc10da6940ef354f062fc43ee03687c571 Mon Sep 17 00:00:00 2001
-From: Pedro Alves <palves at redhat.com>
-Date: Fri, 17 Oct 2014 13:31:25 +0100
-Subject: [PATCH 34/37] PR gdb/17300: Input after "c -a" crashes readline/GDB
-
-If all threads in the target were already running when the user does
-"c -a", nothing puts the inferior's terminal settings in effect and
-removes stdin from the event loop, which we must when running a
-foreground command.  The result is that user input afterwards crashes
-readline/gdb:
-
- (gdb) start
- Temporary breakpoint 1 at 0x4005d4: file continue-all-already-running.c, line 23.
- Starting program: continue-all-already-running
-
- Temporary breakpoint 1, main () at continue-all-already-running.c:23
- 23        sleep (10);
- (gdb) c -a&
- Continuing.
- (gdb) c -a
- Continuing.
- p 1
- readline: readline_callback_read_char() called with no handler!
- Aborted (core dumped)
- $
-
-Backtrace:
-
- Program received signal SIGABRT, Aborted.
- 0x0000003b36a35877 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
- 56        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
- (top-gdb) p 1
- $1 = 1
- (top-gdb) bt
- #0  0x0000003b36a35877 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
- #1  0x0000003b36a36f68 in __GI_abort () at abort.c:89
- #2  0x0000000000784aa9 in rl_callback_read_char () at readline/callback.c:116
- #3  0x0000000000619181 in rl_callback_read_char_wrapper (client_data=0x0) at gdb/event-top.c:167
- #4  0x0000000000619557 in stdin_event_handler (error=0, client_data=0x0) at gdb/event-top.c:373
- #5  0x000000000061814a in handle_file_event (data=...) at gdb/event-loop.c:763
- #6  0x0000000000617631 in process_event () at gdb/event-loop.c:340
- #7  0x00000000006176f8 in gdb_do_one_event () at gdb/event-loop.c:404
- #8  0x0000000000617748 in start_event_loop () at gdb/event-loop.c:429
- #9  0x00000000006191b3 in cli_command_loop (data=0x0) at gdb/event-top.c:182
- #10 0x000000000060f538 in current_interp_command_loop () at gdb/interps.c:318
- #11 0x0000000000610701 in captured_command_loop (data=0x0) at gdb/main.c:323
- #12 0x000000000060c3f5 in catch_errors (func=0x6106e6 <captured_command_loop>, func_args=0x0, errstring=0x9002c1 "", mask=RETURN_MASK_ALL)
-     at gdb/exceptions.c:237
- #13 0x0000000000611bff in captured_main (data=0x7fffffffd780) at gdb/main.c:1151
- #14 0x000000000060c3f5 in catch_errors (func=0x610afe <captured_main>, func_args=0x7fffffffd780, errstring=0x9002c1 "", mask=RETURN_MASK_ALL)
-     at gdb/exceptions.c:237
- #15 0x0000000000611c28 in gdb_main (args=0x7fffffffd780) at gdb/main.c:1159
- #16 0x000000000045ef97 in main (argc=5, argv=0x7fffffffd888) at gdb/gdb.c:32
- (top-gdb)
-
-Tested on x86_64 Fedora 20, native and gdbserver.
-
-gdb/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	PR gdb/17300
-	* infcmd.c (continue_1): If continuing all threads in the
-	foreground, make sure the inferior's terminal settings are put in
-	effect.
-
-gdb/testsuite/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	PR gdb/17300
-	* gdb.base/continue-all-already-running.c: New file.
-	* gdb.base/continue-all-already-running.exp: New file.
----
- gdb/ChangeLog                                      |  7 ++
- gdb/infcmd.c                                       | 18 +++++
- gdb/testsuite/ChangeLog                            |  6 ++
- .../gdb.base/continue-all-already-running.c        | 25 +++++++
- .../gdb.base/continue-all-already-running.exp      | 79 ++++++++++++++++++++++
- 5 files changed, 135 insertions(+)
- create mode 100644 gdb/testsuite/gdb.base/continue-all-already-running.c
- create mode 100644 gdb/testsuite/gdb.base/continue-all-already-running.exp
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,5 +1,12 @@
- 2014-10-17  Pedro Alves  <palves at redhat.com>
- 
-+	PR gdb/17300
-+	* infcmd.c (continue_1): If continuing all threads in the
-+	foreground, make sure the inferior's terminal settings are put in
-+	effect.
-+
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
- 	PR gdb/17472
- 	* annotate.c (annotate_breakpoints_invalid): Use
- 	target_terminal_our_for_output instead of target_terminal_ours.
---- a/gdb/infcmd.c
-+++ b/gdb/infcmd.c
-@@ -738,6 +738,24 @@ continue_1 (int all_threads)
- 
-       iterate_over_threads (proceed_thread_callback, NULL);
- 
-+      if (sync_execution)
-+	{
-+	  /* If all threads in the target were already running,
-+	     proceed_thread_callback ends up never calling proceed,
-+	     and so nothing calls this to put the inferior's terminal
-+	     settings in effect and remove stdin from the event loop,
-+	     which we must when running a foreground command.  E.g.:
-+
-+	      (gdb) c -a&
-+	      Continuing.
-+	      <all threads are running now>
-+	      (gdb) c -a
-+	      Continuing.
-+	      <no thread was resumed, but the inferior now owns the terminal>
-+	  */
-+	  target_terminal_inferior ();
-+	}
-+
-       /* Restore selected ptid.  */
-       do_cleanups (old_chain);
-     }
-### a/gdb/testsuite/ChangeLog
-### b/gdb/testsuite/ChangeLog
-## -1,5 +1,11 @@
- 2014-10-17  Pedro Alves  <palves at redhat.com>
- 
-+	PR gdb/17300
-+	* gdb.base/continue-all-already-running.c: New file.
-+	* gdb.base/continue-all-already-running.exp: New file.
-+
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
- 	PR gdb/17472
- 	* gdb.base/annota-input-while-running.c: New file.
- 	* gdb.base/annota-input-while-running.exp: New file.
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/continue-all-already-running.c
-@@ -0,0 +1,25 @@
-+/* This testcase is part of GDB, the GNU debugger.
-+
-+   Copyright 2014 Free Software Foundation, Inc.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#include <unistd.h>
-+
-+int
-+main (void)
-+{
-+  sleep (10);
-+  return 0; /* set break here */
-+}
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/continue-all-already-running.exp
-@@ -0,0 +1,79 @@
-+# Copyright (C) 2014 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+
-+# Test that "c -a" doesn't leave GDB processing input, even if all
-+# threads were already running.  PR gdb/17300.
-+
-+standard_testfile
-+
-+if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile] } {
-+    return -1
-+}
-+
-+gdb_test_no_output "set non-stop on"
-+
-+if ![runto_main] {
-+    return
-+}
-+
-+set linenum [gdb_get_line_number "set break here"]
-+gdb_breakpoint "$linenum"
-+
-+gdb_test "c -a&" "Continuing\\."
-+
-+set test "no stop"
-+gdb_test_multiple "" $test {
-+    -timeout 1
-+    timeout {
-+	pass $test
-+    }
-+}
-+
-+# Paranoia.  Check that input works after bg command.
-+gdb_test "print 1" " = 1"
-+
-+# Continue in the foreground, and wait one second to make sure the
-+# inferior really starts running.  If we get a prompt to soon (e.g.,
-+# the program stops), this issues a fail.
-+set saw_continuing 0
-+set test "c -a"
-+gdb_test_multiple "c -a" $test {
-+    -timeout 1
-+    -re "Continuing\\." {
-+	set saw_continuing 1
-+	exp_continue
-+    }
-+    timeout {
-+	gdb_assert $saw_continuing $test
-+    }
-+}
-+
-+# Type something while the inferior is running in the foreground.
-+send_gdb "print 2\n"
-+
-+# Poor buggy GDB would crash before the breakpoint was hit.
-+set test "breakpoint hit"
-+gdb_test_multiple "" $test {
-+    -re "set break here ..\r\n$gdb_prompt " {
-+	pass $test
-+    }
-+}
-+
-+set test "print command result"
-+gdb_test_multiple "" $test {
-+    -re " = 2\r\n$gdb_prompt $" {
-+	pass $test
-+    }
-+}
--- 
-1.9.3
-
-From 36c57a3ceeb2260913f7d2d349e994dd844cbcae Mon Sep 17 00:00:00 2001
-From: Pedro Alves <palves at redhat.com>
-Date: Fri, 17 Oct 2014 13:31:26 +0100
-Subject: [PATCH 35/37] PR gdb/17471: Repeating a background command makes it
- foreground
-
-When we repeat a command, by just pressing <ret>, the input from the
-previous command is reused for the new command invocation.
-
-When an execution command strips the "&" out of its incoming argument
-string, to detect background execution, we poke a '\0' directly to the
-incoming argument string.
-
-Combine both, and a repeat of a background command loses the "&".
-
-This is actually only visible if args other than "&" are specified
-(e.g., "c 1&" or "next 2&" or "c -a&"), as in the special case of "&"
-alone (e.g. "c&") doesn't actually clobber the incoming string.
-
-Fix this by making strip_bg_char return a new string instead of poking
-a hole in the input string.
-
-New test included.
-
-Tested on x86_64 Fedora 20, native and gdbserver.
-
-gdb/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	PR gdb/17471
-	* infcmd.c (strip_bg_char): Change prototype and rewrite.  Now
-	returns a copy of the input.
-	(run_command_1, continue_command, step_1, jump_command)
-	(signal_command, until_command, advance_command, finish_command)
-	(attach_command): Adjust and install a cleanup to free the
-	stripped args.
-
-gdb/testsuite/
-2014-10-17  Pedro Alves  <palves at redhat.com>
-
-	PR gdb/17471
-	* gdb.base/bg-execution-repeat.c: New file.
-	* gdb.base/bg-execution-repeat.exp: New file.
----
- gdb/ChangeLog                                  |  10 ++
- gdb/infcmd.c                                   | 142 ++++++++++++++++---------
- gdb/testsuite/ChangeLog                        |   6 ++
- gdb/testsuite/gdb.base/bg-execution-repeat.c   |  33 ++++++
- gdb/testsuite/gdb.base/bg-execution-repeat.exp |  86 +++++++++++++++
- 5 files changed, 224 insertions(+), 53 deletions(-)
- create mode 100644 gdb/testsuite/gdb.base/bg-execution-repeat.c
- create mode 100644 gdb/testsuite/gdb.base/bg-execution-repeat.exp
-
-### a/gdb/ChangeLog
-### b/gdb/ChangeLog
-## -1,5 +1,15 @@
- 2014-10-17  Pedro Alves  <palves at redhat.com>
- 
-+	PR gdb/17471
-+	* infcmd.c (strip_bg_char): Change prototype and rewrite.  Now
-+	returns a copy of the input.
-+	(run_command_1, continue_command, step_1, jump_command)
-+	(signal_command, until_command, advance_command, finish_command)
-+	(attach_command): Adjust and install a cleanup to free the
-+	stripped args.
-+
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
- 	PR gdb/17300
- 	* infcmd.c (continue_1): If continuing all threads in the
- 	foreground, make sure the inferior's terminal settings are put in
---- a/gdb/infcmd.c
-+++ b/gdb/infcmd.c
-@@ -107,8 +107,6 @@ static void run_no_args_command (char *args, int from_tty);
- 
- static void go_command (char *line_no, int from_tty);
- 
--static int strip_bg_char (char **);
--
- void _initialize_infcmd (void);
- 
- #define ERROR_NO_INFERIOR \
-@@ -373,35 +371,40 @@ construct_inferior_arguments (int argc, char **argv)
- }
- 
- 
--/* This function detects whether or not a '&' character (indicating
--   background execution) has been added as *the last* of the arguments ARGS
--   of a command.  If it has, it removes it and returns 1.  Otherwise it
--   does nothing and returns 0.  */
-+/* This function strips the '&' character (indicating background
-+   execution) that is added as *the last* of the arguments ARGS of a
-+   command.  A copy of the incoming ARGS without the '&' is returned,
-+   unless the resulting string after stripping is empty, in which case
-+   NULL is returned.  *BG_CHAR_P is an output boolean that indicates
-+   whether the '&' character was found.  */
- 
--static int
--strip_bg_char (char **args)
-+static char *
-+strip_bg_char (const char *args, int *bg_char_p)
- {
--  char *p = NULL;
-+  const char *p;
- 
--  p = strchr (*args, '&');
-+  if (args == NULL || *args == '\0')
-+    {
-+      *bg_char_p = 0;
-+      return NULL;
-+    }
- 
--  if (p)
-+  p = args + strlen (args);
-+  if (p[-1] == '&')
-     {
--      if (p == (*args + strlen (*args) - 1))
--	{
--	  if (strlen (*args) > 1)
--	    {
--	      do
--		p--;
--	      while (*p == ' ' || *p == '\t');
--	      *(p + 1) = '\0';
--	    }
--	  else
--	    *args = 0;
--	  return 1;
--	}
-+      p--;
-+      while (p > args && isspace (p[-1]))
-+	p--;
-+
-+      *bg_char_p = 1;
-+      if (p != args)
-+	return savestring (args, p - args);
-+      else
-+	return NULL;
-     }
--  return 0;
-+
-+  *bg_char_p = 0;
-+  return xstrdup (args);
- }
- 
- /* Common actions to take after creating any sort of inferior, by any
-@@ -530,7 +533,8 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
-   ptid_t ptid;
-   struct ui_out *uiout = current_uiout;
-   struct target_ops *run_target;
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
- 
-   dont_repeat ();
- 
-@@ -553,8 +557,8 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
-   reopen_exec_file ();
-   reread_symbols ();
- 
--  if (args != NULL)
--    async_exec = strip_bg_char (&args);
-+  args = strip_bg_char (args, &async_exec);
-+  args_chain = make_cleanup (xfree, args);
- 
-   /* Do validation and preparation before possibly changing anything
-      in the inferior.  */
-@@ -600,6 +604,9 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
-       ui_out_flush (uiout);
-     }
- 
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
-+
-   /* We call get_inferior_args() because we might need to compute
-      the value now.  */
-   run_target->to_create_inferior (run_target, exec_file, get_inferior_args (),
-@@ -773,13 +780,15 @@ continue_1 (int all_threads)
- static void
- continue_command (char *args, int from_tty)
- {
--  int async_exec = 0;
-+  int async_exec;
-   int all_threads = 0;
-+  struct cleanup *args_chain;
-+
-   ERROR_NO_INFERIOR;
- 
-   /* Find out whether we must run in the background.  */
--  if (args != NULL)
--    async_exec = strip_bg_char (&args);
-+  args = strip_bg_char (args, &async_exec);
-+  args_chain = make_cleanup (xfree, args);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-@@ -843,6 +852,9 @@ continue_command (char *args, int from_tty)
- 	}
-     }
- 
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
-+
-   if (from_tty)
-     printf_filtered (_("Continuing.\n"));
- 
-@@ -902,21 +914,25 @@ step_1 (int skip_subroutines, int single_inst, char *count_string)
- {
-   int count = 1;
-   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
--  int async_exec = 0;
-+  int async_exec;
-   int thread = -1;
-+  struct cleanup *args_chain;
- 
-   ERROR_NO_INFERIOR;
-   ensure_not_tfind_mode ();
-   ensure_valid_thread ();
-   ensure_not_running ();
- 
--  if (count_string)
--    async_exec = strip_bg_char (&count_string);
-+  count_string = strip_bg_char (count_string, &async_exec);
-+  args_chain = make_cleanup (xfree, count_string);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-   count = count_string ? parse_and_eval_long (count_string) : 1;
- 
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
-+
-   if (!single_inst || skip_subroutines)		/* Leave si command alone.  */
-     {
-       struct thread_info *tp = inferior_thread ();
-@@ -1137,7 +1153,8 @@ jump_command (char *arg, int from_tty)
-   struct symtab_and_line sal;
-   struct symbol *fn;
-   struct symbol *sfn;
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
- 
-   ERROR_NO_INFERIOR;
-   ensure_not_tfind_mode ();
-@@ -1145,8 +1162,8 @@ jump_command (char *arg, int from_tty)
-   ensure_not_running ();
- 
-   /* Find out whether we must run in the background.  */
--  if (arg != NULL)
--    async_exec = strip_bg_char (&arg);
-+  arg = strip_bg_char (arg, &async_exec);
-+  args_chain = make_cleanup (xfree, arg);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-@@ -1162,6 +1179,9 @@ jump_command (char *arg, int from_tty)
-   sal = sals.sals[0];
-   xfree (sals.sals);
- 
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
-+
-   if (sal.symtab == 0 && sal.pc == 0)
-     error (_("No source file has been specified."));
- 
-@@ -1230,7 +1250,8 @@ static void
- signal_command (char *signum_exp, int from_tty)
- {
-   enum gdb_signal oursig;
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
- 
-   dont_repeat ();		/* Too dangerous.  */
-   ERROR_NO_INFERIOR;
-@@ -1239,8 +1260,8 @@ signal_command (char *signum_exp, int from_tty)
-   ensure_not_running ();
- 
-   /* Find out whether we must run in the background.  */
--  if (signum_exp != NULL)
--    async_exec = strip_bg_char (&signum_exp);
-+  signum_exp = strip_bg_char (signum_exp, &async_exec);
-+  args_chain = make_cleanup (xfree, signum_exp);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-@@ -1372,7 +1393,8 @@ until_next_command (int from_tty)
- static void
- until_command (char *arg, int from_tty)
- {
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
- 
-   ERROR_NO_INFERIOR;
-   ensure_not_tfind_mode ();
-@@ -1380,8 +1402,8 @@ until_command (char *arg, int from_tty)
-   ensure_not_running ();
- 
-   /* Find out whether we must run in the background.  */
--  if (arg != NULL)
--    async_exec = strip_bg_char (&arg);
-+  arg = strip_bg_char (arg, &async_exec);
-+  args_chain = make_cleanup (xfree, arg);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-@@ -1389,12 +1411,16 @@ until_command (char *arg, int from_tty)
-     until_break_command (arg, from_tty, 0);
-   else
-     until_next_command (from_tty);
-+
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
- }
- 
- static void
- advance_command (char *arg, int from_tty)
- {
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
- 
-   ERROR_NO_INFERIOR;
-   ensure_not_tfind_mode ();
-@@ -1405,12 +1431,15 @@ advance_command (char *arg, int from_tty)
-     error_no_arg (_("a location"));
- 
-   /* Find out whether we must run in the background.  */
--  if (arg != NULL)
--    async_exec = strip_bg_char (&arg);
-+  arg = strip_bg_char (arg, &async_exec);
-+  args_chain = make_cleanup (xfree, arg);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-   until_break_command (arg, from_tty, 1);
-+
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
- }
- 
- /* Return the value of the result of a function at the end of a 'finish'
-@@ -1686,8 +1715,8 @@ finish_command (char *arg, int from_tty)
- {
-   struct frame_info *frame;
-   struct symbol *function;
--
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
- 
-   ERROR_NO_INFERIOR;
-   ensure_not_tfind_mode ();
-@@ -1695,14 +1724,17 @@ finish_command (char *arg, int from_tty)
-   ensure_not_running ();
- 
-   /* Find out whether we must run in the background.  */
--  if (arg != NULL)
--    async_exec = strip_bg_char (&arg);
-+  arg = strip_bg_char (arg, &async_exec);
-+  args_chain = make_cleanup (xfree, arg);
- 
-   prepare_execution_command (&current_target, async_exec);
- 
-   if (arg)
-     error (_("The \"finish\" command does not take any arguments."));
- 
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
-+
-   frame = get_prev_frame (get_selected_frame (_("No selected frame.")));
-   if (frame == 0)
-     error (_("\"finish\" not meaningful in the outermost frame."));
-@@ -2476,7 +2508,8 @@ attach_command_continuation_free_args (void *args)
- void
- attach_command (char *args, int from_tty)
- {
--  int async_exec = 0;
-+  int async_exec;
-+  struct cleanup *args_chain;
-   struct target_ops *attach_target;
- 
-   dont_repeat ();		/* Not for the faint of heart */
-@@ -2497,8 +2530,8 @@ attach_command (char *args, int from_tty)
-      this function should probably be moved into target_pre_inferior.  */
-   target_pre_inferior (from_tty);
- 
--  if (args != NULL)
--    async_exec = strip_bg_char (&args);
-+  args = strip_bg_char (args, &async_exec);
-+  args_chain = make_cleanup (xfree, args);
- 
-   attach_target = find_attach_target ();
- 
-@@ -2512,6 +2545,9 @@ attach_command (char *args, int from_tty)
-      shouldn't refer to attach_target again.  */
-   attach_target = NULL;
- 
-+  /* Done with ARGS.  */
-+  do_cleanups (args_chain);
-+
-   /* Set up the "saved terminal modes" of the inferior
-      based on what modes we are starting it with.  */
-   target_terminal_init ();
-### a/gdb/testsuite/ChangeLog
-### b/gdb/testsuite/ChangeLog
-## -1,5 +1,11 @@
- 2014-10-17  Pedro Alves  <palves at redhat.com>
- 
-+	PR gdb/17471
-+	* gdb.base/bg-execution-repeat.c: New file.
-+	* gdb.base/bg-execution-repeat.exp: New file.
-+
-+2014-10-17  Pedro Alves  <palves at redhat.com>
-+
- 	PR gdb/17300
- 	* gdb.base/continue-all-already-running.c: New file.
- 	* gdb.base/continue-all-already-running.exp: New file.
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/bg-execution-repeat.c
-@@ -0,0 +1,33 @@
-+/* This testcase is part of GDB, the GNU debugger.
-+
-+   Copyright 2014 Free Software Foundation, Inc.
-+
-+   This program is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+   GNU General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#include <unistd.h>
-+
-+int
-+foo (void)
-+{
-+  return 0; /* set break here */
-+}
-+
-+int
-+main (void)
-+{
-+  foo ();
-+  sleep (5);
-+  foo ();
-+  return 0;
-+}
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/bg-execution-repeat.exp
-@@ -0,0 +1,86 @@
-+# Copyright (C) 2014 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+
-+# Test that repeating a background command doesn't lose the "&" in the
-+# repeat, turning a background command into a foreground command.  See
-+# PR gdb/17471.
-+
-+standard_testfile
-+
-+if { [build_executable "failed to prepare" ${testfile} $srcfile] } {
-+    return -1
-+}
-+
-+set linenum [gdb_get_line_number "set break here"]
-+
-+# Run the test proper.  CONTINUE_CMD is the background continue
-+# command to issue.
-+
-+proc test {continue_cmd} {
-+    global gdb_prompt
-+    global binfile
-+    global linenum
-+
-+    clean_restart $binfile
-+
-+    if ![runto_main] {
-+	return
-+    }
-+
-+    gdb_breakpoint "$linenum"
-+
-+    set test $continue_cmd
-+    gdb_test_multiple $test $test {
-+	-re "Continuing\\.\r\n$gdb_prompt " {
-+	    # Note no end anchor.  If the breakpoint triggers soon enough
-+	    # enough we see further output after the prompt.
-+	    pass $test
-+	}
-+    }
-+
-+    # Wait for the stop.  Don't expect a prompt, as we had resumed the
-+    # inferior in the background.
-+    set test "breakpoint hit 1"
-+    gdb_test_multiple "" $test {
-+	-re "set break here" {
-+	    pass $test
-+	}
-+    }
-+
-+    # Trigger a repeat.  Buggy GDB used to lose the "&", making this a
-+    # foreground command...
-+    send_gdb "\n"
-+    gdb_test "" "Continuing\\." "repeat bg command"
-+
-+    # ... and thus further input wouldn't be processed until the target
-+    # stopped.
-+    gdb_test "print 1" " = 1" "input still accepted"
-+
-+    # Make sure we see a stop after the print, and not before.  Don't
-+    # expect a prompt, as we had resumed the inferior in the background.
-+    set test "breakpoint hit 2"
-+    gdb_test_multiple "" $test {
-+	-re "set break here ..\r\n" {
-+	    pass $test
-+	}
-+    }
-+}
-+
-+# Test with and without extra arguments.
-+foreach cmd {"c&" "c 1&"} {
-+    with_test_prefix $cmd {
-+	test $cmd
-+    }
-+}
--- 
-1.9.3
-
-
-
-commit 54fbc750b54271efb75ae11ce49f14c4234a9476
-Author: Jan Kratochvil <jan.kratochvil at redhat.com>
-Date:   Thu Sep 18 08:21:40 2014 +0200
-
-    Fix regression for Linux vDSO in GDB (PR gdb/17407).
-    
-    since
-    	5979d6b69b20a8355ea94b75fad97415fce4788c
-    	https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=5979d6b69b20a8355ea94b75fad97415fce4788c
-    	vdso handling
-    	https://sourceware.org/ml/binutils/2014-03/msg00082.html
-    	https://sourceware.org/ml/binutils/2014-04/msg00003.html
-    	Message-ID: <A78C989F6D9628469189715575E55B230AA884EB at IRSMSX104.ger.corp.intel.com>
-    I get on
-    	kernel-3.16.2-200.fc20.x86_64
-    	https://koji.fedoraproject.org/koji/buildinfo?buildID=575860
-    	attaching its vdso.bin.gz
-    GDB (FSF HEAD 5e43d46791c4c66fd83947a12d4f716b561a9103) regression:
-    reproducer:
-    	./gdb -ex start ./gdb
-    actual result / FAIL:
-    	Got object file from memory but can't read symbols: File truncated.
-    expected result / PASS:
-    	<nothing>
-    or / PASS:
-    	warning: Could not load shared library symbols for linux-vdso.so.1.
-    	Do you need "set solib-search-path" or "set sysroot"?
-    
-    That "warning: Could not load shared library..." is mostly harmless (it is
-    a bug in GDB), in the FAIL case it is not printed just because
-    bfd_check_format() fails there.
-    
-    It seems logical to me this way when the 'size' parameter has been already
-    added.
-    Alan Modra:
-    I was wrongly thinking that the section headers were
-    always last when I wrote that code.  (They are now!  If you relink
-    that vdso with current binutils master you won't hit this problem, but
-    that of course doesn't help existing kernels.)
-    
-    I do not see a regression for add-symbol-file-from-memory for libncurses.so.5
-    from the original thread above.
-    
-      Start of section headers:          1080 (bytes into file)
-      Size of section headers:           64 (bytes)
-      Number of section headers:         13
-      Section header string table index: 8
-    Section Headers:
-      [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
-      [ 8] .fake_shstrtab    STRTAB          0000000000000780 000780 000076 00   A  0   0 32
-    Program Headers:
-      Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align
-      LOAD           0x000000 0x0000000000000000 0x0000000000000000 0x0012fe 0x0012fe R E 0x1000
-    
-    size == 0x2000
-    shdr_end == 0x778 == 1080 + 13 * 64
-    high_offset == 0x12fe
-    
-           else if (size >= shdr_end)
-    -	high_offset = shdr_end;
-    +	high_offset = size;
-    
-    But then 0x778 < 0x780 for "Section header string table index" so whole
-    bfd_check_format() fails because section headers were not cleared here:
-      /* If the segments visible in memory didn't include the section headers,
-         then clear them from the file header.  */
-      if (high_offset < shdr_end)
-    
-    bfd/ChangeLog
-    2014-09-18  Jan Kratochvil  <jan.kratochvil at redhat.com>
-    
-    	PR gdb/17407
-    	* elfcode.h (bfd_from_remote_memory): Use SIZE for HIGH_OFFSET.
-
-### a/bfd/ChangeLog
-### b/bfd/ChangeLog
-## -1,3 +1,8 @@
-+2014-09-18  Jan Kratochvil  <jan.kratochvil at redhat.com>
-+
-+	PR gdb/17407
-+	* elfcode.h (bfd_from_remote_memory): Use SIZE for HIGH_OFFSET.
-+
- 2014-07-16  H.J. Lu  <hongjiu.lu at intel.com>
- 
- 	* elf32-i386.c (elf_i386_plt_sym_val): Match PLT entry only for
---- a/bfd/elfcode.h
-+++ b/bfd/elfcode.h
-@@ -1749,7 +1749,7 @@ NAME(_bfd_elf,bfd_from_remote_memory)
- 	     headers.  */
- 	}
-       else if (size >= shdr_end)
--	high_offset = shdr_end;
-+	high_offset = size;
-       else
- 	{
- 	  bfd_vma page_size = get_elf_backend_data (templ)->minpagesize;
diff --git a/gdb.spec b/gdb.spec
index 691bbef..3fb14c4 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -22,17 +22,17 @@ Name: %{?scl_prefix}gdb
 # See timestamp of source gnulib installed into gdb/gnulib/ .
 %global snapgnulib 20121213
 %global tarname gdb-%{version}
-Version: 7.8
+Version: 7.8.1
 
 # 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: 29%{?dist}
+Release: 30%{?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
 # Do not provide URL for snapshots as the file lasts there only for 2 days.
-# ftp://sourceware.org/pub/gdb/releases/gdb-%{version}.tar.gz
-Source: %{tarname}.tar.gz
+# ftp://sourceware.org/pub/gdb/releases/gdb-%{version}.tar.xz
+Source: ftp://sourceware.org/pub/gdb/releases/%{tarname}.tar.xz
 Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 URL: http://gnu.org/software/gdb/
 
@@ -524,20 +524,10 @@ Patch921: gdb-python-completer-2of2.patch
 # Display Fortran strings in backtraces.
 Patch925: gdb-fortran-frame-string.patch
 
-# Fix -Werror=unused-variable error configuring babeltrace.
-# Fix babeltrace errors (Yao Qi).
-Patch926: gdb-babeltrace-configure.patch
-Patch928: gdb-babeltrace-minsize.patch
-
 # Fix Python GIL with gdb.execute("continue") (Phil Muldoon, BZ 1116957).
 Patch927: gdb-python-gil.patch
 
-# Fix crash on Python frame filters with unreadable arg (BZ 1126177).
-Patch929: python-framefilter-invalidarg.patch
-
 # Fix GDB SIGTT* Stopped when using the PID argument (BZ 1136704, Pedro Alves).
-Patch930: gdb-async-stopped-on-pid-arg-1of2.patch
-Patch931: gdb-async-stopped-on-pid-arg-2of2.patch
 Patch970: gdb-async-stopped-on-pid-arg-testsuite.patch
 
 # Fix "save breakpoints" for signal catchpoints and disabled breakpoints
@@ -833,12 +823,7 @@ find -name "*.info*"|xargs rm -f
 %patch920 -p1
 %patch921 -p1
 %patch925 -p1
-%patch926 -p1
-%patch928 -p1
 %patch927 -p1
-%patch929 -p1
-%patch930 -p1
-%patch931 -p1
 %patch970 -p1
 %patch971 -p1
 %patch973 -p1
@@ -1343,6 +1328,9 @@ then
 fi
 
 %changelog
+* Thu Oct 30 2014 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.8.1-30.fc21
+- Rebase to FSF GDB 7.8.1.
+
 * Mon Oct 27 2014 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.8-29.fc21
 - Backport vDSO regression.
 - Revert the makeinfo workaround from 7.8-27.fc21.
diff --git a/sources b/sources
index b7836be..e48805d 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 4981307aa9619bbec5b73261e4e41c8d  gdb-libstdc++-v3-python-r155978.tar.bz2
-38d816d641093db2e13ba284e26090b4  gdb-7.8.tar.gz
+8072be87a94be0936bc3b4b6941b0862  gdb-7.8.1.tar.xz


More information about the scm-commits mailing list