From: Yao Qi <yao@codesourcery.com>
To: Pedro Alves <palves@redhat.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH 1/2] use zuinteger_unlimited for some remote commands
Date: Tue, 05 Mar 2013 07:45:00 -0000 [thread overview]
Message-ID: <5135A26A.6030608@codesourcery.com> (raw)
In-Reply-To: <5134C9DD.2070205@redhat.com>
On 03/05/2013 12:20 AM, Pedro Alves wrote:
> But I ask, what's either:
>
> - the point of making it internally signed
> with things like:
>
> if (*(int *) c->var != val)
>
> and forbidding INT_MAX..UINT_MAX-1. (Not that I'm
> arguing it should). The care to only accept -1
> and not any other negative number made me think
> numbers in that range should be accepted.
Internally, we use -1 for unlimited, so it is signed. Externally, it
is unsigned, so we have to forbid the range (INT_MAX, UINT_MAX - 1].
>
> - the point of making it externally unsigned if
> it only accepts [0, INT_MAX]. If the variable
because we need -1 for unlimited internally. I don't see anything
wrong to define unsigned type whose range is [0, INT_MAX].
> assigned to the command was signed too, then this
> range would be both implicit and explicit, meaning, one
> weird detail less the user of the API needs to know.
If I understand you correctly, this is what you want,
extern void
add_setshow_zuinteger_unlimited_cmd (char *name,
enum command_class class,
int *var,
^^^^^^^^
then, IMO, the API is weird, in which the type of parameter VAR
(singed) is not consistent with the function (zuinteger_unlimited).
Since these CLI stuff provide APIs to other components, it is better to
review them externally first.
However, I don't insist on that if you believe changing the type of VAR
from "unsigned int" to "int" is better, I am OK to change it to:
/* ZeroableUnsignedInteger with unlimited value. *VAR is an
int, but its range is [0, INT_MAX]. -1 stands for
unlimited and other negative numbers are not allowed. */
The patch below is regression tested on x86_64-linux.
--
Yao (é½å°§)
gdb:
2013-03-05 Yao Qi <yao@codesourcery.com>
* cli/cli-decode.c (add_setshow_zuinteger_unlimited_cmd): Change
parameter VAR's type from "unsigned int" to "int".
* command.h (var_zuinteger_unlimited): Update its comments.
(add_setshow_zuinteger_unlimited_cmd): Update the declaration.
---
gdb/cli/cli-decode.c | 2 +-
gdb/command.h | 7 ++++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 49ccef3..a8f7747 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -708,7 +708,7 @@ add_setshow_zinteger_cmd (char *name, enum command_class class,
void
add_setshow_zuinteger_unlimited_cmd (char *name,
enum command_class class,
- unsigned int *var,
+ int *var,
const char *set_doc,
const char *show_doc,
const char *help_doc,
diff --git a/gdb/command.h b/gdb/command.h
index 17662b4..a25fe04 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -99,8 +99,9 @@ typedef enum var_types
/* ZeroableUnsignedInteger. *VAR is an unsigned int. Zero really
means zero. */
var_zuinteger,
- /* ZeroableUnsignedInteger with unlimited value. *VAR is an unsigned
- int, but its range is [0, INT_MAX]. -1 stands for unlimited. */
+ /* ZeroableUnsignedInteger with unlimited value. *VAR is an int,
+ but its range is [0, INT_MAX]. -1 stands for unlimited and
+ other negative numbers are not allowed. */
var_zuinteger_unlimited,
/* Enumerated type. Can only have one of the specified values.
*VAR is a char pointer to the name of the element that we
@@ -361,7 +362,7 @@ extern void add_setshow_zuinteger_cmd (char *name,
extern void
add_setshow_zuinteger_unlimited_cmd (char *name,
enum command_class class,
- unsigned int *var,
+ int *var,
const char *set_doc,
const char *show_doc,
const char *help_doc,
--
1.7.7.6
next prev parent reply other threads:[~2013-03-05 7:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-15 13:29 [PATCH 0/2] Use zuinteger_unlimited Yao Qi
2013-02-15 13:29 ` [PATCH 2/2] use zuinteger_unlimited for heuristic-fence-post Yao Qi
2013-02-15 13:29 ` [PATCH 1/2] use zuinteger_unlimited for some remote commands Yao Qi
2013-03-04 13:19 ` Pedro Alves
2013-03-04 14:38 ` Yao Qi
2013-03-04 16:21 ` Pedro Alves
2013-03-05 7:45 ` Yao Qi [this message]
2013-03-05 12:59 ` Pedro Alves
2013-03-05 17:33 ` Doug Evans
2013-03-05 18:07 ` Pedro Alves
2013-03-06 0:30 ` Doug Evans
2013-02-25 3:15 ` ping : [PATCH 0/2] Use zuinteger_unlimited 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=5135A26A.6030608@codesourcery.com \
--to=yao@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.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