Merge pull request #4542 from lateralusX/jlorenss/win-fix-unwind-tramp-reg-aot
[mono.git] / mono / mini / mini-runtime.c
index 2cde5cf5e6ce94844cfa5f4c27e62accccaa08fe..45de59b8565681db09a7c1e45aecab24b74e7db3 100644 (file)
@@ -474,8 +474,8 @@ register_trampoline_jit_info (MonoDomain *domain, MonoTrampInfo *info)
  * INFO can be NULL.
  * Frees INFO.
  */
-void
-mono_tramp_info_register (MonoTrampInfo *info, MonoDomain *domain)
+static void
+mono_tramp_info_register_internal (MonoTrampInfo *info, MonoDomain *domain, gboolean aot)
 {
        MonoTrampInfo *copy;
 
@@ -506,7 +506,8 @@ mono_tramp_info_register (MonoTrampInfo *info, MonoDomain *domain)
        mono_lldb_save_trampoline_info (info);
 
 #ifdef MONO_ARCH_HAVE_UNWIND_TABLE
-       mono_arch_unwindinfo_install_tramp_unwind_info (info->unwind_ops, info->code, info->code_size);
+       if (!aot)
+               mono_arch_unwindinfo_install_tramp_unwind_info (info->unwind_ops, info->code, info->code_size);
 #endif
 
        /* Only register trampolines that have unwind infos */
@@ -519,6 +520,18 @@ mono_tramp_info_register (MonoTrampInfo *info, MonoDomain *domain)
        mono_tramp_info_free (info);
 }
 
+void
+mono_tramp_info_register (MonoTrampInfo *info, MonoDomain *domain)
+{
+       mono_tramp_info_register_internal (info, domain, FALSE);
+}
+
+void
+mono_aot_tramp_info_register (MonoTrampInfo *info, MonoDomain *domain)
+{
+       mono_tramp_info_register_internal (info, domain, TRUE);
+}
+
 static void
 mono_tramp_info_cleanup (void)
 {