From: <cap...@us...> - 2007-04-18 14:26:41
|
Revision: 65 http://svn.sourceforge.net/pearcolator/?rev=65&view=rev Author: captain5050 Date: 2007-04-18 07:26:40 -0700 (Wed, 18 Apr 2007) Log Message: ----------- Segmentation fault exception and a little more debugging Modified Paths: -------------- src/org/binarytranslator/generic/fault/BadInstructionException.java src/org/binarytranslator/generic/memory/ByteAddressedMemory.java src/org/binarytranslator/generic/os/abi/linux/LinuxSystemCalls.java Added Paths: ----------- src/org/binarytranslator/generic/fault/SegmentationFault.java Modified: src/org/binarytranslator/generic/fault/BadInstructionException.java =================================================================== --- src/org/binarytranslator/generic/fault/BadInstructionException.java 2007-04-18 14:25:47 UTC (rev 64) +++ src/org/binarytranslator/generic/fault/BadInstructionException.java 2007-04-18 14:26:40 UTC (rev 65) @@ -10,7 +10,7 @@ import org.binarytranslator.generic.os.process.ProcessSpace; -public class BadInstructionException extends Exception { +public class BadInstructionException extends RuntimeException { private final int pc; private final ProcessSpace ps; Added: src/org/binarytranslator/generic/fault/SegmentationFault.java =================================================================== --- src/org/binarytranslator/generic/fault/SegmentationFault.java (rev 0) +++ src/org/binarytranslator/generic/fault/SegmentationFault.java 2007-04-18 14:26:40 UTC (rev 65) @@ -0,0 +1,23 @@ +/* + * This file is part of binarytranslator.org. The binarytranslator.org + * project is distributed under the Common Public License (CPL). + * A copy of the license is included in the distribution, and is also + * available at http://www.opensource.org/licenses/cpl1.0.php + * + * (C) Copyright Ian Rogers, The University of Manchester 2003-2007 + */ +package org.binarytranslator.generic.fault; + +/** + * @author Ian Rogers + */ +public class SegmentationFault extends RuntimeException { + private final int address; + /** + * Constructor + */ + public SegmentationFault(int address) { + super("SegFault at 0x"+Integer.toHexString(address)); + this.address = address; + } +} Modified: src/org/binarytranslator/generic/memory/ByteAddressedMemory.java =================================================================== --- src/org/binarytranslator/generic/memory/ByteAddressedMemory.java 2007-04-18 14:25:47 UTC (rev 64) +++ src/org/binarytranslator/generic/memory/ByteAddressedMemory.java 2007-04-18 14:26:40 UTC (rev 65) @@ -11,6 +11,7 @@ import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import org.binarytranslator.DBT_Options; +import org.binarytranslator.generic.fault.SegmentationFault; /** * ByteAddressedMemory: @@ -436,8 +437,12 @@ * @return the result */ public int load32(int addr) { - return (loadSigned8(addr + 3) << 24) | (loadUnsigned8(addr + 2) << 16) - | (loadUnsigned8(addr + 1) << 8) | loadUnsigned8(addr); + try { + return (loadSigned8(addr + 3) << 24) | (loadUnsigned8(addr + 2) << 16) + | (loadUnsigned8(addr + 1) << 8) | loadUnsigned8(addr); + } catch (Exception e) { + throw new SegmentationFault(addr); + } } /** Modified: src/org/binarytranslator/generic/os/abi/linux/LinuxSystemCalls.java =================================================================== --- src/org/binarytranslator/generic/os/abi/linux/LinuxSystemCalls.java 2007-04-18 14:25:47 UTC (rev 64) +++ src/org/binarytranslator/generic/os/abi/linux/LinuxSystemCalls.java 2007-04-18 14:26:40 UTC (rev 65) @@ -159,6 +159,7 @@ */ public void doSysCall() { int sysCallNumber = src.getSysCallNumber(); + System.err.println("Syscall "+ sysCallToString(sysCallNumber)); systemCallTable[sysCallNumber].doSysCall(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |