Backport of r126467.
* mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
individually. Fixes #473482.
2009-02-10 Mark Probst <mark.probst@gmail.com>
Backport of r126467.
* bug-473482.2.cs: New test.
* Makefile.am: Test added.
svn path=/branches/mono-2-2/mono/; revision=126468
+2009-02-10 Mark Probst <mark.probst@gmail.com>
+
+ Backport of r126467.
+
+ * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
+ individually. Fixes #473482.
+
2009-02-05 Mark Probst <mark.probst@gmail.com>
Backport of r125887.
mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
{
switch (reg) {
+ case X86_EAX: return (gpointer)ctx->eax;
+ case X86_EBX: return (gpointer)ctx->ebx;
case X86_ECX: return (gpointer)ctx->ecx;
case X86_EDX: return (gpointer)ctx->edx;
- case X86_EBP: return (gpointer)ctx->ebp;
case X86_ESP: return (gpointer)ctx->esp;
- default: return ((gpointer)(&ctx->eax)[reg]);
+ case X86_EBP: return (gpointer)ctx->ebp;
+ case X86_ESI: return (gpointer)ctx->esi;
+ case X86_EDI: return (gpointer)ctx->edi;
+ default: g_assert_not_reached ();
}
}
+2009-02-10 Mark Probst <mark.probst@gmail.com>
+
+ Backport of r126467.
+
+ * bug-473482.2.cs: New test.
+
+ * Makefile.am: Test added.
+
2009-02-05 Mark Probst <mark.probst@gmail.com>
Backport of r125887.
generic-stack-traces2.2.cs \
bug-472600.2.cs \
recursive-generics.2.cs \
+ bug-473482.2.cs \
bug-80392.2.cs \
dynamic-method-access.2.cs \
bug-82194.2.cs \
generic-virtual-invoke.2.exe generic-typedef.2.exe \
generic-marshalbyref.2.exe bug-459285.2.exe bug-461198.2.exe \
generic-sealed-virtual.2.exe generic-stack-traces.2.exe \
- generic-stack-traces2.2.exe bug-472600.2.exe
+ generic-stack-traces2.2.exe bug-472600.2.exe bug-473482.2.exe
@for fn in $+ ; do \
echo "Testing $$fn ..."; \
MONO_GENERIC_SHARING=all $(RUNTIME) -O=gshared $$fn > $$fn.stdout || exit 1; \
--- /dev/null
+using System;
+
+public class Program
+{
+ static void Main()
+ {
+ try
+ {
+ new Foo<object>(0, 0);
+ }
+ catch (Exception ex)
+ {
+ var t = ex.StackTrace;
+ }
+ }
+}
+
+public class Foo<T> : FooBase
+{
+ int i;
+ int ii;
+
+ public Foo(int i, int ii)
+ {
+ this.i = i;
+ this.ii = ii;
+ this.iii = 0;
+ throw new Exception();
+ }
+}
+
+public abstract class FooBase
+{
+ protected int iii;
+}