Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Khoo Yit Phang <khooyp@cs.umd.edu>
To: Yao Qi <yao@codesourcery.com>
Cc: Khoo Yit Phang <khooyp@cs.umd.edu>, <gdb-patches@sourceware.org>
Subject: Re: [PATCH] Handle var_uinteger/var_zuinteger and case var_integer/var_zinteger together.
Date: Fri, 27 Jul 2012 17:40:00 -0000	[thread overview]
Message-ID: <7A6A55B4-0293-4AD6-AB1F-B3169F8ADCC1@cs.umd.edu> (raw)
In-Reply-To: <1342637512-2018-1-git-send-email-yao@codesourcery.com>

Hi,

This patch broke "set remote hardware-breakpoint-limit -1" ("integer 4294967295 out of range"), which treats -1 as unlimited. The problem is the following lines:

>    case var_integer:
> +   case var_zinteger:
>      {
>        unsigned int val;


Since val is unsigned, -1 gets casted to UINT_MAX which subsequently fails:

>        else if (val >= INT_MAX)
>          error (_("integer %u out of range"), val);


I tried changing val to LONGEST, but that subsequently broke the "set listsize -1" test in the testsuite (or at least, it fails one of the test cases in testsuite/gdb.base/list.exp).

Actually, it's not clear to me what "set listsize -1" is supposed to do: in one place in the testsuite, it's supposed to be unlimited and "set listsize 0" is supposed to suppress printing, but in another place, "set listsize 0" is supposed to be unlimited. But running "set listsize -1", without my change, also leads to an error ("integer 4294967295 out of range"). The documentation does not make it clear either.

Yit
July 27, 2012


On Jul 18, 2012, at 2:51 PM, Yao Qi wrote:

> Hi,
> Similar to previous patch, this patch is also to handle case
> var_uinteger/var_zuinteger and case var_integer/var_zinteger together.
> This change removes some duplicated code, and applies range checking
> to the value of var_zuinteger and var_zinteger.
> 
> Note that my following patches will check the change of command
> option for some purpose, so better to handle these case statements
> as together we we can.
> 
> gdb:
> 
> 2012-07-18  Yao Qi  <yao@codesourcery.com>
> 
>    * cli/cli-setshow.c (do_setshow_command): Handle case 'var_uinteger'
>    and 'var_zuninteger' together.  Handle case 'var_integer' and
>    'var_zinteger' together.
> ---
> gdb/cli/cli-setshow.c |   16 ++++------------
> 1 files changed, 4 insertions(+), 12 deletions(-)
> 
> diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
> index 0f854e5..fabc4d7 100644
> --- a/gdb/cli/cli-setshow.c
> +++ b/gdb/cli/cli-setshow.c
> @@ -267,20 +267,22 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
>      }
>      break;
>    case var_uinteger:
> +   case var_zuinteger:
>      if (arg == NULL)
>        error_no_arg (_("integer to set it to."));
>      *(unsigned int *) c->var = parse_and_eval_long (arg);
> -     if (*(unsigned int *) c->var == 0)
> +     if (c->var_type == var_uinteger && *(unsigned int *) c->var == 0)
>        *(unsigned int *) c->var = UINT_MAX;
>      break;
>    case var_integer:
> +   case var_zinteger:
>      {
>        unsigned int val;
> 
>        if (arg == NULL)
>          error_no_arg (_("integer to set it to."));
>        val = parse_and_eval_long (arg);
> -       if (val == 0)
> +       if (val == 0 && c->var_type == var_integer)
>          *(int *) c->var = INT_MAX;
>        else if (val >= INT_MAX)
>          error (_("integer %u out of range"), val);
> @@ -288,16 +290,6 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
>          *(int *) c->var = val;
>        break;
>      }
> -   case var_zinteger:
> -     if (arg == NULL)
> -       error_no_arg (_("integer to set it to."));
> -     *(int *) c->var = parse_and_eval_long (arg);
> -     break;
> -   case var_zuinteger:
> -     if (arg == NULL)
> -       error_no_arg (_("integer to set it to."));
> -     *(unsigned int *) c->var = parse_and_eval_long (arg);
> -     break;
>    case var_enum:
>      {
>        int i;
> -- 
> 1.7.7.6
> 


  parent reply	other threads:[~2012-07-27 17:40 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-18 12:52 Yao Qi
2012-07-24 12:51 ` [committed]: " Yao Qi
2012-07-27 17:40 ` Khoo Yit Phang [this message]
2012-07-29 14:25   ` Yao Qi
2012-08-01 13:56   ` [RFC 0/3] New var_types var_zuinteger_unlimited Yao Qi
2012-08-01 13:56     ` [PATCH 2/3] use zuinteger_unlimited for some remote commands Yao Qi
2012-08-01 13:56     ` [PATCH 3/3] use zuinteger_unlimited for heuristic-fence-post Yao Qi
2012-08-01 13:56     ` [PATCH 1/3] var_zuinteger_unlimited and 'set listsize' Yao Qi
2012-08-01 16:14       ` Eli Zaretskii
2012-08-02  8:34       ` Doug Evans
2012-08-02 12:53         ` Yao Qi
2012-08-13 15:28   ` [RFC 0/3] Get rid of var_integer in CLI Yao Qi
2012-08-13 15:28     ` [PATCH 1/3] var_integer -> var_uinteger Yao Qi
2012-08-23 18:20       ` dje
2012-08-24  6:56         ` Yao Qi
2012-08-24 17:06           ` dje
2012-08-27 10:10             ` Yao Qi
2012-08-27 22:14               ` dje
2012-08-28 14:09                 ` [committed]: " Yao Qi
2013-03-25 22:55                   ` Change "set history size" back to signed (Re: [committed]: [PATCH 1/3] var_integer -> var_uinteger) Pedro Alves
2013-03-26 16:48                     ` Yao Qi
2013-03-26 17:48                       ` Pedro Alves
2013-03-27  8:54                         ` Yao Qi
2013-03-27 17:34                           ` Pedro Alves
2012-08-13 15:28     ` [PATCH 3/3] comments update Yao Qi
2012-09-14 18:13       ` Tom Tromey
2012-08-13 15:28     ` [PATCH 2/3] var_integer -> var_zuinteger_unlimited Yao Qi
2012-08-13 17:54       ` Eli Zaretskii
2012-09-14 18:12       ` Tom Tromey
2012-09-17  8:43         ` [committed]: " Yao Qi
2012-08-22 14:30     ` [ping] : [RFC 0/3] Get rid of var_integer in CLI Yao Qi

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=7A6A55B4-0293-4AD6-AB1F-B3169F8ADCC1@cs.umd.edu \
    --to=khooyp@cs.umd.edu \
    --cc=gdb-patches@sourceware.org \
    --cc=yao@codesourcery.com \
    /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