From: Gabriel Krisman Bertazi <gabriel@krisman.be>
To: gdb-patches@sourceware.org
Cc: Gabriel Krisman Bertazi <gabriel@krisman.be>
Subject: [PATCH] Fix PR gdb/17035: "show user" doesn't list user-defined commands that have empty bodies.
Date: Wed, 20 Aug 2014 06:12:00 -0000 [thread overview]
Message-ID: <1408515134-31165-1-git-send-email-gabriel@krisman.be> (raw)
User-defined commands that have empty bodies weren't being shown because
the print function returned too soon. Now, it prints the command's name
before checking if it has any body at all. This also fixes the same
problem on "show user <myemptycommand>", which wasn't being printed due
to a similar reason.
gdb/
2014-08-20 Gabriel Krisman Bertazi <gabriel@krisman.be>
* cli/cli-cmds.c (show_user): Don't return with error message
when c->user_commands is NULL.
* cli/cli-script.c (show_user_1): Verify cmdlines only after
printing command name.
gdb/testsuite/
2014-08-20 Gabriel Krisman Bertazi <gabriel@krisman.be>
* gdb.base/commands.exp: Include tests to verify user-defined
commands with empty bodies.
* gdb.base/default.exp: Update testcase output.
* gdb.base/setshow.exp: Update testcase output.
---
gdb/cli/cli-cmds.c | 5 ++---
gdb/cli/cli-script.c | 4 ++--
gdb/testsuite/gdb.base/commands.exp | 22 ++++++++++++++++++++++
gdb/testsuite/gdb.base/default.exp | 2 +-
gdb/testsuite/gdb.base/setshow.exp | 2 +-
5 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index b415267..4c42ff1 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -1245,9 +1245,8 @@ show_user (char *args, int from_tty)
const char *comname = args;
c = lookup_cmd (&comname, cmdlist, "", 0, 1);
- /* c->user_commands would be NULL if it's a python/scheme command. */
- if (c->class != class_user || !c->user_commands)
- error (_("Not a user command."));
+ if (c->class != class_user)
+ error (_("Not a user command."));
show_user_1 (c, "", args, gdb_stdout);
}
else
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index 0f0a97e..37cb82a 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -1717,10 +1717,10 @@ show_user_1 (struct cmd_list_element *c, const char *prefix, const char *name,
}
cmdlines = c->user_commands;
- if (!cmdlines)
- return;
fprintf_filtered (stream, "User command \"%s%s\":\n", prefix, name);
+ if (!cmdlines)
+ return;
print_command_lines (current_uiout, cmdlines, 1);
fputs_filtered ("\n", stream);
}
diff --git a/gdb/testsuite/gdb.base/commands.exp b/gdb/testsuite/gdb.base/commands.exp
index 7363420..b2d1c76 100644
--- a/gdb/testsuite/gdb.base/commands.exp
+++ b/gdb/testsuite/gdb.base/commands.exp
@@ -243,6 +243,28 @@ proc user_defined_command_test {} {
gdb_test "show user mycommand" \
" while \\\$arg0.*set.* if \\\(\\\$arg0.*p/x.* else\[^\n\].*p/x.* end\[^\n\].* end\[^\n\].*" \
"display user command in user_defined_command_test"
+
+ # Create and test an user-defined command with an empty body.
+ gdb_test_multiple "define myemptycommand" \
+ "define myemptycommand in user_defined_command_test" {
+ -re "End with" {
+ pass "define myemptycommand in user_defined_command_test"
+ }
+ }
+ gdb_test "end" \
+ "" \
+ "End definition of user-defined command with empty body."
+
+ gdb_test_no_output "myemptycommand" \
+ "execute user-defined empty command in user_defined_command_test"
+
+ gdb_test "show user" \
+ "User command \"myemptycommand.*" \
+ "display empty command in command list in user_defined_command_test"
+
+ gdb_test "show user myemptycommand" \
+ "User command \"myemptycommand.*" \
+ "display user-defined emtpy command in user_defined_command_test"
}
proc watchpoint_command_test {} {
diff --git a/gdb/testsuite/gdb.base/default.exp b/gdb/testsuite/gdb.base/default.exp
index 6674df3..c9fbedd 100644
--- a/gdb/testsuite/gdb.base/default.exp
+++ b/gdb/testsuite/gdb.base/default.exp
@@ -693,7 +693,7 @@ gdb_test "show prompt" "Gdb's prompt is \"$gdb_prompt \".*" "show prompt"
#test show radix
gdb_test "show radix" "Input and output radices set to decimal 10, hex a, octal 12." "show radix"
#test show user
-gdb_test_no_output "show user" "show user"
+gdb_test "show user" "User command \"user-defined\".*" "show user"
#test show values
gdb_test_no_output "show values" "show values"
#test show verbose
diff --git a/gdb/testsuite/gdb.base/setshow.exp b/gdb/testsuite/gdb.base/setshow.exp
index 639ca72..302039f 100644
--- a/gdb/testsuite/gdb.base/setshow.exp
+++ b/gdb/testsuite/gdb.base/setshow.exp
@@ -275,7 +275,7 @@ gdb_test_no_output "set write on" "set write on"
# This is only supported on targets which use exec.o.
gdb_test "show write" "Writing into executable and core files is on..*" "show write (on)"
#test show user
-gdb_test_no_output "show user" "show user"
+gdb_test "show user" "User command \"user-defined\".*" "show user"
#test set verbose on
gdb_test_no_output "set verbose on" "set verbose on"
#test show verbose on
--
1.9.3
next reply other threads:[~2014-08-20 6:12 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-20 6:12 Gabriel Krisman Bertazi [this message]
2014-08-21 15:53 ` Pedro Alves
2014-08-23 2:27 ` Gabriel Krisman Bertazi
2014-08-27 11:56 ` Pedro Alves
2014-08-31 18:35 ` Gabriel Krisman Bertazi
2014-09-02 12:52 ` Pedro Alves
2014-09-04 19:26 ` Gabriel Krisman Bertazi
2014-09-04 19:57 ` Sergio Durigan Junior
2014-09-05 13:12 ` Pedro Alves
2014-09-08 0:44 ` Gabriel Krisman Bertazi
2014-09-09 21:19 ` Sergio Durigan Junior
2014-08-21 21:20 ` Sergio Durigan Junior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1408515134-31165-1-git-send-email-gabriel@krisman.be \
--to=gabriel@krisman.be \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox