[jit] Fix LLVM support on amd64 which got broken by the epilog size changes.
authorZoltan Varga <vargaz@gmail.com>
Tue, 23 Sep 2014 22:36:23 +0000 (18:36 -0400)
committerZoltan Varga <vargaz@gmail.com>
Tue, 23 Sep 2014 22:36:23 +0000 (18:36 -0400)
mono/mini/exceptions-amd64.c

index 98ebc58dd3cda1af8722ed9018cbf2c64798f6b4..f6cd5155e0fd17e4df6901930d1c27d6e78adac6 100644 (file)
@@ -552,7 +552,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
                guint8 *cfa;
                guint32 unwind_info_len;
                guint8 *unwind_info;
-               guint8 *epilog;
+               guint8 *epilog = NULL;
 
                frame->type = FRAME_TYPE_MANAGED;
 
@@ -565,7 +565,9 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
                printf ("%s %p %p\n", ji->d.method->name, ji->code_start, ip);
                mono_print_unwind_info (unwind_info, unwind_info_len);
                */
-               epilog = (guint8*)ji->code_start + ji->code_size - mono_jinfo_get_epilog_size (ji);
+               /* LLVM compiled code doesn't have this info */
+               if (ji->has_arch_eh_info)
+                       epilog = (guint8*)ji->code_start + ji->code_size - mono_jinfo_get_epilog_size (ji);
  
                regs [AMD64_RAX] = new_ctx->rax;
                regs [AMD64_RBX] = new_ctx->rbx;
@@ -583,7 +585,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
                mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
                                                   (guint8*)ji->code_start + ji->code_size,
-                                                  ip, &epilog, regs, MONO_MAX_IREGS + 1,
+                                                  ip, epilog ? &epilog : NULL, regs, MONO_MAX_IREGS + 1,
                                                   save_locations, MONO_MAX_IREGS, &cfa);
 
                new_ctx->rax = regs [AMD64_RAX];