From: "Maciej W. Rozycki" <macro@embecosm.com>
To: Andrew Burgess <aburgess@redhat.com>
Cc: gdb-patches@sourceware.org, Simon Sobisch <simonsobisch@web.de>,
Tom Tromey <tom@tromey.com>
Subject: Re: [PATCH v5 2/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited'
Date: Wed, 29 Jun 2022 17:48:13 +0100 (BST) [thread overview]
Message-ID: <alpine.DEB.2.20.2206281143030.10833@tpp.orcam.me.uk> (raw)
In-Reply-To: <877d56azv6.fsf@redhat.com>
On Fri, 24 Jun 2022, Andrew Burgess wrote:
> > Consistently with the `var_integer' and `var_uinteger' parameters return
> > the special value of None for a `var_zuinteger_unlimited' parameter set
> > to `unlimited' by using the Py_RETURN_NONE macro in this case, fixing
> > commit 0489430a0e1a ("Handle var_zuinteger and var_zuinteger_unlimited
> > from Python"); cf. PR python/20084. Adjust the testsuite
> > accordingly.
>
> Unfortunately, nice as it would be to make this change (for
> consistency), I think we're stuck with what we have.
Yes, this does seem a bit risky, however we already have a documented
precedent for a similar API correction:
-- Function: gdb.breakpoints ()
Return a sequence holding all of GDB's breakpoints. *Note
Breakpoints In Python::, for more information. In GDB version 7.11
and earlier, this function returned 'None' if there were no
breakpoints. This peculiarity was subsequently fixed, and now
'gdb.breakpoints' returns an empty sequence in this case.
and here the peculiarity/inconsistency in my opinion is even more
prominent.
> The -1 behaviour is documented for PARAM_ZUINTEGER_UNLIMITED in the
> manual so it is not unreasonable to assume that there could be code in
> the wild that relies on the existing behaviuor.
Well, but that is not different from the two other cases, which have no
mention of 'None':
'gdb.PARAM_UINTEGER'
The value is an unsigned integer. The value of 0 should be
interpreted to mean "unlimited".
'gdb.PARAM_INTEGER'
The value is a signed integer. The value of 0 should be
interpreted to mean "unlimited".
even they do return 'None' for "unlimited", and then as you say:
'gdb.PARAM_ZUINTEGER_UNLIMITED'
The value is a signed integer. This is like 'PARAM_ZUINTEGER',
except the special value -1 should be interpreted to mean
"unlimited". Other negative values are not allowed.
So what I think would be best to do here is actually (having missed the
manual part before):
1. Accept (if we don't already; I haven't checked) and document 'None' as
input to parameters of these types, meaning "unlimited".
2. Deprecate and undocument but keep accepting special numeric values as
input to such parameters.
3. Produce and document 'None' as output for special "unlimited" numeric
values consistently from all such parameters.
Yes, there could be some fallout from such a change, however it should be
easy to correct in Python code. What would be a typical use case in
Python code for retrieving these parameters? And how is 'None' handled by
Python when just passed to a `print' like standard routine to present it
to the user?
Given that PARAM_ZUINTEGER_UNLIMITED has been retrofitted chances are its
handling in user code has been as well to existing code for PARAM_UINTEGER
and PARAM_INTEGER, and it may already handle 'None' for all the three by
default, before going on to special-casing the special values actually
documented.
Please let me know what you think, and thank you for your review.
Maciej
next prev parent reply other threads:[~2022-06-29 16:48 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-30 10:23 [PATCH v5 0/8] gdb: split array and string limiting options Maciej W. Rozycki
2022-03-30 10:23 ` [PATCH v5 1/8] GDB: Remove extraneous full stops from `set' command error messages Maciej W. Rozycki
2022-06-24 14:32 ` Andrew Burgess
2022-06-29 14:29 ` Maciej W. Rozycki
2022-03-30 10:23 ` [PATCH v5 2/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited' Maciej W. Rozycki
2022-03-30 10:35 ` Simon Sobisch
2022-03-30 10:40 ` Maciej W. Rozycki
2022-03-30 10:50 ` Simon Sobisch
2022-03-30 11:52 ` Maciej W. Rozycki
2022-06-24 14:40 ` Andrew Burgess
2022-06-29 16:48 ` Maciej W. Rozycki [this message]
2022-03-30 10:24 ` [PATCH v5 3/8] GDB: Add `NUMBER' completion to `set' integer commands Maciej W. Rozycki
2022-05-25 18:36 ` Bruno Larsen
2022-05-26 10:09 ` Maciej W. Rozycki
2022-05-26 11:46 ` Bruno Larsen
2022-05-26 14:24 ` Maciej W. Rozycki
2022-06-24 15:08 ` Andrew Burgess
2022-06-30 14:24 ` [PATCH v6 " Maciej W. Rozycki
2022-06-30 15:53 ` Eli Zaretskii
2022-06-30 18:59 ` Maciej W. Rozycki
2022-06-30 16:01 ` Andrew Burgess
2022-03-30 10:24 ` [PATCH v5 4/8] GDB/testsuite: Tighten `set print elements' error check Maciej W. Rozycki
2022-06-24 15:09 ` Andrew Burgess
2022-06-29 14:29 ` Maciej W. Rozycki
2022-03-30 10:24 ` [PATCH v5 5/8] GDB/testsuite: Add coverage for `print -elements' command Maciej W. Rozycki
2022-06-24 15:57 ` Andrew Burgess
2022-07-07 11:04 ` Maciej W. Rozycki
2022-03-30 10:24 ` [PATCH v5 6/8] GDB: Allow arbitrary keywords in integer set commands Maciej W. Rozycki
2022-03-30 10:42 ` Simon Sobisch
2022-03-30 10:58 ` Maciej W. Rozycki
2022-06-28 14:04 ` Andrew Burgess
2022-08-17 22:03 ` Maciej W. Rozycki
2022-03-30 10:24 ` [PATCH v5 7/8] GDB: Add a character string limiting option Maciej W. Rozycki
2022-03-30 12:29 ` Eli Zaretskii
2022-03-30 10:24 ` [PATCH v5 8/8] GDB/testsuite: Expand for character string limiting options Maciej W. Rozycki
2022-04-13 11:20 ` [PING][PATCH v5 0/8] gdb: split array and " Maciej W. Rozycki
2022-04-13 12:10 ` Simon Sobisch
2022-04-13 12:18 ` Maciej W. Rozycki
2022-04-20 19:17 ` [PING^2][PATCH " Maciej W. Rozycki
2022-04-26 19:57 ` Simon Sobisch
2022-04-27 12:00 ` Maciej W. Rozycki
2022-04-27 12:02 ` [PING^3][PATCH " Maciej W. Rozycki
2022-05-04 10:05 ` [PING^4][PATCH " Maciej W. Rozycki
2022-05-12 21:20 ` [PING^5][PATCH " Maciej W. Rozycki
2022-05-20 10:49 ` [PING^6][PATCH " Maciej W. Rozycki
2022-05-25 15:52 ` [PING^7][PATCH " Maciej W. Rozycki
2022-05-25 19:20 ` [PATCH " Bruno Larsen
2022-06-02 17:55 ` [PING^8][PATCH " Maciej W. Rozycki
2022-06-07 17:23 ` Simon Sobisch
2022-06-15 22:47 ` [PING^9][PATCH " Maciej W. Rozycki
2022-06-22 11:25 ` [PING^10][PATCH " Maciej W. Rozycki
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=alpine.DEB.2.20.2206281143030.10833@tpp.orcam.me.uk \
--to=macro@embecosm.com \
--cc=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=simonsobisch@web.de \
--cc=tom@tromey.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).