public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: chandan r <chandanrmail@gmail.com>
To: "Andrew Pinski" <pinskia@gmail.com>
Cc: gdb@sourceware.org
Subject: Re: Extending GDB: Python: Wrong handling of 64-bit pointers
Date: Fri, 12 Oct 2012 13:08:00 -0000	[thread overview]
Message-ID: <87vcef257f.fsf@gmail.com> (raw)
In-Reply-To: <CA+=Sn1m01f4VKomgo+84SQw_Wfng41Q4OonWf3nfY96t4qrevw@mail.gmail.com>


Andrew Pinski <pinskia@gmail.com> writes:

> On Thu, Oct 11, 2012 at 7:23 PM, chandan r <chandanrmail@gmail.com> wrote:
>>
>> Andrew Pinski <pinskia@gmail.com> writes:
>>
>>> On Tue, Oct 9, 2012 at 10:30 AM, chandan r <chandanrmail@gmail.com> wrote:
>>>> Hi all,
>>>>
>>>> As the following CLI interactions show, GDB's python support code seems to be
>>>> mishandling 64-bit pointers (GNU/Linux on x86-64):
>>>>
>>>> NOTE: "p" is a pointer of type "struct task_struct *"
>>>>
>>>> (gdb) python print gdb.parse_and_eval("p")
>>>> 0xffff88001f5f7600
>>>> (gdb) python print long(gdb.parse_and_eval("p"))
>>>> -131940868983296
>>>> (gdb) show version
>>>> show version
>>>> GNU gdb (GDB) 7.5
>>>> Copyright (C) 2012 Free Software Foundation, Inc.
>>>> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
>>>> This is free software: you are free to change and redistribute it.
>>>> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>>>> and "show warranty" for details.
>>>> This GDB was configured as "x86_64-unknown-linux-gnu".
>>>> For bug reporting instructions, please see:
>>>> <http://www.gnu.org/software/gdb/bugs/>.
>>>>
>>>> Is it GDB or am I messing up something here?
>>>
>>> Nothing looks wrong as -131940868983296 is the same as
>>> 0xffff88001f5f7600 in signed integer.
>>> (gdb) p/x -131940868983296
>>> $1 = 0xffff88001f5f7600
>>>
>>> Thanks,
>>> Andrew Pinski
>>>
>>>>
>>>> --
>>>> Chandan
>>
>> But shouldn't pointer values be read/printed without interpretting the sign
>> bit?.
>>
>> Right now I have to do 'long(str(gdb.parse_and_eval('p')), 16)' to obtain the
>> correct value.
>
>
> What is the correct value for pointers cast to an long?  I don't see
> the issue here as you have a pointer which is 64bits and you cast
> directly to a signed long.
>
> Thanks,
> Andrew Pinski
>
>>
>> --
>> chandan

I used long() based on the instructions given in
http://dmalcolm.fedorapeople.org/presentations/PyCon-US-2011/GdbPythonPresentation/GdbPython.html#11 

Any suggestions for the correct way to convert the pointer into a Python
value?

      reply	other threads:[~2012-10-12 13:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-09 17:15 chandan r
2012-10-10 22:48 ` Andrew Pinski
2012-10-12  2:07   ` chandan r
2012-10-12  5:52     ` Bjoern Doebel
2012-10-12  5:59     ` Andrew Pinski
2012-10-12 13:08       ` chandan r [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87vcef257f.fsf@gmail.com \
    --to=chandanrmail@gmail.com \
    --cc=gdb@sourceware.org \
    --cc=pinskia@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).