From: Thomas Preudhomme <thomas.preudhomme@foss.arm.com>
To: Tom Tromey <tom@tromey.com>, gdb-patches@sourceware.org
Subject: Re: [RFA 1/2] Fix two regressions in scalar printing
Date: Fri, 25 Aug 2017 16:54:00 -0000 [thread overview]
Message-ID: <964b3838-d96d-f0d3-9dbd-04add95bf609@foss.arm.com> (raw)
In-Reply-To: <20170713123400.28917-2-tom@tromey.com>
Hi Tom,
As raised in [1], this patch creates a regression on arm targets in:
gdb.base/sizeof.exp: check valueof "'\377'"
I've taken the liberty of creating a bugzilla ticket [2] where I added some more
info of things I've tried.
[1] https://sourceware.org/ml/gdb-testers/2017-q3/msg01944.html
[2] https://sourceware.org/bugzilla/show_bug.cgi?id=22010
Please let me know if I can be of any help in fixing that bug.
Best regards,
Thomas
On 13/07/17 13:33, Tom Tromey wrote:
> PR gdb/21675 points out a few regressions in scalar printing.
>
> One type of regression is due to not carrying over the old handling of
> floating point printing -- where a format like "/x" causes a floating
> point number to first be cast to integer. While this behavior does not
> seem very useful to me, apparently at least one person is testing for
> it, and we did agree in the earlier thread to preserve this. So, this
> patch extends this behavior to the 'd' and 'u' formats.
>
> The other regression is a longstanding bug in print_octal_chars: one of
> the constants was wrong. This patch fixes the constant and adds static
> asserts to help catch this sort of error.
>
> 2017-07-13 Tom Tromey <tom@tromey.com>
>
> PR gdb/21675
> * valprint.c (LOW_ZERO): Change value to 034.
> (print_octal_chars): Add static_asserts for octal constants.
> * printcmd.c (print_scalar_formatted): Add 'd' and 'u' to special
> cases for float types.
>
> 2017-07-13 Tom Tromey <tom@tromey.com>
>
> PR gdb/21675:
> * gdb.base/printcmds.exp (test_radices): New function.
> ---
> gdb/ChangeLog | 8 ++++++++
> gdb/printcmd.c | 11 ++++++++---
> gdb/testsuite/ChangeLog | 5 +++++
> gdb/testsuite/gdb.base/printcmds.exp | 8 ++++++++
> gdb/valprint.c | 8 +++++++-
> 5 files changed, 36 insertions(+), 4 deletions(-)
>
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 012b3e4..5ac5bab 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,11 @@
> +2017-07-13 Tom Tromey <tom@tromey.com>
> +
> + PR gdb/21675
> + * valprint.c (LOW_ZERO): Change value to 034.
> + (print_octal_chars): Add static_asserts for octal constants.
> + * printcmd.c (print_scalar_formatted): Add 'd' and 'u' to special
> + cases for float types.
> +
> 2017-07-11 John Baldwin <jhb@FreeBSD.org>
>
> * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
> diff --git a/gdb/printcmd.c b/gdb/printcmd.c
> index a8cc052..cd615ec 100644
> --- a/gdb/printcmd.c
> +++ b/gdb/printcmd.c
> @@ -413,7 +413,9 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
> && (options->format == 'o'
> || options->format == 'x'
> || options->format == 't'
> - || options->format == 'z'))
> + || options->format == 'z'
> + || options->format == 'd'
> + || options->format == 'u'))
> {
> LONGEST val_long = unpack_long (type, valaddr);
> converted_float_bytes.resize (TYPE_LENGTH (type));
> @@ -427,11 +429,14 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
> case 'o':
> print_octal_chars (stream, valaddr, len, byte_order);
> break;
> + case 'd':
> case 'u':
> - print_decimal_chars (stream, valaddr, len, false, byte_order);
> + {
> + bool is_signed = options->format != 'u' || !TYPE_UNSIGNED (type);
> + print_decimal_chars (stream, valaddr, len, is_signed, byte_order);
> + }
> break;
> case 0:
> - case 'd':
> if (TYPE_CODE (type) != TYPE_CODE_FLT)
> {
> print_decimal_chars (stream, valaddr, len, !TYPE_UNSIGNED (type),
> diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
> index aa3dee3..0c8481b 100644
> --- a/gdb/testsuite/ChangeLog
> +++ b/gdb/testsuite/ChangeLog
> @@ -1,3 +1,8 @@
> +2017-07-13 Tom Tromey <tom@tromey.com>
> +
> + PR gdb/21675:
> + * gdb.base/printcmds.exp (test_radices): New function.
> +
> 2017-07-11 Iain Buclaw <ibuclaw@gdcproject.org>
>
> * gdb.dlang/demangle.exp: Update for demangling changes.
> diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp
> index 323ca73..03275c3 100644
> --- a/gdb/testsuite/gdb.base/printcmds.exp
> +++ b/gdb/testsuite/gdb.base/printcmds.exp
> @@ -155,6 +155,13 @@ proc test_float_rejected {} {
> test_print_reject "p 1.1ll"
> }
>
> +# Regression test for PR gdb/21675
> +proc test_radices {} {
> + gdb_test "print/o 16777211" " = 077777773"
> + gdb_test "print/d 1.5" " = 1\[^.\]"
> + gdb_test "print/u 1.5" " = 1\[^.\]"
> +}
> +
> proc test_print_all_chars {} {
> global gdb_prompt
>
> @@ -981,3 +988,4 @@ test_printf
> test_printf_with_dfp
> test_print_symbol
> test_repeat_bytes
> +test_radices
> diff --git a/gdb/valprint.c b/gdb/valprint.c
> index 1667882..9e216cf 100644
> --- a/gdb/valprint.c
> +++ b/gdb/valprint.c
> @@ -1593,15 +1593,21 @@ print_octal_chars (struct ui_file *stream, const gdb_byte *valaddr,
> */
> #define BITS_IN_OCTAL 3
> #define HIGH_ZERO 0340
> -#define LOW_ZERO 0016
> +#define LOW_ZERO 0034
> #define CARRY_ZERO 0003
> + static_assert (HIGH_ZERO + LOW_ZERO + CARRY_ZERO == 0xff,
> + "cycle zero constants are wrong");
> #define HIGH_ONE 0200
> #define MID_ONE 0160
> #define LOW_ONE 0016
> #define CARRY_ONE 0001
> + static_assert (HIGH_ONE + MID_ONE + LOW_ONE + CARRY_ONE == 0xff,
> + "cycle one constants are wrong");
> #define HIGH_TWO 0300
> #define MID_TWO 0070
> #define LOW_TWO 0007
> + static_assert (HIGH_TWO + MID_TWO + LOW_TWO == 0xff,
> + "cycle two constants are wrong");
>
> /* For 32 we start in cycle 2, with two bits and one bit carry;
> for 64 in cycle in cycle 1, with one bit and a two bit carry. */
>
prev parent reply other threads:[~2017-08-25 16:54 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170713123400.28917-1-tom@tromey.com>
2017-07-13 12:34 ` [RFA 2/2] Remove BITS_IN_BYTES define Tom Tromey
2017-07-14 15:16 ` Pedro Alves
2017-07-14 16:15 ` Tom Tromey
2017-07-13 12:35 ` [RFA 1/2] Fix two regressions in scalar printing Tom Tromey
2017-07-14 14:56 ` Pedro Alves
2017-07-14 15:20 ` Eli Zaretskii
2017-07-14 16:50 ` Tom Tromey
2017-07-14 17:25 ` Pedro Alves
2017-07-31 22:03 ` Tom Tromey
2017-08-14 14:02 ` Pedro Alves
2017-08-14 15:22 ` Tom Tromey
2017-08-14 15:43 ` Tom Tromey
2017-08-14 15:52 ` Pedro Alves
2017-08-17 2:24 ` Tom Tromey
2017-12-10 14:15 ` Regression on 32-bit: gdb.guile/scm-ports.exp [Re: [RFA 1/2] Fix two regressions in scalar printing] Jan Kratochvil
2017-07-14 15:19 ` [RFA 1/2] Fix two regressions in scalar printing Jonah Graham
2017-08-25 16:54 ` Thomas Preudhomme [this message]
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=964b3838-d96d-f0d3-9dbd-04add95bf609@foss.arm.com \
--to=thomas.preudhomme@foss.arm.com \
--cc=gdb-patches@sourceware.org \
--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