2009-11-13 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Fri, 13 Nov 2009 06:36:08 +0000 (06:36 -0000)
committerZoltan Varga <vargaz@gmail.com>
Fri, 13 Nov 2009 06:36:08 +0000 (06:36 -0000)
* mini-amd64.c (emit_call_body): Disable usage of near calls when running
under XEN. Fixes #522894.

svn path=/trunk/mono/; revision=146109

mono/mini/ChangeLog
mono/mini/mini-amd64.c

index 2f91205f711861017924028dc716c8750a7f2c9c..0fbceb4d443bf7edc1f02354931c75401c265755 100644 (file)
@@ -1,5 +1,8 @@
 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
 
+       * mini-amd64.c (emit_call_body): Disable usage of near calls when running
+       under XEN. Fixes #522894.
+
        * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
 
        * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
index fb291d5fbb4d0ada3ba794947f28ddccc3f7ebb9..0d0061eaecab851c006b044569fc2b16bba3341e 100644 (file)
@@ -2570,6 +2570,10 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                near_call = FALSE;
 #endif
 
+               /* The 64bit XEN kernel does not honour the MAP_32BIT flag. (#522894) */
+               if (optimize_for_xen)
+                       near_call = FALSE;
+
                if (near_call) {
                        /* 
                         * Align the call displacement to an address divisible by 4 so it does