Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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.  */
> 


      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