Subject: 24.3.50; gdb-control-commands-regexp has a typo
From: [email-masked]
To: [email-masked]
Date: Sun, 27 Jan 2013 13:21:00 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

I use latest bzr trunk and emacs-24 branches on linux.

I believe the following patch should be applied to remove "s" from
"commands" portion of a regexp:

	=== modified file 'lisp/progmodes/gdb-mi.el'
	--- lisp/progmodes/gdb-mi.el	2013-01-11 23:08:55 +0000
	+++ lisp/progmodes/gdb-mi.el	2013-01-27 21:16:01 +0000
	@@ -1680,7 +1680,7 @@
	 (defvar gdb-control-commands-regexp
	   (concat
	    "^\\("
	-   "commands\\|if\\|while\\|define\\|document\\|python\\|"
	+   "command\\|if\\|while\\|define\\|document\\|python\\|"
	    "while-stepping\\|stepping\\|ws\\|actions"
	    "\\)\\([[:blank:]]+.*\\)?$")
	   "Regexp matching GDB commands that enter a recursive reading loop.

Why?  Because without this change, gdb fails to handle the command
"command" incorrectly.  gdb's "command" allows one to associate a gdb
command sequence with a breakpoint.  Following is how it should work
to add "print foo" command for breakpoint number 2 while debugging a C
program:

    (gdb) command 2
    print foo
    end
    (gdb)

where as soon as "end" is typed, "command" should be terminated and
"(gdb) " prompt printed.  Instead of this what happens is that "(gdb)
" prompt is never printed and it acts as if "end" is not treated as
the terminating special command, i.e., this is what I see:

    (gdb) command 2
    print foo
    end

At this point gdb seems hung.  The only way to get back the gdb prompt
is to hit Control-C twice.

This bug has been around for several weeks at least on both emacs-24
and trunk bzr branchs of emacs.