From: Luis Machado via Gdb-patches <gdb-patches@sourceware.org>
To: "Maciej W. Rozycki" <macro@embecosm.com>, gdb-patches@sourceware.org
Cc: Simon Sobisch <simonsobisch@web.de>, Tom Tromey <tom@tromey.com>
Subject: Re: [PATCH v6 5/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited'
Date: Wed, 26 Oct 2022 12:58:05 +0100 [thread overview]
Message-ID: <f8136499-7a77-cd86-1bb7-96479cb31764@arm.com> (raw)
In-Reply-To: <alpine.DEB.2.20.2208171751060.10833@tpp.orcam.me.uk>
Hi,
I'm seeing a number of new failures on armhf Ubuntu 20.04 for both gdb.python/py-format-address.exp and gdb.python/py-parameter.exp.
Since this series touched those, I'm wondering if those are known.
FAIL: gdb.python/py-format-address.exp: symbol_filename=off: gdb.format_address, result should have an offset
FAIL: gdb.python/py-format-address.exp: symbol_filename=on: gdb.format_address, result should have an offset
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test default value
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test default value via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test set to 0
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test set to 1
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test set to 5
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of -1
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of -1 via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of -5 via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of 0 via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of 1
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of 1 via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of 5 via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of None
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: test value of None via gdb.parameter
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: {test set to -1}
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: {test set to -5}
FAIL: gdb.python/py-parameter.exp: test_integer_parameter: kind=PARAM_UINTEGER: {test set to None}
On 8/17/22 23:04, Maciej W. Rozycki wrote:
> Consistently with parameters of the PARAM_UINTEGER and PARAM_INTEGER
> types return the special value of `None' for a PARAM_ZUINTEGER_UNLIMITED
> parameter set to `unlimited', fixing an inconsistency introduced with
> commit 0489430a0e1a ("Handle var_zuinteger and var_zuinteger_unlimited
> from Python"); cf. PR python/20084. Adjust the testsuite accordingly.
>
> This makes all the three parameter types consistent with each other as
> far as the use of `None' is concerned, and similar to the Guile/Scheme
> interface where the `#:unlimited' keyword is likewise used. We have a
> precedent already documented 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.
>
> made in the past.
>
> And then we have documentation not matching the interface as far as the
> value of `None' already returned for parameters of the PARAM_UINTEGER
> and PARAM_INTEGER types is concerned, and the case of an incorrect
> assertion for PARAM_UINTEGER and PARAM_ZUINTEGER_UNLIMITED parameters in
> the sibling Guile/Scheme module making such parameters unusable that has
> never been reported, both indicating that these features may indeed not
> be heavily used, and therefore that the risk from such an API change is
> likely lower than the long-term burden of the inconsistency.
>
> And where the value read from a parameter is only used for presentation
> purposes, then such a change is expected to be transparent.
> ---
> Changes from v5:
>
> - Refer to Python parameter types in the change description rather than
> underlying GDB variable types in preparation for breaking the tight
> coupling between the two later in this series.
>
> - Document existing and updated semantics in the GDB manual.
>
> - Update the testsuite adjustment to fit in the now expanded test case.
>
> - Add a NEWS entry.
>
> No change from v4.
>
> New change in v4.
> ---
> gdb/NEWS | 7 +++++++
> gdb/doc/python.texi | 30 +++++++++++++++++++-----------
> gdb/python/python.c | 10 +++++++++-
> gdb/testsuite/gdb.python/py-parameter.exp | 16 +++++-----------
> 4 files changed, 40 insertions(+), 23 deletions(-)
>
> Index: src/gdb/NEWS
> ===================================================================
> --- src.orig/gdb/NEWS
> +++ src/gdb/NEWS
> @@ -175,6 +175,13 @@ GNU/Linux/LoongArch (gdbserver) loongarc
> gdb.BreakpointLocation objects specifying the locations where the
> breakpoint is inserted into the debuggee.
>
> + ** Parameters of gdb.PARAM_ZUINTEGER_UNLIMITED type now return the
> + value of None for the 'unlimited' setting, consistently with
> + parameters of gdb.PARAM_UINTEGER and gdb.PARAM_INTEGER types.
> + Parameters of all the three types now accept the value of None
> + to mean 'unlimited'. The use of internal integer representation
> + for the 'unlimited' setting is now deprecated.
> +
> * New features in the GDB remote stub, GDBserver
>
> ** GDBserver is now supported on LoongArch GNU/Linux.
> Index: src/gdb/doc/python.texi
> ===================================================================
> --- src.orig/gdb/doc/python.texi
> +++ src/gdb/doc/python.texi
> @@ -4598,14 +4598,16 @@ Python, true and false are represented u
> @findex PARAM_UINTEGER
> @findex gdb.PARAM_UINTEGER
> @item gdb.PARAM_UINTEGER
> -The value is an unsigned integer. The value of 0 should be
> -interpreted to mean ``unlimited''.
> +The value is an unsigned integer. The value of @code{None} should be
> +interpreted to mean ``unlimited'', and the value of 0 is reserved and
> +should not be used.
>
> @findex PARAM_INTEGER
> @findex gdb.PARAM_INTEGER
> @item gdb.PARAM_INTEGER
> -The value is a signed integer. The value of 0 should be interpreted
> -to mean ``unlimited''.
> +The value is a signed integer. The value of @code{None} should be
> +interpreted to mean ``unlimited'', and the value of 0 is reserved and
> +should not be used.
>
> @findex PARAM_STRING
> @findex gdb.PARAM_STRING
> @@ -4635,21 +4637,27 @@ The value is a filename. This is just l
> @findex PARAM_ZINTEGER
> @findex gdb.PARAM_ZINTEGER
> @item gdb.PARAM_ZINTEGER
> -The value is an integer. This is like @code{PARAM_INTEGER}, except 0
> -is interpreted as itself.
> +The value is a signed integer. This is like @code{PARAM_INTEGER},
> +except that 0 is allowed and the value of @code{None} is not supported.
>
> @findex PARAM_ZUINTEGER
> @findex gdb.PARAM_ZUINTEGER
> @item gdb.PARAM_ZUINTEGER
> -The value is an unsigned integer. This is like @code{PARAM_INTEGER},
> -except 0 is interpreted as itself, and the value cannot be negative.
> +The value is an unsigned integer. This is like @code{PARAM_UINTEGER},
> +except that 0 is allowed and the value of @code{None} is not supported.
>
> @findex PARAM_ZUINTEGER_UNLIMITED
> @findex gdb.PARAM_ZUINTEGER_UNLIMITED
> @item gdb.PARAM_ZUINTEGER_UNLIMITED
> -The value is a signed integer. This is like @code{PARAM_ZUINTEGER},
> -except the special value -1 should be interpreted to mean
> -``unlimited''. Other negative values are not allowed.
> +The value is a signed integer. This is like @code{PARAM_INTEGER}
> +including that the value of @code{None} should be interpreted to mean
> +``unlimited'', except that 0 is allowed, and the value cannot be negative.
> +
> +In GDB version 12 and earlier, a parameter of this type when read would
> +return -1 rather than @code{None} for the setting of ``unlimited''.
> +This peculiarity was subsequently fixed, for consistency with parameters
> +of @code{PARAM_UINTEGER} and @code{PARAM_INTEGER} types, so that all the
> +three types return the value of @code{None} for ``unlimited''.
>
> @findex PARAM_ENUM
> @findex gdb.PARAM_ENUM
> Index: src/gdb/python/python.c
> ===================================================================
> --- src.orig/gdb/python/python.c
> +++ src/gdb/python/python.c
> @@ -509,9 +509,17 @@ gdbpy_parameter_value (const setting &va
> Py_RETURN_NONE;
> /* Fall through. */
> case var_zinteger:
> - case var_zuinteger_unlimited:
> return gdb_py_object_from_longest (var.get<int> ()).release ();
>
> + case var_zuinteger_unlimited:
> + {
> + int val = var.get<int> ();
> +
> + if (val == -1)
> + Py_RETURN_NONE;
> + return gdb_py_object_from_longest (val).release ();
> + }
> +
> case var_uinteger:
> {
> unsigned int val = var.get<unsigned int> ();
> Index: src/gdb/testsuite/gdb.python/py-parameter.exp
> ===================================================================
> --- src.orig/gdb/testsuite/gdb.python/py-parameter.exp
> +++ src/gdb/testsuite/gdb.python/py-parameter.exp
> @@ -346,22 +346,16 @@ proc_with_prefix test_gdb_parameter { }
> "listsize" {
> set param_get_zero None
> set param_get_minus_one -1
> - set param_get_none None
> - set param_get_unlimited None
> set param_set_minus_one ""
> }
> "print elements" {
> set param_get_zero None
> set param_get_minus_one None
> - set param_get_none None
> - set param_get_unlimited None
> set param_set_minus_one $param_range_error
> }
> "max-completions" {
> set param_get_zero 0
> - set param_get_minus_one -1
> - set param_get_none -1
> - set param_get_unlimited -1
> + set param_get_minus_one None
> set param_set_minus_one ""
> }
> default {
> @@ -392,13 +386,13 @@ proc_with_prefix test_gdb_parameter { }
> "test set to None"
>
> gdb_test "python print(gdb.parameter('$param'))" \
> - $param_get_none "test value of None"
> + None "test value of None"
>
> gdb_test_no_output "python gdb.set_parameter('$param', 'unlimited')" \
> "test set to 'unlimited'"
>
> gdb_test "python print(gdb.parameter('$param'))" \
> - $param_get_unlimited "test value of 'unlimited'"
> + None "test value of 'unlimited'"
> }
>
> clean_restart
> @@ -468,9 +462,9 @@ proc_with_prefix test_integer_parameter
> }
> PARAM_ZUINTEGER_UNLIMITED {
> set param_get_zero 0
> - set param_get_minus_one -1
> + set param_get_minus_one None
> set param_get_minus_five 1
> - set param_get_none -1
> + set param_get_none None
> set param_set_minus_one ""
> set param_set_minus_five $param_range_error
> set param_set_none ""
next prev parent reply other threads:[~2022-10-26 11:58 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-17 22:03 [PATCH v6 0/8] gdb: split array and string limiting options Maciej W. Rozycki
2022-08-17 22:03 ` [PATCH v6 1/8] GDB/Guile: Don't assert that an integer value is boolean Maciej W. Rozycki
2022-10-17 13:43 ` Simon Marchi via Gdb-patches
2022-10-21 7:58 ` Maciej W. Rozycki
2022-10-21 18:44 ` Simon Marchi via Gdb-patches
2022-10-21 20:54 ` Maciej W. Rozycki
2022-10-22 0:48 ` Simon Marchi via Gdb-patches
2022-08-17 22:03 ` [PATCH v6 2/8] GDB/doc: Document the Guile `#:unlimited' keyword Maciej W. Rozycki
2022-08-18 6:06 ` Eli Zaretskii via Gdb-patches
2022-09-01 10:31 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 3/8] GDB/testsuite: Expand Python integer parameter coverage across all types Maciej W. Rozycki
2022-10-17 13:56 ` Simon Marchi via Gdb-patches
2022-10-21 7:59 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 4/8] GDB/Python: Make `None' stand for `unlimited' in setting integer parameters Maciej W. Rozycki
2022-10-17 14:26 ` Simon Marchi via Gdb-patches
2022-10-21 8:03 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 5/8] GDB/Python: Use None for `var_zuinteger_unlimited' value set to `unlimited' Maciej W. Rozycki
2022-08-18 6:08 ` Eli Zaretskii via Gdb-patches
2022-10-17 15:02 ` Simon Marchi via Gdb-patches
2022-10-29 15:58 ` Maciej W. Rozycki
2022-10-31 13:00 ` Simon Marchi via Gdb-patches
2022-10-31 13:31 ` Maciej W. Rozycki
2022-11-01 12:28 ` Maciej W. Rozycki
2022-10-26 11:58 ` Luis Machado via Gdb-patches [this message]
2022-10-29 13:52 ` Maciej W. Rozycki
2022-10-31 8:14 ` Luis Machado via Gdb-patches
2022-10-31 12:37 ` Luis Machado via Gdb-patches
2022-10-31 13:08 ` Maciej W. Rozycki
2022-10-31 13:14 ` Luis Machado via Gdb-patches
2022-10-31 14:05 ` Maciej W. Rozycki
2022-08-17 22:04 ` [PATCH v6 6/8] GDB: Allow arbitrary keywords in integer set commands Maciej W. Rozycki
2022-08-17 22:05 ` [PATCH v6 7/8] GDB: Add a character string limiting option Maciej W. Rozycki
2022-08-17 22:05 ` [PATCH v6 8/8] GDB/testsuite: Expand for character string limiting options Maciej W. Rozycki
2022-08-18 0:07 ` [PATCH v6.1 " Maciej W. Rozycki
2022-09-01 10:32 ` [PING][PATCH v6 0/8] gdb: split array and " Maciej W. Rozycki
2022-09-08 9:37 ` [PING^2][PATCH " Maciej W. Rozycki
2022-09-14 17:43 ` [PING^3][PATCH " Maciej W. Rozycki
2022-09-22 22:07 ` [PING^4][PATCH " Maciej W. Rozycki
2022-09-29 7:09 ` [PING^5][PATCH " Maciej W. Rozycki
2022-09-29 7:12 ` Simon Sobisch via Gdb-patches
2022-10-06 15:46 ` [PING^6][PATCH " Maciej W. Rozycki
2022-10-12 21:19 ` [PING^7][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=f8136499-7a77-cd86-1bb7-96479cb31764@arm.com \
--to=gdb-patches@sourceware.org \
--cc=luis.machado@arm.com \
--cc=macro@embecosm.com \
--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