From: Tristan Gingold Date: Fri, 4 May 2012 07:58:00 +0000 (+0000) Subject: 2012-05-04 Tristan Gingold X-Git-Tag: sid-snapshot-20120601~331 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=52b3699b0be907d005616a7f5542c4bbd44b1f7b;p=thirdparty%2Fbinutils-gdb.git 2012-05-04 Tristan Gingold * printcmd.c (set_command): Emit a warning if the expression is not an assignment. testsuite/ 2012-05-04 Tristan Gingold * gdb.base/set-noassign.exp: New test. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b02c026b821..a073454d0ed 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-05-04 Tristan Gingold + + * printcmd.c (set_command): Emit a warning if the expression is not + an assignment. + 2012-05-03 Joel Brobecker * nto-procfs.c (procfs_find_new_threads, procfs_pid_to_str): diff --git a/gdb/printcmd.c b/gdb/printcmd.c index d441dfe5244..79e38f21d57 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 c89e6b9b41f..ca5641144ed 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-05-04 Tristan Gingold + + * gdb.base/set-noassign.exp: New test. + 2012-05-03 Siva Chandra Reddy * 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 00000000000..5eba8704aae --- /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 . + + +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"