This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] add-symbol-file not to print address truncated
A Sunday 04 May 2008 00:48:35, Adam Nemet wrote:
> Pedro Alves writes:
> > Would paddr_nz (in utils.c) do the trick?
>
> I thought of that but I don't think it would truncate the value when it
> needs to be truncated. IOW, note the masking in hex_string_addr.
>
Ah, that looks like paddress then, except for the width.
const char *
paddress (CORE_ADDR addr)
{
/* Truncate address to the size of a target address, avoiding shifts
larger or equal than the width of a CORE_ADDR. The local
variable ADDR_BIT stops the compiler reporting a shift overflow
when it won't occur. */
/* NOTE: This assumes that the significant address information is
kept in the least significant bits of ADDR - the upper bits were
either zero or sign extended. Should gdbarch_address_to_pointer or
some ADDRESS_TO_PRINTABLE() be used to do the conversion? */
int addr_bit = gdbarch_addr_bit (current_gdbarch);
if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
return hex_string (addr);
}
char *
hex_string_addr (CORE_ADDR addr)
{
int addr_bit = gdbarch_addr_bit (current_gdbarch);
if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
return hex_string_custom (addr, addr_bit <= 32 ? 8 : 16);
}
--
Pedro Alves