From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18951 invoked by alias); 15 Aug 2007 08:54:48 -0000 Received: (qmail 18936 invoked by uid 22791); 15 Aug 2007 08:54:47 -0000 X-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DK_POLICY_SIGNSOME,FORGED_RCVD_HELO X-Spam-Check-By: sourceware.org Received: from wildebeest.demon.nl (HELO gnu.wildebeest.org) (83.160.170.119) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 15 Aug 2007 08:54:44 +0000 Received: from dijkstra.wildebeest.org ([192.168.1.29]) by gnu.wildebeest.org with esmtp (Exim 4.63) (envelope-from ) id 1ILEeG-0007vH-Sy; Wed, 15 Aug 2007 10:54:41 +0200 Subject: Re: frysk-core/frysk gui/ChangeLog stack/RemoteFra ... From: Mark Wielaard To: frysk@sourceware.org Cc: Nurdin Premji , Stan Cox In-Reply-To: <20070813221141.30722.qmail@sourceware.org> References: <20070813221141.30722.qmail@sourceware.org> Content-Type: multipart/mixed; boundary="=-d6BgX+ssG3jHQsh4dqX9" Date: Wed, 15 Aug 2007 08:54:00 -0000 Message-Id: <1187168080.3804.23.camel@dijkstra.wildebeest.org> Mime-Version: 1.0 X-Mailer: Evolution 2.8.3 (2.8.3-2.fc6) X-Spam-Score: -4.4 (----) X-Virus-Checked: Checked by ClamAV on sourceware.org X-IsSubscribed: yes Mailing-List: contact frysk-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-owner@sourceware.org X-SW-Source: 2007-q3/txt/msg00300.txt.bz2 --=-d6BgX+ssG3jHQsh4dqX9 Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 550 Hi, On Mon, 2007-08-13 at 22:11 +0000, npremji@sourceware.org wrote: > * RemoteFrame.java (getRegisterValue): Check for floating point registers. > Don't throw a null pointer if register can't be located. This is the patch that broke a couple of tests on x86_64. Reverting it makes the tests in frysk.debuginfo.TestFrameDebugInfo and frysk.rt.TestUpdatingDisplayValue that throw NullPointerExceptions PASS again. I suspect that the test for whether or not this is a floating point register fails on x86_64. Could you take a look? Thanks, Mark --=-d6BgX+ssG3jHQsh4dqX9 Content-Disposition: inline; filename=RemoteFrame-nullpointer.diff Content-Type: text/x-patch; name=RemoteFrame-nullpointer.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 1649 Index: frysk-core/frysk/stack/RemoteFrame.java =================================================================== RCS file: /cvs/frysk/frysk-core/frysk/stack/RemoteFrame.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- frysk-core/frysk/stack/RemoteFrame.java 1 Aug 2007 18:50:15 -0000 1.10 +++ frysk-core/frysk/stack/RemoteFrame.java 13 Aug 2007 22:11:41 -0000 1.11 @@ -54,6 +54,7 @@ import frysk.symtab.Symbol; import frysk.symtab.SymbolFactory; +import frysk.value.StandardTypes; import frysk.value.Value; class RemoteFrame extends Frame @@ -144,15 +145,24 @@ } public Value getRegisterValue(Register register) { - logger.log(Level.FINE, "{0}: getRegisterValue register: {1}", + logger.log(Level.FINE, "{0}: getRegisterValue register: {1}\n", new Object[] { this, register }); Isa isa = task.getIsa(); byte[] word = new byte[register.type.getSize()]; RegisterMap map = UnwindRegisterMapFactory.getRegisterMap(isa); - if (cursor.getRegister(map.getRegisterNumber(register), word) < 0) + try { + if (register.type == StandardTypes.getIntType(isa)) { + if (cursor.getRegister(map.getRegisterNumber(register), word) < 0) + return null; + } else { + if (cursor.getFPRegister(map.getRegisterNumber(register), word) < 0) + return null; + } + } catch (NullPointerException exception) { + logger.log(Level.WARNING, "{0}: couldn't get register: {1}\n", new Object[] {this, register}); return null; - + } ArrayByteBuffer buffer = new ArrayByteBuffer(word); buffer.order(register.type.getEndian()); return new Value(register.type, register.name, buffer); --=-d6BgX+ssG3jHQsh4dqX9--