diff options
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r-- | gdb/printcmd.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 746a064..63b7464 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -390,6 +390,12 @@ print_scalar_formatted (char *valaddr, struct type *type, int format, int size, else if (format != 'f') val_long = unpack_long (type, valaddr); + /* If the value is a pointer, and pointers and addresses are not the + same, then at this point, the value's length is TARGET_ADDR_BIT, not + TYPE_LENGTH (type). */ + if (TYPE_CODE (type) == TYPE_CODE_PTR) + len = TARGET_ADDR_BIT; + /* If we are printing it as unsigned, truncate it in case it is actually a negative signed value (e.g. "print/u (short)-1" should print 65535 (if shorts are 16 bits) instead of 4294967295). */ |