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);