public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.8.1.
@ 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 : 43b0bce1db25f51fc4bd7b400f42984c8bca466b
Author : Jan Kratochvil <jan.kratochvil@redhat.com>
Date   : 2014-10-30T22:21:18+01:00
Stats  : +58/-3361 in 11 file(s)
URL    : https://src.fedoraproject.org/rpms/gdb/c/43b0bce1db25f51fc4bd7b400f42984c8bca466b?branch=gdb-17.2-rebase-f44

Log:
Rebase to FSF GDB 7.8.1.

---
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-1of2.patch b/gdb-async-stopped-on-pid-arg-1of2.patch
deleted file mode 100644
index 5c312e3..0000000
--- a/gdb-async-stopped-on-pid-arg-1of2.patch
+++ /dev/null
@@ -1,350 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2014-09/msg00102.html
-Subject: Re: Regression: GDB stopped on run with attached process (PR 17347)  [Re: [pushed+7.8] Re: [PATCH] Fix "attach" command vs user input race
-
-On 09/03/2014 08:58 AM, Jan Kratochvil wrote:
-
-> https://sourceware.org/bugzilla/show_bug.cgi?id=17347
-
-Thanks Jan.
-
-Here's a fix, test included.  Comments?
-
-Thanks,
-Pedro Alves
-
---------------------------
-[PATCH] gdb/17347 - Regression: GDB stopped on run with attached process
-
-Doing:
-
-  gdb --pid=PID -ex run
-
-Results in GDB getting a SIGTTIN, and thus ending stopped.  That's
-usually indicative of a missing target_terminal_ours call.
-
-E.g., from the PR:
-
- $ sleep 1h & p=$!; sleep 0.1; gdb -batch sleep $p -ex run
- [1] 28263
- [1]   Killed                  sleep 1h
-
- [2]+  Stopped                 gdb -batch sleep $p -ex run
-
-The workaround is doing:
-
- gdb -ex "attach $PID" -ex "run"
-
-instead of
-
- gdb [-p] $PID -ex "run"
-
-With the former, gdb waits for the attach command to complete before
-moving on to the "run" command, because the interpreter is in sync
-mode at this point, within execute_command.  But for the latter,
-attach_command is called directly from captured_main, and thus misses
-that waiting.  IOW, "run" is running before the attach continuation
-has run, before the program stops and attach completes.  The broken
-terminal settings are just one symptom of that.  Any command that
-queries or requires input results in the same.
-
-The fix is to wait in catch_command_errors (which is specific to
-main.c nowadays), just like we wait in execute_command.
-
-gdb/ChangeLog:
-2014-09-03  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/17347
-	* main.c: Include "infrun.h".
-	(catch_command_errors, catch_command_errors_const): Wait for the
-	foreground command to complete.
-	* top.c (maybe_wait_sync_command_done): New function, factored out
-	from ...
-	(maybe_wait_sync_command_done): ... here.
-	* top.h (maybe_wait_sync_command_done): New declaration.
-
-gdb/testsuite/ChangeLog:
-2014-09-03  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/17347
-	* gdb.base/attach.exp (spawn_test_prog): New, factored out from
-	...
-	(do_attach_tests, do_call_attach_tests, do_command_attach_tests):
-	... here.
-	(gdb_spawn_with_cmdline_opts): New procedure.
-	(test_command_line_attach_run): New procedure.
-	(top level): Call it.
----
- gdb/main.c                        |   9 +++
- gdb/testsuite/gdb.base/attach.exp | 118 ++++++++++++++++++++++++++------------
- gdb/top.c                         |  26 +++++----
- gdb/top.h                         |   8 +++
- 4 files changed, 114 insertions(+), 47 deletions(-)
-
-Index: gdb-7.8/gdb/main.c
-===================================================================
---- gdb-7.8.orig/gdb/main.c	2014-09-07 19:12:45.066981588 +0200
-+++ gdb-7.8/gdb/main.c	2014-09-07 19:14:22.613095201 +0200
-@@ -47,6 +47,7 @@
- #include "filenames.h"
- #include "filestuff.h"
- #include "event-top.h"
-+#include "infrun.h"
- 
- /* The selected interpreter.  This will be used as a set command
-    variable, so it should always be malloc'ed - since
-@@ -350,7 +351,11 @@ catch_command_errors (catch_command_erro
- 
-   TRY_CATCH (e, mask)
-     {
-+      int was_sync = sync_execution;
-+
-       command (arg, from_tty);
-+
-+      maybe_wait_sync_command_done (was_sync);
-     }
-   return handle_command_errors (e);
- }
-@@ -369,7 +374,11 @@ catch_command_errors_const (catch_comman
- 
-   TRY_CATCH (e, mask)
-     {
-+      int was_sync = sync_execution;
-+
-       command (arg, from_tty);
-+
-+      maybe_wait_sync_command_done (was_sync);
-     }
-   return handle_command_errors (e);
- }
-Index: gdb-7.8/gdb/testsuite/gdb.base/attach.exp
-===================================================================
---- gdb-7.8.orig/gdb/testsuite/gdb.base/attach.exp	2014-09-07 19:12:45.067981589 +0200
-+++ gdb-7.8/gdb/testsuite/gdb.base/attach.exp	2014-09-07 19:12:48.601985706 +0200
-@@ -58,6 +58,37 @@ if [get_compiler_info] {
-     return -1
- }
- 
-+# Start the program running and then wait for a bit, to be sure that
-+# it can be attached to.  Return the process's PID.
-+
-+proc spawn_test_prog { executable } {
-+    set testpid [eval exec $executable &]
-+    exec sleep 2
-+    if { [istarget "*-*-cygwin*"] } {
-+	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
-+	# different due to the way fork/exec works.
-+	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
-+    }
-+
-+    return $testpid
-+}
-+
-+# Spawn GDB with CMDLINE_FLAGS appended to the GDBFLAGS global.
-+
-+proc gdb_spawn_with_cmdline_opts { cmdline_flags } {
-+    global GDBFLAGS
-+
-+    set saved_gdbflags $GDBFLAGS
-+
-+    append GDBFLAGS $cmdline_flags
-+
-+    set res [gdb_spawn]
-+
-+    set GDBFLAGS $saved_gdbflags
-+
-+    return $res
-+}
-+
- proc do_attach_tests {} {
-     global gdb_prompt
-     global binfile
-@@ -70,13 +101,7 @@ proc do_attach_tests {} {
-     # Start the program running and then wait for a bit, to be sure
-     # that it can be attached to.
- 
--    set testpid [eval exec $binfile &]
--    exec sleep 2
--    if { [istarget "*-*-cygwin*"] } {
--	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
--	# different due to the way fork/exec works.
--	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
--    }
-+    set testpid [spawn_test_prog $binfile]
- 
-     # Verify that we cannot attach to nonsense.
- 
-@@ -279,16 +304,7 @@ proc do_attach_tests {} {
-    
-     remote_exec build "kill -9 ${testpid}"
- 
--    # Start the program running and then wait for a bit, to be sure
--    # that it can be attached to.
--   
--    set testpid [eval exec $binfile &]
--    exec sleep 2
--    if { [istarget "*-*-cygwin*"] } {
--	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
--	# different due to the way fork/exec works.
--	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
--    }
-+    set testpid [spawn_test_prog $binfile]
- 
-     # Verify that we can attach to the process, and find its a.out
-     # when we're cd'd to some directory that doesn't contain the
-@@ -335,16 +351,7 @@ proc do_call_attach_tests {} {
-     global gdb_prompt
-     global binfile2
-     
--    # Start the program running and then wait for a bit, to be sure
--    # that it can be attached to.
--   
--    set testpid [eval exec $binfile2 &]
--    exec sleep 2
--    if { [istarget "*-*-cygwin*"] } {
--	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
--	# different due to the way fork/exec works.
--	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
--    }
-+    set testpid [spawn_test_prog $binfile2]
- 
-     # Attach
-    
-@@ -397,16 +404,7 @@ proc do_command_attach_tests {} {
- 	return 0
-     }
- 
--    # Start the program running and then wait for a bit, to be sure
--    # that it can be attached to.
--
--    set testpid [eval exec $binfile &]
--    exec sleep 2
--    if { [istarget "*-*-cygwin*"] } {
--	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
--	# different due to the way fork/exec works.
--	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
--    }
-+    set testpid [spawn_test_prog $binfile]
- 
-     gdb_exit
-     if $verbose>1 then {
-@@ -429,6 +427,50 @@ proc do_command_attach_tests {} {
-     remote_exec build "kill -9 ${testpid}"
- }
- 
-+# Test ' gdb --pid PID -ex "run" '.  GDB used to have a bug where
-+# "run" would run before the attach finished - PR17347.
-+
-+proc test_command_line_attach_run {} {
-+    global gdb_prompt
-+    global binfile
-+    global verbose
-+    global GDB
-+    global INTERNAL_GDBFLAGS
-+
-+    if ![isnative] then {
-+	unsupported "commandline attach run test"
-+	return 0
-+    }
-+
-+    with_test_prefix "cmdline attach run" {
-+	set testpid [spawn_test_prog $binfile]
-+
-+	set test "run to prompt"
-+	gdb_exit
-+	set res [gdb_spawn_with_cmdline_opts "--pid=$testpid -ex \"start\""]
-+	if { $res != 0} {
-+	    fail $test
-+	    return $res
-+	}
-+	gdb_test_multiple "" $test {
-+	    -re {Attaching to.*Start it from the beginning\? \(y or n\) } {
-+		pass $test
-+	    }
-+	}
-+
-+	send_gdb "y\n"
-+
-+	set test "run to main"
-+	gdb_test_multiple "" $test {
-+	    -re "Temporary breakpoint .* main .*$gdb_prompt $" {
-+		pass $test
-+	    }
-+	}
-+
-+	# Get rid of the process
-+	remote_exec build "kill -9 ${testpid}"
-+    }
-+}
- 
- # Start with a fresh gdb
- 
-@@ -453,4 +495,6 @@ do_call_attach_tests
- 
- do_command_attach_tests
- 
-+test_command_line_attach_run
-+
- return 0
-Index: gdb-7.8/gdb/top.c
-===================================================================
---- gdb-7.8.orig/gdb/top.c	2014-09-07 19:12:45.067981589 +0200
-+++ gdb-7.8/gdb/top.c	2014-09-07 19:12:48.601985706 +0200
-@@ -375,6 +375,21 @@ check_frame_language_change (void)
-     }
- }
- 
-+void
-+maybe_wait_sync_command_done (int was_sync)
-+{
-+  /* If the interpreter is in sync mode (we're running a user
-+     command's list, running command hooks or similars), and we
-+     just ran a synchronous command that started the target, wait
-+     for that command to end.  */
-+  if (!interpreter_async && !was_sync && sync_execution)
-+    {
-+      while (gdb_do_one_event () >= 0)
-+	if (!sync_execution)
-+	  break;
-+    }
-+}
-+
- /* Execute the line P as a command, in the current user context.
-    Pass FROM_TTY as second argument to the defining function.  */
- 
-@@ -461,16 +476,7 @@ execute_command (char *p, int from_tty)
-       else
- 	cmd_func (c, arg, from_tty);
- 
--      /* If the interpreter is in sync mode (we're running a user
--	 command's list, running command hooks or similars), and we
--	 just ran a synchronous command that started the target, wait
--	 for that command to end.  */
--      if (!interpreter_async && !was_sync && sync_execution)
--	{
--	  while (gdb_do_one_event () >= 0)
--	    if (!sync_execution)
--	      break;
--	}
-+      maybe_wait_sync_command_done (was_sync);
- 
-       /* If this command has been post-hooked, run the hook last.  */
-       execute_cmd_post_hook (c);
-Index: gdb-7.8/gdb/top.h
-===================================================================
---- gdb-7.8.orig/gdb/top.h	2014-09-07 19:12:45.068981590 +0200
-+++ gdb-7.8/gdb/top.h	2014-09-07 19:12:48.601985706 +0200
-@@ -42,6 +42,14 @@ extern void quit_command (char *, int);
- extern void quit_cover (void);
- extern void execute_command (char *, int);
- 
-+/* If the interpreter is in sync mode (we're running a user command's
-+   list, running command hooks or similars), and we just ran a
-+   synchronous command that started the target, wait for that command
-+   to end.  WAS_SYNC indicates whether sync_execution was set before
-+   the command was run.  */
-+
-+extern void maybe_wait_sync_command_done (int was_sync);
-+
- extern void check_frame_language_change (void);
- 
- /* Prepare for execution of a command.

diff --git a/gdb-async-stopped-on-pid-arg-2of2.patch b/gdb-async-stopped-on-pid-arg-2of2.patch
deleted file mode 100644
index 6683326..0000000
--- a/gdb-async-stopped-on-pid-arg-2of2.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2014-09/msg00174.html
-Subject: Re: Regression: GDB stopped on run with attached process (PR 17347) [Re: [pushed+7.8] Re: [PATCH] Fix "attach" command vs user input race
-
-
---a8Wt8u1KmwUX3Y2C
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-On Wed, 03 Sep 2014 22:11:03 +0200, Pedro Alves wrote:
-> On 09/03/2014 08:58 AM, Jan Kratochvil wrote:
-> 
-> > https://sourceware.org/bugzilla/show_bug.cgi?id=17347
-> 
-> Thanks Jan.
-> 
-> Here's a fix, test included.  Comments?
-
-In the testsuite run from the Fedora rpm packaging I get:
-
-GNU gdb (GDB) Fedora 7.8-21.fc21^M
-Copyright (C) 2014 Free Software Foundation, Inc.^M
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>^M
-This is free software: you are free to change and redistribute it.^M
-There is NO WARRANTY, to the extent permitted by law.  Type "show copying"^M
-and "show warranty" for details.^M
-This GDB was configured as "i686-redhat-linux-gnu".^M
-Type "show configuration" for configuration details.^M
-For bug reporting instructions, please see:^M
-<http://www.gnu.org/software/gdb/bugs/>.^M
-Find the GDB manual and other documentation resources online at:^M
-<http://www.gnu.org/software/gdb/documentation/>.^M
-For help, type "help".^M
-Type "apropos word" to search for commands related to "word".^M
-Attaching to process 27028^M
-Reading symbols from /unsafebuild-i686-redhat-linux-gnu/gdb/testsuite.unix.-m32/outputs/gdb.base/attach/attach...done.^M
-Reading symbols from /lib/libm.so.6...Reading symbols from /usr/lib/debug/usr/lib/libm-2.19.90.so.debug...done.^M
-done.^M
-Loaded symbols for /lib/libm.so.6^M
-Reading symbols from /lib/libc.so.6...Reading symbols from /usr/lib/debug/usr/lib/libc-2.19.90.so.debug...done.^M
-done.^M
-Loaded symbols for /lib/libc.so.6^M
-Reading symbols from /lib/ld-linux.so.2...Reading symbols from /usr/lib/debug/usr/lib/ld-2.19.90.so.debug...done.^M
-done.^M
-Loaded symbols for /lib/ld-linux.so.2^M
-main ()^M
-    at gdb/testsuite/gdb.base/attach.c:15^M
-15       while (! should_exit)^M
-The program being debugged has been started already.^M
-Start it from the beginning? (y or n) PASS: gdb.base/attach.exp: cmdline attach run: run to prompt
-y^M
-^M
-Temporary breakpoint 1 at 0x8048481: file gdb/testsuite/gdb.base/attach.c, line 13.^M
-Starting program: /unsafe/home/jkratoch/hammock/20140907fedorarel21-f21/fedora-2---Type <return> to continue, or q <return> to quit---ERROR: Window too small.
-UNRESOLVED: gdb.base/attach.exp: cmdline attach run: run to main
-
-
-While I do not fully understand why that happens in every run of that Fedora
-testsuite while it never happens during my reproducibility attempts by hand
-I find it understandable and the Fedora testsuite issues does get fixed by the
-attached patch.
-
-
-> --- a/gdb/testsuite/gdb.base/attach.exp
-> +++ b/gdb/testsuite/gdb.base/attach.exp
-> @@ -58,6 +58,37 @@ if [get_compiler_info] {
->      return -1
->  }
->  
-> +# Start the program running and then wait for a bit, to be sure that
-> +# it can be attached to.  Return the process's PID.
-> +
-> +proc spawn_test_prog { executable } {
-> +    set testpid [eval exec $executable &]
-> +    exec sleep 2
-
-Unrelated to this patch - this patch only moved the code.  Also the code move
-could be a separate patch:
-
-I do not see why the testsuite commonly uses "exec sleep" while it also uses
-"sleep" itself which also works fine.
-
-
-> +    if { [istarget "*-*-cygwin*"] } {
-> +	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
-> +	# different due to the way fork/exec works.
-> +	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
-> +    }
-> +
-> +    return $testpid
-> +}
-[...]
-> @@ -429,6 +427,50 @@ proc do_command_attach_tests {} {
->      remote_exec build "kill -9 ${testpid}"
->  }
->  
-> +# Test ' gdb --pid PID -ex "run" '.  GDB used to have a bug where
-> +# "run" would run before the attach finished - PR17347.
-> +
-> +proc test_command_line_attach_run {} {
-> +    global gdb_prompt
-> +    global binfile
-
-> +    global verbose
-> +    global GDB
-> +    global INTERNAL_GDBFLAGS
-
-These 3 lines are unused.
-
-
-> +
-> +    if ![isnative] then {
-> +	unsupported "commandline attach run test"
-> +	return 0
-> +    }
-> +
-> +    with_test_prefix "cmdline attach run" {
-> +	set testpid [spawn_test_prog $binfile]
-> +
-> +	set test "run to prompt"
-> +	gdb_exit
-> +	set res [gdb_spawn_with_cmdline_opts "--pid=$testpid -ex \"start\""]
-
-Here see the attachment.
-
-
-> +	if { $res != 0} {
-> +	    fail $test
-> +	    return $res
-> +	}
-> +	gdb_test_multiple "" $test {
-> +	    -re {Attaching to.*Start it from the beginning\? \(y or n\) } {
-> +		pass $test
-> +	    }
-> +	}
-> +
-> +	send_gdb "y\n"
-> +
-> +	set test "run to main"
-> +	gdb_test_multiple "" $test {
-> +	    -re "Temporary breakpoint .* main .*$gdb_prompt $" {
-> +		pass $test
-> +	    }
-> +	}
-> +
-> +	# Get rid of the process
-> +	remote_exec build "kill -9 ${testpid}"
-> +    }
-> +}
->  
->  # Start with a fresh gdb
->  
-> @@ -453,4 +495,6 @@ do_call_attach_tests
->  
->  do_command_attach_tests
->  
-> +test_command_line_attach_run
-> +
->  return 0
-> diff --git a/gdb/top.c b/gdb/top.c
-> index fc2b84d..ba71f8f 100644
-> --- a/gdb/top.c
-> +++ b/gdb/top.c
-> @@ -373,6 +373,21 @@ check_frame_language_change (void)
->      }
->  }
->  
-
-Missing:
-/* See top.h.  */
-
-Unless that rule from me has been abandoned.
-
-
-> +void
-> +maybe_wait_sync_command_done (int was_sync)
-> +{
-> +  /* If the interpreter is in sync mode (we're running a user
-> +     command's list, running command hooks or similars), and we
-> +     just ran a synchronous command that started the target, wait
-> +     for that command to end.  */
-> +  if (!interpreter_async && !was_sync && sync_execution)
-> +    {
-> +      while (gdb_do_one_event () >= 0)
-> +	if (!sync_execution)
-> +	  break;
-> +    }
-> +}
-> +
->  /* Execute the line P as a command, in the current user context.
->     Pass FROM_TTY as second argument to the defining function.  */
->  
-
-
-Thanks,
-Jan
-
---a8Wt8u1KmwUX3Y2C
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline; filename=1
-
-diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp
-index c94c127..6e566a3 100644
---- a/gdb/testsuite/gdb.base/attach.exp
-+++ b/gdb/testsuite/gdb.base/attach.exp
-@@ -447,7 +444,8 @@ proc test_command_line_attach_run {} {
- 
- 	set test "run to prompt"
- 	gdb_exit
--	set res [gdb_spawn_with_cmdline_opts "--pid=$testpid -ex \"start\""]
-+	set res [gdb_spawn_with_cmdline_opts \
-+		 "-iex set\\ height\\ 0 -iex set\\ width\\ 0 --pid=$testpid -ex \"start\""]
- 	if { $res != 0} {
- 	    fail $test
- 	    return $res
-
---a8Wt8u1KmwUX3Y2C--
-

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-babeltrace-configure.patch b/gdb-babeltrace-configure.patch
deleted file mode 100644
index 3ac029d..0000000
--- a/gdb-babeltrace-configure.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2014-08/msg00045.html
-Subject: [patch] Fix --with-babeltrace with gcc-4.9.1
-
-
---qMm9M+Fa2AknHoGS
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-Hi,
-
-when I tried to use --with-babeltrace on Fedora Rawhide x86_64
-using gcc-4.9.1-3.fc22.x86_64 I got:
-
-checking for libbabeltrace... no
-configure: error: babeltrace is missing or unusable
-Makefile:7973: recipe for target 'configure-gdb' failed
-
-configure:15890: checking for libbabeltrace
-configure:15918: gcc -o conftest -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic   -Werror   -static-libstdc++ -static-libgcc -Wl,-z,relro    conftest.c -lselinux -lncurses -lz -lm  -ldl   /usr/lib64/libbabeltrace.so /usr/lib64/libbabeltrace-ctf.so >&5
-conftest.c: In function 'main':
-conftest.c:198:21: error: unused variable 'pos' [-Werror=unused-variable]
- struct bt_iter_pos *pos = bt_iter_get_pos (bt_ctf_get_iter (NULL));
-                     ^
-cc1: all warnings being treated as errors
-configure:15918: $? = 1
-configure: failed program was:
-
-The patch below fixes it for me.
-
-In configure.ac there is above this check:
-  # Append -Werror to CFLAGS so that configure can catch the warning
-  # "assignment from incompatible pointer type", which is related to
-  # the babeltrace change from 1.0.3 to 1.1.0.  Babeltrace 1.1.0 works
-  # in GDB, while babeltrace 1.0.3 is broken.
-  # AC_LIB_HAVE_LINKFLAGS may modify CPPFLAGS in it, so it should be
-  # safe to save and restore CFLAGS here.
-  saved_CFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -Werror"
-
-Maybe it would be easier to use there:
-  CFLAGS="$CFLAGS -Werror -Wno-unused-variable"
-
-But maybe -Werror is cross-compiler compatible while -Wno-unused-variable is
-not, I have no idea.
-
-
-Jan
-
---qMm9M+Fa2AknHoGS
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline; filename="gdb-babeltrace-configure.patch"
-
-gdb/
-2014-08-04  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* configure.ac (--with-babeltrace): Use 'pos'.
-	* configure: Regenerate.
-
-diff --git a/gdb/configure.ac b/gdb/configure.ac
-index 70d0964..07d2f00 100644
---- a/gdb/configure.ac
-+++ b/gdb/configure.ac
-@@ -2437,6 +2437,7 @@ else
- 			struct bt_ctf_event *event = NULL;
- 			const struct bt_definition *scope;
- 
-+			(void) pos; /* Prevent -Werror=unused-variable.  */
- 			scope = bt_ctf_get_top_level_scope (event,
- 			      				   BT_STREAM_EVENT_HEADER);
- 		        bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, "id"));
-diff --git a/gdb/configure b/gdb/configure
-index 809326a..b983d16 100755
---- a/gdb/configure
-+++ b/gdb/configure
-@@ -15344,6 +15344,7 @@ struct bt_iter_pos *pos = bt_iter_get_pos (bt_ctf_get_iter (NULL));
- 			struct bt_ctf_event *event = NULL;
- 			const struct bt_definition *scope;
- 
-+			(void) pos; /* Prevent -Werror=unused-variable.  */
- 			scope = bt_ctf_get_top_level_scope (event,
- 			      				   BT_STREAM_EVENT_HEADER);
- 		        bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, "id"));
-
---qMm9M+Fa2AknHoGS--
-

diff --git a/gdb-babeltrace-minsize.patch b/gdb-babeltrace-minsize.patch
deleted file mode 100644
index d261277..0000000
--- a/gdb-babeltrace-minsize.patch
+++ /dev/null
@@ -1,237 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2014-08/msg00376.html
-Subject: Re: --with-babeltrace generates many FAILs
-
-On 08/19/2014 10:07 PM, Jan Kratochvil wrote:
->  * '#if HAVE_LIBBABELTRACE1_1_0' could have a comment that >=1.1.1 rejects the
->    faked packet (what you described in the mail but not in the patch).
-
-Fixed.  To be precise, >= 1.1.2 rejects the faked packet, 1.1.1
-doesn't.  See the table I posted.
-
->  * It is always better to check for feature/defect than to check for version.
->    For example because various distros backport various fixes (unfortunately
->    including their possible regressions/defects) and so version checks may be
->    misleading then.  At least in this case it seems to me as possible to check
->    how libbacktrace behaves from configure; although maybe it is not easy
->    enough, not sure.
-
-In order to check libbabeltrace's behaviour in configure, we have to write
-a c program to generate CTF data and read the trace data via
-babeltrace or any program (using libbabeltrace) written by ourselves.
-It is not easy to do so.
-
-The patch is updated.  OK to apply?
-
--- 
-Yao (齐尧)
-
-Subject: [PATCH] Check babeltrace 1.1.0
-Subject: [PATCH] Check babeltrace 1.1.0
-
-When GDB uses recent version of babeltrace, such as 1.2.x, we'll see
-such error emitted from babeltrace library,
-
- (gdb) target ctf .../gdb/testsuite/gdb.trace/actions.ctf
- [error] Invalid CTF stream: content size is smaller than
-packet headers.
- [error] Stream index creation error.
- [error] Open file stream error.
-
-The problem can be reproduce out of GDB too, using babeltrace,
-
- $ babeltrace ./fake-packet.ctf/
- [error] Invalid CTF stream: content size is smaller than packet headers.
- [error] Stream index creation error.
- [error] Open file stream error.
-
-Recent babeltrace library becomes more strict on CTF, and complains
-about one "faked packet" GDB adds, when saving trace data in ctf
-format from GDB.  babeltrace 1.1.0 has a bug that it can't read trace
-data smaller than a certain size (see https://bugs.lttng.org/issues/450).
-We workaround it in GDB to append some meaningless data in a faked
-packet to make sure trace file is large enough (see ctf.c:ctf_end).
-The babeltrace issue was fixed in 1.1.1 release.  However, babeltrace
-recent release (since 1.1.2) starts to complain about such faked
-packet.  Here is a table shows that whether faked packet or no faked
-packet is supported by various babeltrace releases,
-
-        faked packet      no faked packet
-1.1.0      Yes                 No
-1.1.1      Yes                 Yes
-1.1.2      No                  Yes
-1.2.0      No                  Yes
-
-We decide to include the code to workaround 1.1.0 issue only if 1.1.0
-is used.  We choose pkg-config to check babeltrace's version in
-configure.
-
-gdb:
-
-2014-08-20  Yao Qi  <yao@codesourcery.com>
-
-	* configure.ac: Disable babeltrace support if pkg-config is
-	missing.  Use pkg-config to check whether libbabeltrace is
-	1.1.0.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* ctf.c (CTF_FILE_MIN_SIZE): Remove.
-	(ctf_end): Wrap the code with
-	#if HAVE_LIBBABELTRACE1_1_0 #endif.
-	[HAVE_LIBBABELTRACE1_1_0] (CTF_FILE_MIN_SIZE): New macro.
----
- gdb/config.in    |  3 +++
- gdb/configure    | 25 +++++++++++++++++++++++++
- gdb/configure.ac | 22 ++++++++++++++++++++++
- gdb/ctf.c        | 25 ++++++++++++++++---------
- 4 files changed, 66 insertions(+), 9 deletions(-)
-
-diff --git a/gdb/config.in b/gdb/config.in
-index b853412..54152cd 100644
---- a/gdb/config.in
-+++ b/gdb/config.in
-@@ -183,6 +183,9 @@
- /* Define if you have the babeltrace library. */
- #undef HAVE_LIBBABELTRACE
- 
-+/* Define to 1 if you have libbabeltrace 1.1.0 */
-+#undef HAVE_LIBBABELTRACE1_1_0
-+
- /* Define to 1 if you have the `dl' library (-ldl). */
- #undef HAVE_LIBDL
- 
-diff --git a/gdb/configure b/gdb/configure
-index 9253e28..d4e2c6e 100755
---- a/gdb/configure
-+++ b/gdb/configure
-@@ -14817,6 +14817,11 @@ $as_echo "$with_babeltrace" >&6; }
- if test "x$with_babeltrace" = "xno"; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&5
- $as_echo "$as_me: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&2;}
-+elif test "${pkg_config_prog_path}" = "missing"; then
-+  # pkg-config is used to check the version of libbabeltrace.  If pkg-config
-+  # is missing, we have to disable babeltrace support.
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pkg-config not found, babletrace support disabled" >&5
-+$as_echo "$as_me: WARNING: pkg-config not found, babletrace support disabled" >&2;}
- else
-   # Append -Werror to CFLAGS so that configure can catch the warning
-   # "assignment from incompatible pointer type", which is related to
-@@ -15307,6 +15312,26 @@ $as_echo "$LIBBABELTRACE" >&6; }
-        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data." >&5
- $as_echo "$as_me: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data." >&2;}
-      fi
-+  else
-+     # Need to know whether libbabeltrace is 1.1.0.
-+     pkg_config_path=
-+     for x in $LTLIBBABELTRACE; do
-+       case "$x" in
-+         -L*)
-+	   dir=`echo "X$x" | sed -e 's/^X-L//'`
-+	   if test -d "$dir/pkgconfig"; then
-+	     pkg_config_path="${pkg_config_path}${pkg_config_path:+:}$dir/pkgconfig"
-+	   fi
-+	   ;;
-+       esac
-+     done
-+
-+     `PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$pkg_config_path ${pkg_config_prog_path} babeltrace = 1.1.0`
-+     if test "$?" -eq 0 ; then
-+
-+$as_echo "#define HAVE_LIBBABELTRACE1_1_0 1" >>confdefs.h
-+
-+     fi
-   fi
- fi
- 
-diff --git a/gdb/configure.ac b/gdb/configure.ac
-index 61919b4..1d8d400 100644
---- a/gdb/configure.ac
-+++ b/gdb/configure.ac
-@@ -2420,6 +2420,10 @@ AC_MSG_RESULT([$with_babeltrace])
- 
- if test "x$with_babeltrace" = "xno"; then
-   AC_MSG_WARN([babletrace support disabled; GDB is unable to read CTF data.])
-+elif test "${pkg_config_prog_path}" = "missing"; then
-+  # pkg-config is used to check the version of libbabeltrace.  If pkg-config
-+  # is missing, we have to disable babeltrace support.
-+  AC_MSG_WARN([pkg-config not found, babletrace support disabled])
- else
-   # Append -Werror to CFLAGS so that configure can catch the warning
-   # "assignment from incompatible pointer type", which is related to
-@@ -2450,6 +2454,24 @@ else
-      else
-        AC_MSG_WARN([babeltrace is missing or unusable; GDB is unable to read CTF data.])
-      fi
-+  else
-+     # Need to know whether libbabeltrace is 1.1.0.
-+     pkg_config_path=
-+     for x in $LTLIBBABELTRACE; do
-+       case "$x" in
-+         -L*)
-+	   dir=`echo "X$x" | sed -e 's/^X-L//'`
-+	   if test -d "$dir/pkgconfig"; then
-+	     pkg_config_path="${pkg_config_path}${pkg_config_path:+:}$dir/pkgconfig"
-+	   fi
-+	   ;;
-+       esac
-+     done
-+
-+     `PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$pkg_config_path ${pkg_config_prog_path} babeltrace = 1.1.0`
-+     if test "$?" -eq 0 ; then
-+       AC_DEFINE([HAVE_LIBBABELTRACE1_1_0], [1], [Define to 1 if you have libbabeltrace 1.1.0])
-+     fi
-   fi
- fi
- 
-diff --git a/gdb/ctf.c b/gdb/ctf.c
-index df645c0..684da50 100644
---- a/gdb/ctf.c
-+++ b/gdb/ctf.c
-@@ -623,11 +623,6 @@ ctf_write_definition_end (struct trace_file_writer *self)
-   self->ops->frame_ops->end (self);
- }
- 
--/* The minimal file size of data stream.  It is required by
--   babeltrace.  */
--
--#define CTF_FILE_MIN_SIZE		4096
--
- /* This is the implementation of trace_file_write_ops method
-    end.  */
- 
-@@ -637,10 +632,21 @@ ctf_end (struct trace_file_writer *self)
-   struct ctf_trace_file_writer *writer = (struct ctf_trace_file_writer *) self;
- 
-   gdb_assert (writer->tcs.content_size == 0);
--  /* The babeltrace requires or assumes that the size of datastream
--     file is greater than 4096 bytes.  If we don't generate enough
--     packets and events, create a fake packet which has zero event,
--      to use up the space.  */
-+
-+#if HAVE_LIBBABELTRACE1_1_0
-+  /* The babeltrace-1.1.0 requires or assumes that the size of datastream
-+     file is greater than 4096 bytes.  This was fixed after 1.1.0 release.
-+     See https://bugs.lttng.org/issues/450
-+     If we don't generate enough packets and events, create a fake packet
-+     which has zero event, to use up the space.  However, babeltrace
-+     release (since 1.1.2) starts to complain about such faked packet,
-+     we include this workaround only for babeltrace 1.1.0.  */
-+
-+  /* The minimal file size of data stream.  It is required by
-+     babeltrace.  */
-+
-+#define CTF_FILE_MIN_SIZE		4096
-+
-   if (writer->tcs.packet_start < CTF_FILE_MIN_SIZE)
-     {
-       uint32_t u32;
-@@ -681,6 +687,7 @@ ctf_end (struct trace_file_writer *self)
- 	  ctf_save_write (&writer->tcs, &b, 1);
- 	}
-     }
-+#endif /* HAVE_LIBBABELTRACE1_1_0 */
- }
- 
- /* This is the implementation of trace_frame_write_ops method
--- 
-1.9.3
-

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@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@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@redhat.com>
-+
-+	* features/aarch64-core.xml (cpsr): Change back to 32-bit.
-+	* features/aarch64.c: Regenerate.
-+
- 2014-09-11  Pedro Alves  <palves@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@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@google.com>
-+	    Walfred Tedeschi  <walfred.tedeschi@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@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@PYTHON_FILES = $(PYTHON_FILE_LIST)
- @HAVE_PYTHON_FALSE@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@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@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@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@google.com>
- 	    Walfred Tedeschi  <walfred.tedeschi@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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)
- }
- \f
- 
--/* 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);
- }
- \f
- /* 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@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@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@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@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@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@redhat.com>
-+
-+	PR gdb/17407
-+	* elfcode.h (bfd_from_remote_memory): Use SIZE for HIGH_OFFSET.
-+
- 2014-07-16  H.J. Lu  <hongjiu.lu@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@redhat.com> - 7.8.1-30.fc21
+- Rebase to FSF GDB 7.8.1.
+
 * Mon Oct 27 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.8-29.fc21
 - Backport vDSO regression.
 - Revert the makeinfo workaround from 7.8-27.fc21.

diff --git a/python-framefilter-invalidarg.patch b/python-framefilter-invalidarg.patch
deleted file mode 100644
index 4c1f16b..0000000
--- a/python-framefilter-invalidarg.patch
+++ /dev/null
@@ -1,596 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2014-08/msg00364.html
-Subject: [patch+7.8?] Fix crash on Python frame filters with unreadable arg
-
-
---d6Gm4EdcadzBjdND
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-Hi,
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1126177
-
-ERROR: AddressSanitizer: SEGV on unknown address 0x000000000050 (pc 0x000000992bef sp 0x7ffff9039530 bp 0x7ffff9039540 T0)
-    #0 0x992bee in value_type .../gdb/value.c:925
-    #1 0x87c951 in py_print_single_arg python/py-framefilter.c:445
-    #2 0x87cfae in enumerate_args python/py-framefilter.c:596
-    #3 0x87e0b0 in py_print_args python/py-framefilter.c:968
-
-It crashes because frame_arg::val is documented it may contain NULL
-(frame_arg::error is then non-NULL) but the code does not handle it.
-
-Another bug is that py_print_single_arg() calls goto out of its TRY_CATCH
-which messes up GDB cleanup chain crashing GDB later.
-
-I tried to somehow separate it to two patches first but it in the end kept
-them merged.
-
-No regressions on {x86_64,x86_64-m32,i686}-fedorarawhide-linux-gnu.
-
-It is probably 7.7 regression (I have not verified it) due to the introduction
-of Python frame filters.
-
-I am not sure if it is more suitable for gdb.arch/ or gdb.python/ , used the
-latter.
-
-
-Thanks,
-Jan
-
---d6Gm4EdcadzBjdND
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline; filename="pyinvalidarg.patch"
-
-gdb/
-2014-08-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* python/py-framefilter.c (py_print_single_arg): Handle NULL FA->VAL.
-	Fix goto out of TRY_CATCH.
-
-gdb/testsuite/
-2014-08-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* gdb.python/amd64-py-framefilter-invalidarg.S: New file.
-	* gdb.python/py-framefilter-invalidarg-gdb.py.in: New file.
-	* gdb.python/py-framefilter-invalidarg.exp: New file.
-	* gdb.python/py-framefilter-invalidarg.py: New file.
-
-diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
-index 9db83c7..d53282f 100644
---- a/gdb/python/py-framefilter.c
-+++ b/gdb/python/py-framefilter.c
-@@ -365,9 +365,12 @@ py_print_single_arg (struct ui_out *out,
- {
-   struct value *val;
-   volatile struct gdb_exception except;
-+  enum ext_lang_bt_status retval = EXT_LANG_BT_OK;
- 
-   if (fa != NULL)
-     {
-+      if (fa->val == NULL && fa->error == NULL)
-+	return EXT_LANG_BT_OK;
-       language = language_def (SYMBOL_LANGUAGE (fa->sym));
-       val = fa->val;
-     }
-@@ -433,16 +436,18 @@ py_print_single_arg (struct ui_out *out,
-       /* For MI print the type, but only for simple values.  This seems
- 	 weird, but this is how MI choose to format the various output
- 	 types.  */
--      if (args_type == MI_PRINT_SIMPLE_VALUES)
-+      if (args_type == MI_PRINT_SIMPLE_VALUES && val != NULL)
- 	{
- 	  if (py_print_type (out, val) == EXT_LANG_BT_ERROR)
- 	    {
-+	      retval = EXT_LANG_BT_ERROR;
- 	      do_cleanups (cleanups);
--	      goto error;
-+	      continue;
- 	    }
- 	}
- 
--      annotate_arg_value (value_type (val));
-+      if (val != NULL)
-+	annotate_arg_value (value_type (val));
- 
-       /* If the output is to the CLI, and the user option "set print
- 	 frame-arguments" is set to none, just output "...".  */
-@@ -454,27 +459,25 @@ py_print_single_arg (struct ui_out *out,
- 	     for the case of MI_PRINT_NO_VALUES.  */
- 	  if (args_type != NO_VALUES)
- 	    {
--	      if (py_print_value (out, val, opts, 0, args_type, language)
--		  == EXT_LANG_BT_ERROR)
-+	      if (val == NULL)
- 		{
--		  do_cleanups (cleanups);
--		  goto error;
-+		  gdb_assert (fa != NULL && fa->error != NULL);
-+		  ui_out_field_fmt (out, "value",
-+				    _("<error reading variable: %s>"),
-+				    fa->error);
- 		}
-+	      else if (py_print_value (out, val, opts, 0, args_type, language)
-+		       == EXT_LANG_BT_ERROR)
-+		retval = EXT_LANG_BT_ERROR;
- 	    }
- 	}
- 
-       do_cleanups (cleanups);
-     }
-   if (except.reason < 0)
--    {
--      gdbpy_convert_exception (except);
--      goto error;
--    }
--
--  return EXT_LANG_BT_OK;
-+    gdbpy_convert_exception (except);
- 
-- error:
--  return EXT_LANG_BT_ERROR;
-+  return retval;
- }
- 
- /* Helper function to loop over frame arguments provided by the
-diff --git a/gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S b/gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S
-new file mode 100755
-index 0000000..3ac1b23
---- /dev/null
-+++ b/gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S
-@@ -0,0 +1,261 @@
-+/* 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/>.  */
-+
-+/* This file is compiled from a single line
-+   int main (int argc, char **argv) { return 0; }
-+   using -g -dA -S -O2 and patched as #if-ed below.  */
-+
-+	.file	"py-framefilter-invalidarg.c"
-+	.text
-+.Ltext0:
-+	.globl	main
-+	.type	main, @function
-+main:
-+.LFB0:
-+	.file 1 "py-framefilter-invalidarg.c"
-+	# py-framefilter-invalidarg.c:1
-+	.loc 1 1 0
-+	.cfi_startproc
-+# BLOCK 2 seq:0
-+# PRED: ENTRY (FALLTHRU)
-+	pushq	%rbp
-+	.cfi_def_cfa_offset 16
-+	.cfi_offset 6, -16
-+	movq	%rsp, %rbp
-+	.cfi_def_cfa_register 6
-+	movl	%edi, -4(%rbp)
-+	movq	%rsi, -16(%rbp)
-+	# py-framefilter-invalidarg.c:2
-+	.loc 1 2 0
-+	movl	$0, %eax
-+	# py-framefilter-invalidarg.c:3
-+	.loc 1 3 0
-+	popq	%rbp
-+	.cfi_def_cfa 7, 8
-+# SUCC: EXIT [100.0%] 
-+	ret
-+	.cfi_endproc
-+.LFE0:
-+	.size	main, .-main
-+.Letext0:
-+	.section	.debug_info,"",@progbits
-+.Ldebug_info0:
-+	.long	.Le - .Ls	# Length of Compilation Unit Info
-+.Ls:
-+	.value	0x4	# DWARF version number
-+	.long	.Ldebug_abbrev0	# Offset Into Abbrev. Section
-+	.byte	0x8	# Pointer Size (in bytes)
-+	.uleb128 0x1	# (DIE (0xb) DW_TAG_compile_unit)
-+	.long	.LASF3	# DW_AT_producer: "GNU C 4.9.1 20140813 (Red Hat 4.9.1-7) -mtune=generic -march=x86-64 -g"
-+	.byte	0x1	# DW_AT_language
-+	.long	.LASF4	# DW_AT_name: "py-framefilter-invalidarg.c"
-+	.long	.LASF5	# DW_AT_comp_dir: ""
-+	.quad	.Ltext0	# DW_AT_low_pc
-+	.quad	.Letext0-.Ltext0	# DW_AT_high_pc
-+	.long	.Ldebug_line0	# DW_AT_stmt_list
-+die2d:
-+	.uleb128 0x2	# (DIE (0x2d) DW_TAG_subprogram)
-+			# DW_AT_external
-+	.long	.LASF6	# DW_AT_name: "main"
-+	.byte	0x1	# DW_AT_decl_file (py-framefilter-invalidarg.c)
-+	.byte	0x1	# DW_AT_decl_line
-+			# DW_AT_prototyped
-+	.long	die6b-.Ldebug_info0	# DW_AT_type
-+	.quad	.LFB0	# DW_AT_low_pc
-+	.quad	.LFE0-.LFB0	# DW_AT_high_pc
-+	.uleb128 0x1	# DW_AT_frame_base
-+	.byte	0x9c	# DW_OP_call_frame_cfa
-+			# DW_AT_GNU_all_call_sites
-+die4e:
-+	.uleb128 0x3	# (DIE (0x4e) DW_TAG_formal_parameter)
-+	.long	.LASF0	# DW_AT_name: "argc"
-+	.byte	0x1	# DW_AT_decl_file (py-framefilter-invalidarg.c)
-+	.byte	0x1	# DW_AT_decl_line
-+	.long	die6b-.Ldebug_info0	# DW_AT_type
-+#if 0
-+	.uleb128 0x2	# DW_AT_location
-+	.byte	0x91	# DW_OP_fbreg
-+	.sleb128 -20
-+#endif
-+#if 0
-+	.uleb128 1f - 2f	# DW_AT_location
-+2:
-+	.byte	0x03	# DW_OP_addr
-+	.quad 0
-+1:
-+#endif
-+#if 1
-+	.uleb128 1f - 2f	# DW_AT_location
-+2:
-+	.byte	0x13	# DW_OP_drop
-+	.quad 0
-+1:
-+#endif
-+die5c:
-+	.uleb128 0x3	# (DIE (0x5c) DW_TAG_formal_parameter)
-+	.long	.LASF1	# DW_AT_name: "argv"
-+	.byte	0x1	# DW_AT_decl_file (py-framefilter-invalidarg.c)
-+	.byte	0x1	# DW_AT_decl_line
-+	.long	die72-.Ldebug_info0	# DW_AT_type
-+	.uleb128 0x2	# DW_AT_location
-+	.byte	0x91	# DW_OP_fbreg
-+	.sleb128 -32
-+	.byte	0	# end of children of DIE 0x2d
-+die6b:
-+	.uleb128 0x4	# (DIE (0x6b) DW_TAG_base_type)
-+	.byte	0x4	# DW_AT_byte_size
-+	.byte	0x5	# DW_AT_encoding
-+	.ascii "int\0"	# DW_AT_name
-+die72:
-+	.uleb128 0x5	# (DIE (0x72) DW_TAG_pointer_type)
-+	.byte	0x8	# DW_AT_byte_size
-+	.long	die78-.Ldebug_info0	# DW_AT_type
-+die78:
-+	.uleb128 0x5	# (DIE (0x78) DW_TAG_pointer_type)
-+	.byte	0x8	# DW_AT_byte_size
-+	.long	die7e-.Ldebug_info0	# DW_AT_type
-+die7e:
-+	.uleb128 0x6	# (DIE (0x7e) DW_TAG_base_type)
-+	.byte	0x1	# DW_AT_byte_size
-+	.byte	0x6	# DW_AT_encoding
-+	.long	.LASF2	# DW_AT_name: "char"
-+	.byte	0	# end of children of DIE 0xb
-+.Le:
-+	.section	.debug_abbrev,"",@progbits
-+.Ldebug_abbrev0:
-+	.uleb128 0x1	# (abbrev code)
-+	.uleb128 0x11	# (TAG: DW_TAG_compile_unit)
-+	.byte	0x1	# DW_children_yes
-+	.uleb128 0x25	# (DW_AT_producer)
-+	.uleb128 0xe	# (DW_FORM_strp)
-+	.uleb128 0x13	# (DW_AT_language)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3	# (DW_AT_name)
-+	.uleb128 0xe	# (DW_FORM_strp)
-+	.uleb128 0x1b	# (DW_AT_comp_dir)
-+	.uleb128 0xe	# (DW_FORM_strp)
-+	.uleb128 0x11	# (DW_AT_low_pc)
-+	.uleb128 0x1	# (DW_FORM_addr)
-+	.uleb128 0x12	# (DW_AT_high_pc)
-+	.uleb128 0x7	# (DW_FORM_data8)
-+	.uleb128 0x10	# (DW_AT_stmt_list)
-+	.uleb128 0x17	# (DW_FORM_sec_offset)
-+	.byte	0
-+	.byte	0
-+	.uleb128 0x2	# (abbrev code)
-+	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
-+	.byte	0x1	# DW_children_yes
-+	.uleb128 0x3f	# (DW_AT_external)
-+	.uleb128 0x19	# (DW_FORM_flag_present)
-+	.uleb128 0x3	# (DW_AT_name)
-+	.uleb128 0xe	# (DW_FORM_strp)
-+	.uleb128 0x3a	# (DW_AT_decl_file)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3b	# (DW_AT_decl_line)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x27	# (DW_AT_prototyped)
-+	.uleb128 0x19	# (DW_FORM_flag_present)
-+	.uleb128 0x49	# (DW_AT_type)
-+	.uleb128 0x13	# (DW_FORM_ref4)
-+	.uleb128 0x11	# (DW_AT_low_pc)
-+	.uleb128 0x1	# (DW_FORM_addr)
-+	.uleb128 0x12	# (DW_AT_high_pc)
-+	.uleb128 0x7	# (DW_FORM_data8)
-+	.uleb128 0x40	# (DW_AT_frame_base)
-+	.uleb128 0x18	# (DW_FORM_exprloc)
-+	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
-+	.uleb128 0x19	# (DW_FORM_flag_present)
-+	.byte	0
-+	.byte	0
-+	.uleb128 0x3	# (abbrev code)
-+	.uleb128 0x5	# (TAG: DW_TAG_formal_parameter)
-+	.byte	0	# DW_children_no
-+	.uleb128 0x3	# (DW_AT_name)
-+	.uleb128 0xe	# (DW_FORM_strp)
-+	.uleb128 0x3a	# (DW_AT_decl_file)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3b	# (DW_AT_decl_line)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x49	# (DW_AT_type)
-+	.uleb128 0x13	# (DW_FORM_ref4)
-+	.uleb128 0x2	# (DW_AT_location)
-+	.uleb128 0x18	# (DW_FORM_exprloc)
-+	.byte	0
-+	.byte	0
-+	.uleb128 0x4	# (abbrev code)
-+	.uleb128 0x24	# (TAG: DW_TAG_base_type)
-+	.byte	0	# DW_children_no
-+	.uleb128 0xb	# (DW_AT_byte_size)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3e	# (DW_AT_encoding)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3	# (DW_AT_name)
-+	.uleb128 0x8	# (DW_FORM_string)
-+	.byte	0
-+	.byte	0
-+	.uleb128 0x5	# (abbrev code)
-+	.uleb128 0xf	# (TAG: DW_TAG_pointer_type)
-+	.byte	0	# DW_children_no
-+	.uleb128 0xb	# (DW_AT_byte_size)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x49	# (DW_AT_type)
-+	.uleb128 0x13	# (DW_FORM_ref4)
-+	.byte	0
-+	.byte	0
-+	.uleb128 0x6	# (abbrev code)
-+	.uleb128 0x24	# (TAG: DW_TAG_base_type)
-+	.byte	0	# DW_children_no
-+	.uleb128 0xb	# (DW_AT_byte_size)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3e	# (DW_AT_encoding)
-+	.uleb128 0xb	# (DW_FORM_data1)
-+	.uleb128 0x3	# (DW_AT_name)
-+	.uleb128 0xe	# (DW_FORM_strp)
-+	.byte	0
-+	.byte	0
-+	.byte	0
-+	.section	.debug_aranges,"",@progbits
-+	.long	0x2c	# Length of Address Ranges Info
-+	.value	0x2	# DWARF Version
-+	.long	.Ldebug_info0	# Offset of Compilation Unit Info
-+	.byte	0x8	# Size of Address
-+	.byte	0	# Size of Segment Descriptor
-+	.value	0	# Pad to 16 byte boundary
-+	.value	0
-+	.quad	.Ltext0	# Address
-+	.quad	.Letext0-.Ltext0	# Length
-+	.quad	0
-+	.quad	0
-+	.section	.debug_line,"",@progbits
-+.Ldebug_line0:
-+	.section	.debug_str,"MS",@progbits,1
-+.LASF1:
-+	.string	"argv"
-+.LASF4:
-+	.string	"py-framefilter-invalidarg.c"
-+.LASF5:
-+	.string	""
-+.LASF0:
-+	.string	"argc"
-+.LASF3:
-+	.string	"GNU C 4.9.1 20140813 (Red Hat 4.9.1-7) -mtune=generic -march=x86-64 -g"
-+.LASF6:
-+	.string	"main"
-+.LASF2:
-+	.string	"char"
-+	.ident	"GCC: (GNU) 4.9.1 20140813 (Red Hat 4.9.1-7)"
-+	.section	.note.GNU-stack,"",@progbits
-diff --git a/gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in b/gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in
-new file mode 100644
-index 0000000..1fa6ffc
---- /dev/null
-+++ b/gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in
-@@ -0,0 +1,48 @@
-+# 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/>.
-+
-+# This file is part of the GDB testsuite.  It tests Python-based
-+# frame-filters.
-+import gdb
-+import itertools
-+from gdb.FrameDecorator import FrameDecorator
-+
-+
-+class FrameObjFile ():
-+
-+    def __init__ (self):
-+        self.name = "Filter1"
-+        self.priority = 1
-+        self.enabled = False
-+        gdb.current_progspace().frame_filters ["Progspace" + self.name] = self
-+        gdb.current_objfile().frame_filters ["ObjectFile" + self.name] = self
-+
-+    def filter (self, frame_iter):
-+        return frame_iter
-+
-+class FrameObjFile2 ():
-+
-+    def __init__ (self):
-+        self.name = "Filter2"
-+        self.priority = 100
-+        self.enabled = True
-+        gdb.current_progspace().frame_filters ["Progspace" + self.name] = self
-+        gdb.current_objfile().frame_filters ["ObjectFile" + self.name] = self
-+
-+    def filter (self, frame_iter):
-+        return frame_iter
-+
-+FrameObjFile()
-+FrameObjFile2()
-diff --git a/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
-new file mode 100644
-index 0000000..f70d16e
---- /dev/null
-+++ b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
-@@ -0,0 +1,67 @@
-+# 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/>.
-+
-+load_lib gdb-python.exp
-+
-+standard_testfile amd64-py-framefilter-invalidarg.S
-+
-+if { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
-+    verbose "Skipping py-framefilter-invalidarg."
-+    return
-+}
-+
-+# We cannot use prepare_for_testing as we have to set the safe-patch
-+# to check objfile and progspace printers.
-+if {[build_executable $testfile.exp $testfile $srcfile {}] == -1} {
-+    return -1
-+}
-+
-+# Start with a fresh gdb.
-+gdb_exit
-+gdb_start
-+
-+# Skip all tests if Python scripting is not enabled.
-+if { [skip_python_tests] } { continue }
-+
-+# Make the -gdb.py script available to gdb, it is automagically loaded by gdb.
-+# Care is taken to put it in the same directory as the binary so that
-+# gdb will find it.
-+set remote_obj_python_file \
-+    [remote_download \
-+	 host ${srcdir}/${subdir}/${testfile}-gdb.py.in \
-+	 [standard_output_file ${testfile}-gdb.py]]
-+
-+gdb_reinitialize_dir $srcdir/$subdir
-+gdb_test_no_output "set auto-load safe-path ${remote_obj_python_file}" \
-+    "set auto-load safe-path"
-+gdb_load ${binfile}
-+# Verify gdb loaded the script.
-+gdb_test "info auto-load python-scripts" "Yes.*/${testfile}-gdb.py.*" \
-+    "Test auto-load had loaded python scripts"
-+
-+if ![runto_main] then {
-+    perror "couldn't run to breakpoint"
-+    return
-+}
-+gdb_test_no_output "set python print-stack full" \
-+    "Set python print-stack to full"
-+
-+# Load global frame-filters
-+set remote_python_file [gdb_remote_download host \
-+			    ${srcdir}/${subdir}/${testfile}.py]
-+gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-+    "Load python file"
-+
-+gdb_test "bt" " in niam \\(argc=<error reading variable: dwarf expression stack underflow>, argv=0x\[0-9a-f\]+\\) at py-framefilter-invalidarg.c:\[0-9\]+" "bt full with filters"
-diff --git a/gdb/testsuite/gdb.python/py-framefilter-invalidarg.py b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.py
-new file mode 100644
-index 0000000..d5f92cb
---- /dev/null
-+++ b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.py
-@@ -0,0 +1,59 @@
-+# 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/>.
-+
-+# This file is part of the GDB testsuite.  It tests Python-based
-+# frame-filters.
-+import gdb
-+import itertools
-+from gdb.FrameDecorator import FrameDecorator
-+import copy
-+
-+class Reverse_Function (FrameDecorator):
-+
-+    def __init__(self, fobj):
-+        super(Reverse_Function, self).__init__(fobj)
-+        self.fobj = fobj
-+
-+    def function (self):
-+        fname = str (self.fobj.function())
-+        if (fname == None or fname == ""):
-+            return None
-+        if fname == 'end_func':
-+            extra = self.fobj.inferior_frame().read_var('str').string()
-+        else:
-+            extra = ''
-+        fname = fname[::-1] + extra
-+        return fname
-+
-+class FrameFilter ():
-+
-+    def __init__ (self):
-+        self.name = "Reverse"
-+        self.priority = 100
-+        self.enabled = True
-+        gdb.frame_filters [self.name] = self
-+
-+    def filter (self, frame_iter):
-+        # Python 3.x moved the itertools.imap functionality to map(),
-+        # so check if it is available.
-+        if hasattr(itertools, "imap"):
-+            frame_iter = itertools.imap (Reverse_Function,
-+                                         frame_iter)
-+        else:
-+            frame_iter = map(Reverse_Function, frame_iter)
-+
-+        return frame_iter
-+
-+FrameFilter()
-
---d6Gm4EdcadzBjdND--
-

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

^ 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 FSF GDB 7.8.1 Jan Kratochvil

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