diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/printcmd.c | 6 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/set-noassign.exp | 32 |
4 files changed, 47 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b02c026..a073454 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-05-04 Tristan Gingold <gingold@adacore.com> + + * printcmd.c (set_command): Emit a warning if the expression is not + an assignment. + 2012-05-03 Joel Brobecker <brobecker@adacore.com> * nto-procfs.c (procfs_find_new_threads, procfs_pid_to_str): diff --git a/gdb/printcmd.c b/gdb/printcmd.c index d441dfe..79e38f2 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1080,6 +1080,12 @@ set_command (char *exp, int from_tty) struct cleanup *old_chain = make_cleanup (free_current_contents, &expr); + if (expr->nelts >= 1 + && expr->elts[0].opcode != BINOP_ASSIGN + && expr->elts[0].opcode != BINOP_ASSIGN_MODIFY + && expr->elts[0].opcode != BINOP_COMMA) + warning (_("Expression is not an assignment (and might have no effect)")); + evaluate_expression (expr); do_cleanups (old_chain); } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c89e6b9..ca56411 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-05-04 Tristan Gingold <gingold@adacore.com> + + * gdb.base/set-noassign.exp: New test. + 2012-05-03 Siva Chandra Reddy <sivachandra@google.com> * gdb.python/py-symbol.exp: Add tests to test the new methods diff --git a/gdb/testsuite/gdb.base/set-noassign.exp b/gdb/testsuite/gdb.base/set-noassign.exp new file mode 100644 index 0000000..5eba870 --- /dev/null +++ b/gdb/testsuite/gdb.base/set-noassign.exp @@ -0,0 +1,32 @@ +# Copyright 2012 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/>. + + +if { [prepare_for_testing set-noassign.exp "set-noassign" start.c {debug nowarnings}] } { + return -1 +} + +if ![runto_main] then { + fail "Can't run to main" + return 0 +} + +# Verify that set command without assignment emits a warning. +# +gdb_test "set language ada" ".*" "set language ada" + +gdb_test "set x=3" \ + "warning: Expression is not an assignment \\(and might have no effect\\)" \ + "warning for set without assignment" |