diff --git a/.gitmodules b/.gitmodules
index 1751d129dcc..67c8b6e11c3 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -5,7 +5,7 @@
[submodule "external/mono"]
path = external/mono
url = https://github.com/mono/mono.git
- branch = 2017-06
+ branch = 2017-08
[submodule "external/mxe"]
path = external/mxe
url = https://github.com/xamarin/mxe.git
diff --git a/Configuration.props b/Configuration.props
index 4453e3f3c6c..1ef21034d66 100644
--- a/Configuration.props
+++ b/Configuration.props
@@ -54,8 +54,8 @@
$(MSBuildThisFileDirectory)external\Java.Interop
$(MSBuildThisFileDirectory)external\llvm
$(MSBuildThisFileDirectory)external\mono
- 5.4.0
- $(MonoRequiredMinimumVersion).147
+ 5.6.0
+ $(MonoRequiredMinimumVersion).0
$(MSBuildThisFileDirectory)external\linker
$(MSBuildThisFileDirectory)external\opentk
$(MSBuildThisFileDirectory)external\libzip
diff --git a/build-tools/dependencies/dependencies.projitems b/build-tools/dependencies/dependencies.projitems
index dda90233365..280255fb6cf 100644
--- a/build-tools/dependencies/dependencies.projitems
+++ b/build-tools/dependencies/dependencies.projitems
@@ -1,7 +1,7 @@
- <_DarwinMonoFramework>MonoFramework-MDK-5.4.0.147.macos10.xamarin.universal.pkg
+ <_DarwinMonoFramework>MonoFramework-MDK-5.6.0.0.macos10.xamarin.universal.pkg
<_AptGetInstall>apt-get -f -u install
@@ -58,7 +58,7 @@
$(MonoRequiredMinimumVersion)
$(MonoRequiredDarwinMinimumVersion)
$(MSBuildThisFileDirectory)..\scripts\mono-version
- https://bosstoragemirror.blob.core.windows.net/wrench/mono-2017-06/28/28a417c2c0d1a2d1231d8b0a5beea3201208b57d/$(_DarwinMonoFramework)
+ https://bosstoragemirror.blob.core.windows.net/wrench/mono-2017-08/94/9417be0f1183e100e7c88953d5944e1a59d5ef5f/$(_DarwinMonoFramework)
installer -pkg "$(AndroidToolchainCacheDirectory)\$(_DarwinMonoFramework)" -target /
diff --git a/build-tools/mono-runtimes/mono-runtimes.targets b/build-tools/mono-runtimes/mono-runtimes.targets
index 7636ae52b36..5ba348cacc4 100644
--- a/build-tools/mono-runtimes/mono-runtimes.targets
+++ b/build-tools/mono-runtimes/mono-runtimes.targets
@@ -274,11 +274,11 @@
/>
<_RuntimeEglibHeaderSource
Condition=" '%(_MonoRuntime.DoBuild)' == 'True' "
- Include="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)\eglib\config.h');@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)\eglib\src\eglib-config.h')"
+ Include="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)\eglib\src\eglib-config.h')"
/>
<_RuntimeEglibHeaderOutput
Condition=" '%(_MonoRuntime.DoBuild)' == 'True' "
- Include="@(_MonoRuntime->'$(_OutputIncludeDir)%(Identity)\eglib\config.h');@(_MonoRuntime->'$(_OutputIncludeDir)%(Identity)\eglib\eglib-config.h')"
+ Include="@(_MonoRuntime->'$(_OutputIncludeDir)%(Identity)\eglib\eglib-config.h')"
/>
<_MonoConstsSource
Condition=" '%(_MonoRuntime.DoBuild)' == 'True' "
diff --git a/external/mono b/external/mono
index 7d788778005..b7422c2c225 160000
--- a/external/mono
+++ b/external/mono
@@ -1 +1 @@
-Subproject commit 7d7887780057e40f3921ceedca6c1579a928655d
+Subproject commit b7422c2c22547cd60d493d6db9cfc2a3f66a04c1
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
index 0432bf87f92..8dcddf6e917 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
@@ -1058,9 +1058,11 @@ public void CheckWhichRuntimeIsIncluded (string[] supportedAbi, bool debugSymbol
Assert.AreEqual (runtime.Size, inApkRuntime.Size, "expected {0} got {1}", expectedRuntime, inApkRuntime.Runtime);
inApk = ZipHelper.ReadFileFromZip (apk, string.Format ("lib/{0}/libmono-profiler-log.so", abi));
if (string.Compare (expectedRuntime, "debug", StringComparison.OrdinalIgnoreCase) == 0) {
- Assert.IsNotNull (inApk, "libmono-profiler-log.so should exist in the apk.");
+ if (inApk == null)
+ Assert.Fail ("libmono-profiler-log.so should exist in the apk.");
} else {
- Assert.IsNull (inApk, "libmono-profiler-log.so should not exist in the apk.");
+ if (inApk != null)
+ Assert.Fail ("libmono-profiler-log.so should not exist in the apk.");
}
}
}
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj
index a76a18b070d..cfafb084ae2 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj
@@ -290,12 +290,12 @@
Linker\Mono.Linker\MethodAction.cs
-
- Linker\Mono.Linker\MethodReferenceExtensions.cs
-
Linker\Mono.Linker\Pipeline.cs
+
+ Linker\Mono.Linker\MethodReferenceExtensions.cs
+
Linker\Mono.Linker\TypePreserve.cs
diff --git a/src/monodroid/jni/monodroid-glue.c b/src/monodroid/jni/monodroid-glue.c
index f610239f2bc..3ff4bf10600 100644
--- a/src/monodroid/jni/monodroid-glue.c
+++ b/src/monodroid/jni/monodroid-glue.c
@@ -3426,7 +3426,7 @@ set_trace_options (void)
/* Profiler support cribbed from mono/metadata/profiler.c */
typedef void (*ProfilerInitializer) (const char*);
-#define INITIALIZER_NAME "mono_profiler_startup"
+#define INITIALIZER_NAME "mono_profiler_init"
static mono_bool
load_profiler (void *handle, const char *desc, const char *symbol)
@@ -3470,7 +3470,7 @@ load_embedded_profiler (const char *desc, const char *name)
}
static mono_bool
-load_profiler_from_directory (const char *directory, const char *libname, const char *desc)
+load_profiler_from_directory (const char *directory, const char *libname, const char *desc, const char *name)
{
char *full_name = path_combine (directory, libname);
int exists = file_exists (full_name);
@@ -3485,7 +3485,9 @@ load_profiler_from_directory (const char *directory, const char *libname, const
free (full_name);
if (h) {
- mono_bool result = load_profiler (h, desc, INITIALIZER_NAME);
+ char *symbol = monodroid_strdup_printf ("%s_%s", INITIALIZER_NAME, name);
+ mono_bool result = load_profiler (h, desc, symbol);
+ free (symbol);
if (result)
return 1;
dlclose (h);
@@ -3515,18 +3517,18 @@ monodroid_profiler_load (const char *libmono_path, const char *desc, const char
for (oi = 0; oi < MAX_OVERRIDES; ++oi) {
if (!directory_exists (override_dirs [oi]))
continue;
- if ((found = load_profiler_from_directory (override_dirs [oi], libname, desc)))
+ if ((found = load_profiler_from_directory (override_dirs [oi], libname, desc, mname)))
break;
}
do {
if (found)
break;
- if ((found = load_profiler_from_directory (app_libdir, libname, desc)))
+ if ((found = load_profiler_from_directory (app_libdir, libname, desc, mname)))
break;
if ((found = load_embedded_profiler (desc, mname)))
break;
- if (libmono_path != NULL && (found = load_profiler_from_directory (libmono_path, libname, desc)))
+ if (libmono_path != NULL && (found = load_profiler_from_directory (libmono_path, libname, desc, mname)))
break;
} while (0);