From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22965 invoked by alias); 9 Sep 2012 03:23:55 -0000 Received: (qmail 22911 invoked by uid 22791); 9 Sep 2012 03:23:54 -0000 X-SWARE-Spam-Status: No, hits=-4.4 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,TW_BP X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 09 Sep 2012 03:23:42 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1TAY7Z-0006iy-Jm from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Sat, 08 Sep 2012 20:23:41 -0700 Received: from SVR-ORW-FEM-04.mgc.mentorg.com ([147.34.97.41]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 8 Sep 2012 20:23:41 -0700 Received: from qiyao.dyndns.org.dyndns.org (147.34.91.1) by svr-orw-fem-04.mgc.mentorg.com (147.34.97.41) with Microsoft SMTP Server id 14.1.289.1; Sat, 8 Sep 2012 20:23:40 -0700 From: Yao Qi To: Subject: [PATCH 1/2] Check the range Date: Sun, 09 Sep 2012 03:23:00 -0000 Message-ID: <1347160965-24089-2-git-send-email-yao@codesourcery.com> In-Reply-To: <1347160965-24089-1-git-send-email-yao@codesourcery.com> References: <1347160965-24089-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-09/txt/msg00090.txt.bz2 This patch is to check the range of various command input, and also fixes one regression on 'set remote XXX-limit -1'. (gdb) set remote hardware-watchpoint-limit -1 integer 4294967295 out of range The new added tests expose existing regression on unpatched GDB, FAIL: gdb.base/setshow.exp: set remote hardware-watchpoint-limit -1 FAIL: gdb.base/setshow.exp: show remote hardware-watchpoint-limit -1 (2) FAIL: gdb.base/setshow.exp: set remote hardware-watchpoint-length-limit -1 FAIL: gdb.base/setshow.exp: show remote hardware-watchpoint-length-limit -1 (2) FAIL: gdb.base/setshow.exp: set remote hardware-breakpoint-limit -1 FAIL: gdb.base/setshow.exp: show remote hardware-breakpoint-limit -1 (2) This patch fixes these fails, but causes another regression, -PASS: gdb.base/list.exp: show listsize unlimited #7 +FAIL: gdb.base/list.exp: show listsize unlimited #7 The next patch is to fix this regression on 'set listsize'. gdb: 2012-09-09 Yao Qi Mark Kettenis * cli/cli-setshow.c (do_set_command): Check the range of value for var_uinteger, var_zuinteger, var_zinteger and var_integer. gdb/testsuite: 2012-09-09 Yao Qi * gdb.base/setshow.exp: Test for setting ahd showing hardware-watchpoint-limit, hardware-watchpoint-length-limit and hardware-breakpoint-limit. --- gdb/cli/cli-setshow.c | 12 ++++++++---- gdb/testsuite/gdb.base/setshow.exp | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c index 9d8cb2e..7140479 100644 --- a/gdb/cli/cli-setshow.c +++ b/gdb/cli/cli-setshow.c @@ -275,7 +275,10 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c) if (arg == NULL) error_no_arg (_("integer to set it to.")); { - unsigned int val = parse_and_eval_long (arg); + LONGEST val = parse_and_eval_long (arg); + + if (val < 0 || val > UINT_MAX) + error (_("integer %s out of range"), plongest (val)); if (c->var_type == var_uinteger && val == 0) val = UINT_MAX; @@ -291,15 +294,16 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c) case var_integer: case var_zinteger: { - unsigned int val; + LONGEST val; if (arg == NULL) error_no_arg (_("integer to set it to.")); val = parse_and_eval_long (arg); + if (val == 0 && c->var_type == var_integer) val = INT_MAX; - else if (val >= INT_MAX) - error (_("integer %u out of range"), val); + else if (val < INT_MIN || val >= INT_MAX) + error (_("integer %s out of range"), plongest (val)); if (*(int *) c->var != val) { diff --git a/gdb/testsuite/gdb.base/setshow.exp b/gdb/testsuite/gdb.base/setshow.exp index d33e185..3a3e58f 100644 --- a/gdb/testsuite/gdb.base/setshow.exp +++ b/gdb/testsuite/gdb.base/setshow.exp @@ -259,3 +259,20 @@ gdb_test "show verbose" "Verbose printing of informational messages is on..*" "s gdb_test_no_output "set verbose off" "set verbose off" #test show verbose off gdb_test "show verbose" "Verbosity is off..*" "show verbose (off)" + +foreach remote_bpkt_option { + "hardware-watchpoint-limit" + "hardware-watchpoint-length-limit" + "hardware-breakpoint-limit" +} { + gdb_test "show remote ${remote_bpkt_option}" \ + "The maximum .* is -1.*" \ + "show remote ${remote_bpkt_option} -1 (1)" + gdb_test_no_output "set remote ${remote_bpkt_option} 1" + + gdb_test_no_output "set remote ${remote_bpkt_option} -1" + gdb_test "show remote ${remote_bpkt_option}" \ + "The maximum .* is -1.*" \ + "show remote ${remote_bpkt_option} -1 (2)" +} + -- 1.7.7.6