From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2028 invoked by alias); 31 Aug 2007 06:30:17 -0000 Received: (qmail 2015 invoked by uid 22791); 31 Aug 2007 06:30:16 -0000 X-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_00,DK_POLICY_SIGNSOME X-Spam-Check-By: sourceware.org Received: from rgminet01.oracle.com (HELO rgminet01.oracle.com) (148.87.113.118) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 31 Aug 2007 06:30:11 +0000 Received: from rgmgw3.us.oracle.com (rgmgw3.us.oracle.com [138.1.186.112]) by rgminet01.oracle.com (Switch-3.2.4/Switch-3.1.6) with ESMTP id l7V6U0G5021497; Fri, 31 Aug 2007 00:30:01 -0600 Received: from dhcp-beijing-cdc-10-182-121-20.cn.oracle.com (dhcp-beijing-cdc-10-182-121-20.cn.oracle.com [10.182.121.20]) by rgmgw3.us.oracle.com (Switch-3.2.4/Switch-3.2.4) with ESMTP id l7V6TvGt014957; Fri, 31 Aug 2007 00:29:58 -0600 Subject: Re: [patch] Fix bugs of memory window From: Zhao Shujing Reply-To: pearly.zhao@oracle.com To: Andrew Cagney Cc: Frysk Mailing List In-Reply-To: <46D6CD2F.9090409@redhat.com> References: <1188446167.7327.22.camel@linux-pzhao.site> <46D6CD2F.9090409@redhat.com> Content-Type: multipart/mixed; boundary="=-bqpLq7y+QewGAp7v6rDS" Organization: Oracle Date: Fri, 31 Aug 2007 06:30:00 -0000 Message-Id: <1188542102.15120.1.camel@linux-pzhao.site> Mime-Version: 1.0 X-Mailer: Evolution 2.6.0 X-Brightmail-Tracker: AAAAAQAAAAI= X-Brightmail-Tracker: AAAAAA== X-Whitelist: TRUE X-Whitelist: TRUE 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/msg00377.txt.bz2 --=-bqpLq7y+QewGAp7v6rDS Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 875 Thanks Andrew. The patch is updated. On Thu, 2007-08-30 at 09:59 -0400, Andrew Cagney wrote: > Zhao Shujing wrote: > > Hi, > > > > This patch is to fix bug #4617 and other bugs of memory window. > > - Fixed bug converting to bin and hex when memory value is negative > > number. > > - Fixed bug to get octal number by convert from hex. > > - Setting the font to fixed-width font "monospace 10" > > - Adding leading zero for all of bin, oct and hex. > > - Adding prefix zero to octal number. > > > > Any suggestions are welcomed > > > > > Pearly, perhaps check the constructor <> as > in <> it will convert the big-endian byte array > directly into an unsigned BigInteger letting you use more of: > > > + oct = bihex.toString(8); > and, beyond needing to zero-pad, may make things even simpler. > > Andrew > --=-bqpLq7y+QewGAp7v6rDS Content-Disposition: attachment; filename=memwin0830.patch Content-Type: text/x-patch; name=memwin0830.patch; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 3294 Index: MemoryWindow.java =================================================================== RCS file: /cvs/frysk/frysk-gui/frysk/gui/memory/MemoryWindow.java,v retrieving revision 1.44 diff -u -r1.44 MemoryWindow.java --- MemoryWindow.java 28 Aug 2007 06:05:19 -0000 1.44 +++ MemoryWindow.java 31 Aug 2007 06:25:25 -0000 @@ -53,6 +53,7 @@ import org.gnu.gtk.Button; import org.gnu.gtk.CellRenderer; import org.gnu.gtk.CellRendererText; +import org.gnu.pango.FontDescription; import org.gnu.gtk.DataColumn; import org.gnu.gtk.DataColumnDouble; import org.gnu.gtk.DataColumnObject; @@ -325,6 +326,8 @@ this.bitsCombo.setActive(currentFormat + 1); this.memoryView = (TreeView) this.glade.getWidget("memoryView"); + FontDescription fontDesc = new FontDescription("monospace 10"); + memoryView.setFont(fontDesc); this.bitsCombo.showAll(); this.diss = new Disassembler(myTask.getMemory()); @@ -649,29 +652,33 @@ String dec = ""; if (bi.signum() < 0) - { - for (int i = 0; i < b.length; i++) - { - bin = bin + Integer.toBinaryString(b[i] & 0xff); - oct = oct + Integer.toOctalString(b[i] & 0xff); - hex = hex + Integer.toHexString(b[i] & 0xff); - } - } - else - { - bin = bi.toString(2); - oct = bi.toString(8); - hex = bi.toString(16); - } + bi = new BigInteger(1, b); + bin = bi.toString(2); + oct = bi.toString(8); + hex = bi.toString(16); dec = bi.toString(10); int diff = bin.length() % BYTE_BITS; if (diff != 0) bin = padBytes(bin, false, diff); + int length = (int)Math.pow(2, currentFormat + 3); + + while (bin.length() < length) + { + bin = "0" + bin; + } + while (oct.length() < (length/3 + 1)) + { + oct = "0" + oct; + } + while (hex.length() < length/4 ) + { + hex = "0" + hex; + } /* Little endian first */ this.model.setValue(iter, (DataColumnString) cols[1], bin); - this.model.setValue(iter, (DataColumnString) cols[3], oct); + this.model.setValue(iter, (DataColumnString) cols[3], "0"+oct); this.model.setValue(iter, (DataColumnString) cols[5], dec); this.model.setValue(iter, (DataColumnString) cols[7], "0x" + hex); @@ -687,9 +694,21 @@ dec = bi.toString(10); else dec = bii.toString(10); - + + while (bin2.length() < length) + { + bin2 = "0" + bin2; + } + while (oct.length() < (length/3 + 1)) + { + oct = "0" + oct; + } + while (hex.length() < length/4 ) + { + hex = "0" + hex; + } this.model.setValue(iter, (DataColumnString) cols[2], bin2); - this.model.setValue(iter, (DataColumnString) cols[4], oct); + this.model.setValue(iter, (DataColumnString) cols[4], "0"+oct); this.model.setValue(iter, (DataColumnString) cols[6], dec); this.model.setValue(iter, (DataColumnString) cols[8], "0x" + hex); --=-bqpLq7y+QewGAp7v6rDS--