public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
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

  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).