Fix info mem command for 32 bits host/64 bits target
Commit Message
Hi,
I follow-up for an old patch that I've noticed it's not pushed yet.
Please see below the reference to previous conversation, bug entry and
the updated patch.
This is the latest conversation for this patch:
https://sourceware.org/ml/gdb-patches/2013-06/msg00806.html
Bug entry:
http://sourceware.org/bugzilla/show_bug.cgi?id=15684
gdb/ChangeLog:
2014-11-05 Catalin Udma <catalin.udma@freescale.com>
PR gdb/15684
* memattr.c (mem_info_command): Remove "unsigned long" casts.
Subject: [PATCH] Fix info mem command for 32 bits host/64 bits target
When running gdb on 32 bits host for 64 bits target, info mem command
truncates the target address to 32 bits, like in the example below
(gdb) set architecture powerpc:common64
(gdb) mem 0x100000000 0x200000000 rw
(gdb) info mem
1 y 0x0000000000000000 0x0000000000000000 rw nocache
Signed-off-by: Catalin Udma <catalin.udma@freescale.com>
---
gdb/memattr.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
Comments
On 12/05/2014 08:43 AM, catalin.udma@freescale.com wrote:
> Hi,
> I follow-up for an old patch that I've noticed it's not pushed yet.
> Please see below the reference to previous conversation, bug entry and
> the updated patch.
>
> This is the latest conversation for this patch:
> https://sourceware.org/ml/gdb-patches/2013-06/msg00806.html
>
> Bug entry:
> http://sourceware.org/bugzilla/show_bug.cgi?id=15684
>
>
> gdb/ChangeLog:
>
> 2014-11-05 Catalin Udma <catalin.udma@freescale.com>
>
> PR gdb/15684
> * memattr.c (mem_info_command): Remove "unsigned long" casts.
OK, please push.
Thanks,
Pedro Alves
@@ -447,9 +447,9 @@ mem_info_command (char *args, int from_tty)
m->number,
m->enabled_p ? 'y' : 'n');
if (gdbarch_addr_bit (target_gdbarch ()) <= 32)
- tmp = hex_string_custom ((unsigned long) m->lo, 8);
+ tmp = hex_string_custom (m->lo, 8);
else
- tmp = hex_string_custom ((unsigned long) m->lo, 16);
+ tmp = hex_string_custom (m->lo, 16);
printf_filtered ("%s ", tmp);
@@ -458,14 +458,14 @@ mem_info_command (char *args, int from_tty)
if (m->hi == 0)
tmp = "0x100000000";
else
- tmp = hex_string_custom ((unsigned long) m->hi, 8);
+ tmp = hex_string_custom (m->hi, 8);
}
else
{
if (m->hi == 0)
tmp = "0x10000000000000000";
else
- tmp = hex_string_custom ((unsigned long) m->hi, 16);
+ tmp = hex_string_custom (m->hi, 16);
}
printf_filtered ("%s ", tmp);