aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/NEWS6
-rw-r--r--gdb/cli/cli-cmds.c9
-rw-r--r--gdb/cli/cli-decode.c7
-rw-r--r--gdb/doc/ChangeLog4
-rw-r--r--gdb/doc/gdb.texinfo7
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.base/shell.exp24
8 files changed, 59 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index cf8f7f8..eefae59 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2011-11-14 Doug Evans <dje@google.com>
+
+ Make "!" an alias for "shell".
+ * NEWS: Add mention.
+ * cli/cli-cmds.c (init_cli_cmds): Remove xdb_commands condition on
+ adding "!" command, always add it.
+ * cli/cli-decode.c (find_command_name_length): Recognize "!" as a
+ command of length one.
+
2011-11-14 Stan Shebs <stan@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
diff --git a/gdb/NEWS b/gdb/NEWS
index dc16a4b..bce8e3c 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -103,6 +103,12 @@
at the time the function got called. Entry values are available only since
gcc version 4.7.
+* New commands
+
+!SHELL COMMAND
+ "!" is now an alias of the "shell" command.
+ Note that no space is needed between "!" and SHELL COMMAND.
+
* Changed commands
watch EXPRESSION mask MASK_VALUE
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 94328c4..d75a6c0 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -1825,14 +1825,7 @@ Two arguments (separated by a comma) are taken as a range of memory to dump,\n\
if (xdb_commands)
add_com_alias ("va", "disassemble", class_xdb, 0);
- /* NOTE: cagney/2000-03-20: Being able to enter ``(gdb) !ls'' would
- be a really useful feature. Unfortunately, the below wont do
- this. Instead it adds support for the form ``(gdb) ! ls''
- (i.e. the space is required). If the ``!'' command below is
- added the complains about no ``!'' command would be replaced by
- complains about how the ``!'' command is broken :-) */
- if (xdb_commands)
- add_com_alias ("!", "shell", class_support, 0);
+ add_com_alias ("!", "shell", class_support, 0);
c = add_com ("make", class_support, make_command, _("\
Run the ``make'' program using the rest of the line as arguments."));
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 0870782..22ae6ec 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -1127,11 +1127,16 @@ find_command_name_length (const char *text)
Note that this is larger than the character set allowed when
creating user-defined commands. */
+ /* Recognize '!' as a single character command so that, e.g., "!ls"
+ works as expected. */
+ if (*p == '!')
+ return 1;
+
while (isalnum (*p) || *p == '-' || *p == '_'
/* Characters used by TUI specific commands. */
|| *p == '+' || *p == '<' || *p == '>' || *p == '$'
/* Characters used for XDB compatibility. */
- || (xdb_commands && (*p == '!' || *p == '/' || *p == '?')))
+ || (xdb_commands && (*p == '/' || *p == '?')))
p++;
return p - text;
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 02ef07b..15659d6 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-14 Doug Evans <dje@google.com>
+
+ * gdb.texinfo (Shell Commands): Document "!".
+
2011-11-14 Stan Shebs <stan@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 0cadc96..9255b89 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1347,9 +1347,12 @@ just use the @code{shell} command.
@table @code
@kindex shell
+@kindex !
@cindex shell escape
-@item shell @var{command string}
-Invoke a standard shell to execute @var{command string}.
+@item shell @var{command-string}
+@itemx !@var{command-string}
+Invoke a standard shell to execute @var{command-string}.
+Note that no space is needed between @code{!} and @var{command-string}.
If it exists, the environment variable @code{SHELL} determines which
shell to run. Otherwise @value{GDBN} uses the default shell
(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a53f52f..d71e46c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-14 Doug Evans <dje@google.com>
+
+ * gdb.base/shell.exp: New file.
+
2011-11-14 Stan Shebs <stan@codesourcery.com>
* gdb.trace/ftrace.c: New.
diff --git a/gdb/testsuite/gdb.base/shell.exp b/gdb/testsuite/gdb.base/shell.exp
new file mode 100644
index 0000000..ce1223d
--- /dev/null
+++ b/gdb/testsuite/gdb.base/shell.exp
@@ -0,0 +1,24 @@
+# Copyright 2011 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 the shell and ! commands work.
+
+gdb_exit
+gdb_start
+
+gdb_test "shell echo foo" "foo"
+
+gdb_test "! echo foo" "foo"
+gdb_test "!echo foo" "foo"