This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 64bit pointer


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thu, 03 Sep 2009 12:33:25 +0000 Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
>On Thu, 03 Sep 2009 14:21:41 +0200, freindlyuser@hushmail.com
>wrote:
>> (gdb) x/s *($rdi+0x8)
>> 0x4210a9b7:      <Address 0x4210a9b7 out of bounds>
>
>This syntax is not much recommended, it means the same as:
>
>(gdb) x/s *(int *) ($rdi+0x8)
>0x4210a9b7:      <Address 0x4210a9b7 out of bounds>
>
>On 64bit arch sizeof (int) == 4 but sizeof (void *) == 8 so you
>will not fetch
>the whole address.
>
>
>> (gdb) x/x $rdi+0x8
>> 0x3a9b4210b7a4: 0x00003a9b4210a9b7
>> (gdb) x/s 0x00003a9b4210a9b7
>> 0x3a9b4210a9b7:  "The string it points to"
>
>Therefore you want one indirection there.
>
>> Should this be happening?
>
>Yes.  Until GDB forbids dereferencing numeric arguments as `int *'
>which IMHO
>is more confusing than convenient.  [Would a patch be approved?]
>
>
>> Is there a work around where I can read the data in
>> 0x00003a9b4210a9b7 without having to manually copy and paste
>(ie:
>> in the commands that are executed on a breakpoint).
>
>This way it should work:
>
>(gdb) x/s *(void **) ($rdi+0x8)
>OR
>(gdb) p *(char **) ($rdi+0x8)
>
>
>Regards,
>Jan

The work around works perfectly.

Thank you.
-----BEGIN PGP SIGNATURE-----
Charset: UTF8
Version: Hush 3.0
Note: This signature can be verified at https://www.hushtools.com/verify

wpwEAQMCAAYFAkqfxDYACgkQWX1/rrecYT2g+gP+J6na4+MXovA7SJRD1oYPKqbZ9Pu1
Ik4vBR5BFt6RLV0zrYXsAnEq1xOXnac1q3r9XNUA0R1jmKtEFYvJjH44KpdzwIwBBRSS
7M7qeaHZZhDEgfJOFUgWS5KUJgjwRo4Rm2lGLNgmaftQVBrgE5HUQxVicwtdwIO9qyhU
i/n0Oas=
=+lL9
-----END PGP SIGNATURE-----


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]