Use --relocation-model=pic for llvm on ios.
[mono.git] / mono / mini / mini-gc.c
index 5bbd3751710e6a6495335902352ad49b09ed8b4f..0d439acc63618b64b2c2904b25cab84699fa8ef2 100644 (file)
@@ -603,8 +603,12 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
        } else {
                tls->unwind_state.unwind_data [MONO_UNWIND_DATA_LMF] = mono_get_lmf ();
                if (sigctx) {
+#ifdef MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
                        mono_arch_sigctx_to_monoctx (sigctx, &tls->unwind_state.ctx);
                        tls->unwind_state.valid = TRUE;
+#else
+                       tls->unwind_state.valid = FALSE;
+#endif
                } else if (ctx) {
                        memcpy (&tls->unwind_state.ctx, ctx, sizeof (MonoContext));
                        tls->unwind_state.valid = TRUE;
@@ -1211,6 +1215,8 @@ thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gb
                precise_pass (tls, stack_start, stack_end);
 }
 
+#ifndef DISABLE_JIT
+
 static void
 mini_gc_init_gc_map (MonoCompile *cfg)
 {
@@ -1716,11 +1722,13 @@ process_variables (MonoCompile *cfg)
                         * before the liveness pass. We emit OP_GC_LIVENESS_DEF instructions for
                         * them during VZERO decomposition.
                         */
-                       if (!pc_offsets [vmv->vreg])
-                               pin = TRUE;
+                       if (!is_arg) {
+                               if (!pc_offsets [vmv->vreg])
+                                       pin = TRUE;
 
-                       if (ins->backend.is_pinvoke)
-                               pin = TRUE;
+                               if (ins->backend.is_pinvoke)
+                                       pin = TRUE;
+                       }
 
                        if (bitmap) {
                                for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {
@@ -2426,6 +2434,8 @@ mini_gc_create_gc_map (MonoCompile *cfg)
        create_map (cfg);
 }
 
+#endif /* DISABLE_JIT */
+
 static void
 parse_debug_options (void)
 {
@@ -2507,11 +2517,18 @@ mini_gc_init (void)
 
 #else
 
+void
+mini_gc_enable_gc_maps_for_aot (void)
+{
+}
+
 void
 mini_gc_init (void)
 {
 }
 
+#ifndef DISABLE_JIT
+
 static void
 mini_gc_init_gc_map (MonoCompile *cfg)
 {
@@ -2532,8 +2549,12 @@ mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType ty
 {
 }
 
+#endif /* DISABLE_JIT */
+
 #endif
 
+#ifndef DISABLE_JIT
+
 /*
  * mini_gc_init_cfg:
  *
@@ -2550,6 +2571,8 @@ mini_gc_init_cfg (MonoCompile *cfg)
        mini_gc_init_gc_map (cfg);
 }
 
+#endif /* DISABLE_JIT */
+
 /*
  * Problems with the current code:
  * - the stack walk is slow