Merge pull request #5406 from kumpera/fix_12157
authorRodrigo Kumpera <kumpera@users.noreply.github.com>
Mon, 21 Aug 2017 20:18:31 +0000 (16:18 -0400)
committerGitHub <noreply@github.com>
Mon, 21 Aug 2017 20:18:31 +0000 (16:18 -0400)
[verifier] Base constructors can only be called on uninit'd this pointers. Fix #12157.

14 files changed:
CODEOWNERS
docs/mono-tools.config
mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
mono/mini/method-to-ir.c
mono/tests/Makefile.am
mono/tests/delegate14.cs [new file with mode: 0644]
mono/tests/method-access.il
packaging/MacSDK/libgdiplus.py
packaging/MacSDK/packaging/resources/whitelist.txt
packaging/Windows/defs/managed-components
packaging/Windows/defs/mono
packaging/Windows/defs/mono64
scripts/Makefile.am
tools/pedump/pedump.c

index 34d37e0d50f2fa616db38c8eca2d8e1327f49302..66819f702843902ff1b3fb8a220eecc382daf9f3 100644 (file)
 # https://github.com/blog/2392-introducing-code-owners
 # https://help.github.com/articles/about-codeowners
 
-acceptance-tests/* @akoeplinger
-acceptance-tests/profiler-stress* @alexrp
-docs/sources/mono-api-profiler.html @alexrp
-man @marek-safar @miguel
-man/mprof-report.1 @alexrp
-mcs/build @marek-safar
-mcs/class @marek-safar
-mcs/class/corlib/System.Reflection*/ @vargaz @lambdageek
-mcs/class/Mono.Btls.Interface @baulig
-mcs/class/Mono.Data.Tds @egorbo
-mcs/class/Mono.Debugger.Soft @vargaz
-mcs/class/Mono.Options @jonpryor
-mcs/class/Mono.Profiler.Log @alexrp
-mcs/class/Mono.Security/Mono.Security/Interface @baulig
-mcs/class/System/Mono.AppleTls @baulig
-mcs/class/System/Mono.Btls @baulig
-mcs/class/System/Mono.Net.Security @baulig
-mcs/class/System/Mono.Security.Interface @baulig
-mcs/class/System.Data @egorbo
-mcs/errors @marek-safar
-mcs/mcs @marek-safar
-mcs/tests @marek-safar
-mono/eglib @kumpera @vargaz @luhenry
-mono/metadata/*verify* @kumpera
-mono/metadata @vargaz @kumpera
-mono/metadata/*profiler* @alexrp
-mono/metadata/monitor* @brzvlad
-mono/metadata/sgen* @brzvlad
-mono/metadata/threads* @luhenry @kumpera
-mono/metadata/threadpool* @luhenry
-mono/metadata/w32* @luhenry
-mono/mini @vargaz
-mono/mini/*cfgdump* @lewurm
-mono/mini/*exceptions* @lewurm
-mono/mini/*ppc* @lewurm
-mono/mini/*type-check* @lewurm
-mono/mini/interp/* @lewurm
-mono/mini/*profiler* @alexrp
-mono/profiler @alexrp
-mono/sgen @brzvlad
-mono/utils @kumpera
-mono/utils/atomic* @alexrp
-mono/utils/mono-hwcap* @alexrp
-mono/utils/mono-mem* @alexrp
-mono/utils/mono-threads* @luhenry @kumpera
-msvc/*profiler* @alexrp
-msvc/scripts @akoeplinger
-packaging/Windows @akoeplinger
-samples/profiler @alexrp
-samples/size @alexrp
-scripts @akoeplinger
-scripts/ci @akoeplinger
-scripts/ci/run-test-profiler-stress-tests.sh @alexrp
+/acceptance-tests @akoeplinger
+/acceptance-tests/profiler-stress* @alexrp
+
+/docs @luhenry @marek-safar
+/docs/sources/mono-api-profiler.html @alexrp
+
+/man @marek-safar @miguel
+/man/mprof-report.1 @alexrp
+
+/mcs/build @marek-safar @akoeplinger
+
+/mcs/class @marek-safar @akoeplinger
+/mcs/class/corlib/System.Reflection*/ @vargaz @lambdageek
+/mcs/class/Mono.Btls.Interface @baulig
+/mcs/class/Mono.Data.Tds @egorbo
+/mcs/class/Mono.Debugger.Soft @vargaz
+/mcs/class/Mono.Options @jonpryor
+/mcs/class/Mono.Profiler.Log @alexrp
+/mcs/class/Mono.Security/Mono.Security/Interface @baulig
+/mcs/class/System/Mono.AppleTls @baulig
+/mcs/class/System/Mono.Btls @baulig
+/mcs/class/System/Mono.Net.Security @baulig
+/mcs/class/System/Mono.Security.Interface @baulig
+/mcs/class/System.Data @egorbo
+
+/mcs/errors @marek-safar
+/mcs/mcs @marek-safar
+/mcs/tests @marek-safar
+
+/mono/eglib @kumpera @vargaz @luhenry
+
+/mono/metadata @vargaz @kumpera
+/mono/metadata/*verify* @kumpera
+/mono/metadata/*profiler* @alexrp
+/mono/metadata/monitor* @brzvlad
+/mono/metadata/sgen* @brzvlad
+/mono/metadata/threads* @luhenry @kumpera
+/mono/metadata/threadpool* @luhenry
+/mono/metadata/w32* @luhenry
+
+/mono/mini @vargaz @kumpera
+/mono/mini/*cfgdump* @lewurm
+/mono/mini/*exceptions* @lewurm
+/mono/mini/*ppc* @lewurm
+/mono/mini/*type-check* @lewurm
+/mono/mini/interp/* @lewurm
+/mono/mini/*profiler* @alexrp
+
+/mono/profiler @alexrp @kumpera
+
+/mono/sgen @brzvlad @kumpera
+
+/mono/utils @kumpera @vargaz
+/mono/utils/atomic* @alexrp
+/mono/utils/mono-hwcap* @alexrp
+/mono/utils/mono-mem* @alexrp
+/mono/utils/mono-threads* @luhenry @kumpera
+
+/msvc/*profiler* @alexrp
+/msvc/scripts @akoeplinger
+
+/packaging/ @alexischr @akoeplinger
+/packaging/MacSDK/msbuild.py @radical @akoeplinger
+
+/samples/profiler @alexrp
+/samples/size @alexrp
+
+/scripts @akoeplinger
+/scripts/ci @akoeplinger
+/scripts/ci/run-test-profiler-stress-tests.sh @alexrp
+
+/tools @kumpera
+/tools/checker @tritao
+/tools/crash-bisector @kumpera
+/tools/locale-builder @marek-safar
+/tools/monograph @vargaz
+/tools/nuget-hash-extractor @marek-safar
+/tools/offsets-tool @lewurm @rolfbjarne
+/tools/pedump @kumpera @lambdageek
+/tools/sgen @brzvlad
index b8a850b078faad374e035543b910696ac9ee9263..f83f62df4297562938cef98668924866b57de2e4 100644 (file)
@@ -37,7 +37,6 @@
   <manpage name="mono-xmltool(1)"       page="../man/mono-xmltool.1" />
   <manpage name="mozroots(1)"           page="../man/mozroots.1" />
   <manpage name="permview(1)"           page="../man/permview.1" />
-  <manpage name="prj2make(1)"           page="../man/prj2make.1" />
   <manpage name="resgen(1)"             page="../man/resgen.1" />
   <manpage name="secutil(1)"            page="../man/secutil.1" />
   <manpage name="setreg(1)"             page="../man/setreg.1" />
index 1cf78170bce5425cb632778321ca355ab3e3937b..2bc45681cebc5f7e05d926960bb2fe012b8cd6f9 100644 (file)
@@ -1258,7 +1258,7 @@ namespace MonoTests.System.Threading.Tasks
                {
                        var t = Task.Delay (300);
                        Assert.IsTrue (TaskStatus.WaitingForActivation == t.Status || TaskStatus.Running == t.Status, "#1");
-                       Assert.IsTrue (t.Wait (400), "#2");
+                       Assert.IsTrue (t.Wait (1200), "#2");
                }
 
                [Test]
index 084730f031124c774d734470f315feee42a339f5..2c30d87a59f34b5949e339e963a638bf63fe324b 100644 (file)
@@ -3972,6 +3972,8 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        /* Set target field */
        /* Optimize away setting of NULL target */
        if (!MONO_INS_IS_PCONST_NULL (target)) {
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, target->dreg, 0);
+               MONO_EMIT_NEW_COND_EXC (cfg, EQ, "NullReferenceException");
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, MONO_STRUCT_OFFSET (MonoDelegate, target), target->dreg);
                if (cfg->gen_write_barriers) {
                        dreg = alloc_preg (cfg);
index fbbc0f7a28269b32ae33acf2e8b9cf72d45d8f4a..92955ad51cbb4b1471156465c3447061821c45cc 100755 (executable)
@@ -245,6 +245,7 @@ TESTS_CS_SRC=               \
        delegate11.cs           \
        delegate12.cs           \
        delegate13.cs           \
+       delegate14.cs           \
        largeexp.cs             \
        largeexp2.cs            \
        marshalbyref1.cs        \
@@ -675,6 +676,11 @@ PLATFORM_DISABLED_TESTS += async-exc-compilation.exe finally_guard.exe finally_b
        unhandled-exception-5.exe unhandled-exception-6.exe unhandled-exception-7.exe unhandled-exception-8.exe
 endif
 
+if HOST_DARWIN
+# TODO: remove once https://bugzilla.xamarin.com/show_bug.cgi?id=58901 is fixed
+PLATFORM_DISABLED_TESTS += pinvoke2.exe
+endif
+
 endif
 
 if POWERPC
diff --git a/mono/tests/delegate14.cs b/mono/tests/delegate14.cs
new file mode 100644 (file)
index 0000000..2fd7d62
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+
+// Regression test for bug #58888
+
+public static class Program
+{
+       public static int Main (string[] args)
+       {
+               ITest obj = null;
+               try
+               {
+                       GC.KeepAlive((Action)obj.Func);
+               }
+               catch (NullReferenceException)
+               {
+                       return 0;
+               }
+
+               return 1;
+       }
+
+       interface ITest
+       {
+               void Func ();
+       }
+}
index 558fb5931e4b8fa25ceaa486bcb8da40c6ab66e6..7bae078cc353a5a748869698c84a26521c203137 100644 (file)
@@ -50,7 +50,7 @@
                        br fail
                } catch [mscorlib]System.MethodAccessException {
                        call instance string [mscorlib]System.MethodAccessException::get_Message ()
-                       ldstr "Method `MethFail:sfoo ()' is inaccessible from method `Test:call_sfoo ()'"
+                       ldstr "Method `MethFail.sfoo()' is inaccessible from method `Test.call_sfoo()'"
                        call instance bool [mscorlib]System.String::Equals (string)
                        brfalse fail
                        br continue
index bfb2c70ddbb74ec79e952a456fe2f6893be02da9..7c81fc62459369732498211ba9b5084e11bd888e 100644 (file)
@@ -1,8 +1,8 @@
 GitHubTarballPackage(
     'mono',
     'libgdiplus',
-    '5.4',
-    '350eb49a45ca5a7383c01d49df72438347a5dbc9',
+    '5.6',
+    'f07965ec5fc2b22bfb300d5fef410d25ae472a34',
     configure='CFLAGS="%{gcc_flags} %{local_gcc_flags} -I/opt/X11/include" ./autogen.sh --prefix="%{package_prefix}"',
     override_properties={
         'make': 'C_INCLUDE_PATH="" make'})
index ca729ee9d871eebb7e03a38a831c6a3915b3b038..dc8c7daff2b9b0d690e7d4bc69b143747cb40962 100644 (file)
@@ -109,7 +109,6 @@ pdb2mdb
 pedump
 permview
 peverify
-prj2make
 resgen
 resgen2
 secutil
index ae98eefdd2e128635e5d84ed8489cafdb41e4703..87f293f7b798633a7f736bd8d6ffc37622d90179 100755 (executable)
@@ -21,7 +21,7 @@ download()
        report "Downloading x64 hostfxr.dll"
        wget --quiet -O ${REPODIR}/hostfxr-x64.zip https://www.nuget.org/api/v2/package/runtime.win-x64.Microsoft.NETCore.DotNetHostResolver/2.0.0-preview2-25407-01 || error "*** Could not download 64bit hostfxr.dll ***"
        report "Downloading x86 hostfxr.dll"
-       wget --quiet -O ${REPODIR}/hostfxr-x86.zip https://www.nuget.org/api/v2/package/runtime.win-x86.Microsoft.NETCore.DotNetHostResolver/2.0.0-preview2-25407-01 || error "*** Could not download 64bit hostfxr.dll ***"
+       wget --quiet -O ${REPODIR}/hostfxr-x86.zip https://www.nuget.org/api/v2/package/runtime.win-x86.Microsoft.NETCore.DotNetHostResolver/2.0.0-preview2-25407-01 || error "*** Could not download 32bit hostfxr.dll ***"
        report "Copying Mono MDK for Mac"
        cp $1 ${REPODIR}/mono.xar
 }
index aa7f81f83400cc76e2150b4d3331fbc960d43d7f..f540c8d6bb59b7ad94a55ad335cb23095067136f 100755 (executable)
@@ -56,6 +56,7 @@ install()
        cp -a msvc/build/sgen/Win32/bin/Release/mono-2.0-sgen.dll       ${INSTALLDIR}/bin/
        cp -a msvc/build/sgen/Win32/lib/Release/mono-2.0-sgen.lib       ${INSTALLDIR}/lib/
        cp -a msvc/build/sgen/Win32/bin/Release/mono-2.0-sgen.pdb       ${INSTALLDIR}/lib/
+       cp -a msvc/build/sgen/Win32/bin/Release/libmono-static-sgen.lib ${INSTALLDIR}/lib/
        cp -a msvc/build/sgen/Win32/bin/Release/MonoPosixHelper.dll     ${INSTALLDIR}/bin/
        cp -a msvc/build/sgen/Win32/lib/Release/MonoPosixHelper.lib     ${INSTALLDIR}/lib/
        cp -a msvc/build/sgen/Win32/bin/Release/MonoPosixHelper.pdb     ${INSTALLDIR}/lib/
@@ -64,6 +65,7 @@ install()
        cp -a msvc/build/boehm/Win32/bin/Release/mono-2.0-boehm.dll     ${INSTALLDIR}/bin/
        cp -a msvc/build/boehm/Win32/lib/Release/mono-2.0-boehm.lib     ${INSTALLDIR}/lib/
        cp -a msvc/build/boehm/Win32/bin/Release/mono-2.0-boehm.pdb     ${INSTALLDIR}/lib/
+       cp -a msvc/build/boehm/Win32/bin/Release/libmono-static-boehm.lib       ${INSTALLDIR}/lib/
        cp -a ${INSTALLDIR}/bin/mono-sgen.exe   ${INSTALLDIR}/bin/mono.exe
        cp -a ${INSTALLDIR}/bin/mono-sgen.pdb   ${INSTALLDIR}/bin/mono.pdb
        popd
index 2d7dcc5f8d852b91b05fa4a9552a9b24f74c7731..ece2bb24b7756af1ec44e6a7f89157bcb7162b83 100755 (executable)
@@ -56,6 +56,7 @@ install()
        cp -a msvc/build/sgen/x64/bin/Release/mono-2.0-sgen.dll ${INSTALLDIR}/bin/
        cp -a msvc/build/sgen/x64/lib/Release/mono-2.0-sgen.lib ${INSTALLDIR}/lib/
        cp -a msvc/build/sgen/x64/bin/Release/mono-2.0-sgen.pdb ${INSTALLDIR}/lib/
+       cp -a msvc/build/sgen/x64/bin/Release/libmono-static-sgen.lib   ${INSTALLDIR}/lib/
        cp -a msvc/build/sgen/x64/bin/Release/MonoPosixHelper.dll       ${INSTALLDIR}/bin/
        cp -a msvc/build/sgen/x64/lib/Release/MonoPosixHelper.lib       ${INSTALLDIR}/lib/
        cp -a msvc/build/sgen/x64/bin/Release/MonoPosixHelper.pdb       ${INSTALLDIR}/lib/
index b208d06d1f76a2651c321bc32ab7b4cc518369ee..9f792fd13655e10345e1d65dc48350d1ad4a0ba1 100644 (file)
@@ -72,7 +72,6 @@ scripts_4_0 = \
        macpack$(SCRIPT_SUFFIX)                 \
        mdoc$(SCRIPT_SUFFIX)                    \
        mono-cil-strip$(SCRIPT_SUFFIX)          \
-       prj2make$(SCRIPT_SUFFIX)                \
        soapsuds$(SCRIPT_SUFFIX)                \
        caspol$(SCRIPT_SUFFIX)                  \
        cert-sync$(SCRIPT_SUFFIX)               \
index 722d42f9828ab161d75a8d757594b4ae090f7bf1..b75a8fed5bed87dc07e631fadb9fac3063039a14 100644 (file)
@@ -42,6 +42,8 @@ gboolean verify_metadata = FALSE;
 gboolean verify_code = FALSE;
 gboolean verify_partial_md = FALSE;
 
+static char *assembly_directory[2];
+
 static MonoAssembly *pedump_preload (MonoAssemblyName *aname, gchar **assemblies_path, gpointer user_data);
 static void pedump_assembly_load_hook (MonoAssembly *assembly, gpointer user_data);
 static MonoAssembly *pedump_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data);
@@ -635,6 +637,8 @@ pedump_preload (MonoAssemblyName *aname,
        if (assemblies_path && assemblies_path [0] != NULL) {
                result = real_load (assemblies_path, aname->culture, aname->name, refonly);
        }
+       if (!result)
+               result = real_load (assembly_directory, aname->culture, aname->name, refonly);
 
        return result;
 }
@@ -707,6 +711,8 @@ main (int argc, char *argv [])
        //We have to force the runtime to load the corlib under verification as its own corlib so core types are properly populated in mono_defaults.
        if (strstr (file, "mscorlib.dll"))
                g_setenv ("MONO_PATH", g_path_get_dirname (file), 1);
+       assembly_directory [0] = g_path_get_dirname (file);
+       assembly_directory [1] = NULL;
 
 #ifndef DISABLE_PERFCOUNTERS
        mono_perfcounters_init ();