strange dereferencing behavior in gdb expressions
Daniel Jacobowitz
drow@false.org
Thu Jan 26 00:41:00 GMT 2006
On Wed, Jan 25, 2006 at 11:42:30AM -0800, PAUL GILLIAM wrote:
> This seems inconsistent: GDB says it can't access memory at an address,
> but when given that address explicitly, it works fine.
>
> GDB was configured like this: CC='gcc -m64' ../src/configure
> (i.e. GDB
> is a 64-bit application)
>
> The target application is a 32-bit 'C' program.
>
> (gdb) show version
> GNU gdb 6.4.50.20060124-cvs
> ...
> This GDB was configured as "powerpc64-unknown-linux-gnu".
> (gdb) p/x *(*(0xffffc4a0)+4)
> Cannot access memory at address 0xffffc504
> (gdb) p/x *(int*)((*(int*)0xffffc4a0)+4)
> $42 = 0xfd7e67c
> (gdb) p/x *(0xffffc4a0)+4
> $43 = 0xffffc504
> (gdb) p/x *($43)
> Cannot access memory at address 0xffffc504
> (gdb) p/x *(0xffffc504)
> $44 = 0xfd7e67c
> (gdb)
>
> Anyone what to hazard a guess as to what is going on?
I've had this happen when memory_error truncates the address; might
want to set a breakpoint there, and see if one of them is sign extended
differently than the other due to their different types.
--
Daniel Jacobowitz
CodeSourcery
More information about the Gdb
mailing list