From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12522 invoked by alias); 12 Oct 2012 02:07:46 -0000 Received: (qmail 12509 invoked by uid 22791); 12 Oct 2012 02:07:45 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-pa0-f41.google.com (HELO mail-pa0-f41.google.com) (209.85.220.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 12 Oct 2012 02:07:40 +0000 Received: by mail-pa0-f41.google.com with SMTP id fa10so2606876pad.0 for ; Thu, 11 Oct 2012 19:07:40 -0700 (PDT) Received: by 10.68.227.162 with SMTP id sb2mr9567192pbc.4.1350007660176; Thu, 11 Oct 2012 19:07:40 -0700 (PDT) Received: from archlinux ([117.202.27.57]) by mx.google.com with ESMTPS id nx5sm3609624pbb.49.2012.10.11.19.07.36 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 11 Oct 2012 19:07:39 -0700 (PDT) From: chandan r To: "Andrew Pinski" Cc: gdb@sourceware.org Subject: Re: Extending GDB: Python: Wrong handling of 64-bit pointers References: <87y5jfr1ri.fsf@gmail.com>, User-agent: mu4e 0.9.8.5; emacs 24.2.1 In-reply-to: Date: Fri, 12 Oct 2012 02:07:00 -0000 Message-ID: <87mwzs8m30.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2012-10/txt/msg00058.txt.bz2 Andrew Pinski writes: > On Tue, Oct 9, 2012 at 10:30 AM, chandan r 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 >> 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: >> . >> >> 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. -- chandan