From 98ff7adfc7a06630fb7ec04d1841417c81990493 Mon Sep 17 00:00:00 2001 From: cmp Date: Thu, 8 Oct 2015 13:21:13 +0100 Subject: [PATCH] Fix sdb trampoline on Windows x64 On Windows x64 (and possibly other x64 systems) the offset between code and the called function can be larger than 32 bits, but amd64_call_code is just a wrapper around x86_call_code. --- mono/mini/tramp-amd64.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mono/mini/tramp-amd64.c b/mono/mini/tramp-amd64.c index a5f94d31ece..e9ac1b8a11a 100644 --- a/mono/mini/tramp-amd64.c +++ b/mono/mini/tramp-amd64.c @@ -972,13 +972,13 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "debugger_agent_single_step_from_context"); else code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "debugger_agent_breakpoint_from_context"); - amd64_call_reg (code, AMD64_R11); } else { if (single_step) - amd64_call_code (code, debugger_agent_single_step_from_context); + amd64_mov_reg_imm (code, AMD64_R11, debugger_agent_single_step_from_context); else - amd64_call_code (code, debugger_agent_breakpoint_from_context); - } + amd64_mov_reg_imm (code, AMD64_R11, debugger_agent_breakpoint_from_context); + } + amd64_call_reg (code, AMD64_R11); /* Restore registers from ctx */ for (i = 0; i < AMD64_NREG; ++i) { -- 2.11.4.GIT