mono_ios.patch
diff -Naur mono-original/mono-3.0.1/configure.in mono-3.0.1/configure.in
--- mono-original/mono-3.0.1/configure.in	2012-11-06 00:25:01.000000000 +0200
+++ mono-3.0.1/configure.in	2012-12-01 13:52:44.000000000 +0200
@@ -2455,7 +2455,16 @@
 		sizeof_register=8
 		target_byte_order=G_BIG_ENDIAN
 		;;
-
+   arm*-darwin*)
+    TARGET=ARM;
+    arch_target=arm;
+    AC_DEFINE(TARGET_ARM, 1, [...])
+    ACCESS_UNALIGNED="no"
+    CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+    # libgc's gc_locks.h depends on this
+    NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
+    with_tls=pthread
+    ;;
    powerpc64-xbox360-linux-gnu)
 		TARGET=POWERPC64
 		arch_target=powerpc64
diff -Naur mono-original/mono-3.0.1/eglib/src/eglib-remap.h mono-3.0.1/eglib/src/eglib-remap.h
--- mono-original/mono-3.0.1/eglib/src/eglib-remap.h	2012-11-06 00:26:12.000000000 +0200
+++ mono-3.0.1/eglib/src/eglib-remap.h	2012-12-01 14:02:51.000000000 +0200
@@ -1,3 +1,6 @@
+#include <crt_externs.h>
+#define environ (* _NSGetEnviron())
+
 #define g_array_append monoeg_g_array_append
 #define g_array_append_vals monoeg_g_array_append_vals
 #define g_array_free monoeg_g_array_free
diff -Naur mono-original/mono-3.0.1/mono/io-layer/processes.h mono-3.0.1/mono/io-layer/processes.h
--- mono-original/mono-3.0.1/mono/io-layer/processes.h	2012-11-06 00:24:45.000000000 +0200
+++ mono-3.0.1/mono/io-layer/processes.h	2012-12-01 13:55:08.000000000 +0200
@@ -16,6 +16,9 @@
 #include <mono/io-layer/access.h>
 #include <mono/io-layer/versioninfo.h>
 
+#include <crt_externs.h>
+#define environ (* _NSGetEnviron())
+
 G_BEGIN_DECLS
 
 typedef enum {
@@ -164,25 +167,25 @@
 #define	PROCESS_ALL_ACCESS		(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xfff)
 
 extern gboolean ShellExecuteEx (WapiShellExecuteInfo *sei);
-extern gboolean CreateProcess (const gunichar2 *appname,
-			       const gunichar2 *cmdline,
-			       WapiSecurityAttributes *process_attrs,
-			       WapiSecurityAttributes *thread_attrs,
-			       gboolean inherit_handles, guint32 create_flags,
-			       gpointer environ, const gunichar2 *cwd,
-			       WapiStartupInfo *startup,
-			       WapiProcessInformation *process_info);
+extern gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
+      WapiSecurityAttributes *process_attrs G_GNUC_UNUSED,
+      WapiSecurityAttributes *thread_attrs G_GNUC_UNUSED,
+      gboolean inherit_handles, guint32 create_flags,
+      gpointer new_environ, const gunichar2 *cwd,
+      WapiStartupInfo *startup,
+      WapiProcessInformation *process_info);
 extern gboolean CreateProcessWithLogonW (const gunichar2 *username,
-					 const gunichar2 *domain,
-					 const gunichar2 *password,
-					 const guint32 logonFlags,
-					 const gunichar2 *appname,
-					 const gunichar2 *cmdline,
-					 guint32 create_flags,
-					 gpointer environ,
-					 const gunichar2 *cwd,
-					 WapiStartupInfo *startup,
-					 WapiProcessInformation *process_info);
+          const gunichar2 *domain,
+          const gunichar2 *password,
+          const guint32 logonFlags,
+          const gunichar2 *appname,
+          const gunichar2 *cmdline,
+          guint32 create_flags,
+          gpointer env,
+          const gunichar2 *cwd,
+          WapiStartupInfo *startup,
+          WapiProcessInformation *process_info);
+          
 #define LOGON_WITH_PROFILE 0x00000001
 #define LOGON_NETCREDENTIALS_ONLY 0x00000002
 
diff -Naur mono-original/mono-3.0.1/mono/mini/Makefile.in mono-3.0.1/mono/mini/Makefile.in
--- mono-original/mono-3.0.1/mono/mini/Makefile.in	2012-11-06 00:26:46.000000000 +0200
+++ mono-3.0.1/mono/mini/Makefile.in	2012-12-01 15:30:03.000000000 +0200
@@ -633,14 +633,14 @@
 CCASFLAGS = @CCASFLAGS@
 CCDEPMODE = @CCDEPMODE@
 CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CFLAGS = -g -O0 -fno-strict-aliasing -Wdeclaration-after-statement -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch-enum -Werror-implicit-function-declaration
+CFLAGS_FOR_BUILD = -g -O0
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
+CXXFLAGS = -g -O0
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
--- mono-original/mono-3.0.1/mono/mini/mini-arm.c	2012-11-06 00:24:45.000000000 +0200
+++ mono-3.0.1/mono/mini/mini-arm.c	2012-12-02 00:14:50.000000000 +0200
@@ -15,6 +15,7 @@
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-mmap.h>
+#include <libkern/OSCacheControl.h>
 
 #include "mini-arm.h"
 #include "cpu-arm.h"