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