Author: martin
Date: 2008-02-18 09:42:26 -0500 (Mon, 18 Feb 2008)
New Revision: 96054

Modified:
   branches/martin/debugger-terrania/debugger/ChangeLog
   branches/martin/debugger-terrania/debugger/backend/arch/Instruction_I386.cs
Log:
2008-02-18  Martin Baulig  <[EMAIL PROTECTED]>

        * backend/arch/Instruction_I386.cs
        (Instruction_I386.GetMonoTrampoline): Support short 0x6a `push' insns.



Modified: branches/martin/debugger-terrania/debugger/ChangeLog
===================================================================
--- branches/martin/debugger-terrania/debugger/ChangeLog        2008-02-18 
14:41:35 UTC (rev 96053)
+++ branches/martin/debugger-terrania/debugger/ChangeLog        2008-02-18 
14:42:26 UTC (rev 96054)
@@ -1,3 +1,12 @@
+2008-02-18  Martin Baulig  <[EMAIL PROTECTED]>
+
+       * backend/arch/Instruction_I386.cs
+       (Instruction_I386.GetMonoTrampoline): Support short 0x6a `push' insns.
+
+2008-02-18  Martin Baulig  <[EMAIL PROTECTED]>
+
+       * test/{src|testsuite}/TestIterator.cs: New tests.
+
 2008-02-15  Martin Baulig  <[EMAIL PROTECTED]>
 
        * classes/Block.cs: New file.

Modified: 
branches/martin/debugger-terrania/debugger/backend/arch/Instruction_I386.cs
===================================================================
--- branches/martin/debugger-terrania/debugger/backend/arch/Instruction_I386.cs 
2008-02-18 14:41:35 UTC (rev 96053)
+++ branches/martin/debugger-terrania/debugger/backend/arch/Instruction_I386.cs 
2008-02-18 14:42:26 UTC (rev 96054)
@@ -132,20 +132,22 @@
                {
                        TargetBinaryReader reader = memory.ReadMemory 
(call_target, 10).GetReader ();
                        byte opcode = reader.ReadByte ();
-                       if (opcode != 0x68) {
+                       if (opcode == 0x6a)
+                               reader.Position ++;
+                       else if (opcode == 0x68)
+                               reader.Position += 4;
+                       else {
                                trampoline = TargetAddress.Null;
                                return false;
                        }
 
-                       reader.Position += 4;
-
                        opcode = reader.ReadByte ();
                        if (opcode != 0xe9) {
                                trampoline = TargetAddress.Null;
                                return false;
                        }
 
-                       TargetAddress call = call_target + reader.ReadInt32 () 
+ 10;
+                       TargetAddress call = call_target + reader.ReadInt32 () 
+ reader.Position;
                        if (!Opcodes.Process.MonoLanguage.IsTrampolineAddress 
(call)) {
                                trampoline = TargetAddress.Null;
                                return false;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to