diff options
author | Tom Tromey <tom@tromey.com> | 2017-07-11 06:40:40 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-08-14 10:14:05 -0600 |
commit | d6382fffde99214ce4aee99a208ddb703c647008 (patch) | |
tree | 91590151181ced3a46bf0dc6ea123036198bea30 /gdb/printcmd.c | |
parent | f978cb06dbfbd93dbd52bd39d992f8644b0c639e (diff) | |
download | gdb-d6382fffde99214ce4aee99a208ddb703c647008.zip gdb-d6382fffde99214ce4aee99a208ddb703c647008.tar.gz gdb-d6382fffde99214ce4aee99a208ddb703c647008.tar.bz2 |
Fix two regressions in scalar printing
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 "/d" causes a floating
point number to first be cast to a signed integer. This patch restores
this behavior.
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.
ChangeLog
2017-08-14 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' case.
testsuite/ChangeLog
2017-08-14 Tom Tromey <tom@tromey.com>
PR gdb/21675:
* gdb.base/printcmds.exp (test_radices): New function.
* gdb.dwarf2/var-access.exp: Use p/u, not p/d.
* gdb.base/sizeof.exp (check_valueof): Use p/d.
* lib/gdb.exp (get_integer_valueof): Use p/d.
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r-- | gdb/printcmd.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c index d5c83f0..a1231d4 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,13 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type, case 'o': print_octal_chars (stream, valaddr, len, byte_order); break; + case 'd': + print_decimal_chars (stream, valaddr, len, true, byte_order); + break; case 'u': print_decimal_chars (stream, valaddr, len, false, byte_order); break; case 0: - case 'd': if (TYPE_CODE (type) != TYPE_CODE_FLT) { print_decimal_chars (stream, valaddr, len, !TYPE_UNSIGNED (type), |