From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12338 invoked by alias); 18 Oct 2007 20:16:23 -0000 Received: (qmail 12326 invoked by uid 22791); 18 Oct 2007 20:16:19 -0000 X-Spam-Check-By: sourceware.org Received: from igw1.br.ibm.com (HELO igw1.br.ibm.com) (32.104.18.24) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 18 Oct 2007 20:16:15 +0000 Received: from mailhub1.br.ibm.com (mailhub1 [9.18.232.109]) by igw1.br.ibm.com (Postfix) with ESMTP id B413F32C26A for ; Thu, 18 Oct 2007 18:14:06 -0200 (BRDT) Received: from d24av02.br.ibm.com (d24av02.br.ibm.com [9.18.232.47]) by mailhub1.br.ibm.com (8.13.8/8.13.8/NCO v8.5) with ESMTP id l9IKG0Mv2695182 for ; Thu, 18 Oct 2007 18:16:01 -0200 Received: from d24av02.br.ibm.com (loopback [127.0.0.1]) by d24av02.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l9IKG0C6029965 for ; Thu, 18 Oct 2007 17:16:00 -0300 Received: from [9.18.238.251] (dyn532128.br.ibm.com [9.18.238.251]) by d24av02.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l9IKG0KN029962; Thu, 18 Oct 2007 17:16:00 -0300 Subject: Re: Setting a floating point register to raw hex value From: Thiago Jung Bauermann To: Grzegorz Cieslewski Cc: gdb@sourceware.org In-Reply-To: <7aa837f80710181238o4aa3e19djffe5324df65e5928@mail.gmail.com> References: <7aa837f80710120829y33db4c3cya21f6ead14ca56f3@mail.gmail.com> <7aa837f80710181238o4aa3e19djffe5324df65e5928@mail.gmail.com> Content-Type: text/plain Date: Thu, 18 Oct 2007 20:16:00 -0000 Message-Id: <1192738560.5787.86.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit 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: 2007-10/txt/msg00158.txt.bz2 Hi, Yes, that's indeed crazy. :-) Just found out that this works: (gdb) set (void *) $f1 = 0x1 (gdb) info reg f1 f1 4.9406564584124654e-324 (raw 0x0000000000000001) -- []'s Thiago Jung Bauermann Software Engineer IBM Linux Technology Center On Thu, 2007-10-18 at 15:38 -0400, Grzegorz Cieslewski wrote: > I have figured out a workaround but it is really ugly. > > Step 1: Create shared object containing a union as follows > union longlong2double > { > long long int hexNum; > double floatNum; > } temp; > > Step 2: Force load the library at runtime into your program using > LD_PRELOAD environmental variable > > Step 3: When debugging the program store 0x1 into temp.hexNum; > (one would think that I could use the following now 'set $f0 = > temp.floatNum; but that yields incorrect result) > > Step4: Overwrite the current instruction with 'load float' > > Step5: Using stepping command 'stepi 1' to write the value to the $f0 > > Step6: Undo all the changes required by steps 4 and 5 > > Does any one know of a simpler way because this workaround is crazy? > > > Greg Cieslewski > > > > On 10/12/07, Grzegorz Cieslewski wrote: > > Does any one know of a way to set a floating point register ($f0) to a > > arbitrary raw hex value (for example 1) > > > > I tried the following. > > > > (gdb) set $f0 = 5.0000000000000000e-324 > > (gdb) p $f0 > > $1 = -1.5966722476277758e+293 > > (gdb) set $f0 = 5.0000000000000000e-324 > > > > The value of 5.0000000000000000e-324 should correspond to > > 0x0000000000000001 in raw hex > > > > Any ideas? > > > > I am using ppc7450 (G4) if that helps. > >