diff options
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r-- | gdb/printcmd.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c index a93ddbf..9734ec1 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -350,6 +350,33 @@ print_scalar_formatted (void *valaddr, struct type *type, int format, int size, LONGEST val_long = 0; unsigned int len = TYPE_LENGTH (type); + if (len > sizeof(LONGEST) && + (TYPE_CODE (type) == TYPE_CODE_INT + || TYPE_CODE (type) == TYPE_CODE_ENUM)) + { + switch (format) + { + case 'o': + print_octal_chars (stream, valaddr, len); + return; + case 'u': + case 'd': + print_decimal_chars (stream, valaddr, len); + return; + case 't': + print_binary_chars (stream, valaddr, len); + return; + case 'x': + print_hex_chars (stream, valaddr, len); + return; + case 'c': + print_char_chars (stream, valaddr, len); + return; + default: + break; + }; + } + if (format != 'f') val_long = unpack_long (type, valaddr); |