[sdb] Fix support of vtypes passed by ref.
authorZoltan Varga <vargaz@gmail.com>
Tue, 22 Oct 2013 10:47:58 +0000 (06:47 -0400)
committerZoltan Varga <vargaz@gmail.com>
Tue, 22 Oct 2013 10:48:47 +0000 (06:48 -0400)
mono/mini/debug-mini.c
mono/mini/debugger-agent.c

index 123ff4f374efc61b4656b68f9fa0c41ce71855f1..25f77b22f4da48452e60c6c8cabc463cd930951b 100644 (file)
@@ -164,8 +164,12 @@ write_variable (MonoInst *inst, MonoDebugVarInfo *var)
        } else if (inst->opcode == OP_GSHAREDVT_LOCAL) {
                var->index = inst->inst_imm | MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL;
        } else if (inst->opcode == OP_VTARG_ADDR) {
-               var->offset = inst->inst_offset;
-               var->index  = inst->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR;
+               MonoInst *vtaddr;
+
+               vtaddr = inst->inst_left;
+               g_assert (vtaddr->opcode == OP_REGOFFSET);
+               var->offset = vtaddr->inst_offset;
+               var->index  = vtaddr->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR;
        } else {
                g_assert_not_reached ();
        }
index 2bfa6d7dc883fb685de76cedb0872203fe49b8c4..a58d5496b6ab22e5cc2ac47f9ade0e1f7f7c7028 100755 (executable)
@@ -5888,6 +5888,7 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                NOT_IMPLEMENTED;
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
                /* Same as regoffset, but with an indirection */
                addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;