Merge pull request #3244 from henricm/fix-for-synchronization-attribute
authorMarek Safar <marek.safar@gmail.com>
Thu, 7 Jul 2016 12:25:59 +0000 (14:25 +0200)
committerGitHub <noreply@github.com>
Thu, 7 Jul 2016 12:25:59 +0000 (14:25 +0200)
Fix for lock release in SynchronizationAttribute

136 files changed:
acceptance-tests/coreclr.mk
mcs/build/rules.make
mcs/class/Facades/System.Console/TypeForwarders.cs
mcs/class/Facades/System.Diagnostics.Tracing/TypeForwarders.cs
mcs/class/Facades/System.IO.Compression/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.IO.Compression/Makefile [new file with mode: 0644]
mcs/class/Facades/System.IO.Compression/System.IO.Compression.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.IO.Compression/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.IO/TypeForwarders.cs
mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs
mcs/class/Facades/System.Reflection/TypeForwarders.cs
mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
mcs/class/Facades/System.Runtime/TypeForwarders.cs
mcs/class/Facades/System.Security.Cryptography.Algorithms/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Algorithms/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Algorithms/System.Security.Cryptography.Algorithms.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Algorithms/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Encoding/TypeForwarders.cs
mcs/class/Facades/System.Security.Cryptography.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Primitives/System.Security.Cryptography.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Cryptography.X509Certificates/Makefile
mcs/class/Facades/System.Security.Cryptography.X509Certificates/TypeForwarders.cs
mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs
mcs/class/Facades/subdirs.make
mcs/class/Makefile
mcs/class/Mono.CSharp/mobile_static_Mono.CSharp_test.dll.exclude.sources [new file with mode: 0644]
mcs/class/Mono.CSharp/mobile_static_Mono.CSharp_test.dll.sources [new file with mode: 0644]
mcs/class/System.Core/System.Security.Cryptography.X509Certificates/ECDsaCertificateExtensions.cs [new file with mode: 0644]
mcs/class/System.Core/System.Security.Cryptography.X509Certificates/RSACertificateExtensions.cs [new file with mode: 0644]
mcs/class/System.Core/Test/System.IO.MemoryMappedFiles/MemoryMappedFileTest.cs
mcs/class/System.Core/common_System.Core.dll.sources
mcs/class/System.Data/Test/System.Data/DataTableTest.cs
mcs/class/System.Data/Test/System.Data/DataViewTest2.cs
mcs/class/System.Data/app_test_mobile_static.config [new file with mode: 0644]
mcs/class/System.IO.Compression/SharpCompress/Archive/AbstractWritableArchive.cs
mcs/class/System.IO.Compression/Test/System.IO.Compression/ZipTest.cs
mcs/class/System.IO.Compression/ZipArchive.cs
mcs/class/System.IO.Compression/ZipArchiveEntry.cs
mcs/class/System.Numerics.Vectors/Assembly/TypeForwarders.cs [new file with mode: 0644]
mcs/class/System.Numerics.Vectors/Makefile
mcs/class/System.Numerics.Vectors/System.Numerics.Vectors.dll.sources
mcs/class/System.Numerics/Makefile
mcs/class/System.Numerics/ReferenceSources/Environment.cs [deleted file]
mcs/class/System.Numerics/System.Numerics.dll.sources
mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Runtime.InteropServices.RuntimeInformation/Makefile [new file with mode: 0644]
mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices.RuntimeInformation.dll.sources [new file with mode: 0644]
mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/Architecture.cs [new file with mode: 0644]
mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/OSPlatform.cs [new file with mode: 0644]
mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/RuntimeInformation.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractResolverTest.cs
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs
mcs/class/System.ServiceModel/mobile_static_System.ServiceModel_test.dll.exclude.sources [new file with mode: 0644]
mcs/class/System.ServiceModel/mobile_static_System.ServiceModel_test.dll.sources [new file with mode: 0644]
mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SoapHttpClientProtocolTest.cs
mcs/class/System.Web.Services/mobile_static_System.Web.Services_test.dll.exclude.sources
mcs/class/System/Makefile
mcs/class/System/Microsoft.Win32.SafeHandles/SafeX509ChainHandle.cs [new file with mode: 0644]
mcs/class/System/System.IO.Compression/DeflateStream.cs
mcs/class/System/System.Net.NetworkInformation/NetworkChange.cs
mcs/class/System/System.Net.Sockets/Socket.cs
mcs/class/System/System.dll.sources
mcs/class/System/Test/System.Diagnostics/FileVersionInfoTest.cs
mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
mcs/class/System/Test/System.Timers/TimerTest.cs
mcs/class/System/mobile_System.dll.sources
mcs/class/System/mobile_static_System_test.dll.exclude.sources
mcs/class/corlib/Mono/RuntimeHandles.cs [new file with mode: 0644]
mcs/class/corlib/Mono/RuntimeStructs.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventDataAttribute.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventFieldAttribute.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventFieldFormat.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventFieldTags.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventIgnoreAttribute.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventManifestOptions.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics.Tracing/EventSourceException.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics/StackFrame.cs
mcs/class/corlib/System.Diagnostics/StackTrace.cs
mcs/class/corlib/System.Runtime.InteropServices/ComAwareEventInfo.cs [new file with mode: 0644]
mcs/class/corlib/System.Runtime.InteropServices/ComEventsHelper.cs [new file with mode: 0644]
mcs/class/corlib/System.Runtime.InteropServices/CustomQueryInterfaceMode.cs [new file with mode: 0644]
mcs/class/corlib/System.Runtime.Remoting.Messaging/MonoMethodMessage.cs
mcs/class/corlib/System.Runtime.Remoting.Proxies/RealProxy.cs
mcs/class/corlib/Test/System/DelegateTest.cs
mcs/class/corlib/corlib.dll.sources
mcs/ilasm/codegen/TypeDef.cs
mcs/mcs/ecore.cs
mcs/tests/test-935.cs
mcs/tests/ver-il-net_4_x.xml
mcs/tools/linker/Descriptors/mscorlib.xml
mono/metadata/class.c
mono/metadata/domain-internals.h
mono/metadata/domain.c
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/object-internals.h
mono/metadata/object.c
mono/metadata/remoting.c
mono/metadata/sgen-bridge.c
mono/metadata/sgen-mono.c
mono/metadata/wrapper-types.h
mono/mini/alias-analysis.c
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/debugger-agent.c
mono/mini/llvm-jit.cpp
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-exceptions.c
mono/mini/mini-llvm-cpp.cpp
mono/mini/mini-llvm-cpp.h
mono/mini/mini-llvm.c
mono/mini/mini-runtime.c
mono/mini/mini-trampolines.c
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h
mono/profiler/Makefile.am
mono/sgen/sgen-marksweep.c
mono/tests/bug-30085.cs
mono/tests/libtest.c
mono/utils/lock-free-alloc.c
msvc/libmono-static.vcxproj [new file with mode: 0644]
msvc/libmono-static.vcxproj.filters [new file with mode: 0644]
msvc/libmono.vcxproj
msvc/libmono.vcxproj.filters
msvc/libmonoruntime.vcxproj
msvc/mono.sln
scripts/ci/run-test-default.sh
scripts/submodules/versions.mk

index 8f75b05470fe46685d232f3a35933dbc1080fc59..1f4be3d1e8fbc9cefb15d72648b5068298d01356 100644 (file)
@@ -262,9 +262,7 @@ CORECLR_TEST_CS_SRC=                \
        $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/pow/pow2.cs    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/pow/pow3.cs    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/lifetime/lifetime1.cs    \
-       $(CORECLR_PATH)/tests/src/JIT/Directed/lifetime/lifetime2.cs    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/localloc/localloc3.cs    \
-       $(CORECLR_PATH)/tests/src/JIT/Directed/newarr/newarr.cs \
        $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int16.cs   \
        $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int32.cs   \
        $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int64.cs   \
@@ -1279,7 +1277,6 @@ CORECLR_TEST_CS_SRC=              \
        $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeybeta2/349379/349379.cs     \
        $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeybeta2/366085/366085.cs     \
        $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeym3.3/106011/106011.cs      \
-       $(CORECLR_PATH)/tests/src/baseservices/exceptions/sharedexceptions/emptystacktrace/oomexception01.cs    \
        $(CORECLR_PATH)/tests/src/baseservices/exceptions/simple/finally.cs     \
        $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/returnfromcatch.cs  \
        $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/functional/threadpool/cs_threadpoolnullchecks/cs_threadpoolnullchecks.cs   \
@@ -4003,6 +4000,15 @@ CORECLR_DISABLED_TEST_CS_SRC +=  \
 # this test makes no sense, the expected pattern is the English one for all cultures
 CORECLR_DISABLED_TEST_CS_SRC += $(CORECLR_PATH)/tests/src/Regressions/coreclr/0584/test584.cs
 
+# Requires precise stack scanning
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/lifetime/lifetime2.cs
+
+# Depends on small array behavior of .net. Mono supports objects > 2Gb on 64bits and the following tests verify for that
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/newarr/newarr.cs \
+          $(CORECLR_PATH)/tests/src/baseservices/exceptions/sharedexceptions/emptystacktrace/oomexception01.cs
+
 CORECLR_TEST_IL_SRC =                  \
        $(CORECLR_PATH)/tests/src/JIT/BBT/Scenario4/Not-Int32.il        \
        $(CORECLR_PATH)/tests/src/JIT/Directed/Convert/implicitConv.il  \
@@ -4073,7 +4079,6 @@ CORECLR_TEST_IL_SRC =                     \
        $(CORECLR_PATH)/tests/src/JIT/Directed/array-il/simple3.il      \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/badendfinally.il       \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/badtailcall.il \
-       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/byrefsubbyref1.il      \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/calli2.il      \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ceeillegal.il  \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ldelemnullarr2.il      \
@@ -4087,14 +4092,12 @@ CORECLR_TEST_IL_SRC =                   \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/volatilldind.il        \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/volatilstind.il        \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/arrgetlen.il   \
-       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lcliimpl.il    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ldsshrstsfld.il        \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ldvirtftncalli.il      \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ovfldiv2.il    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ovflrem2.il    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/stfldstatic1.il        \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/stfldstatic2.il        \
-       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/subbyref.il    \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/switchdefaultonly1.il  \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/switchdefaultonly2.il  \
        $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/switchdefaultonly3.il  \
@@ -5118,6 +5121,21 @@ CORECLR_DISABLED_TEST_IL_SRC +=                  \
        $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28901/b28901.il      \
        $(CORECLR_PATH)/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b173569/b173569.il
 
+
+# Bad test that tries an implicit cast from int32 to byref
+CORECLR_DISABLED_TEST_IL_SRC +=        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/byrefsubbyref1.il
+
+# Bad test that tries to implicit cast from bytef to int32
+CORECLR_DISABLED_TEST_IL_SRC +=        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/subbyref.il
+
+# Bad test that tries to assign a byref to a class to a byref of an interface that class implements
+# This is unsafe because the byref is mutable and would allow you to store the wrong type on that cell.
+CORECLR_DISABLED_TEST_IL_SRC +=        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lcliimpl.il
+
+       
 # find all CoreCLR *.il test files that aren't mentioned in this file
 CORECLR_DEFINED_IL_SRC = $(CORECLR_TEST_IL_SRC) $(CORECLR_DISABLED_TEST_IL_SRC)
 CORECLR_UPSTREAM_IL_SRC=$(shell find "$(CORECLR_PATH)/tests" -iname "*.il")
index 5e90cf8ddac60c76169f749959fabe51e0fe4484..eae908e3addb223ae4b4ecbb674c40ade4c600ae 100644 (file)
@@ -202,17 +202,33 @@ STD_TARGETS = test run-test run-test-ondotnet clean install uninstall doc-update
 $(STD_TARGETS): %: do-%
 
 ifdef PLATFORM_AOT_SUFFIX
-Q_AOT=$(if $(V),,@echo "AOT     [$(PROFILE)] AOT All Assemblies";)
-LIST_ALL_PROFILE_ASSEMBLIES = find . | grep -E '(dll|exe)$$' | grep -v -E 'bare|plaincore|secxml|Facades'
-COMPILE_ALL_PROFILE_ASSEMBLIES = $(LIST_ALL_PROFILE_ASSEMBLIES) | MONO_PATH="./" xargs -I '{}' $(RUNTIME) $(RUNTIME_FLAGS) $(AOT_BUILD_FLAGS) '{}'
+AOT_PROFILE_ASSEMBLIES = $(shell cd $(topdir)/class/lib/$(PROFILE)/ && find . | grep -E '(dll|exe)$$' | grep -v -E 'bare|plaincore|secxml|Facades' | sed 's:\./::g' | tr '\n' ' ')
 
 do-all-aot:
        $(MAKE) do-all TOP_LEVEL_DO=do-all
        $(MAKE) aot-all-profile
 
-aot-all-profile:
-       $(Q_AOT) cd $(topdir)/class/lib/$(PROFILE)/ && $(COMPILE_ALL_PROFILE_ASSEMBLIES) &> $(PROFILE)-aot.log
-endif
+# When we recursively call $(MAKE) aot-all-profile
+# we will have created this directory, and so will
+# be able to evaluate the .dylibs to make
+ifneq ("$(wildcard $(topdir)/class/lib/$(PROFILE))","")
+
+AOT_PROFILE_ASSEMBLIES_CMD = cd $(topdir)/class/lib/$(PROFILE)/ && find . | grep -E '(dll|exe)$$' | grep -v -E 'bare|plaincore|secxml|Facades|ilasm' | sed 's:\./::g' | tr '\n' ' '
+AOT_PROFILE_ASSEMBLIES_CMD_SAFE = $(AOT_PROFILE_ASSEMBLIES_CMD) || true
+AOT_PROFILE_ASSEMBLIES = $(shell $(AOT_PROFILE_ASSEMBLIES_CMD_SAFE))
+
+# This can run in parallel
+.PHONY: aot-all-profile
+aot-all-profile: $(patsubst %,$(topdir)/class/lib/$(PROFILE)/%$(PLATFORM_AOT_SUFFIX),$(AOT_PROFILE_ASSEMBLIES))
+
+$(topdir)/class/lib/$(PROFILE)/%$(PLATFORM_AOT_SUFFIX): $(topdir)/class/lib/$(PROFILE)/%
+       @ mkdir -p $(topdir)/class/lib/$(PROFILE)/$*_bitcode_tmp
+       @echo "AOT     [$(PROFILE)] AOT $* " && cd $(topdir)/class/lib/$(PROFILE)/ && MONO_PATH="." $(RUNTIME) $(RUNTIME_FLAGS) $(AOT_BUILD_FLAGS),temp-path=$*_bitcode $* >> $(PROFILE)-aot.log
+       @ rm -rf $(topdir)/class/lib/$(PROFILE)/$*_bitcode_tmp
+
+endif #ifneq ("$(wildcard $(topdir)/class/lib/$(PROFILE))","")
+
+endif # PLATFORM_AOT_SUFFIX
 
 do-run-test:
        ok=:; $(MAKE) run-test-recursive || ok=false; $(MAKE) run-test-local || ok=false; $$ok
index 5987d7bb1f3e6fb4329f9aa6bfddf96df440f3c5..fae3bad3783e1c263a037089ed795ee15ee07b7f 100644 (file)
@@ -25,5 +25,6 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ConsoleCancelEventHandler))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ConsoleColor))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ConsoleSpecialKey))]
-
-
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ConsoleKey))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ConsoleKeyInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ConsoleModifiers))]
index 832c003b52e813dd0f25651f00370f164a258cfa..80cc7e2006ae50ecc8c57e48215e8dc21b7f5c5c 100644 (file)
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventCommandEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventKeywords))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventLevel))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventListener))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventListener))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventOpcode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSource))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceSettings))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventTask))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventWrittenEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventWrittenEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.NonEventAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventActivityOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventDataAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventFieldAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventFieldFormat))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventFieldTags))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventIgnoreAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventManifestOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventTags))]
diff --git a/mcs/class/Facades/System.IO.Compression/AssemblyInfo.cs b/mcs/class/Facades/System.IO.Compression/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..08e157f
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.IO.Compression.dll")]
+[assembly: AssemblyDescription ("System.IO.Compression.dll")]
+[assembly: AssemblyDefaultAlias ("System.IO.Compression.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.IO.Compression/Makefile b/mcs/class/Facades/System.IO.Compression/Makefile
new file mode 100644 (file)
index 0000000..4fbfc56
--- /dev/null
@@ -0,0 +1,23 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.IO.Compression
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.IO.Compression.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_REFS = System
+LIB_MCS_FLAGS = $(SIGN_FLAGS)
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.IO.Compression/System.IO.Compression.dll.sources b/mcs/class/Facades/System.IO.Compression/System.IO.Compression.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.IO.Compression/TypeForwarders.cs b/mcs/class/Facades/System.IO.Compression/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..5eaf037
--- /dev/null
@@ -0,0 +1,28 @@
+// 
+// Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.CompressionLevel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.CompressionMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.DeflateStream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.GZipStream))]
+
+
index ea526e77de476e7db02c11eedf2a25c82cc9d0fe..2c84d4bac3c845ebb4b038e4ae62b31a6341551a 100644 (file)
@@ -35,4 +35,5 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringWriter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextReader))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BufferedStream))]
 
index 52af3f619ecce003dda88b62803983097f0e368f..6b82ffb42f3a2d7282375c675f546baca6bb129e 100644 (file)
@@ -64,6 +64,5 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryProvider))]
-
-//Missing: [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.IArgumentProvider))]
-//Missing: [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.IDynamicExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.IArgumentProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.IDynamicExpression))]
index 511c1fe2ed3af0233af458fa162b98c6263d916d..d1d2b4ecb1245ec23878cc0ecb6204e2ecebe71f 100644 (file)
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetInvocationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetParameterCountException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.BindingFlags))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ICustomAttributeProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.InvalidFilterCriteriaException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MemberFilter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MemberTypes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterModifier))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeFilter))]
 
index a088678a7fb96c382503db951a7ce8a31e7bc692..94249720f6a1a2130d71d6bacff177e3bd5d47d0 100644 (file)
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.STATSTG))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CriticalHandle))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CurrencyWrapper))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceMode))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceResult))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultCharSetAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispatchWrapper))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispIdAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportSearchPath))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VarEnum))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VariantWrapper))]
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComAwareEventInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComEventsHelper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ADVF))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.BINDPTR))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.CALLCONV))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.CONNECTDATA))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.DATADIR))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.DESCKIND))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.DISPPARAMS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.DVASPECT))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ELEMDESC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.EXCEPINFO))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.FILETIME))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.FORMATETC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.FUNCDESC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.FUNCFLAGS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.FUNCKIND))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IAdviseSink))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IBindCtx))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IConnectionPoint))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IConnectionPointContainer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IDLDESC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IDLFLAG))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IEnumConnections))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IEnumFORMATETC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IEnumMoniker))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IEnumString))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IEnumVARIANT))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IMoniker))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.INVOKEKIND))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IPersistFile))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.IRunningObjectTable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ITypeComp))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ITypeInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ITypeInfo2))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ITypeLib))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.ITypeLib2))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.LIBFLAGS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.PARAMDESC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.PARAMFLAG))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.STATDATA))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.STGMEDIUM))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.SYSKIND))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.TYMED))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.TYPEATTR))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.TYPEDESC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.TYPEFLAGS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.TYPEKIND))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.TYPELIBATTR))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.VARDESC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.VARFLAGS))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComTypes.VARKIND))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ICustomQueryInterface))]
\ No newline at end of file
index 7184eee8b4b3c1e703575c9713013c51d1fe9f09..03f6d00db310d388e7074299c1562c6d5727f99c 100644 (file)
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IsConst))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeCode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriFormatException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConditionalWeakTable<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandleType))]
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/AssemblyInfo.cs b/mcs/class/Facades/System.Security.Cryptography.Algorithms/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..76645c3
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Security.Cryptography.Algorithms.dll")]
+[assembly: AssemblyDescription ("System.Security.Cryptography.Algorithms.dll")]
+[assembly: AssemblyDefaultAlias ("System.Security.Cryptography.Algorithms.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/Makefile b/mcs/class/Facades/System.Security.Cryptography.Algorithms/Makefile
new file mode 100644 (file)
index 0000000..389a11c
--- /dev/null
@@ -0,0 +1,23 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.Security.Cryptography.Algorithms
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Security.Cryptography.Algorithms.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_REFS = System System.Core
+LIB_MCS_FLAGS = $(SIGN_FLAGS)
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/System.Security.Cryptography.Algorithms.dll.sources b/mcs/class/Facades/System.Security.Cryptography.Algorithms/System.Security.Cryptography.Algorithms.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.Security.Cryptography.Algorithms/TypeForwarders.cs b/mcs/class/Facades/System.Security.Cryptography.Algorithms/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..5a59369
--- /dev/null
@@ -0,0 +1,46 @@
+// 
+// Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.Aes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.DeriveBytes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.ECDsa))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HMACMD5))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HMACSHA1))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HMACSHA256))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HMACSHA384))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HMACSHA512))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.MD5))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RandomNumberGenerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.Rfc2898DeriveBytes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RSA))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RSAEncryptionPadding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RSAEncryptionPaddingMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RSAParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RSASignaturePadding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.RSASignaturePaddingMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.SHA1))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.SHA256))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.SHA384))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.SHA512))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.TripleDES))]
+
+
index 49d90149966d12bfe89027ff647952642b8490ec..07db287ab8876d9556386139dbb5a00b2dacf602 100644 (file)
@@ -25,5 +25,5 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.OidCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.OidEnumerator))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.OidGroup))]
-
-
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.AsnEncodedDataCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.AsnEncodedDataEnumerator))]
diff --git a/mcs/class/Facades/System.Security.Cryptography.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Security.Cryptography.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9b7aef5
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Security.Cryptography.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Security.Cryptography.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Security.Cryptography.Primitives.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.Security.Cryptography.Primitives/Makefile b/mcs/class/Facades/System.Security.Cryptography.Primitives/Makefile
new file mode 100644 (file)
index 0000000..b4c114a
--- /dev/null
@@ -0,0 +1,23 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.Security.Cryptography.Primitives
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Security.Cryptography.Primitives.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_REFS = System
+LIB_MCS_FLAGS = $(SIGN_FLAGS)
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.Security.Cryptography.Primitives/System.Security.Cryptography.Primitives.dll.sources b/mcs/class/Facades/System.Security.Cryptography.Primitives/System.Security.Cryptography.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.Security.Cryptography.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Security.Cryptography.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ea7934e
--- /dev/null
@@ -0,0 +1,37 @@
+// 
+// Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.AsymmetricAlgorithm))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.CipherMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.CryptographicException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.CryptoStream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.CryptoStreamMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HashAlgorithm))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HashAlgorithmName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.HMAC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.ICryptoTransform))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.KeyedHashAlgorithm))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.KeySizes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.PaddingMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.SymmetricAlgorithm))]
+
+
index 5ad2d813f95f024e4a80de3a6e15c9458230b531..8b01e585ecba504d93a2d1a4bd423c4c50dacaaf 100644 (file)
@@ -11,7 +11,7 @@ LIBRARY = System.Security.Cryptography.X509Certificates.dll
 
 KEY_FILE = ../../msfinal.pub
 SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
-LIB_REFS = System
+LIB_REFS = System System.Core
 LIB_MCS_FLAGS = $(SIGN_FLAGS) 
 
 PLATFORM_DEBUG_FLAGS =
index 4984b098b6ee8368fa0c8387a97ab2ef254e0514..a653d295fa9fe155769c976867352eb86ea1b73e 100644 (file)
@@ -20,7 +20,7 @@
 // THE SOFTWARE.
 // 
 
-//TODO:[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.SafeHandles.SafeX509ChainHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.SafeHandles.SafeX509ChainHandle))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.OpenFlags))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.PublicKey))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.StoreLocation))]
@@ -56,5 +56,6 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierHashAlgorithm))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.X509VerificationFlags))]
-
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Cryptography.X509Certificates.RSACertificateExtensions))]
 
index be4c7cc58bcba3d1a50e548ba714a4e61834e821..f9b4d759a44030f2263947be81d3d59b0b951110 100644 (file)
@@ -30,4 +30,5 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Regex))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexMatchTimeoutException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexOptions))]
-
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexRunner))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexRunnerFactory))]
index 0e18045fc84e385f476acf179a8d9486c22857a7..ebece6f697ae88735a674fd6ed89b10c8179167b 100644 (file)
@@ -25,7 +25,8 @@ System.Security.Cryptography.Hashing.Algorithms System.Security.Cryptography.RSA
 System.Security.Cryptography.X509Certificates System.Security.Principal.Windows System.Threading.Thread System.Threading.ThreadPool \
 System.Xml.XPath System.Xml.XmlDocument System.Xml.Xsl.Primitives Microsoft.Win32.Registry.AccessControl System.Diagnostics.StackTrace System.Globalization.Extensions \
 System.IO.FileSystem.AccessControl System.Private.CoreLib.InteropServices System.Private.CoreLib.Threading System.Reflection.TypeExtensions \
-System.Security.SecureString System.Threading.AccessControl System.Threading.Overlapped System.Xml.XPath.XDocument
+System.Security.SecureString System.Threading.AccessControl System.Threading.Overlapped System.Xml.XPath.XDocument System.IO.Compression \
+System.Security.Cryptography.Algorithms System.Security.Cryptography.Primitives
 
 reflection_PARALLEL_SUBDIRS = System.Reflection.Emit.ILGeneration System.Reflection.Emit.Lightweight System.Reflection.Emit
 
index 167bc4ca5cc5bc8a883aa8d145b3c9249aba47b0..efc8181c02ef7bb0f70307a5afa07703fb061c99 100644 (file)
@@ -53,7 +53,8 @@ mobile_common_dirs := \
        Microsoft.CSharp \
        Mono.Security.Providers.DotNet  \
        Mono.Security.Providers.NewSystemSource \
-       Mono.Security.Providers.NewTls
+       Mono.Security.Providers.NewTls  \
+       System.Runtime.InteropServices.RuntimeInformation
 
 mobile_static_dirs := \
        $(mobile_common_dirs)   \
@@ -133,6 +134,7 @@ xammac_4_5_dirs := \
        Mono.Security.Providers.OldTls \
        Mono.Security.Providers.NewSystemSource \
        Mono.Security.Providers.NewTls \
+       System.Runtime.InteropServices.RuntimeInformation \
        $(pcl_facade_dirs)
 
 net_4_x_dirs := \
@@ -219,7 +221,8 @@ net_4_x_dirs := \
        System.Web.Http.SelfHost \
        System.Web.Http.WebHost \
        Mono.Security.Providers.NewSystemSource \
-       Mono.Security.Providers.NewTls
+       Mono.Security.Providers.NewTls \
+       System.Runtime.InteropServices.RuntimeInformation
 
 # These are the subdirs which depends on libs in net_4_x_dirs
 # or have proper dependencies between each other
diff --git a/mcs/class/Mono.CSharp/mobile_static_Mono.CSharp_test.dll.exclude.sources b/mcs/class/Mono.CSharp/mobile_static_Mono.CSharp_test.dll.exclude.sources
new file mode 100644 (file)
index 0000000..c433add
--- /dev/null
@@ -0,0 +1,6 @@
+Evaluator/BuildinCommands.cs
+Evaluator/CompletionTest.cs
+Evaluator/EvaluatorFixture.cs
+Evaluator/EvaluatorTest.cs
+Evaluator/ExpressionsTest.cs
+Evaluator/TypesTest.cs
diff --git a/mcs/class/Mono.CSharp/mobile_static_Mono.CSharp_test.dll.sources b/mcs/class/Mono.CSharp/mobile_static_Mono.CSharp_test.dll.sources
new file mode 100644 (file)
index 0000000..64b774b
--- /dev/null
@@ -0,0 +1 @@
+#include Mono.CSharp_test.dll.sources
diff --git a/mcs/class/System.Core/System.Security.Cryptography.X509Certificates/ECDsaCertificateExtensions.cs b/mcs/class/System.Core/System.Security.Cryptography.X509Certificates/ECDsaCertificateExtensions.cs
new file mode 100644 (file)
index 0000000..aa5da44
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// ECDsaCertificateExtensions.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       public static class ECDsaCertificateExtensions
+       {
+               [MonoTODO]
+               public static ECDsa GetECDsaPrivateKey (this X509Certificate2 certificate)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static ECDsa GetECDsaPublicKey (this X509Certificate2 certificate)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Core/System.Security.Cryptography.X509Certificates/RSACertificateExtensions.cs b/mcs/class/System.Core/System.Security.Cryptography.X509Certificates/RSACertificateExtensions.cs
new file mode 100644 (file)
index 0000000..0e322e4
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// RsaCertificateExtensions.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       public static class RSACertificateExtensions
+       {
+               [MonoTODO]
+               public static RSA GetRSAPrivateKey(this X509Certificate2 certificate)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static RSA GetRSAPublicKey(this X509Certificate2 certificate)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
index b61fcb2bf4dbda1e403cf6b0c84d9539361b605d..27191c37ed2b7b121d2f1926471d459add1d013f 100644 (file)
@@ -379,7 +379,9 @@ namespace MonoTests.System.IO.MemoryMappedFiles {
                [Test]
                public void CreateViewStreamAlignToPageSize ()
                {
-#if MONOTOUCH
+#if __WATCHOS__
+                       int pageSize = 4096;
+#elif MONOTOUCH
                        // iOS bugs on ARM64 - bnc #27667 - apple #
                        int pageSize = (IntPtr.Size == 4) ? Environment.SystemPageSize : 4096;
 #else
index 676127096e1f7ce4cd110a3b85e3c3ee4ca6e1de..8457ac0ffa956b8adefff43c8dee3750d89d2799 100644 (file)
@@ -6,6 +6,8 @@ System.IO.MemoryMappedFiles/MemoryMappedFile.cs
 System.IO.MemoryMappedFiles/MemoryMappedView.cs
 Microsoft.Win32.SafeHandles/SafeMemoryMappedFileHandle.cs
 Microsoft.Win32.SafeHandles/SafeMemoryMappedViewHandle.cs
+System.Security.Cryptography.X509Certificates/ECDsaCertificateExtensions.cs
+System.Security.Cryptography.X509Certificates/RSACertificateExtensions.cs
 
 ReferenceSources/SR.cs
 ReferenceSources/SR.missing.cs
index a44a225534eee1f385f9f5b2ef5e9f5b07097656..388f547212ad45907957b767ab265f33591a724b 100644 (file)
@@ -4197,7 +4197,7 @@ namespace MonoTests.System.Data
                        Assert.AreEqual (5, n, "n");
                }
 
-#if !MONOTOUCH
+#if !MONOTOUCH && !MOBILE_STATIC
                [Test]
                public void NFIFromBug55978 ()
                {
index f727d736d2a05a639ce2441350bd4bb9eedc5651..50850b6d23f57e8edd44b15c64d2f78ac7e61fa4 100644 (file)
@@ -1158,6 +1158,9 @@ namespace MonoTests.System.Data
                        Assert.AreEqual (-1, evProp.NewIndex, "#10");
                        Assert.AreEqual (-1, evProp.OldIndex, "#11");
                        Assert.AreEqual (ListChangedType.Reset, evProp.lstType, "#12");
+
+                       // Keep the view alive otherwise we might miss events
+                       GC.KeepAlive (view);
                }
 
                [Test]
diff --git a/mcs/class/System.Data/app_test_mobile_static.config b/mcs/class/System.Data/app_test_mobile_static.config
new file mode 100644 (file)
index 0000000..4f31597
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+       <configSections>
+               <section name="system.data_test" 
+                       type="System.Data.Common.DbProviderFactoriesConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+               <section name="connectionStrings_test"
+                       type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
+       </configSections>
+       <system.data>
+               <DbProviderFactories>
+                       <add name="ProviderTest2.Name"
+                               invariant="ProviderTest2.InvariantName"
+                               support="FF"
+                               description="ProviderTest2.Description"
+                               type="ProviderTest2.AssemblyQualifiedName"/>
+               </DbProviderFactories>
+       </system.data>
+       <system.data_test>
+               <DbProviderFactories>
+                       <add name="ProviderTest3.Name"
+                               invariant="ProviderTest3.InvariantName"
+                               support="FF"
+                               description="ProviderTest3.Description"
+                               type="ProviderTest3.AssemblyQualifiedName"/>
+                       <clear />
+                       <add name="ProviderTest4.Name"
+                               invariant="ProviderTest4.InvariantName"
+                               support="FF"
+                               description="ProviderTest4.Description"
+                               type="ProviderTest4.AssemblyQualifiedName"/>
+                       <add name="ProviderTest5.Name"
+                               invariant="ProviderTest5.InvariantName"
+                               support="FF"
+                               description="ProviderTest5.Description"
+                               type="ProviderTest5.AssemblyQualifiedName"/>
+                       <remove invariant="ProviderTest5.InvariantName" />
+                       <add name="ProviderTest.Name"
+                               invariant="ProviderTest.InvariantName"
+                               support="FF"
+                               description="ProviderTest.Description"
+                               type="ProviderTest.AssemblyQualifiedName"/>
+               </DbProviderFactories>
+       </system.data_test>
+       <connectionStrings_test>
+               <add name="Publications" providerName="System.Data.SqlClient" 
+                       connectionString="Data Source=MyServer;Initial Catalog=pubs;integrated security=SSPI" />
+       </connectionStrings_test>
+</configuration>
index 96af8c4131db2de4bf4b2d0d0b949f2ca6af6278..f844e5cb47158fff394b67ffc0c2454855b3f16f 100644 (file)
@@ -82,10 +82,14 @@ namespace SharpCompress.Archive
             {
                 key = key.Substring(1);
             }
+            // .NET allows duplicate entries when saving and loading Zip files.
+            // The following lines are disabled from upstream SharpCompress to allow this.
+#if ZIP_ALLOW_DUPLICATE_KEYS
             if (DoesKeyMatchExisting(key))
             {
                 throw new ArchiveException("Cannot add entry with duplicate key: " + key);
             }
+#endif
             var entry = CreateEntry(key, source, size, modified, closeStream);
             newEntries.Add(entry);
             RebuildModifiedCollection();
@@ -101,7 +105,8 @@ namespace SharpCompress.Archive
                 {
                     p = p.Substring(1);
                 }
-                return string.Equals(p, key, StringComparison.OrdinalIgnoreCase);
+                if (string.Equals(p, key, StringComparison.OrdinalIgnoreCase))
+                    return true;
             }
             return false;
         }
index d94a929e207d75b01b8bf94ce2dd7c6ec30000d5..2d03d559d4e08d402254d2a9d739f0c290484f35 100644 (file)
@@ -275,11 +275,10 @@ namespace MonoTests.System.IO.Compression
                        }
                }
 
-               [Test]
-               public void ZipGetArchiveEntryStreamLengthPositionReadMode()
+               public void ZipGetArchiveEntryStreamLengthPosition(ZipArchiveMode mode)
                {
-                       using (var archive = new ZipArchive(File.Open("test.nupkg", FileMode.Open),
-                               ZipArchiveMode.Read))
+                       File.Copy("test.nupkg", "test2.nupkg", overwrite: true);
+                       using (var archive = new ZipArchive(File.Open("test2.nupkg", FileMode.Open), mode))
                        {
                                var entry = archive.GetEntry("_rels/.rels");
                                using (var stream = entry.Open())
@@ -287,9 +286,33 @@ namespace MonoTests.System.IO.Compression
                                        Assert.AreEqual(0, stream.Position);
                                        Assert.AreEqual(425, stream.Length);
                                }
+
+                               // .NET does not support these in Read mode but we do.
+                               var entry2 = archive.GetEntry("modernhttpclient.nuspec");
+                               using (var stream = entry2.Open())
+                               {
+                                       Assert.AreEqual(857, stream.Length);
+                                       if (mode == ZipArchiveMode.Update)
+                                       {
+                                               Assert.AreEqual(0, stream.Position);
+                                       }
+                               }
                        }
+                       File.Delete ("test2.nupkg");    
+               }
+
+               [Test]
+               public void ZipGetArchiveEntryStreamLengthPositionReadMode()
+               {
+                       ZipGetArchiveEntryStreamLengthPosition(ZipArchiveMode.Read);
                }
 
+               [Test]
+               public void ZipGetArchiveEntryStreamLengthPositionUpdateMode()
+               {
+                       ZipGetArchiveEntryStreamLengthPosition(ZipArchiveMode.Update);
+               }               
+
                [Test]
                public void ZipEnumerateEntriesReadMode()
                {
@@ -340,6 +363,40 @@ namespace MonoTests.System.IO.Compression
                        File.Delete ("test.zip");
                }
 
+               [Test]
+               public void ZipWriteEntriesUpdateModeNewEntry()
+               {
+                       var stream = new MemoryStream();
+                       var zipArchive = new ZipArchive(stream, ZipArchiveMode.Update);
+
+                       var newEntry = zipArchive.CreateEntry("testEntry");
+
+                       using (var newStream = newEntry.Open())
+                       {
+                               using (var sw = new StreamWriter(newStream))
+                               {
+                                       sw.Write("TEST");
+                               }
+                       }
+               }
+
+               [Test]
+               public void ZipCreateDuplicateEntriesUpdateMode()
+               {
+                       var stream = new MemoryStream();
+                       using (var zipArchive = new ZipArchive(stream, ZipArchiveMode.Update, true))
+                       {
+                               var e2 = zipArchive.CreateEntry("BBB");
+                               var e3 = zipArchive.CreateEntry("BBB");
+                       }
+
+                       stream.Position = 0;
+                       using (var zipArchive = new ZipArchive(stream, ZipArchiveMode.Read))
+                       {
+                               Assert.AreEqual(2, zipArchive.Entries.Count);
+                       }
+               }
+
                [Test]
                public void ZipWriteEntriesUpdateModeNonZeroPosition()
                {
@@ -423,5 +480,24 @@ namespace MonoTests.System.IO.Compression
                        }
                        File.Delete ("empty.zip");
                }
+
+               class MyFakeStream : FileStream 
+               {
+                       public MyFakeStream (string path, FileMode mode) : base(path, mode) {}
+
+                       /// <summary>
+                       /// Simulate "CanSeek" is false, which is the case when you are retreiving data from web.
+                       /// </summary>
+                       public override bool CanSeek => false;
+               }
+
+               [Test]
+               public void ZipReadNonSeekableStream()
+               {
+                       var stream = new MyFakeStream("test.nupkg", FileMode.Open);
+                       using (var archive = new ZipArchive (stream, ZipArchiveMode.Read))
+                       {
+                       }
+               }
        }
 }
index 4f0c7bb70b9ecb9d68e9176b5ac97f79e969e00f..c1a3df57566020c08cf0509ddfc9f44c097dfe87 100644 (file)
@@ -39,7 +39,7 @@ namespace System.IO.Compression
                internal readonly ZipArchiveMode mode;
                internal Encoding entryNameEncoding;
                internal bool disposed;
-               internal Dictionary<string, ZipArchiveEntry> entries; 
+               internal List<ZipArchiveEntry> entries; 
                internal SharpCompress.Archive.Zip.ZipArchive zipFile;
 
                public ZipArchive (Stream stream)
@@ -49,7 +49,7 @@ namespace System.IO.Compression
 
                        this.stream = stream;
                        mode = ZipArchiveMode.Read;
-                       CreateZip(stream, mode);
+                       CreateZip(mode);
                }
 
                public ZipArchive (Stream stream, ZipArchiveMode mode)
@@ -59,7 +59,7 @@ namespace System.IO.Compression
 
                        this.stream = stream;
                        this.mode = mode;
-                       CreateZip(stream, mode);
+                       CreateZip(mode);
                }
 
                public ZipArchive (Stream stream, ZipArchiveMode mode, bool leaveOpen)
@@ -70,7 +70,7 @@ namespace System.IO.Compression
                        this.stream = stream;
                        this.mode = mode;
                        leaveStreamOpen = leaveOpen;
-                       CreateZip(stream, mode);
+                       CreateZip(mode);
                }
 
                public ZipArchive (Stream stream, ZipArchiveMode mode, bool leaveOpen, Encoding entryNameEncoding)
@@ -82,10 +82,10 @@ namespace System.IO.Compression
                        this.mode = mode;
                        leaveStreamOpen = leaveOpen;
                        this.entryNameEncoding = entryNameEncoding;
-                       CreateZip(stream, mode);
+                       CreateZip(mode);
                }
 
-               private void CreateZip(Stream stream, ZipArchiveMode mode)
+               private void CreateZip(ZipArchiveMode mode)
                {
                        try {
                                if (mode != ZipArchiveMode.Read && mode != ZipArchiveMode.Create && mode != ZipArchiveMode.Update)
@@ -103,6 +103,18 @@ namespace System.IO.Compression
                                if (mode == ZipArchiveMode.Update && (!stream.CanRead || !stream.CanWrite || !stream.CanSeek))
                                        throw new ArgumentException("Stream must support reading, writing and seeking for Update archive mode");
 
+                               // If the stream is not seekable, then buffer it into memory (same behavior as .NET). 
+                               if (mode == ZipArchiveMode.Read && !stream.CanSeek)
+                               {
+                                       var memoryStream = new MemoryStream();
+                                       stream.CopyTo(memoryStream);
+
+                                       if (!leaveStreamOpen)
+                                               stream.Dispose();
+
+                                       this.stream = memoryStream;
+                               }
+
                                try {
                                        zipFile = mode != ZipArchiveMode.Create && stream.Length != 0
                                                ? SharpCompress.Archive.Zip.ZipArchive.Open(stream)
@@ -111,11 +123,11 @@ namespace System.IO.Compression
                                        throw new InvalidDataException("The contents of the stream are not in the zip archive format.", e);
                                }
 
-                               entries = new Dictionary<string, ZipArchiveEntry>();
+                               entries = new List<ZipArchiveEntry>();
                                if (Mode != ZipArchiveMode.Create) {
                                        foreach (var entry in zipFile.Entries) {
                                                var zipEntry = new ZipArchiveEntry(this, entry);
-                                               entries[entry.Key] = zipEntry;
+                                               entries.Add(zipEntry);
                                        }
                                }
                        }
@@ -140,7 +152,7 @@ namespace System.IO.Compression
                                if (entries == null)
                                        return new ReadOnlyCollection<ZipArchiveEntry>(new List<ZipArchiveEntry>());
 
-                               return new ReadOnlyCollection<ZipArchiveEntry>(entries.Values.ToList());
+                               return new ReadOnlyCollection<ZipArchiveEntry>(entries);
                        }
                }
 
@@ -188,7 +200,7 @@ namespace System.IO.Compression
 
                        var internalEntry = CreateEntryInternal(entryName);
                        var archiveEntry = new ZipArchiveEntry(this, internalEntry);
-                       entries[entryName] = archiveEntry;
+                       entries.Add(archiveEntry);
 
                        return archiveEntry;
                }
@@ -210,7 +222,7 @@ namespace System.IO.Compression
                        if (zipFile == null)
                                throw new InvalidDataException("The zip archive is corrupt, and its entries cannot be retrieved.");
 
-                       return entries.ContainsKey(entryName) ? entries[entryName] : null;
+                       return entries.FirstOrDefault(e => e.FullName == entryName);
                }
 
                private void Save()
index 2b415eb5c8da2993e874371260e73d1cc4694858..9b415fbe6fd6a31487539a655c6a99bbe46b1644 100644 (file)
@@ -54,7 +54,7 @@ namespace System.IO.Compression
 
                public override long Length {
                        get {
-                               return stream.Length;
+                               return stream.CanWrite ? stream.Length : entry.Length;
                        }
                }
 
@@ -95,14 +95,16 @@ namespace System.IO.Compression
 
                public override void Write (byte[] buffer, int offset, int count)
                {
-                       if (entry.Archive.Mode == ZipArchiveMode.Update && !entry.wasWritten)
+                       stream.Write(buffer, offset, count);
+               }
+
+               internal void EnsureWriteable()
+               {
+                       if (entry.Archive.Mode == ZipArchiveMode.Update && !stream.CanWrite)
                        {
                                // Replace the read-only stream with a writeable memory stream.
                                SetWriteable();
-                               entry.wasWritten = true;
                        }
-
-                       stream.Write(buffer, offset, count);
                }
 
                internal void SetWriteable()
@@ -114,15 +116,11 @@ namespace System.IO.Compression
                        var newStream = newEntry.OpenEntryStream();
 
                        var openStream = stream;
-                       var position = openStream.Position;
-
-                       entry.openStream = null;
-                       entry.Open();
-
                        openStream.CopyTo(newStream);
-                       newStream.Position = position;
                        openStream.Dispose();
 
+                       newStream.Position = 0;
+
                        archive.zipFile.RemoveEntry(internalEntry);
                        entry.entry = newEntry;
                        stream = newStream;
@@ -231,6 +229,7 @@ namespace System.IO.Compression
 
                        var entryStream = entry.OpenEntryStream();
                        openStream = new ZipArchiveEntryStream(this, entryStream);
+                       openStream.EnsureWriteable();
 
                        return openStream;
                }
diff --git a/mcs/class/System.Numerics.Vectors/Assembly/TypeForwarders.cs b/mcs/class/System.Numerics.Vectors/Assembly/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..b2929d8
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// TypeForwarders.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2011 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System.Numerics;
+using System.Runtime.CompilerServices;
+
+[assembly: TypeForwardedTo(typeof(Matrix3x2))]
+[assembly: TypeForwardedTo(typeof(Matrix4x4))]
+[assembly: TypeForwardedTo(typeof(Plane))]
+[assembly: TypeForwardedTo(typeof(Quaternion))]
+[assembly: TypeForwardedTo(typeof(Vector2))]
+[assembly: TypeForwardedTo(typeof(Vector3))]
+[assembly: TypeForwardedTo(typeof(Vector4))]
index f5ff0937ead8a08e5a225e4973a4b96f8ed94dc6..47fa0620e9781bcdfb6b5139cc957c3624941fc0 100644 (file)
@@ -3,7 +3,7 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.Numerics.Vectors.dll
-LIB_REFS = System
+LIB_REFS = System System.Numerics
 LIB_MCS_FLAGS =
 
 EXTRA_DISTFILES =
index 45b755ee19b43a81d67982f0855f0b4effa95340..0a2dca5005f52a60fe219ea5ba175fc2c123e743 100644 (file)
@@ -1,3 +1,4 @@
 ../../build/common/Consts.cs
 ../../build/common/SR.cs
 Assembly/AssemblyInfo.cs
+Assembly/TypeForwarders.cs
index f6f93e8dc510008bc9bd8a436b8b3456845b044e..08f4dc4501e1a6b05d228077fdc3baf39483dfcb 100644 (file)
@@ -4,7 +4,7 @@ include ../../build/rules.make
 
 LIBRARY = System.Numerics.dll
 LIB_REFS = System
-LIB_MCS_FLAGS = /unsafe -d:MONO
+LIB_MCS_FLAGS = /unsafe -nowarn:414
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 TXT_RESOURCE_STRINGS = ../referencesource/System.Numerics/System.Numerics.txt
diff --git a/mcs/class/System.Numerics/ReferenceSources/Environment.cs b/mcs/class/System.Numerics/ReferenceSources/Environment.cs
deleted file mode 100644 (file)
index 5377cfe..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Globalization;
-
-namespace System
-{
-       partial class Environment
-       {
-               internal static string GetResourceString (string key)
-               {
-                       return key;
-               }
-
-               internal static string GetResourceString (string key, CultureInfo culture)
-               {
-                       return key;
-               }
-
-               internal static string GetResourceString (string key, params object[] values)
-               {
-                       return string.Format (CultureInfo.InvariantCulture, key, values);
-               }
-       }
-}
\ No newline at end of file
index 20d631a4dd80d2aa4ab2b1ad97f9b04ae9ec4459..2f52187057da0149ac696e45579f64a175841f13 100644 (file)
@@ -1,10 +1,22 @@
 ../../build/common/Consts.cs
 ../../build/common/SR.cs
 Assembly/AssemblyInfo.cs
-ReferenceSources/Environment.cs
 ReferenceSources/SR.cs
 ../referencesource/System.Numerics/System/Numerics/BigInteger.cs
 ../referencesource/System.Numerics/System/Numerics/BigIntegerBuilder.cs
 ../referencesource/System.Numerics/System/Numerics/BigNumber.cs
 ../referencesource/System.Numerics/System/Numerics/Complex.cs
 ../referencesource/System.Numerics/System/Numerics/NumericsHelpers.cs
+../referencesource/System.Numerics/System/Numerics/HashCodeHelper.cs
+../referencesource/System.Numerics/System/Numerics/JITIntrinsicAttribute.cs
+../referencesource/System.Numerics/System/Numerics/Matrix3x2.cs
+../referencesource/System.Numerics/System/Numerics/Matrix4x4.cs
+../referencesource/System.Numerics/System/Numerics/Plane.cs
+../referencesource/System.Numerics/System/Numerics/Quaternion.cs
+../referencesource/System.Numerics/System/Numerics/Vector2.cs
+../referencesource/System.Numerics/System/Numerics/Vector2_Intrinsics.cs
+../referencesource/System.Numerics/System/Numerics/Vector3.cs
+../referencesource/System.Numerics/System/Numerics/Vector3_Intrinsics.cs
+../referencesource/System.Numerics/System/Numerics/Vector4.cs
+../referencesource/System.Numerics/System/Numerics/Vector4_Intrinsics.cs
+../referencesource/System.Numerics/System/Numerics/Vector_Operations.cs
diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..21e80b5
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
+//
+// (C) 2016 Xamarin, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about the assembly
+
+[assembly: AssemblyTitle ("System.Runtime.InteropServices.RuntimeInformation.dll")]
+[assembly: AssemblyDescription ("System.Runtime.InteropServices.RuntimeInformation.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.InteropServices.RuntimeInformation.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: SatelliteContractVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: CLSCompliant (true)]
+[assembly: AssemblyDelaySign (true)]
+
+[assembly: AssemblyKeyFile("../msfinal.pub")]
+
+[assembly: SecurityCritical]
+
+[assembly: ComVisible (false)]
\ No newline at end of file
diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Makefile b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/Makefile
new file mode 100644 (file)
index 0000000..7415110
--- /dev/null
@@ -0,0 +1,11 @@
+thisdir = class/System.Runtime.InteropServices.RuntimeInformation
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Runtime.InteropServices.RuntimeInformation.dll
+LIB_REFS = System
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices.RuntimeInformation.dll.sources b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices.RuntimeInformation.dll.sources
new file mode 100644 (file)
index 0000000..c3c7107
--- /dev/null
@@ -0,0 +1,7 @@
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+System.Runtime.InteropServices/Architecture.cs
+System.Runtime.InteropServices/OSPlatform.cs
+System.Runtime.InteropServices/RuntimeInformation.cs
diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/Architecture.cs b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/Architecture.cs
new file mode 100644 (file)
index 0000000..9c71a33
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// Architecture.cs
+//
+// Author:
+//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
+//
+// (C) 2016 Xamarin, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Runtime.InteropServices
+{
+       public enum Architecture
+       {
+               X86,
+               X64,
+               Arm,
+               Arm64
+       }
+}
diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/OSPlatform.cs b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/OSPlatform.cs
new file mode 100644 (file)
index 0000000..b2b1b85
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// OSPlatform.cs
+//
+// Author:
+//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
+//
+// (C) 2016 Xamarin, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Runtime.InteropServices
+{
+       public struct OSPlatform : IEquatable<OSPlatform>
+       {
+               private readonly string _osPlatform;
+
+               public static OSPlatform Linux { get; } = new OSPlatform ("LINUX");
+
+               public static OSPlatform OSX { get; } = new OSPlatform ("OSX");
+
+               public static OSPlatform Windows { get; } = new OSPlatform ("WINDOWS");
+
+               private OSPlatform (string osPlatform)
+               {
+                       if (osPlatform == null) throw new ArgumentNullException (nameof (osPlatform));
+                       if (osPlatform.Length == 0) throw new ArgumentException ("Value cannot be empty.", nameof (osPlatform));
+                       
+                       _osPlatform = osPlatform;
+               }
+
+               public static OSPlatform Create (string osPlatform)
+               {
+                       return new OSPlatform (osPlatform);
+               }
+
+               public bool Equals (OSPlatform other)
+               {
+                       return Equals (other._osPlatform);
+               }
+
+               internal bool Equals (string other)
+               {
+                       return string.Equals (_osPlatform, other, StringComparison.Ordinal);
+               }
+
+               public override bool Equals (object obj)
+               {
+                       return obj is OSPlatform && Equals ((OSPlatform)obj);
+               }
+
+               public override int GetHashCode ()
+               {
+                       return _osPlatform == null ? 0 : _osPlatform.GetHashCode ();
+               }
+
+               public override string ToString ()
+               {
+                       return _osPlatform ?? string.Empty;
+               }
+
+               public static bool operator ==(OSPlatform left, OSPlatform right)
+               {
+                       return left.Equals (right);
+               }
+
+               public static bool operator !=(OSPlatform left, OSPlatform right)
+               {
+                       return !(left == right);
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/RuntimeInformation.cs b/mcs/class/System.Runtime.InteropServices.RuntimeInformation/System.Runtime.InteropServices/RuntimeInformation.cs
new file mode 100644 (file)
index 0000000..24be904
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// RuntimeInformation.cs
+//
+// Author:
+//   Alexander Köplinger (alexander.koeplinger@xamarin.com)
+//
+// (C) 2016 Xamarin, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.IO;
+using System.Reflection;
+
+namespace System.Runtime.InteropServices
+{
+       public static class RuntimeInformation
+       {
+               [DllImport ("__Internal")]
+               extern static string mono_get_runtime_build_info ();
+
+               public static string FrameworkDescription
+               {
+                       get
+                       {
+                               return mono_get_runtime_build_info ();
+                       }
+               }
+
+               public static bool IsOSPlatform (OSPlatform osPlatform)
+               {
+                       // TODO: very barebones implementation
+
+                       if (Environment.OSVersion.Platform == PlatformID.Win32NT)
+                               return osPlatform == OSPlatform.Windows;
+
+                       if (Environment.OSVersion.Platform == PlatformID.Unix && File.Exists ("/usr/lib/libc.dylib"))
+                               return osPlatform == OSPlatform.OSX;
+
+                       if (Environment.OSVersion.Platform == PlatformID.Unix)
+                               return osPlatform == OSPlatform.Linux;
+
+                       return false;
+               }
+
+               public static string OSDescription
+               {
+                       get
+                       {
+                               return Environment.OSVersion.VersionString;
+                       }
+               }
+
+               public static Architecture OSArchitecture
+               {
+                       get
+                       {
+                               // TODO: very barebones implementation, doesn't respect ARM
+                               return Environment.Is64BitOperatingSystem ? Architecture.X64 : Architecture.X86;
+                       }
+               }
+
+               public static Architecture ProcessArchitecture
+               {
+                       get
+                       {
+                               // TODO: very barebones implementation, doesn't respect ARM                     
+                               return Environment.Is64BitProcess ? Architecture.X64 : Architecture.X86;
+                       }
+               }
+       }
+}
index 5ba3d4cd4bfd790912101cf63f29229b6c60ded4..cb12bd8d9cf41ec44a64328d4f4fdca2239aaba7 100644 (file)
@@ -33,7 +33,9 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+#if !MOBILE_STATIC
 using System.Data;
+#endif
 using System.IO;
 using System.Net;
 using System.Runtime.Serialization;
index 03264c43f51f21f3d7535cad350a672f1393881a..944b7f2eea667f441d53e4c5d0e3d59240941047 100755 (executable)
@@ -37,7 +37,9 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+#if !MOBILE_STATIC
 using System.Data;
+#endif
 using System.IO;
 using System.Linq;
 using System.Net;
@@ -1475,6 +1477,7 @@ namespace MonoTests.System.Runtime.Serialization
                        Assert.AreEqual (parent, parent.Child.Parent, "#2");
                }
 
+#if !MOBILE_STATIC
                [Test]
                public void IXmlSerializableCallConstructor ()
                {
@@ -1525,6 +1528,7 @@ namespace MonoTests.System.Runtime.Serialization
                        
                        var ds = (DataSet) x.ReadObject (r);
                }
+#endif
 
                [Test]
                [ExpectedException (typeof (InvalidDataContractException))] // BaseConstraintType1 is neither DataContract nor Serializable.
diff --git a/mcs/class/System.ServiceModel/mobile_static_System.ServiceModel_test.dll.exclude.sources b/mcs/class/System.ServiceModel/mobile_static_System.ServiceModel_test.dll.exclude.sources
new file mode 100644 (file)
index 0000000..350444a
--- /dev/null
@@ -0,0 +1,151 @@
+FeatureBased/Features.Contracts/AsyncCallTester.cs
+FeatureBased/Features.Contracts/FaultsTester.cs
+FeatureBased/Features.Serialization/AsyncCallTest.cs
+FeatureBased/Features.Serialization/AsyncPatternTester.cs
+FeatureBased/Features.Serialization/DataContractSerializerTest.cs
+FeatureBased/Features.Serialization/DualContractTester.cs
+FeatureBased/Features.Serialization/ExitProcessHelper.cs
+FeatureBased/Features.Serialization/FaultsTest.cs
+FeatureBased/Features.Serialization/KnownTypeTest.cs
+FeatureBased/Features.Serialization/MessageContractTest.cs
+FeatureBased/Features.Serialization/OperationContractTester.cs
+FeatureBased/Features.Serialization/PrimitiveTesterTest.cs
+FeatureBased/Features.Serialization/UntypedMessageTest.cs
+FeatureBased/TestFixtureBase.cs
+MetadataTests/BindingTestAssertions.cs
+MetadataTests/ExportTests.cs
+MetadataTests/ImportTests.cs
+MetadataTests/ImportTests_CreateMetadata.cs
+MetadataTests/ImportTests_LoadMetadata.cs
+MetadataTests/ImportTests_RoundTrip.cs
+MetadataTests/MetadataSamples.cs
+MetadataTests/MiscImportTests.cs
+MetadataTests/TestContext.cs
+System.ServiceModel.Channels/AsymmetricSecurityBindingElementTest.cs
+System.ServiceModel.Channels/BinaryMessageEncodingBindingElementTest.cs
+System.ServiceModel.Channels/BindingElementTest.cs
+System.ServiceModel.Channels/CalcSampleProxy.cs
+System.ServiceModel.Channels/CommunicationObjectTest.cs
+System.ServiceModel.Channels/ConnectionOrientedTransportBindingElementTest.cs
+System.ServiceModel.Channels/CustomBindingTest.cs
+System.ServiceModel.Channels/CustomPolicyConversionContext.cs
+System.ServiceModel.Channels/HandlerTransportBindingElement.cs
+System.ServiceModel.Channels/HttpTransportBindingElementTest.cs
+System.ServiceModel.Channels/HttpsTransportBindingElementTest.cs
+System.ServiceModel.Channels/InterceptorBindingElement.cs
+System.ServiceModel.Channels/LocalClientSecuritySettingsTest.cs
+System.ServiceModel.Channels/MessageBufferTest.cs
+System.ServiceModel.Channels/MessageEncoderTest.cs
+System.ServiceModel.Channels/MsmqBindingElementBaseTest.cs
+System.ServiceModel.Channels/MsmqTransportBindingElementTest.cs
+System.ServiceModel.Channels/NamedPipeTransportBindingElementTest.cs
+System.ServiceModel.Channels/OneWayBindingElementTest.cs
+System.ServiceModel.Channels/PeerTransportBindingElementTest.cs
+System.ServiceModel.Channels/ReplyChannelBase.cs
+System.ServiceModel.Channels/SecurityAssert.cs
+System.ServiceModel.Channels/SecurityBindingElementTest.cs
+System.ServiceModel.Channels/SslStreamSecurityBindingElementTest.cs
+System.ServiceModel.Channels/SymmetricSecurityBindingElementTest.cs
+System.ServiceModel.Channels/TcpTransportBindingElementTest.cs
+System.ServiceModel.Channels/TextMessageEncodingBindingElementTest.cs
+System.ServiceModel.Channels/TransactionFlowBindingElementTest.cs
+System.ServiceModel.Configuration/AddressHeaderCollectionElementTest.cs
+System.ServiceModel.Configuration/BasicHttpBindingElementTest.cs
+System.ServiceModel.Configuration/BehaviorsSectionTest.cs
+System.ServiceModel.Configuration/BindingsSectionTest.cs
+System.ServiceModel.Configuration/ChannelEndpointElementTest.cs
+System.ServiceModel.Configuration/CustomBindingElementTest.cs
+System.ServiceModel.Configuration/EndpointBehaviorElementTest.cs
+System.ServiceModel.Configuration/ExtensionsSectionTest.cs
+System.ServiceModel.Configuration/MetadataElementTest.cs
+System.ServiceModel.Configuration/MexBindingElementTest.cs
+System.ServiceModel.Configuration/NetNamedPipeBindingElementTest.cs
+System.ServiceModel.Configuration/NetPeerTcpBindingElementTest.cs
+System.ServiceModel.Configuration/NetTcpBindingElementTest.cs
+System.ServiceModel.Configuration/ServiceBehaviorElementTest.cs
+System.ServiceModel.Configuration/ServiceElementTest.cs
+System.ServiceModel.Configuration/ServiceModelConfigurationElementCollectionTest.cs
+System.ServiceModel.Configuration/ServiceModelSectionGroupTest.cs
+System.ServiceModel.Configuration/StandardBindingCollectionElementTest.cs
+System.ServiceModel.Configuration/StandardBindingElementCollectionTest.cs
+System.ServiceModel.Configuration/StandardBindingElementTest.cs
+System.ServiceModel.Configuration/StandardEndpointsSectionTest.cs
+System.ServiceModel.Configuration/UserBinding.cs
+System.ServiceModel.Description/ClientCredentialsTest.cs
+System.ServiceModel.Description/ContractDescriptionTest.cs
+System.ServiceModel.Description/MetadataExchangeBindingsTest.cs
+System.ServiceModel.Description/MetadataResolverTest.cs
+System.ServiceModel.Description/MetadataSetTest.cs
+System.ServiceModel.Description/ServiceAuthorizationBehaviorTest.cs
+System.ServiceModel.Description/ServiceContractGeneratorTest.cs
+System.ServiceModel.Description/ServiceCredentialsTest.cs
+System.ServiceModel.Description/ServiceDebugBehaviorTest.cs
+System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
+System.ServiceModel.Description/ServiceMetadataEndpointTest.cs
+System.ServiceModel.Description/ServiceThrottlingBehaviorTest.cs
+System.ServiceModel.Description/TypedMessageConverterTest.cs
+System.ServiceModel.Description/WsdlExporterTest.cs
+System.ServiceModel.Description/WsdlImporterTest.cs
+System.ServiceModel.Dispatcher/ActionFilterTest.cs
+System.ServiceModel.Dispatcher/Bug32886Test.cs
+System.ServiceModel.Dispatcher/Bug652331Test.cs
+System.ServiceModel.Dispatcher/Bug652331_2Test.cs
+System.ServiceModel.Dispatcher/ChannelDispatcherTest.cs
+System.ServiceModel.Dispatcher/DispatchOperationTest.cs
+System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
+System.ServiceModel.Dispatcher/EndpointAddressMessageFilterTest.cs
+System.ServiceModel.Dispatcher/EndpointDispatcherTest.cs
+System.ServiceModel.Dispatcher/ExceptionHandlerTest.cs
+System.ServiceModel.Dispatcher/FilterTableTest.cs
+System.ServiceModel.Dispatcher/InvalidBodyAccessExceptionTest.cs
+System.ServiceModel.Dispatcher/PrefixEndpointAddressMessageFilterTest.cs
+System.ServiceModel.Dispatcher/XPathMessageContextTest.cs
+System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs
+System.ServiceModel.PeerResolvers/PeerResolverSerializationTest.cs
+System.ServiceModel.Security.Tokens/IssuedSecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/IssuedSecurityTokenProviderTest.cs
+System.ServiceModel.Security.Tokens/RsaSecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/SecureConversationSecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/SecurityContextSecurityTokenTest.cs
+System.ServiceModel.Security.Tokens/SecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/ServiceModelSecurityTokenTypesTest.cs
+System.ServiceModel.Security.Tokens/SslSecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/SspiSecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/UserNameSecurityTokenParametersTest.cs
+System.ServiceModel.Security.Tokens/WrappedKeySecurityTokenTest.cs
+System.ServiceModel.Security.Tokens/X509ListedCertificateValidator.cs
+System.ServiceModel.Security.Tokens/X509SecurityTokenParametersTest.cs
+System.ServiceModel.Security/ChannelProtectionRequirementsTest.cs
+System.ServiceModel.Security/MessagePartSpecificationTest.cs
+System.ServiceModel.Security/ScopedMessagePartSpecificationTest.cs
+System.ServiceModel.Security/SecurityAlgorithmSuiteTest.cs
+System.ServiceModel.Security/SecurityMessagePropertyTest.cs
+System.ServiceModel.Security/SecurityTokenSpeficicationTest.cs
+System.ServiceModel.Security/ServiceCredentialsSecurityTokenManagerTest.cs
+System.ServiceModel.Security/ServiceSecurityContextTest.cs
+System.ServiceModel.Security/SupportingTokenParametersTest.cs
+System.ServiceModel.Security/TransportSecurityBindingElementTest.cs
+System.ServiceModel.Security/WSSecurityTokenSerializerTest.cs
+System.ServiceModel/BasicHttpBindingTest.cs
+System.ServiceModel/CallbackBehaviorAttributeTest.cs
+System.ServiceModel/ChannelFactoryTest.cs
+System.ServiceModel/ChannelFactory_1Test.cs
+System.ServiceModel/ClientBaseTest.cs
+System.ServiceModel/ClientCredentialsSecurityTokenManagerTest.cs
+System.ServiceModel/EndpointAddress10Test.cs
+System.ServiceModel/EndpointAddressBuilderTest.cs
+System.ServiceModel/EndpointAddressTest.cs
+System.ServiceModel/EndpointIdentityTest.cs
+System.ServiceModel/IntegratedConnectionTest.cs
+System.ServiceModel/MessageSecurityVersionTest.cs
+System.ServiceModel/MsmqTransportSecurityTest.cs
+System.ServiceModel/NetMsmqBindingTest.cs
+System.ServiceModel/NetPeerTcpBindingTest.cs
+System.ServiceModel/NetTcpBindingTest.cs
+System.ServiceModel/OperationContextTest.cs
+System.ServiceModel/PeerNodeAddressTest.cs
+System.ServiceModel/ServiceHostBaseTest.cs
+System.ServiceModel/ServiceHostTest.cs
+System.ServiceModel/TransactionProtocolTest.cs
+System.ServiceModel/WSFederationHttpBindingTest.cs
+System.ServiceModel/WSHttpBindingTest.cs
diff --git a/mcs/class/System.ServiceModel/mobile_static_System.ServiceModel_test.dll.sources b/mcs/class/System.ServiceModel/mobile_static_System.ServiceModel_test.dll.sources
new file mode 100644 (file)
index 0000000..275d9f3
--- /dev/null
@@ -0,0 +1 @@
+#include  System.ServiceModel_test.dll.sources
index 2585d05360537e00514bc4969b0836d105d15b7f..6171dba1c016299be98bea6dc48695dd04e83386 100644 (file)
@@ -214,6 +214,9 @@ namespace System.Web.Services.Protocols {
                                OutputMembersMapping = soapImporter.ImportMembersMapping (ResponseName, ResponseNamespace, out_members, hasWrappingElem, writeAccessors);
                        }
 
+                       InputMembersMapping.SetKey(RequestName);
+                       OutputMembersMapping.SetKey(ResponseName);
+
                        requestSerializerId = parent.RegisterSerializer (InputMembersMapping);
                        responseSerializerId = parent.RegisterSerializer (OutputMembersMapping);
 
@@ -254,6 +257,8 @@ namespace System.Web.Services.Protocols {
                                else
                                        InputHeaderMembersMapping = soapImporter.ImportMembersMapping ("", RequestNamespace, members, false, false);
                                
+                               InputHeaderMembersMapping.SetKey(RequestName + ":InHeaders");
+                               
                                requestHeadersSerializerId = parent.RegisterSerializer (InputHeaderMembersMapping);
                        }
                        
@@ -265,7 +270,9 @@ namespace System.Web.Services.Protocols {
                                        OutputHeaderMembersMapping = xmlImporter.ImportMembersMapping ("", RequestNamespace, members, false);
                                else
                                        OutputHeaderMembersMapping = soapImporter.ImportMembersMapping ("", RequestNamespace, members, false, false);
-                               
+
+                               OutputHeaderMembersMapping.SetKey(ResponseName + ":OutHeaders");
+
                                responseHeadersSerializerId = parent.RegisterSerializer (OutputHeaderMembersMapping);
                        }
                        
index 0019e05c2788b0eb75309d07322d962e7dbfb84c..cd9dc050fe711beb2559a4254f0b7aff4425f7da 100755 (executable)
@@ -243,5 +243,44 @@ namespace MonoTests.System.Web.Services.Protocols
                                }
                        }
                }
+
+               public class RequestHeader : SoapHeader
+               {
+               }
+
+               public class ResponseHeader : SoapHeader
+               {
+               }
+
+               [WebServiceBindingAttribute(Name = "ServiceWithHeaders", Namespace = "https://example.com")]
+               public class ServiceWithHeaders : SoapHttpClientProtocol
+               {
+                       public RequestHeader RequestHeader { get; set; }
+                       public ResponseHeader ResponseHeader { get; set; }
+
+                       [SoapHeaderAttribute("ResponseHeader", Direction = SoapHeaderDirection.Out)]
+                       [SoapHeaderAttribute("RequestHeader")]
+                       [SoapDocumentMethodAttribute("", RequestNamespace = "https://example.com", ResponseNamespace = "https://example.com", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
+                       public int method1()
+                       {
+                               return 0;
+                       }
+
+                       [SoapHeaderAttribute("ResponseHeader", Direction = SoapHeaderDirection.Out)]
+                       [SoapHeaderAttribute("RequestHeader")]
+                       [SoapDocumentMethodAttribute("", RequestNamespace = "https://example.com", ResponseNamespace = "https://example.com", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
+                       public int method2()
+                       {
+                               return 0;
+                       }
+               }
+
+               [Test] // Covers #41564
+               public void ServiceWithHeader () {
+                       var service = new ServiceWithHeaders ();
+                       Assert.IsNotNull (service);
+                       // Should not throw an exception
+                       // XAMMAC specific bug
+               }
        }
 }
index 645326dff9af043b2ad51ed908ad5e1800851957..0dee611d6242a3c795560611d2ad058aa53915c1 100644 (file)
@@ -1,8 +1,8 @@
-System.Web.Services/Test/System.Web.Services.Configuration/DiagnosticsElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/ProtocolElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/SoapEnvelopeProcessingElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/SoapExtensionTypeElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/TypeElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/WsdlHelpGeneratorElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/WsiProfilesElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/XmlFormatExtensionAttributeTest.cs
+System.Web.Services.Configuration/DiagnosticsElementTest.cs
+System.Web.Services.Configuration/ProtocolElementTest.cs
+System.Web.Services.Configuration/SoapEnvelopeProcessingElementTest.cs
+System.Web.Services.Configuration/SoapExtensionTypeElementTest.cs
+System.Web.Services.Configuration/TypeElementTest.cs
+System.Web.Services.Configuration/WsdlHelpGeneratorElementTest.cs
+System.Web.Services.Configuration/WsiProfilesElementTest.cs
+System.Web.Services.Configuration/XmlFormatExtensionAttributeTest.cs
index b5fb6bb927c52ea13578e019c868e4039664ec34..fe01d7e4317c78eaa7a368f31ccd41952da83cb4 100644 (file)
@@ -19,7 +19,11 @@ TEST_RESOURCES = \
        Test/System/test-uri-props-manual.txt \
        Test/System/test-uri-relative-props.txt
 
+ifndef MOBILE_PROFILE
 TEST_LIB_REFS = System.Drawing Mono.Security System.Data System.Xml System.Core System.Configuration
+else
+TEST_LIB_REFS = Mono.Security System.Data System.Xml System.Core
+endif
 
 TEST_MCS_FLAGS = -nowarn:618,672,219,67,169,612 \
        $(foreach f, $(TEST_RESOURCES), -resource:$(f),$(notdir $(f)))
diff --git a/mcs/class/System/Microsoft.Win32.SafeHandles/SafeX509ChainHandle.cs b/mcs/class/System/Microsoft.Win32.SafeHandles/SafeX509ChainHandle.cs
new file mode 100644 (file)
index 0000000..f3091aa
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// SafeX509ChainHandle.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if SECURITY_DEP
+
+using System;
+using System.Runtime.InteropServices;
+using System.Security;
+
+namespace Microsoft.Win32.SafeHandles
+{
+       public sealed class SafeX509ChainHandle : SafeHandle
+       {
+               [MonoTODO]
+               public override bool IsInvalid
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [MonoTODO]
+               internal SafeX509ChainHandle() : base ((IntPtr)0, false)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               protected override bool ReleaseHandle()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
+
+#endif
index 5c38fccfe1c6a064c2014a0f47677537a5a1c6dd..efed94f85503853ebcb46d07f6d5655dda3ffd95 100644 (file)
@@ -35,7 +35,7 @@ using System.IO;
 using System.Runtime.InteropServices;
 using System.Runtime.Remoting.Messaging;
 
-#if MONOTOUCH
+#if MONOTOUCH || MOBILE_STATIC
 using MonoTouch;
 #endif
 
@@ -383,7 +383,7 @@ namespace System.IO.Compression
                        CheckResult (res, "WriteInternal");
                }
 
-#if MONOTOUCH
+#if MONOTOUCH || MOBILE_STATIC
                [MonoPInvokeCallback (typeof (UnmanagedReadOrWrite))]
 #endif
                static int UnmanagedRead (IntPtr buffer, int length, IntPtr data)
@@ -408,7 +408,7 @@ namespace System.IO.Compression
                        return n;
                }
 
-#if MONOTOUCH
+#if MONOTOUCH || MOBILE_STATIC
                [MonoPInvokeCallback (typeof (UnmanagedReadOrWrite))]
 #endif
                static int UnmanagedWrite (IntPtr buffer, int length, IntPtr data)
index 50e9009741a2f5d028818a16e4aa7ddc0354d6a8..861d710f77cfd80fa9b535d272fa9e838f3f43b6 100644 (file)
@@ -299,7 +299,7 @@ namespace System.Net.NetworkInformation {
                        }
                }
 
-#if MONOTOUCH
+#if MONOTOUCH || MOBILE_STATIC
                [MonoTouch.MonoPInvokeCallback (typeof (SCNetworkReachabilityCallback))]
 #endif
                static void HandleCallback (IntPtr reachability, NetworkReachabilityFlags flags, IntPtr info)
index c7576897189c0e6c30b155b2380569a1867cc119..07896d201380eea623b23d5a0ecfd9365798af18 100644 (file)
@@ -1328,7 +1328,7 @@ namespace System.Net.Sockets
                        if (e.RemoteEndPoint == null)
                                throw new ArgumentNullException ("remoteEP");
 
-                       InitSocketAsyncEventArgs (e, ConnectAsyncCallback, e, SocketOperation.Connect);
+                       InitSocketAsyncEventArgs (e, null, e, SocketOperation.Connect);
 
                        try {
                                IPAddress [] addresses;
index 4ff3508c5c29ba9310c481ada3d4f8459b2b1f06..4d802b3108d00c4d4ee4596a5adf7608ec0ccd29 100644 (file)
@@ -26,6 +26,8 @@ Microsoft.Win32/UserPreferenceChangedEventArgs.cs
 Microsoft.Win32/UserPreferenceChangedEventHandler.cs
 Microsoft.Win32/UserPreferenceChangingEventArgs.cs
 Microsoft.Win32/UserPreferenceChangingEventHandler.cs
+Microsoft.Win32.SafeHandles/SafeX509ChainHandle.cs
+
 Mono.Http/NtlmClient.cs
 System.CodeDom.Compiler/CodeCompiler.cs
 System.CodeDom.Compiler/CodeDomConfigurationHandler.cs
index 668e863b5cc055feed1a132c8bc42e8fb00e586f..b747e0dd0164e0fc6e98da731bc02b49911c94ef 100644 (file)
@@ -108,7 +108,7 @@ namespace MonoTests.System.Diagnostics
                        Assert.IsNull (fvi.SpecialBuild, "#27");
                }
 
-#if !MONOTOUCH
+#if !MONOTOUCH && !MOBILE_STATIC
                [Test]
                public void GetVersionInfo_NoNativeResources ()
                {
index 2b12d7019bffad7b8ebc05bd816b8e773a684871..f4586a253f8ce09c2b2178d6f5e08ad53b55445a 100755 (executable)
@@ -15,6 +15,7 @@ using System.Collections;
 using System.Threading;
 using System.Reflection;
 using System.Text.RegularExpressions;
+using System.Threading.Tasks;
 using System.Net;
 using System.Net.Sockets;
 using NUnit.Framework;
@@ -4345,6 +4346,23 @@ namespace MonoTests.System.Net.Sockets
                                socket.SetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 19);
                        }
                }
+
+               [Test] // Covers 41616
+               public void ConnectAsyncUnhandledEx ()
+               {
+                       var mre = new ManualResetEvent (false);
+
+                       var endPoint = new IPEndPoint(0,0);
+                       var socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Unspecified);
+
+                       var socketArgs = new SocketAsyncEventArgs();
+                       socketArgs.RemoteEndPoint = endPoint;
+                       socketArgs.Completed += (sender, e) => mre.Set ();
+
+                       socket.ConnectAsync (socketArgs);
+
+                       Assert.IsTrue (mre.WaitOne (1000), "ConnectedAsync timeout");
+               }
        }
 }
 
index 3dd8cf239af06c93b0219b6d7aacabf5b0cef022..94f3552b6f577fb0e216b02bc67a1175e85d8e7e 100644 (file)
@@ -303,7 +303,7 @@ namespace MonoTests.System.Timers
                        };
                        timer.Start ();
 
-                       Assert.IsTrue (mre.Wait (500), "#1 re-enabling timer in Elapsed didn't work");
+                       Assert.IsTrue (mre.Wait (1000), "#1 re-enabling timer in Elapsed didn't work");
                        Assert.AreEqual (2, elapsedCount, "#2 wrong elapsedCount");
                        timer.Stop ();
                }
@@ -323,7 +323,7 @@ namespace MonoTests.System.Timers
                        };
                        timer.Start ();
 
-                       Assert.IsFalse (mre.Wait (500), "#1 AutoResetEvent=false didn't stop firing Elapsed, elapsedCount=" + elapsedCount);
+                       Assert.IsFalse (mre.Wait (1000), "#1 AutoReset=false didn't stop firing Elapsed, elapsedCount=" + elapsedCount);
                        Assert.AreEqual (1, elapsedCount, "#2 wrong elapsedCount");
                        timer.Stop ();
                }
index 821cf273ff89dc941b1c065ca58d2e85863c8b90..9dbb7e79b4f799f60a2bd35e79c50c055fd11420 100644 (file)
@@ -272,6 +272,7 @@ System/Platform.cs
 System/SRDescriptionAttribute.cs
 System/UriTypeConverter.cs
 System.Windows.Input/ICommand.cs
+Microsoft.Win32.SafeHandles/SafeX509ChainHandle.cs
 
 Mono.Net.Security/CallbackHelpers.cs
 Mono.Net.Security/ChainValidationHelper.cs
@@ -927,3 +928,15 @@ ReferenceSources/Win32Exception.cs
 ../Mono.Security/Mono.Security.Interface/TlsException.cs
 ../Mono.Security/Mono.Security.Interface/TlsProtocolCode.cs
 ../Mono.Security/Mono.Security.Interface/TlsProtocols.cs
+
+System.Runtime.InteropServices.ComTypes/ADVF.cs
+System.Runtime.InteropServices.ComTypes/DATADIR.cs
+System.Runtime.InteropServices.ComTypes/DVASPECT.cs
+System.Runtime.InteropServices.ComTypes/FORMATETC.cs
+System.Runtime.InteropServices.ComTypes/IAdviseSink.cs
+System.Runtime.InteropServices.ComTypes/IDataObject.cs
+System.Runtime.InteropServices.ComTypes/IEnumFORMATETC.cs
+System.Runtime.InteropServices.ComTypes/IEnumSTATDATA.cs
+System.Runtime.InteropServices.ComTypes/STATDATA.cs
+System.Runtime.InteropServices.ComTypes/STGMEDIUM.cs
+System.Runtime.InteropServices.ComTypes/TYMED.cs
index 8f84347cde9dadf77cd0211d0cabe72fc6b270c7..9a453e68f8c3e381bf02e8fb4d8fcccead7dd30c 100644 (file)
@@ -1,3 +1,6 @@
+
+Microsoft.CSharp/CSharpCodeProviderCas.cs
+Microsoft.CSharp/CSharpCodeProviderTest.cs
 Microsoft.CSharp/CodeGeneratorFromCompileUnitTest.cs
 Microsoft.CSharp/CodeGeneratorFromExpressionTest.cs
 Microsoft.CSharp/CodeGeneratorFromNamespaceTest.cs
@@ -6,8 +9,6 @@ Microsoft.CSharp/CodeGeneratorFromTypeTest.cs
 Microsoft.CSharp/CodeGeneratorIdentifierTest.cs
 Microsoft.CSharp/CodeGeneratorTestBase.cs
 Microsoft.CSharp/CodeGeneratorTypeOutputTest.cs
-Microsoft.CSharp/CSharpCodeProviderCas.cs
-Microsoft.CSharp/CSharpCodeProviderTest.cs
 Microsoft.VisualBasic/CodeGeneratorFromBinaryOperatorTest.cs
 Microsoft.VisualBasic/CodeGeneratorFromCompileUnitTest.cs
 Microsoft.VisualBasic/CodeGeneratorFromExpressionTest.cs
@@ -17,6 +18,40 @@ Microsoft.VisualBasic/CodeGeneratorFromTypeTest.cs
 Microsoft.VisualBasic/CodeGeneratorTestBase.cs
 Microsoft.VisualBasic/VBCodeProviderCas.cs
 Microsoft.VisualBasic/VBCodeProviderTest.cs
+Microsoft.Win32/IntranetZoneCredentialPolicyCas.cs
+Microsoft.Win32/IntranetZoneCredentialPolicyTest.cs
+Microsoft.Win32/PowerModeChangedEventArgsCas.cs
+Microsoft.Win32/SessionEndedEventArgsCas.cs
+Microsoft.Win32/SessionEndingEventArgsCas.cs
+Microsoft.Win32/SessionSwitchEventArgsCas.cs
+Microsoft.Win32/SessionSwitchEventArgsTest.cs
+Microsoft.Win32/SystemEventsCas.cs
+Microsoft.Win32/TimerElapsedEventArgsCas.cs
+Microsoft.Win32/UserPreferenceChangedEventArgsCas.cs
+Microsoft.Win32/UserPreferenceChangingEventArgsCas.cs
+System.CodeDom.Compiler/CodeCompilerCas.cs
+System.CodeDom.Compiler/CodeDomProviderCas.cs
+System.CodeDom.Compiler/CodeGeneratorCas.cs
+System.CodeDom.Compiler/CodeGeneratorFromTypeTestBase.cs
+System.CodeDom.Compiler/CodeGeneratorGenerateFromCompileUnitTest.cs
+System.CodeDom.Compiler/CodeGeneratorOptionsCas.cs
+System.CodeDom.Compiler/CodeGeneratorOptionsTest.cs
+System.CodeDom.Compiler/CodeGeneratorTest.cs
+System.CodeDom.Compiler/CodeGeneratorTestBase.cs
+System.CodeDom.Compiler/CodeParserCas.cs
+System.CodeDom.Compiler/CompilerErrorCas.cs
+System.CodeDom.Compiler/CompilerErrorCollectionCas.cs
+System.CodeDom.Compiler/CompilerInfoCas.cs
+System.CodeDom.Compiler/CompilerParametersCas.cs
+System.CodeDom.Compiler/CompilerResultsCas.cs
+System.CodeDom.Compiler/ExecutorCas.cs
+System.CodeDom.Compiler/ExecutorTest.cs
+System.CodeDom.Compiler/GeneratedCodeAttributeCas.cs
+System.CodeDom.Compiler/GeneratedCodeAttributeTest.cs
+System.CodeDom.Compiler/IndentedTextWriterCas.cs
+System.CodeDom.Compiler/IndentedTextWriterTest.cs
+System.CodeDom.Compiler/TempFileCollectionCas.cs
+System.CodeDom.Compiler/TempFileCollectionTest.cs
 System.CodeDom/CodeArgumentReferenceExpressionCas.cs
 System.CodeDom/CodeArgumentReferenceExpressionTest.cs
 System.CodeDom/CodeArrayCreateExpressionCas.cs
@@ -148,32 +183,11 @@ System.CodeDom/CodeVariableDeclarationStatementCas.cs
 System.CodeDom/CodeVariableDeclarationStatementTest.cs
 System.CodeDom/CodeVariableReferenceExpressionCas.cs
 System.CodeDom/CodeVariableReferenceExpressionTest.cs
-System.CodeDom.Compiler/CodeCompilerCas.cs
-System.CodeDom.Compiler/CodeDomProviderCas.cs
-System.CodeDom.Compiler/CodeGeneratorCas.cs
-System.CodeDom.Compiler/CodeGeneratorFromTypeTestBase.cs
-System.CodeDom.Compiler/CodeGeneratorGenerateFromCompileUnitTest.cs
-System.CodeDom.Compiler/CodeGeneratorOptionsCas.cs
-System.CodeDom.Compiler/CodeGeneratorOptionsTest.cs
-System.CodeDom.Compiler/CodeGeneratorTest.cs
-System.CodeDom.Compiler/CodeGeneratorTestBase.cs
-System.CodeDom.Compiler/CodeParserCas.cs
-System.CodeDom.Compiler/CompilerErrorCas.cs
-System.CodeDom.Compiler/CompilerErrorCollectionCas.cs
-System.CodeDom.Compiler/CompilerInfoCas.cs
-System.CodeDom.Compiler/CompilerParametersCas.cs
-System.CodeDom.Compiler/CompilerResultsCas.cs
-System.CodeDom.Compiler/ExecutorCas.cs
-System.CodeDom.Compiler/ExecutorTest.cs
-System.CodeDom.Compiler/GeneratedCodeAttributeCas.cs
-System.CodeDom.Compiler/GeneratedCodeAttributeTest.cs
-System.CodeDom.Compiler/IndentedTextWriterCas.cs
-System.CodeDom.Compiler/IndentedTextWriterTest.cs
-System.CodeDom.Compiler/TempFileCollectionCas.cs
-System.CodeDom.Compiler/TempFileCollectionTest.cs
+System.Configuration.Provider
+System.Configuration.Provider/ProviderBaseTest.cs
 System.Configuration/ApplicationSettingsBaseTest.cs
-System.Configuration/ConfigurationExceptionTest.cs
 System.Configuration/ConfigXmlDocumentTest.cs
+System.Configuration/ConfigurationExceptionTest.cs
 System.Configuration/LocalFileSettingsProviderTest.cs
 System.Configuration/SettingElementTest.cs
 System.Configuration/SettingsBaseTest.cs
@@ -181,9 +195,15 @@ System.Configuration/SettingsPropertyCollectionTest.cs
 System.Configuration/SettingsPropertyTest.cs
 System.Configuration/SettingsPropertyValueCollectionTest.cs
 System.Configuration/SettingsPropertyValueTest.cs
-System.Configuration.Provider
-System.Configuration.Provider/ProviderBaseTest.cs
 System.IO.Ports/SerialPortTest.cs
+System.Security.Permissions/ResourcePermissionBaseCas.cs
+System.Security.Permissions/ResourcePermissionBaseEntryCas.cs
+System.Security.Permissions/ResourcePermissionBaseEntryTest.cs
+System.Security.Permissions/ResourcePermissionBaseTest.cs
+System.Security.Permissions/StorePermissionAttributeCas.cs
+System.Security.Permissions/StorePermissionAttributeTest.cs
+System.Security.Permissions/StorePermissionCas.cs
+System.Security.Permissions/StorePermissionTest.cs
 System.Web/AspNetHostingPermissionAttributeCas.cs
 System.Web/AspNetHostingPermissionAttributeTest.cs
 System.Web/AspNetHostingPermissionCas.cs
diff --git a/mcs/class/corlib/Mono/RuntimeHandles.cs b/mcs/class/corlib/Mono/RuntimeHandles.cs
new file mode 100644 (file)
index 0000000..f6d0827
--- /dev/null
@@ -0,0 +1,95 @@
+//
+// Wrapper handles for Mono Runtime internal structs
+//
+// Authors:
+//   Aleksey Kliger <aleksey@xamarin.com>
+//   Rodrigo Kumpera <kumpera@xamarin.com>
+//
+// Copyright 2016 Dot net foundation.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+using System;
+using System.Runtime.CompilerServices;
+
+namespace Mono {
+
+       internal struct RuntimeClassHandle {
+               unsafe RuntimeStructs.MonoClass* value;
+
+               internal unsafe RuntimeClassHandle (RuntimeStructs.MonoClass* value) {
+                       this.value = value;
+               }
+
+               internal unsafe RuntimeClassHandle (IntPtr ptr) {
+                       this.value = (RuntimeStructs.MonoClass*) ptr;
+               }
+
+               internal unsafe RuntimeStructs.MonoClass* Value {
+                       get { return value; }
+               }
+
+               public override bool Equals (object obj)
+               {
+                       if (obj == null || GetType () != obj.GetType ())
+                               return false;
+
+                       unsafe { return value == ((RuntimeClassHandle)obj).Value; }
+               }
+
+               public override int GetHashCode ()
+               {
+                       unsafe { return ((IntPtr)value).GetHashCode (); }
+               }
+
+               public bool Equals (RuntimeClassHandle handle)
+               {
+                       unsafe { return value == handle.Value; }
+               }
+
+               public static bool operator == (RuntimeClassHandle left, Object right)
+               {
+                       return (right != null) && (right is RuntimeClassHandle) && left.Equals ((RuntimeClassHandle)right);
+               }
+
+               public static bool operator != (RuntimeClassHandle left, Object right)
+               {
+                       return (right == null) || !(right is RuntimeClassHandle) || !left.Equals ((RuntimeClassHandle)right);
+               }
+
+               public static bool operator == (Object left, RuntimeClassHandle right)
+               {
+                       return (left != null) && (left is RuntimeClassHandle) && ((RuntimeClassHandle)left).Equals (right);
+               }
+
+               public static bool operator != (Object left, RuntimeClassHandle right)
+               {
+                       return (left == null) || !(left is RuntimeClassHandle) || !((RuntimeClassHandle)left).Equals (right);
+               }
+
+               [MethodImpl(MethodImplOptions.InternalCall)]
+               internal unsafe extern static IntPtr GetTypeFromClass (RuntimeStructs.MonoClass *klass);
+
+               internal RuntimeTypeHandle GetTypeHandle ()
+               {
+                       unsafe { return new RuntimeTypeHandle (GetTypeFromClass (value)); }
+               }
+       }
+
+       internal struct RuntimeRemoteClassHandle {
+               unsafe RuntimeStructs.RemoteClass* value;
+
+               internal unsafe RuntimeRemoteClassHandle (RuntimeStructs.RemoteClass* value)
+               {
+                       this.value = value;
+               }
+
+               internal RuntimeClassHandle ProxyClass {
+                       get {
+                               unsafe {
+                                       return new RuntimeClassHandle (value->proxy_class);
+                               }
+                       }
+               }
+       }
+}
diff --git a/mcs/class/corlib/Mono/RuntimeStructs.cs b/mcs/class/corlib/Mono/RuntimeStructs.cs
new file mode 100644 (file)
index 0000000..c445346
--- /dev/null
@@ -0,0 +1,34 @@
+//
+// Mono runtime native structs surfaced to managed code.
+//
+// Authors:
+//   Aleksey Kliger <aleksey@xamarin.com>
+//   Rodrigo Kumpera <kumpera@xamarin.com>
+//
+// Copyright 2016 Dot net foundation.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Mono {
+       internal class RuntimeStructs {
+               // class-internals.h MonoRemoteClass
+               [StructLayout(LayoutKind.Sequential)]
+               internal unsafe struct RemoteClass {
+                       internal IntPtr default_vtable;
+                       internal IntPtr xdomain_vtable;
+                       internal MonoClass* proxy_class;
+                       internal IntPtr proxy_class_name;
+                       internal uint interface_count;
+                       // FIXME: How to represent variable-length array struct member?
+                       // MonoClass* interfaces [];
+               }
+
+               internal struct MonoClass {
+               }
+       }
+
+}
+       
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventDataAttribute.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventDataAttribute.cs
new file mode 100644 (file)
index 0000000..9a3d0cd
--- /dev/null
@@ -0,0 +1,49 @@
+//
+// EventDataAttribute.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false)]
+       public class EventDataAttribute : Attribute
+       {
+               [MonoTODO]
+               public string Name
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+                       set
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventFieldAttribute.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventFieldAttribute.cs
new file mode 100644 (file)
index 0000000..4691746
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// EventFieldAttribute.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       [AttributeUsage(AttributeTargets.Property)]
+       public class EventFieldAttribute : Attribute
+       {
+               [MonoTODO]
+               public EventFieldFormat Format
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+                       set
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [MonoTODO]
+               public EventFieldTags Tags
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+                       set
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventFieldFormat.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventFieldFormat.cs
new file mode 100644 (file)
index 0000000..045cf65
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// EventFieldFormat.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       public enum EventFieldFormat
+       {
+               Boolean = 3,
+               Default = 0,
+               Hexadecimal = 4,
+               HResult = 15,
+               Json = 12,
+               String = 2,
+               Xml = 11
+       }
+}
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventFieldTags.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventFieldTags.cs
new file mode 100644 (file)
index 0000000..5f8cb37
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// EventFieldTags.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       [Flags]
+       public enum EventFieldTags
+       {
+               None = 0
+       }
+}
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventIgnoreAttribute.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventIgnoreAttribute.cs
new file mode 100644 (file)
index 0000000..8a276b3
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// EventIgnoreAttribute.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       [AttributeUsage(AttributeTargets.Property)]
+       public class EventIgnoreAttribute : Attribute
+       {
+       }
+}
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventManifestOptions.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventManifestOptions.cs
new file mode 100644 (file)
index 0000000..ed5ff2a
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// EventManifestOptions.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       [Flags]
+       public enum EventManifestOptions
+       {
+               AllCultures = 2,
+               AllowEventSourceOverride = 8,
+               None = 0,
+               OnlyIfNeededForRegistration = 4,
+               Strict = 1
+       }
+}
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventSourceException.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventSourceException.cs
new file mode 100644 (file)
index 0000000..3602e29
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// EventSourceException.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Diagnostics.Tracing
+{
+       public class EventSourceException : Exception
+       {
+               [MonoTODO]
+               public EventSourceException ()
+               {
+               }
+
+               [MonoTODO]
+               public EventSourceException (string message)
+               {
+               }
+
+               [MonoTODO]
+               public EventSourceException (string message, Exception innerException)
+               {
+               }
+       }
+}
index 702cd540d976d92e34dbce66fc2e116a679f2603..e51e9dbfc2833eecfc922a3e1f117753a5be742b 100644 (file)
@@ -71,22 +71,25 @@ namespace System.Diagnostics {
                                        out nativeOffset, out fileName, out lineNumber,
                                        out columnNumber);                      
                 }
-                
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]                
                public StackFrame (bool fNeedFileInfo)
                {
                        get_frame_info (2, fNeedFileInfo, out methodBase, out ilOffset,
                                        out nativeOffset, out fileName, out lineNumber,
                                        out columnNumber);                      
                 }
-                
-                public StackFrame (int skipFrames)
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]                
+               public StackFrame (int skipFrames)
                {
                        get_frame_info (skipFrames + 2, false, out methodBase, out ilOffset,
                                        out nativeOffset, out fileName, out lineNumber,
                                        out columnNumber);                      
                 }
                 
-                public StackFrame (int skipFrames, bool fNeedFileInfo) 
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public StackFrame (int skipFrames, bool fNeedFileInfo) 
                {
                        get_frame_info (skipFrames + 2, fNeedFileInfo, out methodBase, out ilOffset,
                                        out nativeOffset, out fileName, out lineNumber,
@@ -95,7 +98,8 @@ namespace System.Diagnostics {
                 
                // LAMESPEC: According to the MSDN docs, this creates a frame with _only_
                // the filename and lineNumber, but MS fills out the frame info as well.
-                public StackFrame (string fileName, int lineNumber)
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public StackFrame (string fileName, int lineNumber)
                {
                        get_frame_info (2, false, out methodBase, out ilOffset,
                                        out nativeOffset, out fileName, out lineNumber,
@@ -107,7 +111,8 @@ namespace System.Diagnostics {
                 
                // LAMESPEC: According to the MSDN docs, this creates a frame with _only_
                // the filename, lineNumber and colNumber, but MS fills out the frame info as well.
-                public StackFrame (string fileName, int lineNumber, int colNumber)
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public StackFrame (string fileName, int lineNumber, int colNumber)
                {
                        get_frame_info (2, false, out methodBase, out ilOffset,
                                        out nativeOffset, out fileName, out lineNumber,
index 65ca59de4f3f17defb8a2b789c20637b33d2d02b..420b497fc9a3d1f9bf8851094991bb8786c0cb29 100644 (file)
@@ -60,26 +60,31 @@ namespace System.Diagnostics {
                readonly StackTrace[] captured_traces;
                private bool debug_info;
 
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
                public StackTrace ()
                {
                        init_frames (METHODS_TO_SKIP, false);
                }
 
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
                public StackTrace (bool fNeedFileInfo)
                {
                        init_frames (METHODS_TO_SKIP, fNeedFileInfo);
                }
 
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
                public StackTrace (int skipFrames)
                {
                        init_frames (skipFrames, false);
                }
 
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
                public StackTrace (int skipFrames, bool fNeedFileInfo)
                {
                        init_frames (skipFrames, fNeedFileInfo);
                }
 
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
                void init_frames (int skipFrames, bool fNeedFileInfo)
                {
                        if (skipFrames < 0)
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComAwareEventInfo.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComAwareEventInfo.cs
new file mode 100644 (file)
index 0000000..3e13572
--- /dev/null
@@ -0,0 +1,123 @@
+//
+// ComAwareEventInfo.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+
+namespace System.Runtime.InteropServices
+{
+       public class ComAwareEventInfo : EventInfo
+       {
+               [MonoTODO]
+               public override EventAttributes Attributes
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [MonoTODO]
+               public override Type DeclaringType
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [MonoTODO]
+               public override string Name
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [MonoTODO]
+               public ComAwareEventInfo (Type type, string eventName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override void AddEventHandler (object target, Delegate handler)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override void RemoveEventHandler (object target, Delegate handler)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override MethodInfo GetAddMethod (bool nonPublic)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override MethodInfo GetRaiseMethod (bool nonPublic)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override MethodInfo GetRemoveMethod (bool nonPublic)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override object[] GetCustomAttributes (Type attributeType, bool inherit)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override object[] GetCustomAttributes (bool inherit)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override bool IsDefined (Type attributeType, bool inherit)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public override Type ReflectedType
+               {
+                       get { throw new NotImplementedException (); }
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComEventsHelper.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComEventsHelper.cs
new file mode 100644 (file)
index 0000000..5ab8020
--- /dev/null
@@ -0,0 +1,47 @@
+//
+// ComEventsHelper.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Runtime.InteropServices
+{
+       public static class ComEventsHelper
+       {
+               [MonoTODO]
+               public static void Combine(object rcw, Guid iid, int dispid, Delegate d)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static Delegate Remove(object rcw, Guid iid, int dispid, Delegate d)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/CustomQueryInterfaceMode.cs b/mcs/class/corlib/System.Runtime.InteropServices/CustomQueryInterfaceMode.cs
new file mode 100644 (file)
index 0000000..1cbf55c
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// CustomQueryInterfaceMode.cs
+//
+// Authors:
+//     Alexander Köplinger <alexander.koeplinger@xamarin.com>
+//
+// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Runtime.InteropServices
+{
+       public enum CustomQueryInterfaceMode
+       {
+               Allow = 1,
+               Ignore = 0
+       }
+}
index ef0b895922c7f91a49102e533202f082c2472962..3640f7285910223220cfcb5e256bf3684937a416 100644 (file)
@@ -109,19 +109,30 @@ namespace System.Runtime.Remoting.Messaging {
                                args = null;
                }
 
-               public MonoMethodMessage (Type type, string method_name, object [] in_args)
+               internal MonoMethodMessage (MethodInfo minfo, object [] in_args, object [] out_args)
                {
-                       // fixme: consider arg types
-                       MethodInfo minfo = type.GetMethod (method_name);
-                       
-                       InitMessage ((MonoMethod)minfo, null);
+                       InitMessage ((MonoMethod)minfo, out_args);
 
                        int len = in_args.Length;
                        for (int i = 0; i < len; i++) {
                                args [i] = in_args [i];
                        }
                }
+
+               private static MethodInfo GetMethodInfo (Type type, string methodName)
+               {
+                       // fixme: consider arg types
+                       MethodInfo minfo = type.GetMethod(methodName);
+                       if (minfo == null)
+                               throw new ArgumentException (String.Format("Could not find '{0}' in {1}", methodName, type), "methodName");
+                       return minfo;
+               }
                
+               public MonoMethodMessage (Type type, string methodName, object [] in_args)
+                       : this (GetMethodInfo (type, methodName), in_args, null)
+               {
+               }
+
                public IDictionary Properties {
                        get {
                                if (properties == null) properties = new MCMDictionary (this);
index de4b921cff8671dd29568107d49ca017960ae6a6..74bc4764adcc0f09bae453359ac832b31b46f715 100644 (file)
@@ -49,8 +49,52 @@ namespace System.Runtime.Remoting.Proxies
        [StructLayout (LayoutKind.Sequential)]
        internal class TransparentProxy {
                public RealProxy _rp;
-               IntPtr _class;
+               Mono.RuntimeRemoteClassHandle _class;
                bool _custom_type_info;
+
+               unsafe internal RuntimeType GetProxyType () {
+                       RuntimeTypeHandle h = _class.ProxyClass.GetTypeHandle ();
+                       return (RuntimeType)Type.GetTypeFromHandle (h);
+               }
+
+               bool IsContextBoundObject {
+                       get { return GetProxyType ().IsContextful; }
+               }
+
+               Context TargetContext {
+                       get { return _rp._targetContext; }
+               }
+
+               bool InCurrentContext () {
+                       return IsContextBoundObject && Object.ReferenceEquals (TargetContext, Thread.CurrentContext);
+               }
+
+               internal object LoadRemoteFieldNew (IntPtr classPtr, IntPtr fieldPtr) {
+                       Mono.RuntimeClassHandle classHandle = new Mono.RuntimeClassHandle (classPtr);
+                       RuntimeFieldHandle fieldHandle = new RuntimeFieldHandle (fieldPtr);
+                       RuntimeTypeHandle typeHandle = classHandle.GetTypeHandle ();
+
+                       FieldInfo field = FieldInfo.GetFieldFromHandle (fieldHandle);
+
+                       if (InCurrentContext ()) {
+                               object o = _rp._server;
+                               return field.GetValue(o);
+                       }
+
+                       object[] inArgs = new object[] { Type.GetTypeFromHandle(typeHandle).FullName,
+                                                         field.Name };
+                       object[] outArgsMsg = new object[1];
+                       MethodInfo minfo = typeof(object).GetMethod("FieldGetter", BindingFlags.NonPublic | BindingFlags.Instance);
+                       if (minfo == null)
+                               throw new MissingMethodException ("System.Object", "FieldGetter");
+                       MonoMethodMessage msg = new MonoMethodMessage (minfo, inArgs, outArgsMsg);
+                       object[] outArgs;
+                       Exception exc;
+                       RealProxy.PrivateInvoke (_rp, msg, out exc, out outArgs);
+                       if (exc != null)
+                               throw exc;
+                       return outArgs[0];
+               }
        }
 #pragma warning restore 169, 649
        
@@ -66,7 +110,7 @@ namespace System.Runtime.Remoting.Proxies
                #region Sync with object-internals.h
                Type class_to_proxy;
                internal Context _targetContext;
-               MarshalByRefObject _server;
+               internal MarshalByRefObject _server;
                int _targetDomainId = -1;
                internal string _targetUri;
                internal Identity _objectIdentity;
index ae5a82908c861894674a758b8ba8496d5027da2a..e1d95dc93f00f563a4a7415708b3714d5a107a4f 100644 (file)
@@ -1251,7 +1251,7 @@ namespace MonoTests.System
                        }
                }
        
-               delegate int IntNoArgs ();
+               public delegate int IntNoArgs ();
 
                [Test]
                public void CreateDelegateWithAbstractMethods ()
index a3a002f7cb0cd43effe25a5dd82308730850de6d..e037132ba7d6d68f3ef6106f4e5e142497579218 100644 (file)
@@ -23,6 +23,8 @@ Mono.Globalization.Unicode/SortKeyBuffer.cs
 Mono.Globalization.Unicode/Normalization.cs
 Mono.Globalization.Unicode/NormalizationTableUtil.cs
 Mono/Runtime.cs
+Mono/RuntimeStructs.cs
+Mono/RuntimeHandles.cs
 Mono/DataConverter.cs
 Mono.Interop/ComInteropProxy.cs
 Mono.Interop/IDispatch.cs
@@ -169,6 +171,13 @@ System.Diagnostics.Tracing/EventCommandEventArgs.cs
 System.Diagnostics.Tracing/EventListener.cs
 System.Diagnostics.Tracing/EventWrittenEventArgs.cs
 System.Diagnostics.Tracing/NonEventAttribute.cs
+System.Diagnostics.Tracing/EventDataAttribute.cs
+System.Diagnostics.Tracing/EventFieldAttribute.cs
+System.Diagnostics.Tracing/EventFieldFormat.cs
+System.Diagnostics.Tracing/EventFieldTags.cs
+System.Diagnostics.Tracing/EventIgnoreAttribute.cs
+System.Diagnostics.Tracing/EventManifestOptions.cs
+System.Diagnostics.Tracing/EventSourceException.cs
 System.Diagnostics.SymbolStore/ISymbolBinder.cs
 System.Diagnostics.SymbolStore/ISymbolBinder1.cs
 System.Diagnostics.SymbolStore/ISymbolDocument.cs
@@ -400,6 +409,9 @@ System.Runtime.InteropServices/UCOMITypeInfo.cs
 System.Runtime.InteropServices/UCOMITypeLib.cs
 System.Runtime.InteropServices/VARDESC.cs
 System.Runtime.InteropServices/VARFLAGS.cs
+System.Runtime.InteropServices/CustomQueryInterfaceMode.cs
+System.Runtime.InteropServices/ComAwareEventInfo.cs
+System.Runtime.InteropServices/ComEventsHelper.cs
 
 System.Runtime.InteropServices.WindowsRuntime/DefaultInterfaceAttribute.cs
 System.Runtime.InteropServices.WindowsRuntime/DesignerNamespaceResolveEventArgs.cs
index 793e47c8a2aeb8ea25919ae770aafa6bf61a66f9..74200cddf49e06d741e1bfdce3d04f019c0bb672 100644 (file)
@@ -348,8 +348,10 @@ namespace Mono.ILASM {
 
                                 if (IsValueType (parent.PeapiClass.nameSpace, parent.PeapiClass.name))
                                         is_value_class = true;
-                                else if (IsEnumType (parent.PeapiClass.nameSpace, parent.PeapiClass.name))
+                                else if (IsEnumType (parent.PeapiClass.nameSpace, parent.PeapiClass.name)) {
                                         is_enum_class = true;
+                                        is_value_class = false;
+                                }
 
                                 if (!IsValueType (name_space, name) && !IsEnumType (name_space, name) &&
                                         is_value_class && (attr & PEAPI.TypeAttr.Sealed) == 0) {
index efc5927303ac94674dbba013c3f969c5ef8653d5..f15d1a8d12dc03e3cc09b5eceec98220851233cb 100644 (file)
@@ -4594,13 +4594,14 @@ namespace Mono.CSharp {
 
                        if (p.IsNullableType) {
                                p = Nullable.NullableInfo.GetUnderlyingType (p);
-                               if (!BuiltinTypeSpec.IsPrimitiveType (p))
+                               if (!BuiltinTypeSpec.IsPrimitiveTypeOrDecimal (p))
                                        return 0;
 
                                //
                                // Spec expects implicit conversion check between p and q, q and p
-                               // to be done before nullable unwrapping but that's expensive operation
-                               // Hence manual tweak is needed because BetterTypeConversion works on
+                               // to be done before nullable unwrapping but that's expensive operation.
+                               // 
+                               // Extra manual tweak is needed because BetterTypeConversion works on
                                // unwrapped types
                                //
                                if (p == q)
@@ -4609,7 +4610,7 @@ namespace Mono.CSharp {
 
                        if (q.IsNullableType) {
                                q = Nullable.NullableInfo.GetUnderlyingType (q);
-                               if (!BuiltinTypeSpec.IsPrimitiveType (q))
+                               if (!BuiltinTypeSpec.IsPrimitiveTypeOrDecimal (q))
                                        return 0;
 
                                if (q == p)
index 405b7225a52ec1854c6d78901ce589ab1a308682..6afe80eb0d024cfe07e01528e7d4c586509e5699 100644 (file)
@@ -17,6 +17,7 @@ public static class Program
                Complex (null);
                MM (1);
                MM ((byte) 1);
+               DecimalRule (() => (byte) 1);
                return 0;
        }
 
@@ -82,4 +83,13 @@ public static class Program
        {
                throw new ApplicationException ("wrong overload");
        }
+
+    static void DecimalRule (Func<int> i)
+    {
+    }
+
+    static void DecimalRule (Func<decimal?> i)
+    {
+        throw new ApplicationException ("wrong overload");
+    }
 }
\ No newline at end of file
index 55f9c7b2fa6fc0ebce88f03463ee0c9390fa82ae..2496afc80a80fee6f31a0ed8768921facdb7e772 100644 (file)
   <test name="test-935.cs">
     <type name="Program">
       <method name="Int32 Main()" attrs="150">
-        <size>101</size>
+        <size>135</size>
       </method>
       <method name="Void TT(System.Threading.Tasks.Task`1[System.String])" attrs="145">
         <size>2</size>
       <method name="Void MM(System.Nullable`1[System.Double])" attrs="145">
         <size>12</size>
       </method>
+      <method name="Void DecimalRule(System.Func`1[System.Int32])" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void DecimalRule(System.Func`1[System.Nullable`1[System.Decimal]])" attrs="145">
+        <size>12</size>
+      </method>
+      <method name="Int32 &lt;Main&gt;m__0()" attrs="145">
+        <size>9</size>
+      </method>
     </type>
   </test>
   <test name="test-936.cs">
index d8b86335579a2cdbc66a2ce9fd42c99b6d2059ad..bc8fddc327d675bd2ce58402e644d0ee8cbde774 100644 (file)
                        <method name="PrivateInvoke" />
                        <method name="GetAppDomainTarget" />
                </type>
-               <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields" />
+               <type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields">
+                       <method name="LoadRemoteFieldNew" />
+               </type>
                <type fullname="System.Runtime.Remoting.RemotingServices">
                        <method name="SerializeCallData" />
                        <method name="DeserializeCallData" />
index 39fc6e491df965cc8ba8e37d76072cb467533c3e..6f61c9b27b8a5c8d6a5480546da8cfd7f22d91ee 100644 (file)
@@ -10209,6 +10209,9 @@ can_access_type (MonoClass *access_klass, MonoClass *member_klass)
 {
        int access_level;
 
+       if (access_klass == member_klass)
+               return TRUE;
+
        if (access_klass->image->assembly && access_klass->image->assembly->corlib_internal)
                return TRUE;
 
@@ -10357,26 +10360,9 @@ mono_method_can_access_field (MonoMethod *method, MonoClassField *field)
 gboolean
 mono_method_can_access_method (MonoMethod *method, MonoMethod *called)
 {
-       int can = can_access_member (method->klass, called->klass, NULL, called->flags & METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK);
-       if (!can) {
-               MonoClass *nested = method->klass->nested_in;
-               while (nested) {
-                       can = can_access_member (nested, called->klass, NULL, called->flags & METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK);
-                       if (can)
-                               return TRUE;
-                       nested = nested->nested_in;
-               }
-       }
-       /* 
-        * FIXME:
-        * with generics calls to explicit interface implementations can be expressed
-        * directly: the method is private, but we must allow it. This may be opening
-        * a hole or the generics code should handle this differently.
-        * Maybe just ensure the interface type is public.
-        */
-       if ((called->flags & METHOD_ATTRIBUTE_VIRTUAL) && (called->flags & METHOD_ATTRIBUTE_FINAL))
-               return TRUE;
-       return can;
+       method = mono_method_get_method_definition (method);
+       called = mono_method_get_method_definition (called);
+       return mono_method_can_access_method_full (method, called, NULL);
 }
 
 /*
@@ -10393,6 +10379,10 @@ mono_method_can_access_method (MonoMethod *method, MonoMethod *called)
 gboolean
 mono_method_can_access_method_full (MonoMethod *method, MonoMethod *called, MonoClass *context_klass)
 {
+       /* Wrappers are except from access checks */
+       if (method->wrapper_type != MONO_WRAPPER_NONE || called->wrapper_type != MONO_WRAPPER_NONE)
+               return TRUE;
+
        MonoClass *access_class = method->klass;
        MonoClass *member_class = called->klass;
        int can = can_access_member (access_class, member_class, context_klass, called->flags & METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK);
index a3989ab74aad127f831b879358a0de850accc5dc..daf7de90b1cdcba2af650d2c0c25cdcce2c4c16b 100644 (file)
@@ -325,7 +325,10 @@ struct _MonoDomain {
        /* hashtables for Reflection handles */
        MonoGHashTable     *type_hash;
        MonoGHashTable     *refobject_hash;
-       /* a GC-tracked array to keep references to the static fields of types */
+       /*
+        * A GC-tracked array to keep references to the static fields of types.
+        * See note [Domain Static Data Array].
+        */
        gpointer           *static_data_array;
        /* maps class -> type initialization exception object */
        MonoGHashTable    *type_init_exception_hash;
index a3ba4a76e0492b35533b95791df77c3eab1a235c..0ceac2d500a98698255e82d3f9cff616c21dc88e 100644 (file)
@@ -1483,8 +1483,10 @@ mono_context_get_domain_id (MonoAppContext *context)
 void
 mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointer data, guint32 *bitmap)
 {
-       /* The first entry in the array is the index of the next free slot
-        * and the total size of the array
+       /* Note [Domain Static Data Array]:
+        *
+        * Entry 0 in the array is the index of the next free slot.
+        * Entry 1 is the total size of the array.
         */
        int next;
        if (domain->static_data_array) {
index e44f07f6d8329cb3e3811eb9387baeb4aa6654a0..bcf125022088de9abe6d121ab115e33dd4de222b 100644 (file)
@@ -105,7 +105,7 @@ add_thread_to_finalize (MonoInternalThread *thread, MonoError *error)
        return is_ok (error);
 }
 
-static gboolean suspend_finalizers = FALSE;
+static volatile gboolean suspend_finalizers = FALSE;
 /* 
  * actually, we might want to queue the finalize requests in a separate thread,
  * but we need to be careful about the execution domain of the thread...
@@ -724,7 +724,7 @@ finalize_domain_objects (DomainFinalizationReq *req)
                g_ptr_array_free (objs, TRUE);
        }
 #elif defined(HAVE_SGEN_GC)
-       while ((count = mono_gc_finalizers_for_domain (domain, to_finalize, NUM_FOBJECTS))) {
+       while (!suspend_finalizers && (count = mono_gc_finalizers_for_domain (domain, to_finalize, NUM_FOBJECTS))) {
                int i;
                for (i = 0; i < count; ++i) {
                        mono_gc_run_finalize (to_finalize [i], 0);
@@ -870,7 +870,6 @@ mono_gc_cleanup (void)
        if (!gc_disabled) {
                finished = TRUE;
                if (mono_thread_internal_current () != gc_thread) {
-                       gboolean timed_out = FALSE;
                        gint64 start_ticks = mono_msec_ticks ();
                        gint64 end_ticks = start_ticks + 2000;
 
@@ -898,31 +897,30 @@ mono_gc_cleanup (void)
                                suspend_finalizers = TRUE;
 
                                /* Try to abort the thread, in the hope that it is running managed code */
-                               mono_thread_internal_stop (gc_thread);
+                               mono_thread_internal_abort (gc_thread);
 
                                /* Wait for it to stop */
                                ret = guarded_wait (gc_thread->handle, 100, TRUE);
 
                                if (ret == WAIT_TIMEOUT) {
-                                       /* 
-                                        * The finalizer thread refused to die. There is not much we 
-                                        * can do here, since the runtime is shutting down so the 
-                                        * state the finalizer thread depends on will vanish.
+                                       /*
+                                        * The finalizer thread refused to exit. Make it stop.
                                         */
-                                       g_warning ("Shutting down finalizer thread timed out.");
-                                       timed_out = TRUE;
+                                       mono_thread_internal_stop (gc_thread);
+                                       ret = guarded_wait (gc_thread->handle, 100, TRUE);
+                                       g_assert (ret != WAIT_TIMEOUT);
+                                       /* The thread can't set this flag */
+                                       finalizer_thread_exited = TRUE;
                                }
                        }
 
-                       if (!timed_out) {
-                               int ret;
+                       int ret;
 
-                               /* Wait for the thread to actually exit */
-                               ret = guarded_wait (gc_thread->handle, INFINITE, TRUE);
-                               g_assert (ret == WAIT_OBJECT_0);
+                       /* Wait for the thread to actually exit */
+                       ret = guarded_wait (gc_thread->handle, INFINITE, TRUE);
+                       g_assert (ret == WAIT_OBJECT_0);
 
-                               mono_thread_join (GUINT_TO_POINTER (gc_thread->tid));
-                       }
+                       mono_thread_join (GUINT_TO_POINTER (gc_thread->tid));
                        g_assert (finalizer_thread_exited);
                }
                gc_thread = NULL;
index 432ddd6bea5c9653957967876a3728bbafdfb1cc..d6012ab507175149f0239b2dd78039e4c2b84c50 100644 (file)
@@ -62,6 +62,9 @@ ICALL_TYPE(RUNTIME, "Mono.Runtime", RUNTIME_1)
 ICALL(RUNTIME_1, "GetDisplayName", ves_icall_Mono_Runtime_GetDisplayName)
 ICALL(RUNTIME_12, "GetNativeStackTrace", ves_icall_Mono_Runtime_GetNativeStackTrace)
 
+ICALL_TYPE(RTCLASS, "Mono.RuntimeClassHandle", RTCLASS_1)
+ICALL(RTCLASS_1, "GetTypeFromClass", ves_icall_Mono_RuntimeClassHandle_GetTypeFromClass)
+
 #ifndef PLATFORM_RO_FS
 ICALL_TYPE(KPAIR, "Mono.Security.Cryptography.KeyPairPersistence", KPAIR_1)
 ICALL(KPAIR_1, "_CanSecure", ves_icall_Mono_Security_Cryptography_KeyPairPersistence_CanSecure)
index 33576447451ba9264ca789ad1f8eb880e6fc500e..c294eb0a49d59df6c855071f52980de8a79537e6 100644 (file)
@@ -1529,6 +1529,12 @@ ves_icall_System_Type_internal_from_handle (MonoType *handle)
        return ret;
 }
 
+ICALL_EXPORT MonoType*
+ves_icall_Mono_RuntimeClassHandle_GetTypeFromClass (MonoClass *klass)
+{
+       return mono_class_get_type (klass);
+}
+
 /* System.TypeCode */
 typedef enum {
        TYPECODE_EMPTY,
index 62851d633a9dc976d4c91ff97955169af180977f..a6e5ab526995458a00bcb978b4ec7f08543b4431 100644 (file)
@@ -1456,9 +1456,6 @@ mono_upgrade_remote_class (MonoDomain *domain, MonoObject *tproxy, MonoClass *kl
 void*
 mono_load_remote_field_checked (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, void **res, MonoError *error);
 
-MonoObject *
-mono_load_remote_field_new_icall (MonoObject *this_obj, MonoClass *klass, MonoClassField *field);
-
 MonoObject *
 mono_load_remote_field_new_checked (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoError *error);
 
index 737986052251c1385acfca6a20c6a908489ebb62..5abeed72821c95d91b536b504d0dab39dad94c8f 100644 (file)
@@ -8208,28 +8208,6 @@ mono_load_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassFie
        return result;
 }
 
-/**
- * mono_load_remote_field_new_icall:
- * @this: pointer to an object
- * @klass: klass of the object containing @field
- * @field: the field to load
- *
- * This method is called by the runtime on attempts to load fields of
- * transparent proxy objects. @this points to such TP, @klass is the class of
- * the object containing @field.
- * 
- * Returns: a freshly allocated object containing the value of the
- * field.  On failure returns NULL and throws an exception.
- */
-MonoObject *
-mono_load_remote_field_new_icall (MonoObject *this_obj, MonoClass *klass, MonoClassField *field)
-{
-       MonoError error;
-       MonoObject *result = mono_load_remote_field_new_checked (this_obj, klass, field, &error);
-       mono_error_set_pending_exception (&error);
-       return result;
-}
-
 /**
  * mono_load_remote_field_new_checked:
  * @this: pointer to an object
@@ -8250,69 +8228,25 @@ mono_load_remote_field_new_checked (MonoObject *this_obj, MonoClass *klass, Mono
 
        mono_error_init (error);
 
-       static MonoMethod *getter = NULL;
-       MonoDomain *domain = mono_domain_get ();
-       MonoTransparentProxy *tp = (MonoTransparentProxy *) this_obj;
-       MonoClass *field_class;
-       MonoMethodMessage *msg;
-       MonoArray *out_args;
-       MonoObject *exc, *res;
-       char* full_name;
+       static MonoMethod *tp_load = NULL;
 
        g_assert (mono_object_is_transparent_proxy (this_obj));
 
-       field_class = mono_class_from_mono_type (field->type);
-
-       if (mono_class_is_contextbound (tp->remote_class->proxy_class) && tp->rp->context == (MonoObject *) mono_context_get ()) {
-               gpointer val;
-               if (field_class->valuetype) {
-                       res = mono_object_new_checked (domain, field_class, error);
-                       return_val_if_nok (error, NULL);
-                       val = ((gchar *) res) + sizeof (MonoObject);
-               } else {
-                       val = &res;
-               }
-               mono_field_get_value (tp->rp->unwrapped_server, field, val);
-               return res;
-       }
-
-       if (!getter) {
-               getter = mono_class_get_method_from_name (mono_defaults.object_class, "FieldGetter", -1);
-               if (!getter) {
+       if (!tp_load) {
+               tp_load = mono_class_get_method_from_name (mono_defaults.transparent_proxy_class, "LoadRemoteFieldNew", -1);
+               if (!tp_load) {
                        mono_error_set_not_supported (error, "Linked away.");
                        return NULL;
                }
        }
        
-       msg = (MonoMethodMessage *)mono_object_new_checked (domain, mono_defaults.mono_method_message_class, error);
-       return_val_if_nok (error, NULL);
-       out_args = mono_array_new_checked (domain, mono_defaults.object_class, 1, error);
-       return_val_if_nok (error, NULL);
-
-       MonoReflectionMethod *rm = mono_method_get_object_checked (domain, getter, NULL, error);
-       return_val_if_nok (error, NULL);
-       mono_message_init (domain, msg, rm, out_args, error);
-       return_val_if_nok (error, NULL);
+       /* MonoType *type = mono_class_get_type (klass); */
 
-       full_name = mono_type_get_full_name (klass);
-       mono_array_setref (msg->args, 0, mono_string_new (domain, full_name));
-       mono_array_setref (msg->args, 1, mono_string_new (domain, mono_field_get_name (field)));
-       g_free (full_name);
-
-       mono_remoting_invoke ((MonoObject *)(tp->rp), msg, &exc, &out_args, error);
-       return_val_if_nok (error, NULL);
-
-       if (exc) {
-               mono_error_set_exception_instance (error, (MonoException *)exc);
-               return NULL;
-       }
-
-       if (mono_array_length (out_args) == 0)
-               res = NULL;
-       else
-               res = mono_array_get (out_args, MonoObject *, 0);
+       gpointer args[2];
+       args [0] = &klass;
+       args [1] = &field;
 
-       return res;
+       return mono_runtime_invoke_checked (tp_load, this_obj, args, error);
 }
 
 /**
index 9bc72faa28bc344fe09de1b5338e2b56bb34ec1f..67a7b7f827d3cf8b5670427576d5f70f758b7ea4 100644 (file)
@@ -198,7 +198,6 @@ mono_remoting_marshal_init (void)
                register_icall (mono_remoting_wrapper, "mono_remoting_wrapper", "object ptr ptr", FALSE);
                register_icall (mono_upgrade_remote_class_wrapper, "mono_upgrade_remote_class_wrapper", "void object object", FALSE);
                register_icall (mono_compile_method_icall, "mono_compile_method_icall", "ptr ptr", FALSE);
-               /* mono_load_remote_field_new_icall registered  by mini-runtime.c */
                /* mono_store_remote_field_new_icall registered  by mini-runtime.c */
 
        }
@@ -1327,72 +1326,6 @@ mono_marshal_get_remoting_invoke_with_check (MonoMethod *method)
        return res;
 }
 
-/*
- * mono_marshal_get_ldfld_remote_wrapper:
- * @klass: The return type
- *
- * This method generates a wrapper for calling mono_load_remote_field_new.
- * The return type is ignored for now, as mono_load_remote_field_new () always
- * returns an object. In the future, to optimize some codepaths, we might
- * call a different function that takes a pointer to a valuetype, instead.
- */
-MonoMethod *
-mono_marshal_get_ldfld_remote_wrapper (MonoClass *klass)
-{
-       MonoMethodSignature *sig;
-       MonoMethodBuilder *mb;
-       MonoMethod *res;
-       static MonoMethod* cached = NULL;
-
-       mono_marshal_lock_internal ();
-       if (cached) {
-               mono_marshal_unlock_internal ();
-               return cached;
-       }
-       mono_marshal_unlock_internal ();
-
-       mb = mono_mb_new_no_dup_name (mono_defaults.object_class, "__mono_load_remote_field_new_wrapper", MONO_WRAPPER_LDFLD_REMOTE);
-
-       mb->method->save_lmf = 1;
-
-       sig = mono_metadata_signature_alloc (mono_defaults.corlib, 3);
-       sig->params [0] = &mono_defaults.object_class->byval_arg;
-       sig->params [1] = &mono_defaults.int_class->byval_arg;
-       sig->params [2] = &mono_defaults.int_class->byval_arg;
-       sig->ret = &mono_defaults.object_class->byval_arg;
-
-#ifndef DISABLE_JIT
-       mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_ldarg (mb, 1);
-       mono_mb_emit_ldarg (mb, 2);
-
-       mono_mb_emit_icall (mb, mono_load_remote_field_new_icall);
-
-       mono_mb_emit_byte (mb, CEE_RET);
-#endif
-
-       mono_marshal_lock_internal ();
-       res = cached;
-       mono_marshal_unlock_internal ();
-       if (!res) {
-               MonoMethod *newm;
-               newm = mono_mb_create (mb, sig, 4, NULL);
-               mono_marshal_lock_internal ();
-               res = cached;
-               if (!res) {
-                       res = newm;
-                       cached = res;
-                       mono_marshal_unlock_internal ();
-               } else {
-                       mono_marshal_unlock_internal ();
-                       mono_free_method (newm);
-               }
-       }
-       mono_mb_free (mb);
-
-       return res;
-}
-
 /*
  * mono_marshal_get_ldfld_wrapper:
  * @type: the type of the field
@@ -1412,6 +1345,7 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
        WrapperInfo *info;
        char *name;
        int t, pos0, pos1 = 0;
+       static MonoMethod* tp_load = NULL;
 
        type = mono_type_get_underlying_type (type);
 
@@ -1442,6 +1376,13 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
        if ((res = mono_marshal_find_in_cache (cache, klass)))
                return res;
 
+#ifndef DISABLE_REMOTING
+       if (!tp_load) {
+               tp_load = mono_class_get_method_from_name (mono_defaults.transparent_proxy_class, "LoadRemoteFieldNew", -1);
+               g_assert (tp_load != NULL);
+       }
+#endif
+
        /* we add the %p pointer value of klass because class names are not unique */
        name = g_strdup_printf ("__ldfld_wrapper_%p_%s.%s", klass, klass->name_space, klass->name); 
        mb = mono_mb_new (mono_defaults.object_class, name, MONO_WRAPPER_LDFLD);
@@ -1458,11 +1399,12 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
        mono_mb_emit_ldarg (mb, 0);
        pos0 = mono_mb_emit_proxy_check (mb, CEE_BNE_UN);
 
+#ifndef DISABLE_REMOTING
        mono_mb_emit_ldarg (mb, 0);
        mono_mb_emit_ldarg (mb, 1);
        mono_mb_emit_ldarg (mb, 2);
 
-       mono_mb_emit_managed_call (mb, mono_marshal_get_ldfld_remote_wrapper (klass), NULL);
+       mono_mb_emit_managed_call (mb, tp_load, NULL);
 
        /*
        csig = mono_metadata_signature_alloc (mono_defaults.corlib, 3);
@@ -1482,6 +1424,7 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
        } else {
                mono_mb_emit_byte (mb, CEE_RET);
        }
+#endif
 
        mono_mb_patch_branch (mb, pos0);
 
index 303f8ea837210f8f843a03b321da1a82bfd469dc..17719009759d0ca97f2879c7baac6de2c61f7b47 100644 (file)
@@ -48,8 +48,9 @@ mono_gc_register_bridge_callbacks (MonoGCBridgeCallbacks *callbacks)
 
        bridge_callbacks = *callbacks;
 
+       // If callbacks are still uninitialized, initialize defaults
        if (!bridge_processor.reset_data)
-               sgen_new_bridge_init (&bridge_processor);
+               sgen_tarjan_bridge_init (&bridge_processor);
 }
 
 static gboolean
index bccc7d8aad53fa1b91dfb139a10df911b6132c13..5fd9fcbe4d1059e7f96a5ed91f8b80e894ef0a08 100644 (file)
@@ -1145,14 +1145,6 @@ create_allocator (int atype, ManagedAllocatorVariant variant)
 
        EMIT_TLS_ACCESS_VAR (mb, thread_var);
 
-#ifdef MANAGED_ALLOCATOR_CAN_USE_CRITICAL_REGION
-       EMIT_TLS_ACCESS_IN_CRITICAL_REGION_ADDR (mb, thread_var);
-       mono_mb_emit_byte (mb, CEE_LDC_I4_1);
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_ATOMIC_STORE_I4);
-       mono_mb_emit_i4 (mb, MONO_MEMORY_BARRIER_NONE);
-#endif
-
        size_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
        if (atype == ATYPE_SMALL) {
                /* size_var = size_arg */
@@ -1279,6 +1271,14 @@ create_allocator (int atype, ManagedAllocatorVariant variant)
                g_assert_not_reached ();
        }
 
+#ifdef MANAGED_ALLOCATOR_CAN_USE_CRITICAL_REGION
+       EMIT_TLS_ACCESS_IN_CRITICAL_REGION_ADDR (mb, thread_var);
+       mono_mb_emit_byte (mb, CEE_LDC_I4_1);
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_ATOMIC_STORE_I4);
+       mono_mb_emit_i4 (mb, MONO_MEMORY_BARRIER_NONE);
+#endif
+
        /* size += ALLOC_ALIGN - 1; */
        mono_mb_emit_ldloc (mb, size_var);
        mono_mb_emit_icon (mb, SGEN_ALLOC_ALIGN - 1);
index 72ca453eb88436fc1b4c71764ef571566c8abe66..909113cae8e97077451a2dedf70dea6fbf87b99f 100644 (file)
@@ -17,7 +17,6 @@ WRAPPER(XDOMAIN_INVOKE, "xdomain-invoke")
 WRAPPER(XDOMAIN_DISPATCH, "xdomain-dispatch")
 WRAPPER(LDFLD, "ldfld")
 WRAPPER(STFLD, "stfld")
-WRAPPER(LDFLD_REMOTE, "ldfld-remote")
 WRAPPER(STFLD_REMOTE, "stfld-remote")
 WRAPPER(SYNCHRONIZED, "synchronized")
 WRAPPER(DYNAMIC_METHOD, "dynamic-method")
index f40070aeb38b9f2212c5f674aa1f346923938158..ebab8ae4b25519a818acf6fc04a10b53de9004c8 100644 (file)
@@ -226,7 +226,7 @@ handle_instruction:
                                        }
                                }
                                break;
-
+                       //FIXME missing storei1_membase_imm and storei2_membase_imm
                        case OP_STORE_MEMBASE_IMM:
                        case OP_STOREI4_MEMBASE_IMM:
                        case OP_STOREI8_MEMBASE_IMM:
index b08afe7504316ae74cd361e399026d319dea174c..1023abcd24b7e671292956637232d53f4d7426b5 100644 (file)
@@ -3100,7 +3100,6 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                        encode_klass_ref (acfg, info->d.proxy.klass, p, &p);
                        break;
                }
-               case MONO_WRAPPER_LDFLD_REMOTE:
                case MONO_WRAPPER_STFLD_REMOTE:
                        break;
                case MONO_WRAPPER_ALLOC: {
@@ -4058,7 +4057,7 @@ add_wrappers (MonoAotCompile *acfg)
                        continue;
                }
 
-               if (!acfg->aot_opts.llvm_only && klass->rank && MONO_TYPE_IS_PRIMITIVE (&klass->element_class->byval_arg)) {
+               if (klass->rank && MONO_TYPE_IS_PRIMITIVE (&klass->element_class->byval_arg)) {
                        MonoMethod *m, *wrapper;
 
                        /* Add runtime-invoke wrappers too */
@@ -4067,13 +4066,15 @@ add_wrappers (MonoAotCompile *acfg)
                        g_assert (m);
                        wrapper = mono_marshal_get_array_accessor_wrapper (m);
                        add_extra_method (acfg, wrapper);
-                       add_extra_method (acfg, get_runtime_invoke (acfg, wrapper, FALSE));
+                       if (!acfg->aot_opts.llvm_only)
+                               add_extra_method (acfg, get_runtime_invoke (acfg, wrapper, FALSE));
 
                        m = mono_class_get_method_from_name (klass, "Set", -1);
                        g_assert (m);
                        wrapper = mono_marshal_get_array_accessor_wrapper (m);
                        add_extra_method (acfg, wrapper);
-                       add_extra_method (acfg, get_runtime_invoke (acfg, wrapper, FALSE));
+                       if (!acfg->aot_opts.llvm_only)
+                               add_extra_method (acfg, get_runtime_invoke (acfg, wrapper, FALSE));
                }
        }
 
@@ -4943,7 +4944,7 @@ add_generic_instances (MonoAotCompile *acfg)
                }
 
                /* object[] accessor wrappers. */
-               for (i = 1; i < 3; ++i) {
+               for (i = 1; i < 4; ++i) {
                        MonoClass *obj_array_class = mono_array_class_get (mono_defaults.object_class, i);
                        MonoMethod *m;
 
@@ -7183,7 +7184,6 @@ can_encode_method (MonoAotCompile *acfg, MonoMethod *method)
                        case MONO_WRAPPER_STFLD:
                        case MONO_WRAPPER_LDFLD:
                        case MONO_WRAPPER_LDFLDA:
-                       case MONO_WRAPPER_LDFLD_REMOTE:
                        case MONO_WRAPPER_STFLD_REMOTE:
                        case MONO_WRAPPER_STELEMREF:
                        case MONO_WRAPPER_ISINST:
index b6412142493df2e7f8953bd9f42c7cd8d23ea246..5aa2ca6d88adbd0f277161acc20065472074ea20 100644 (file)
@@ -922,9 +922,6 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                        }
                        break;
                }
-               case MONO_WRAPPER_LDFLD_REMOTE:
-                       ref->method = mono_marshal_get_ldfld_remote_wrapper (NULL);
-                       break;
                case MONO_WRAPPER_STFLD_REMOTE:
                        ref->method = mono_marshal_get_stfld_remote_wrapper (NULL);
                        break;
index ece1fddf5e8044e456386d65d6d0ed7c212d1d0e..c03b1408e01f9b4e9638fc6a65f447eb72d425ac 100644 (file)
@@ -5325,7 +5325,8 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                                                found_sp = mono_find_next_seq_point_for_native_offset (frame->domain, frame->method, (char*)ei->handler_start - (char*)jinfo->code_start, NULL, &local_sp);
                                                sp = (found_sp)? &local_sp : NULL;
 
-                                               ss_bp_add_one (ss_req, &ss_req_bp_count, &ss_req_bp_cache, frame->method, sp->il_offset);
+                                               if (found_sp)
+                                                       ss_bp_add_one (ss_req, &ss_req_bp_count, &ss_req_bp_cache, frame->method, sp->il_offset);
                                        }
                                }
                        }
index 7fef6b85cb9741b955d701ae1082822fea5cca66..78e94917a52a59e9a71b4cccc18996b6dfbb2961 100644 (file)
@@ -34,6 +34,8 @@
 #include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h"
 #include "llvm/ExecutionEngine/Orc/OrcArchitectureSupport.h"
 
+#include <cstdlib>
+
 extern "C" {
 #include <mono/utils/mono-dl.h>
 }
@@ -64,6 +66,58 @@ void bzero (void *to, size_t count) { memset (to, 0, count); }
 
 #endif
 
+static AllocCodeMemoryCb *alloc_code_mem_cb;
+
+class MonoJitMemoryManager : public RTDyldMemoryManager
+{
+public:
+       ~MonoJitMemoryManager() override;
+
+       uint8_t *allocateDataSection(uintptr_t Size,
+                                                                unsigned Alignment,
+                                                                unsigned SectionID,
+                                                                StringRef SectionName,
+                                                                bool IsReadOnly) override;
+
+       uint8_t *allocateCodeSection(uintptr_t Size,
+                                                                unsigned Alignment,
+                                                                unsigned SectionID,
+                                                                StringRef SectionName) override;
+
+       bool finalizeMemory(std::string *ErrMsg = nullptr) override;
+};
+
+MonoJitMemoryManager::~MonoJitMemoryManager()
+{
+}
+
+uint8_t *
+MonoJitMemoryManager::allocateDataSection(uintptr_t Size,
+                                                                                 unsigned Alignment,
+                                                                                 unsigned SectionID,
+                                                                                 StringRef SectionName,
+                                                                                 bool IsReadOnly) {
+       uint8_t *res = (uint8_t*)malloc (Size);
+       assert (res);
+       memset (res, 0, Size);
+       return res;
+}
+
+uint8_t *
+MonoJitMemoryManager::allocateCodeSection(uintptr_t Size,
+                                                                                 unsigned Alignment,
+                                                                                 unsigned SectionID,
+                                                                                 StringRef SectionName)
+{
+       return alloc_code_mem_cb (NULL, Size);
+}
+
+bool
+MonoJitMemoryManager::finalizeMemory(std::string *ErrMsg)
+{
+       return false;
+}
+
 class MonoLLVMJIT {
 public:
        /* We use our own trampoline infrastructure instead of the Orc one */
@@ -105,7 +159,7 @@ public:
                                          } );
 
                return CompileLayer.addModuleSet(singletonSet(M),
-                                                                                 make_unique<SectionMemoryManager>(),
+                                                                                 make_unique<MonoJitMemoryManager>(),
                                                                                  std::move(Resolver));
        }
 
@@ -166,6 +220,8 @@ static MonoLLVMJIT *jit;
 MonoEERef
 mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb, LLVMExecutionEngineRef *ee)
 {
+       alloc_code_mem_cb = alloc_cb;
+
        InitializeNativeTarget ();
        InitializeNativeTargetAsmPrinter();
 
index 3476585c10751c5d1e3f42fda8cb3990e1f7af3c..78273ea20ded7003986b6263cec58c7ca4ab481d 100644 (file)
@@ -661,6 +661,24 @@ mono_find_block_region (MonoCompile *cfg, int offset)
        return -1;
 }
 
+static gboolean
+ip_in_finally_clause (MonoCompile *cfg, int offset)
+{
+       MonoMethodHeader *header = cfg->header;
+       MonoExceptionClause *clause;
+       int i;
+
+       for (i = 0; i < header->num_clauses; ++i) {
+               clause = &header->clauses [i];
+               if (clause->flags != MONO_EXCEPTION_CLAUSE_FINALLY && clause->flags != MONO_EXCEPTION_CLAUSE_FAULT)
+                       continue;
+
+               if (MONO_OFFSET_IN_HANDLER (clause, offset))
+                       return TRUE;
+       }
+       return FALSE;
+}
+
 static GList*
 mono_find_final_block (MonoCompile *cfg, unsigned char *ip, unsigned char *target, int type)
 {
@@ -2197,7 +2215,6 @@ target_type_is_incompatible (MonoCompile *cfg, MonoType *target, MonoInst *arg)
        if (target->byref) {
                /* FIXME: check that the pointed to types match */
                if (arg->type == STACK_MP) {
-                       if (cfg->verbose_level) printf ("ok\n");
                        /* This is needed to handle gshared types + ldaddr. We lower the types so we can handle enums and other typedef-like types. */
                        MonoClass *target_class_lowered = mono_class_from_mono_type (mini_get_underlying_type (&mono_class_from_mono_type (target)->byval_arg));
                        MonoClass *source_class_lowered = mono_class_from_mono_type (mini_get_underlying_type (&arg->klass->byval_arg));
@@ -4034,7 +4051,8 @@ handle_unbox_nullable (MonoCompile* cfg, MonoInst* val, MonoClass* klass, int co
                   RGCTX. */
                addr = emit_get_rgctx_method (cfg, context_used, method,
                                                                          MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
-               if (cfg->llvm_only && cfg->gsharedvt) {
+               if (cfg->llvm_only) {
+                       cfg->signatures = g_slist_prepend_mempool (cfg->mempool, cfg->signatures, mono_method_signature (method));
                        return emit_llvmonly_calli (cfg, mono_method_signature (method), &val, addr);
                } else {
                        rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
@@ -9032,6 +9050,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                for (i = 0; i < n; ++i)
                                        EMIT_NEW_ARGLOAD (cfg, call->args [i], i);
 
+                               if (mini_type_is_vtype (mini_get_underlying_type (call->signature->ret)))
+                                       call->vret_var = cfg->vret_addr;
+
                                mono_arch_emit_call (cfg, call);
                                cfg->param_area = MAX(cfg->param_area, call->stack_usage);
                                MONO_ADD_INS (cfg->cbb, (MonoInst*)call);
@@ -12268,6 +12289,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                INLINE_FAILURE ("throw");
                        break;
                case CEE_ENDFINALLY:
+                       if (!ip_in_finally_clause (cfg, ip - header->code))
+                               UNVERIFIED;
                        /* mono_save_seq_point_info () depends on this */
                        if (sp != stack_start)
                                emit_seq_point (cfg, method, ip, FALSE, FALSE);
@@ -13228,8 +13251,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ip += 4;
                                inline_costs += 1;
                                break;
-                       case CEE_LOCALLOC:
+                       case CEE_LOCALLOC: {
                                CHECK_STACK (1);
+                               MonoBasicBlock *non_zero_bb, *end_bb;
+                               int alloc_ptr = alloc_preg (cfg);
                                --sp;
                                if (sp != stack_start) 
                                        UNVERIFIED;
@@ -13241,8 +13266,20 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                         */
                                        INLINE_FAILURE("localloc");
 
+                               NEW_BBLOCK (cfg, non_zero_bb);
+                               NEW_BBLOCK (cfg, end_bb);
+
+                               /* if size != zero */
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, sp [0]->dreg, 0);
+                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBNE_UN, non_zero_bb);
+
+                               //size is zero, so result is NULL
+                               MONO_EMIT_NEW_PCONST (cfg, alloc_ptr, NULL);
+                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+                               MONO_START_BB (cfg, non_zero_bb);
                                MONO_INST_NEW (cfg, ins, OP_LOCALLOC);
-                               ins->dreg = alloc_preg (cfg);
+                               ins->dreg = alloc_ptr;
                                ins->sreg1 = sp [0]->dreg;
                                ins->type = STACK_PTR;
                                MONO_ADD_INS (cfg->cbb, ins);
@@ -13251,9 +13288,14 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (init_locals)
                                        ins->flags |= MONO_INST_INIT;
 
+                               MONO_START_BB (cfg, end_bb);
+                               EMIT_NEW_UNALU (cfg, ins, OP_MOVE, alloc_preg (cfg), alloc_ptr);
+                               ins->type = STACK_PTR;
+
                                *sp++ = ins;
                                ip += 2;
                                break;
+                       }
                        case CEE_ENDFILTER: {
                                MonoExceptionClause *clause, *nearest;
                                int cc;
index 073a818a514887e4c0504042296b43a31c40d4bc..054aa4017ae78ffbf5b3b7400b9254546a863770 100644 (file)
@@ -6708,7 +6708,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 #if defined(TARGET_WIN32) || defined(MONO_ARCH_SIGSEGV_ON_ALTSTACK)
                guint32 remaining_size = alloc_size;
                /*FIXME handle unbounded code expansion, we should use a loop in case of more than X interactions*/
-               guint32 required_code_size = ((remaining_size / 0x1000) + 1) * 10; /*10 is the max size of amd64_alu_reg_imm + amd64_test_membase_reg*/
+               guint32 required_code_size = ((remaining_size / 0x1000) + 1) * 11; /*11 is the max size of amd64_alu_reg_imm + amd64_test_membase_reg*/
                guint32 offset = code - cfg->native_code;
                if (G_UNLIKELY (required_code_size >= (cfg->code_size - offset))) {
                        while (required_code_size >= (cfg->code_size - offset))
index 11fc30a435f28b08366bd6cae009fe21602147d4..fb65862bbc19b15285cb7a10c20392c86a287b9a 100644 (file)
@@ -269,7 +269,7 @@ typedef struct {
        int nregs;
        /* Only if storage == ArgOnStack */
        int arg_size; // Bytes, will always be rounded up/aligned to 8 byte boundary
-       gboolean pass_empty_struct; // Set in scenarios when empty structs needs to be represented as argument.
+       guint8 pass_empty_struct : 1; // Set in scenarios when empty structs needs to be represented as argument.
 } ArgInfo;
 
 typedef struct {
index b64f4e24e1711001f7198928b5ac0ea442c78a22..0094c976487fa062220d33ac1a8ea15534e1bd3d 100644 (file)
@@ -2930,6 +2930,7 @@ throw_exception (MonoObject *ex, gboolean rethrow)
                mono_error_assert_ok (&error);
                mono_ex = mono_get_exception_runtime_wrapped_checked (ex, &error);
                mono_error_assert_ok (&error);
+               jit_tls->thrown_non_exc = mono_gchandle_new (ex, FALSE);
        }
        else
                mono_ex = (MonoException*)ex;
@@ -3009,7 +3010,7 @@ mono_llvm_resume_exception (void)
 MonoObject *
 mono_llvm_load_exception (void)
 {
-               MonoError error;
+       MonoError error;
        MonoJitTlsData *jit_tls = mono_get_jit_tls ();
 
        MonoException *mono_ex = (MonoException*)mono_gchandle_get_target (jit_tls->thrown_exc);
@@ -3061,6 +3062,9 @@ mono_llvm_clear_exception (void)
        MonoJitTlsData *jit_tls = mono_get_jit_tls ();
        mono_gchandle_free (jit_tls->thrown_exc);
        jit_tls->thrown_exc = 0;
+       if (jit_tls->thrown_non_exc)
+               mono_gchandle_free (jit_tls->thrown_non_exc);
+       jit_tls->thrown_non_exc = 0;
 
        mono_memory_barrier ();
 }
@@ -3074,13 +3078,22 @@ mono_llvm_clear_exception (void)
 gint32
 mono_llvm_match_exception (MonoJitInfo *jinfo, guint32 region_start, guint32 region_end, gpointer rgctx, MonoObject *this_obj)
 {
-                       MonoError error;
+       MonoError error;
        MonoJitTlsData *jit_tls = mono_get_jit_tls ();
        MonoObject *exc;
        gint32 index = -1;
 
        g_assert (jit_tls->thrown_exc);
        exc = mono_gchandle_get_target (jit_tls->thrown_exc);
+       if (jit_tls->thrown_non_exc) {
+               /*
+                * Have to unwrap RuntimeWrappedExceptions if the
+                * method's assembly doesn't have a RuntimeCompatibilityAttribute.
+                */
+               if (!wrap_non_exception_throws (jinfo_get_method (jinfo)))
+                       exc = mono_gchandle_get_target (jit_tls->thrown_non_exc);
+       }
+
        for (int i = 0; i < jinfo->num_clauses; i++) {
                MonoJitExceptionInfo *ei = &jinfo->clauses [i];
                MonoClass *catch_class;
@@ -3089,7 +3102,7 @@ mono_llvm_match_exception (MonoJitInfo *jinfo, guint32 region_start, guint32 reg
                        continue;
 
                catch_class = ei->data.catch_class;
-               if (catch_class->byval_arg.type == MONO_TYPE_VAR || catch_class->byval_arg.type == MONO_TYPE_MVAR || catch_class->byval_arg.type == MONO_TYPE_GENERICINST) {
+               if (mono_class_is_open_constructed_type (&catch_class->byval_arg)) {
                        MonoGenericContext context;
                        MonoType *inflated_type;
 
index e3219686ae2cf5beb7eb8ea5adb7fc9987e51d86..425eea95ed81854b1d84e0637c7a0929dc3dbbc7 100644 (file)
@@ -54,10 +54,20 @@ mono_llvm_build_alloca (LLVMBuilderRef builder, LLVMTypeRef Ty,
 
 LLVMValueRef 
 mono_llvm_build_load (LLVMBuilderRef builder, LLVMValueRef PointerVal,
-                                         const char *Name, gboolean is_volatile, BarrierKind barrier)
+                                         const char *Name, gboolean is_volatile)
 {
        LoadInst *ins = unwrap(builder)->CreateLoad(unwrap(PointerVal), is_volatile, Name);
 
+       return wrap(ins);
+}
+
+LLVMValueRef
+mono_llvm_build_atomic_load (LLVMBuilderRef builder, LLVMValueRef PointerVal,
+                                                        const char *Name, gboolean is_volatile, int alignment, BarrierKind barrier)
+{
+       LoadInst *ins = unwrap(builder)->CreateLoad(unwrap(PointerVal), is_volatile, Name);
+
+       ins->setAlignment (alignment);
        switch (barrier) {
        case LLVM_BARRIER_NONE:
                break;
index 06858713f4eaa99ab63cacd0d6449007fb203876..064c587ce54d5773cf59881f420947ea1d302d81 100644 (file)
@@ -44,9 +44,13 @@ mono_llvm_build_alloca (LLVMBuilderRef builder, LLVMTypeRef Ty,
 
 LLVMValueRef 
 mono_llvm_build_load (LLVMBuilderRef builder, LLVMValueRef PointerVal,
-                                         const char *Name, gboolean is_volatile, BarrierKind barrier);
+                                         const char *Name, gboolean is_volatile);
 
 LLVMValueRef 
+mono_llvm_build_atomic_load (LLVMBuilderRef builder, LLVMValueRef PointerVal,
+                                                        const char *Name, gboolean is_volatile, int alignment, BarrierKind barrier);
+
+LLVMValueRef
 mono_llvm_build_aligned_load (LLVMBuilderRef builder, LLVMValueRef PointerVal,
                                                          const char *Name, gboolean is_volatile, int alignment);
 
index 79f2dbcad50b7dd51bf49528ccddfad2c99b3aa3..c385f625a293275f8184dd19eb7faabcde31894b 100644 (file)
@@ -72,6 +72,7 @@ typedef struct {
        gboolean external_symbols;
        gboolean emit_dwarf;
        int max_got_offset;
+       LLVMValueRef personality;
 
        /* For AOT */
        MonoAssembly *assembly;
@@ -1873,7 +1874,7 @@ emit_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, LL
 }
 
 static LLVMValueRef
-emit_load_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef addr, const char *name, gboolean is_faulting, BarrierKind barrier)
+emit_load_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef addr, LLVMValueRef base, const char *name, gboolean is_faulting, BarrierKind barrier)
 {
        const char *intrins_name;
        LLVMValueRef args [16], res;
@@ -1883,7 +1884,9 @@ emit_load_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder
 #if LLVM_API_VERSION > 100
        if (is_faulting && bb->region != -1 && !ctx->cfg->llvm_only) {
                /* The llvm.mono.load/store intrinsics are not supported by this llvm version, emit an explicit null check instead */
-               LLVMValueRef cmp = LLVMBuildICmp (*builder_ref, LLVMIntEQ, addr, LLVMConstNull (LLVMTypeOf (addr)), "");
+               LLVMValueRef cmp;
+
+               cmp = LLVMBuildICmp (*builder_ref, LLVMIntEQ, base, LLVMConstNull (LLVMTypeOf (base)), "");
                emit_cond_system_exception (ctx, bb, "NullReferenceException", cmp);
                *builder_ref = ctx->builder;
                use_intrinsics = FALSE;
@@ -1955,26 +1958,29 @@ emit_load_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder
                 * LLVM will generate invalid code when encountering a load from a
                 * NULL address.
                 */
-                res = mono_llvm_build_load (*builder_ref, addr, name, is_faulting, barrier);
+               if (barrier != LLVM_BARRIER_NONE)
+                       res = mono_llvm_build_atomic_load (*builder_ref, addr, name, is_faulting, size, barrier);
+               else
+                       res = mono_llvm_build_load (*builder_ref, addr, name, is_faulting);
 
-                /* Mark it with a custom metadata */
-                /*
-                if (is_faulting)
-                        set_metadata_flag (res, "mono.faulting.load");
-                */
+               /* Mark it with a custom metadata */
+               /*
+                 if (is_faulting)
+                 set_metadata_flag (res, "mono.faulting.load");
+               */
 
-                return res;
+               return res;
        }
 }
 
 static LLVMValueRef
 emit_load (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef addr, const char *name, gboolean is_faulting)
 {
-       return emit_load_general (ctx, bb, builder_ref, size, addr, name, is_faulting, LLVM_BARRIER_NONE);
+       return emit_load_general (ctx, bb, builder_ref, size, addr, addr, name, is_faulting, LLVM_BARRIER_NONE);
 }
 
 static void
-emit_store_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef value, LLVMValueRef addr, gboolean is_faulting, BarrierKind barrier)
+emit_store_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef value, LLVMValueRef addr, LLVMValueRef base, gboolean is_faulting, BarrierKind barrier)
 {
        const char *intrins_name;
        LLVMValueRef args [16];
@@ -1983,7 +1989,7 @@ emit_store_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builde
 #if LLVM_API_VERSION > 100
        if (is_faulting && bb->region != -1 && !ctx->cfg->llvm_only) {
                /* The llvm.mono.load/store intrinsics are not supported by this llvm version, emit an explicit null check instead */
-               LLVMValueRef cmp = LLVMBuildICmp (*builder_ref, LLVMIntEQ, addr, LLVMConstNull (LLVMTypeOf (addr)), "");
+               LLVMValueRef cmp = LLVMBuildICmp (*builder_ref, LLVMIntEQ, base, LLVMConstNull (LLVMTypeOf (base)), "");
                emit_cond_system_exception (ctx, bb, "NullReferenceException", cmp);
                *builder_ref = ctx->builder;
                use_intrinsics = FALSE;
@@ -2045,9 +2051,9 @@ emit_store_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builde
 }
 
 static void
-emit_store (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef value, LLVMValueRef addr, gboolean is_faulting)
+emit_store (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, int size, LLVMValueRef value, LLVMValueRef addr, LLVMValueRef base, gboolean is_faulting)
 {
-       emit_store_general (ctx, bb, builder_ref, size, value, addr, is_faulting, LLVM_BARRIER_NONE);
+       emit_store_general (ctx, bb, builder_ref, size, value, addr, base, is_faulting, LLVM_BARRIER_NONE);
 }
 
 /*
@@ -3361,7 +3367,7 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                if (!ctx->imt_rgctx_loc)
                        ctx->imt_rgctx_loc = build_alloca_llvm_type (ctx, ctx->module->ptr_type, sizeof (gpointer));
                LLVMBuildStore (builder, convert (ctx, ctx->values [call->rgctx_arg_reg], ctx->module->ptr_type), ctx->imt_rgctx_loc);
-               args [cinfo->rgctx_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE, LLVM_BARRIER_NONE);
+               args [cinfo->rgctx_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE);
 #else
                args [cinfo->rgctx_arg_pindex] = convert (ctx, values [call->rgctx_arg_reg], ctx->module->ptr_type);
 #endif
@@ -3374,7 +3380,7 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                if (!ctx->imt_rgctx_loc)
                        ctx->imt_rgctx_loc = build_alloca_llvm_type (ctx, ctx->module->ptr_type, sizeof (gpointer));
                LLVMBuildStore (builder, convert (ctx, ctx->values [call->imt_arg_reg], ctx->module->ptr_type), ctx->imt_rgctx_loc);
-               args [cinfo->imt_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE, LLVM_BARRIER_NONE);
+               args [cinfo->imt_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE);
 #else
                args [cinfo->imt_arg_pindex] = convert (ctx, values [call->imt_arg_reg], ctx->module->ptr_type);
 #endif
@@ -3970,13 +3976,17 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
                g_assert (personality);
        } else {
 #if LLVM_API_VERSION > 100
-               LLVMTypeRef personality_type = LLVMFunctionType (LLVMInt32Type (), NULL, 0, TRUE);
-               personality = LLVMAddFunction (ctx->lmodule, "mono_personality", personality_type);
-               LLVMAddFunctionAttr (personality, LLVMNoUnwindAttribute);
-               LLVMBasicBlockRef entry_bb = LLVMAppendBasicBlock (personality, "ENTRY");
-               LLVMBuilderRef builder2 = LLVMCreateBuilder ();
-               LLVMPositionBuilderAtEnd (builder2, entry_bb);
-               LLVMBuildRet (builder2, LLVMConstInt (LLVMInt32Type (), 0, FALSE));
+               personality = ctx->module->personality;
+               if (!personality) {
+                       LLVMTypeRef personality_type = LLVMFunctionType (LLVMInt32Type (), NULL, 0, TRUE);
+                       personality = LLVMAddFunction (ctx->lmodule, "mono_personality", personality_type);
+                       LLVMAddFunctionAttr (personality, LLVMNoUnwindAttribute);
+                       LLVMBasicBlockRef entry_bb = LLVMAppendBasicBlock (personality, "ENTRY");
+                       LLVMBuilderRef builder2 = LLVMCreateBuilder ();
+                       LLVMPositionBuilderAtEnd (builder2, entry_bb);
+                       LLVMBuildRet (builder2, LLVMConstInt (LLVMInt32Type (), 0, FALSE));
+                       ctx->module->personality = personality;
+               }
 #else
                static gint32 mapping_inited;
 
@@ -5098,6 +5108,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        if ((ins->opcode == OP_LOADI8_MEM) || (ins->opcode == OP_LOAD_MEM) || (ins->opcode == OP_LOADI4_MEM) || (ins->opcode == OP_LOADU4_MEM) || (ins->opcode == OP_LOADU1_MEM) || (ins->opcode == OP_LOADU2_MEM)) {
                                addr = LLVMConstInt (IntPtrType (), ins->inst_imm, FALSE);
+                               base = addr;
                        } else {
                                /* _MEMBASE */
                                base = lhs;
@@ -5116,7 +5127,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        addr = convert (ctx, addr, LLVMPointerType (t, 0));
 
-                       values [ins->dreg] = emit_load (ctx, bb, &builder, size, addr, dname, is_volatile);
+                       values [ins->dreg] = emit_load_general (ctx, bb, &builder, size, addr, base, dname, is_volatile, LLVM_BARRIER_NONE);
 
                        if (!is_volatile && (ins->flags & MONO_INST_INVARIANT_LOAD)) {
                                /*
@@ -5146,7 +5157,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_STORER8_MEMBASE_REG:
                case OP_STORE_MEMBASE_REG: {
                        int size = 8;
-                       LLVMValueRef index, addr;
+                       LLVMValueRef index, addr, base;
                        LLVMTypeRef t;
                        gboolean sext = FALSE, zext = FALSE;
                        gboolean is_volatile = (ins->flags & MONO_INST_FAULT);
@@ -5158,15 +5169,16 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        t = load_store_to_llvm_type (ins->opcode, &size, &sext, &zext);
 
+                       base = values [ins->inst_destbasereg];
                        if (ins->inst_offset % size != 0) {
                                /* Unaligned store */
                                index = LLVMConstInt (LLVMInt32Type (), ins->inst_offset, FALSE);
-                               addr = LLVMBuildGEP (builder, convert (ctx, values [ins->inst_destbasereg], LLVMPointerType (LLVMInt8Type (), 0)), &index, 1, "");
+                               addr = LLVMBuildGEP (builder, convert (ctx, base, LLVMPointerType (LLVMInt8Type (), 0)), &index, 1, "");
                        } else {
                                index = LLVMConstInt (LLVMInt32Type (), ins->inst_offset / size, FALSE);                                
-                               addr = LLVMBuildGEP (builder, convert (ctx, values [ins->inst_destbasereg], LLVMPointerType (t, 0)), &index, 1, "");
+                               addr = LLVMBuildGEP (builder, convert (ctx, base, LLVMPointerType (t, 0)), &index, 1, "");
                        }
-                       emit_store (ctx, bb, &builder, size, convert (ctx, values [ins->sreg1], t), convert (ctx, addr, LLVMPointerType (t, 0)), is_volatile);
+                       emit_store (ctx, bb, &builder, size, convert (ctx, values [ins->sreg1], t), convert (ctx, addr, LLVMPointerType (t, 0)), base, is_volatile);
                        break;
                }
 
@@ -5176,27 +5188,28 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_STOREI8_MEMBASE_IMM:
                case OP_STORE_MEMBASE_IMM: {
                        int size = 8;
-                       LLVMValueRef index, addr;
+                       LLVMValueRef index, addr, base;
                        LLVMTypeRef t;
                        gboolean sext = FALSE, zext = FALSE;
                        gboolean is_volatile = (ins->flags & MONO_INST_FAULT);
 
                        t = load_store_to_llvm_type (ins->opcode, &size, &sext, &zext);
 
+                       base = values [ins->inst_destbasereg];
                        if (ins->inst_offset % size != 0) {
                                /* Unaligned store */
                                index = LLVMConstInt (LLVMInt32Type (), ins->inst_offset, FALSE);
-                               addr = LLVMBuildGEP (builder, convert (ctx, values [ins->inst_destbasereg], LLVMPointerType (LLVMInt8Type (), 0)), &index, 1, "");
+                               addr = LLVMBuildGEP (builder, convert (ctx, base, LLVMPointerType (LLVMInt8Type (), 0)), &index, 1, "");
                        } else {
                                index = LLVMConstInt (LLVMInt32Type (), ins->inst_offset / size, FALSE);                                
-                               addr = LLVMBuildGEP (builder, convert (ctx, values [ins->inst_destbasereg], LLVMPointerType (t, 0)), &index, 1, "");
+                               addr = LLVMBuildGEP (builder, convert (ctx, base, LLVMPointerType (t, 0)), &index, 1, "");
                        }
-                       emit_store (ctx, bb, &builder, size, convert (ctx, LLVMConstInt (IntPtrType (), ins->inst_imm, FALSE), t), convert (ctx, addr, LLVMPointerType (t, 0)), is_volatile);
+                       emit_store (ctx, bb, &builder, size, convert (ctx, LLVMConstInt (IntPtrType (), ins->inst_imm, FALSE), t), convert (ctx, addr, LLVMPointerType (t, 0)), base, is_volatile);
                        break;
                }
 
                case OP_CHECK_THIS:
-                       emit_load (ctx, bb, &builder, sizeof (gpointer), convert (ctx, lhs, LLVMPointerType (IntPtrType (), 0)), "", TRUE);
+                       emit_load_general (ctx, bb, &builder, sizeof (gpointer), convert (ctx, lhs, LLVMPointerType (IntPtrType (), 0)), lhs, "", TRUE, LLVM_BARRIER_NONE);
                        break;
                case OP_OUTARG_VTRETADDR:
                        break;
@@ -5439,9 +5452,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_ATOMIC_LOAD_U8:
                case OP_ATOMIC_LOAD_R4:
                case OP_ATOMIC_LOAD_R8: {
-                       set_failure (ctx, "atomic mono.load intrinsic");
-                       break;
-#if 0
+#if LLVM_API_VERSION > 100
                        int size;
                        gboolean sext, zext;
                        LLVMTypeRef t;
@@ -5463,13 +5474,16 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        addr = convert (ctx, addr, LLVMPointerType (t, 0));
 
-                       values [ins->dreg] = emit_load_general (ctx, bb, &builder, size, addr, dname, is_volatile, barrier);
+                       values [ins->dreg] = emit_load_general (ctx, bb, &builder, size, addr, lhs, dname, is_volatile, barrier);
 
                        if (sext)
                                values [ins->dreg] = LLVMBuildSExt (builder, values [ins->dreg], LLVMInt32Type (), dname);
                        else if (zext)
                                values [ins->dreg] = LLVMBuildZExt (builder, values [ins->dreg], LLVMInt32Type (), dname);
                        break;
+#else
+                       set_failure (ctx, "atomic mono.load intrinsic");
+                       break;
 #endif
                }
                case OP_ATOMIC_STORE_I1:
@@ -5487,12 +5501,14 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        LLVMTypeRef t;
                        gboolean is_volatile = (ins->flags & MONO_INST_FAULT);
                        BarrierKind barrier = (BarrierKind) ins->backend.memory_barrier_kind;
-                       LLVMValueRef index, addr, value;
+                       LLVMValueRef index, addr, value, base;
 
+#if LLVM_API_VERSION < 100
                        if (!cfg->llvm_only) {
                                set_failure (ctx, "atomic mono.store intrinsic");
                                break;
                        }
+#endif
 
                        if (!values [ins->inst_destbasereg]) {
                            set_failure (ctx, "inst_destbasereg");
@@ -5501,11 +5517,12 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        t = load_store_to_llvm_type (ins->opcode, &size, &sext, &zext);
 
+                       base = values [ins->inst_destbasereg];
                        index = LLVMConstInt (LLVMInt32Type (), ins->inst_offset / size, FALSE);
-                       addr = LLVMBuildGEP (builder, convert (ctx, values [ins->inst_destbasereg], LLVMPointerType (t, 0)), &index, 1, "");
+                       addr = LLVMBuildGEP (builder, convert (ctx, base, LLVMPointerType (t, 0)), &index, 1, "");
                        value = convert (ctx, values [ins->sreg1], t);
 
-                       emit_store_general (ctx, bb, &builder, size, value, addr, is_volatile, barrier);
+                       emit_store_general (ctx, bb, &builder, size, value, addr, base, is_volatile, barrier);
                        break;
                }
                case OP_RELAXED_NOP: {
@@ -5542,7 +5559,11 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        break;
                }
                case OP_TLS_GET_REG: {
-#if defined(TARGET_AMD64) && defined(TARGET_OSX)
+#if defined(TARGET_AMD64) && defined(__linux__)
+                       // 257 == FS segment register
+                       LLVMTypeRef ptrtype = LLVMPointerType (IntPtrType (), 257);
+                       values [ins->dreg] = LLVMBuildLoad (builder, LLVMBuildIntToPtr (builder, convert (ctx, lhs, LLVMInt64Type ()), ptrtype, ""), "");
+#elif defined(TARGET_AMD64) && defined(TARGET_OSX)
                        /* See emit_tls_get_reg () */
                        // 256 == GS segment register
                        LLVMTypeRef ptrtype = LLVMPointerType (IntPtrType (), 256);
@@ -5580,7 +5601,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                         *   mono_threads_state_poll ();
                         * FIXME: Use a preserveall wrapper
                         */
-                       val = mono_llvm_build_load (builder, convert (ctx, lhs, LLVMPointerType (IntPtrType (), 0)), "", TRUE, LLVM_BARRIER_NONE);
+                       val = mono_llvm_build_load (builder, convert (ctx, lhs, LLVMPointerType (IntPtrType (), 0)), "", TRUE);
                        cmp = LLVMBuildICmp (builder, LLVMIntEQ, val, LLVMConstNull (LLVMTypeOf (val)), "");
                        poll_bb = gen_bb (ctx, "POLL_BB");
                        cont_bb = gen_bb (ctx, "CONT_BB");
@@ -6690,7 +6711,10 @@ mono_llvm_emit_method (MonoCompile *cfg)
        ctx->is_linkonce = is_linkonce;
 
 #if LLVM_API_VERSION > 100
-       ctx->lmodule = LLVMModuleCreateWithName ("jit-module");
+       if (cfg->compile_aot)
+               ctx->lmodule = ctx->module->lmodule;
+       else
+               ctx->lmodule = LLVMModuleCreateWithName ("jit-module");
 #else
        ctx->lmodule = ctx->module->lmodule;
 #endif
@@ -6863,6 +6887,7 @@ emit_method_inner (EmitContext *ctx)
        names = g_new (char *, sig->param_count);
        mono_method_get_param_names (cfg->method, (const char **) names);
 
+       /* Set parameter names/attributes */
        for (i = 0; i < sig->param_count; ++i) {
                LLVMArgInfo *ainfo = &linfo->args [i + sig->hasthis];
                char *name;
@@ -6875,6 +6900,9 @@ emit_method_inner (EmitContext *ctx)
                        g_free (name);
                }
 
+               if (ainfo->storage == LLVMArgVtypeInReg && ainfo->pair_storage [0] == LLVMArgNone && ainfo->pair_storage [1] == LLVMArgNone)
+                       continue;
+
                values [cfg->args [i + sig->hasthis]->dreg] = LLVMGetParam (method, pindex);
                if (ainfo->storage == LLVMArgGsharedvtFixed || ainfo->storage == LLVMArgGsharedvtFixedVtype) {
                        if (names [i] && names [i][0] != '\0')
@@ -7185,12 +7213,15 @@ emit_method_inner (EmitContext *ctx)
        if (cfg->compile_aot && !cfg->llvm_only)
                mark_as_used (ctx->module, method);
 
-       if (cfg->compile_aot && !cfg->llvm_only) {
+       if (!cfg->llvm_only) {
                LLVMValueRef md_args [16];
                LLVMValueRef md_node;
                int method_index;
 
-               method_index = mono_aot_get_method_index (cfg->orig_method);
+               if (cfg->compile_aot)
+                       method_index = mono_aot_get_method_index (cfg->orig_method);
+               else
+                       method_index = 1;
                md_args [0] = LLVMMDString (ctx->method_name, strlen (ctx->method_name));
                md_args [1] = LLVMConstInt (LLVMInt32Type (), method_index, FALSE);
                md_node = LLVMMDNode (md_args, 2);
@@ -7537,11 +7568,12 @@ decode_llvm_eh_info (EmitContext *ctx, gpointer eh_frame)
        p += 4;
        table = (gint32*)p;
 
-       g_assert (fde_count == 1);
+       g_assert (fde_count <= 2);
 
-       /* The only table entry */
+       /* The first entry is the real method */
+       g_assert (table [0] == 1);
        fde_offset = table [1];
-       table += 2;
+       table += fde_count * 2;
        /* Extra entry */
        cfg->code_len = table [0];
        fde_len = table [1] - fde_offset;
index 4baf5ab51950b4d9a3f3bb9b77156e2c0007b352..1bef455a1ee74fbc73b6cd8ee286a4e7aa0c92d0 100644 (file)
@@ -2158,7 +2158,10 @@ create_runtime_invoke_info (MonoDomain *domain, MonoMethod *method, gpointer com
 
        info = g_new0 (RuntimeInvokeInfo, 1);
        info->compiled_method = compiled_method;
-       info->sig = mono_method_signature (method);
+       if (mono_llvm_only && method->string_ctor)
+               info->sig = mono_marshal_get_string_ctor_signature (method);
+       else
+               info->sig = mono_method_signature (method);
 
        invoke = mono_marshal_get_runtime_invoke (method, FALSE);
        info->vtable = mono_class_vtable_full (domain, method->klass, error);
@@ -2166,7 +2169,7 @@ create_runtime_invoke_info (MonoDomain *domain, MonoMethod *method, gpointer com
                return NULL;
        g_assert (info->vtable);
 
-       MonoMethodSignature *sig = mono_method_signature (method);
+       MonoMethodSignature *sig = info->sig;
        MonoType *ret_type;
 
        /*
@@ -3761,7 +3764,6 @@ register_icalls (void)
        register_icall (mono_thread_interruption_checkpoint, "mono_thread_interruption_checkpoint", "object", FALSE);
        register_icall (mono_thread_force_interruption_checkpoint_noraise, "mono_thread_force_interruption_checkpoint_noraise", "object", FALSE);
 #ifndef DISABLE_REMOTING
-       register_icall (mono_load_remote_field_new_icall, "mono_load_remote_field_new_icall", "object object ptr ptr", FALSE);
        register_icall (mono_store_remote_field_new_icall, "mono_store_remote_field_new_icall", "void object ptr ptr object", FALSE);
 #endif
 
@@ -3941,8 +3943,8 @@ register_icalls (void)
        register_icall (mono_object_castclass_with_cache, "mono_object_castclass_with_cache", "object object ptr ptr", FALSE);
        register_icall (mono_object_isinst_with_cache, "mono_object_isinst_with_cache", "object object ptr ptr", FALSE);
        register_icall (mono_generic_class_init, "mono_generic_class_init", "void ptr", FALSE);
-       register_icall (mono_fill_class_rgctx, "mono_class_fill_rgctx", "ptr ptr int", FALSE);
-       register_icall (mono_fill_method_rgctx, "mono_method_fill_rgctx", "ptr ptr int", FALSE);
+       register_icall (mono_fill_class_rgctx, "mono_fill_class_rgctx", "ptr ptr int", FALSE);
+       register_icall (mono_fill_method_rgctx, "mono_fill_method_rgctx", "ptr ptr int", FALSE);
 
        register_icall (mono_debugger_agent_user_break, "mono_debugger_agent_user_break", "void", FALSE);
 
index 27820c19f9fa6c19c7af17e34955d16675120698..da6f70e82b331cd8bf57073534697ee4ea43444a 100644 (file)
@@ -799,7 +799,11 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVTable *
                                 */
                                no_patch = TRUE;
                        }
-
+#if LLVM_API_VERSION > 100
+                       /* LLVM code doesn't make direct calls */
+                       if (ji && ji->from_llvm)
+                               no_patch = TRUE;
+#endif
                        if (!no_patch && mono_method_same_domain (ji, target_ji))
                                mono_arch_patch_callsite ((guint8 *)ji->code_start, code, (guint8 *)addr);
                }
@@ -1511,7 +1515,7 @@ mono_create_jit_trampoline (MonoDomain *domain, MonoMethod *method, MonoError *e
                if (code)
                        return code;
                if (mono_llvm_only) {
-                       if (method->wrapper_type == MONO_WRAPPER_PROXY_ISINST || method->wrapper_type == MONO_WRAPPER_LDFLD_REMOTE ||
+                       if (method->wrapper_type == MONO_WRAPPER_PROXY_ISINST ||
                                method->wrapper_type == MONO_WRAPPER_STFLD_REMOTE)
                                /* These wrappers are not generated */
                                return method_not_found;
index badf12b33b3bf1d72f1466b48e8c8a0aeb517e88..8fc2c8b54236716d92170f1159820ade47d33718 100644 (file)
@@ -231,19 +231,49 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
        klass = mono_class_from_mono_type (type);
        size = mini_type_stack_size_full (&klass->byval_arg, NULL, sig->pinvoke);
 
+#if defined(TARGET_WIN32)
+       /*
+       * Standard C and C++ doesn't allow empty structs, empty structs will always have a size of 1 byte.
+       * GCC have an extension to allow empty structs, https://gcc.gnu.org/onlinedocs/gcc/Empty-Structures.html.
+       * This cause a little dilemma since runtime build using none GCC compiler will not be compatible with
+       * GCC build C libraries and the other way around. On platforms where empty structs has size of 1 byte
+       * it must be represented in call and cannot be dropped.
+       */
+       if (size == 0 && MONO_TYPE_ISSTRUCT (type) && sig->pinvoke) {
+               /* Empty structs (1 byte size) needs to be represented in a stack slot */
+               ainfo->pass_empty_struct = TRUE;
+               size = 1;
+       }
+#endif
+
 #ifdef SMALL_STRUCTS_IN_REGS
        if (sig->pinvoke && is_return) {
                MonoMarshalType *info;
 
-               /*
-                * the exact rules are not very well documented, the code below seems to work with the 
-                * code generated by gcc 3.3.3 -mno-cygwin.
-                */
                info = mono_marshal_load_type_info (klass);
                g_assert (info);
 
                ainfo->pair_storage [0] = ainfo->pair_storage [1] = ArgNone;
 
+               /* Ignore empty struct return value, if used. */
+               if (info->num_fields == 0 && ainfo->pass_empty_struct) {
+                       ainfo->storage = ArgValuetypeInReg;
+                       return;
+               }
+
+               /*
+               * Windows x86 ABI for returning structs of size 4 or 8 bytes (regardless of type) dictates that
+               * values are passed in EDX:EAX register pairs, https://msdn.microsoft.com/en-us/library/984x0h58.aspx.
+               * This is different compared to for example float or double return types (not in struct) that will be returned
+               * in ST(0), https://msdn.microsoft.com/en-us/library/ha59cbfz.aspx.
+               *
+               * Apples OSX x86 ABI for returning structs of size 4 or 8 bytes uses a slightly different approach.
+               * If a struct includes only one scalar value, it will be handled with the same rules as scalar values.
+               * This means that structs with one float or double will be returned in ST(0). For more details,
+               * https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html.
+               */
+#if !defined(TARGET_WIN32)
+
                /* Special case structs with only a float member */
                if (info->num_fields == 1) {
                        int ftype = mini_get_underlying_type (info->fields [0].field->type)->type;
@@ -258,6 +288,8 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                                return;
                        }
                }
+#endif
+
                if ((info->native_size == 1) || (info->native_size == 2) || (info->native_size == 4) || (info->native_size == 8)) {
                        ainfo->storage = ArgValuetypeInReg;
                        ainfo->pair_storage [0] = ArgInIReg;
@@ -292,7 +324,7 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
  * For x86 ELF, see the "System V Application Binary Interface Intel386 
  * Architecture Processor Supplment, Fourth Edition" document for more
  * information.
- * For x86 win32, see ???.
+ * For x86 win32, see https://msdn.microsoft.com/en-us/library/984x0h58.aspx.
  */
 static CallInfo*
 get_call_info_internal (CallInfo *cinfo, MonoMethodSignature *sig)
@@ -1355,7 +1387,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                sentinelpos = sig->sentinelpos + (sig->hasthis ? 1 : 0);
 
        if (sig_ret && MONO_TYPE_ISSTRUCT (sig_ret)) {
-               if (cinfo->ret.storage == ArgValuetypeInReg) {
+               if (cinfo->ret.storage == ArgValuetypeInReg && cinfo->ret.pair_storage[0] != ArgNone ) {
                        /*
                         * Tell the JIT to use a more efficient calling convention: call using
                         * OP_CALL, compute the result location after the call, and save the 
@@ -1437,7 +1469,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                                size = mini_type_stack_size_full (&in->klass->byval_arg, &align, sig->pinvoke);
                        }
 
-                       if (size > 0) {
+                       if (size > 0 || ainfo->pass_empty_struct) {
                                arg->opcode = OP_OUTARG_VT;
                                arg->sreg1 = in->dreg;
                                arg->klass = in->klass;
@@ -1568,7 +1600,12 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, src->dreg);
                } else if (size <= 4) {
                        int dreg = mono_alloc_ireg (cfg);
-                       MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, 0);
+                       if (ainfo->pass_empty_struct) {
+                               //Pass empty struct value as 0 on platforms representing empty structs as 1 byte.
+                               MONO_EMIT_NEW_ICONST (cfg, dreg, 0);
+                       } else {
+                               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, 0);
+                       }
                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, X86_ESP, ainfo->offset, dreg);
                } else if (size <= 20) {
                        mini_emit_memcpy (cfg, X86_ESP, ainfo->offset, src->dreg, 0, size, 4);
index 4150cdf60d0aed1d2527748e11d940407bec8b7a..b70d836c2aa07fd9758bf632c62cb5cd404582a1 100644 (file)
@@ -315,6 +315,7 @@ typedef struct {
        /* Only if storage == ArgValuetypeInReg */
        ArgStorage pair_storage [2];
        gint8 pair_regs [2];
+       guint8 pass_empty_struct : 1; // Set in scenarios when empty structs needs to be represented as argument.
 } ArgInfo;
 
 typedef struct {
index da9f3bb6a2061d3efafc67a3cee6a9e797ad10eb..e497ce406aca70a1a3f81567e4683824053e767e 100644 (file)
@@ -3253,6 +3253,11 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                cfg->gen_sdb_seq_points = FALSE;
        }
 #endif
+       if (cfg->method->wrapper_type == MONO_WRAPPER_ALLOC) {
+               /* We can't have seq points inside gc critical regions */
+               cfg->gen_seq_points = FALSE;
+               cfg->gen_sdb_seq_points = FALSE;
+       }
        /* coop / nacl requires loop detection to happen */
 #if defined(__native_client_codegen__)
        cfg->opt |= MONO_OPT_LOOP;
index ff064d11e6bfdf72aec5527ad4473bea6c5ece40..25c208c8389efa27d5e2cc5b6e4ff02b3ea8f691 100644 (file)
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 133
+#define MONO_AOT_FILE_VERSION 134
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -1172,6 +1172,11 @@ typedef struct {
         * The current exception in flight
         */
        guint32 thrown_exc;
+       /*
+        * If the current exception is not a subclass of Exception,
+        * the original exception.
+        */
+       guint32 thrown_non_exc;
 
        /*
         * The calling assembly in llvmonly mode.
index b215a3091c3c87d3da5aee213d6421f9fc3ac585..3d7eb62e4004b07a10c4644c3086e9eedf21b66a 100644 (file)
@@ -14,34 +14,29 @@ if !DISABLE_LIBRARIES
 if !DISABLE_PROFILER
 bin_PROGRAMS = mprof-report
 
-if !BITCODE
-prof_shlibs = \
-       libmono-profiler-aot.la \
-       libmono-profiler-iomap.la \
-       libmono-profiler-log.la
-endif
-
 if HAVE_VTUNE
-vtune_stlibs = libmono-profiler-vtune-static.la
-if !BITCODE
-vtune_shlibs = libmono-profiler-vtune.la
-endif
+vtune_libs = libmono-profiler-vtune.la libmono-profiler-vtune-static.la
 endif
 
 lib_LTLIBRARIES = \
-       $(prof_shlibs) \
+       libmono-profiler-aot.la \
        libmono-profiler-aot-static.la \
+       libmono-profiler-iomap.la \
        libmono-profiler-iomap-static.la \
+       libmono-profiler-log.la \
        libmono-profiler-log-static.la \
-       $(vtune_shlibs) \
-       $(vtune_stlibs)
+       $(vtune_libs)
 
 suppressiondir = $(datadir)/mono-$(API_VER)/mono/profiler
 suppression_DATA = mono-profiler-log.suppression
 
 if PLATFORM_DARWIN
+if BITCODE
+prof_ldflags = -no-undefined
+else
 prof_ldflags = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
 endif
+endif
 
 if PLATFORM_ANDROID
 prof_ldflags = -avoid-version
@@ -58,6 +53,8 @@ endif
 endif
 endif
 
+monodir=$(top_builddir)
+
 # The log profiler uses eglib functions, so it needs to be linked against
 # libeglib in shared mode, but not in static mode, since that would
 # leads to duplicate symbols when it is linked into an app which
@@ -65,19 +62,19 @@ endif
 # functionality, so create a separate static version of the library.
 
 libmono_profiler_aot_la_SOURCES = mono-profiler-aot.c
-libmono_profiler_aot_la_LIBADD = $(GLIB_LIBS) $(LIBICONV)
+libmono_profiler_aot_la_LIBADD =  $(monodir)/mono/mini/$(LIBMONO_LA) $(GLIB_LIBS) $(LIBICONV)
 libmono_profiler_aot_la_LDFLAGS = $(prof_ldflags)
 libmono_profiler_aot_static_la_SOURCES = mono-profiler-aot.c
 libmono_profiler_aot_static_la_LDFLAGS = -static
 
 libmono_profiler_iomap_la_SOURCES = mono-profiler-iomap.c
-libmono_profiler_iomap_la_LIBADD = $(GLIB_LIBS) $(LIBICONV)
+libmono_profiler_iomap_la_LIBADD = $(monodir)/mono/mini/$(LIBMONO_LA) $(GLIB_LIBS) $(LIBICONV)
 libmono_profiler_iomap_la_LDFLAGS = $(prof_ldflags)
 libmono_profiler_iomap_static_la_SOURCES = mono-profiler-iomap.c
 libmono_profiler_iomap_static_la_LDFLAGS = -static
 
 libmono_profiler_log_la_SOURCES = proflog.c
-libmono_profiler_log_la_LIBADD = $(GLIB_LIBS) $(Z_LIBS)
+libmono_profiler_log_la_LIBADD = $(monodir)/mono/mini/$(LIBMONO_LA) $(GLIB_LIBS) $(Z_LIBS)
 libmono_profiler_log_la_LDFLAGS = $(prof_ldflags)
 libmono_profiler_log_static_la_SOURCES = proflog.c
 libmono_profiler_log_static_la_LDFLAGS = -static
@@ -85,7 +82,7 @@ libmono_profiler_log_static_la_LDFLAGS = -static
 if HAVE_VTUNE
 libmono_profiler_vtune_la_SOURCES = mono-profiler-vtune.c
 libmono_profiler_vtune_la_CFLAGS = $(VTUNE_CFLAGS)
-libmono_profiler_vtune_la_LIBADD = $(VTUNE_LIBS) $(GLIB_LIBS) $(LIBICONV)
+libmono_profiler_vtune_la_LIBADD = $(VTUNE_LIBS) $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
 libmono_profiler_vtune_la_LDFLAGS = $(prof_ldflags)
 libmono_profiler_vtune_static_la_SOURCES = mono-profiler-vtune.c
 libmono_profiler_vtune_static_la_LDFLAGS = -static
index 4d0c09d40a8514809c32b3ddc4f34cf838751f94..8b4f3cb612dd4370c6f96a04798abf26ec1cc6cb 100644 (file)
@@ -1850,7 +1850,7 @@ sgen_evacuation_freelist_blocks (MSBlockInfo * volatile *block_list, int size_in
 
        SGEN_ASSERT (0, num_blocks == index, "Why did the freelist change ?");
 
-       qsort (evacuated_blocks, num_blocks, sizeof (gpointer), block_usage_comparer);
+       sgen_qsort (evacuated_blocks, num_blocks, sizeof (gpointer), block_usage_comparer);
 
        /*
         * Form a new freelist with the fullest blocks. These blocks will also be
index 80c985b0a1121e6b89f92d01c68a721b78251826..9fc03ba6ff7e1321b30f782bda7ca2cf02a6fb10 100644 (file)
@@ -18,7 +18,7 @@ class Program
        static void ProbeCorlib ()
        {
                Type good = System.Type.GetType("System.Nullable`1[[System.Int32, mscorlib]]"); 
-               Type bad = System.Type.GetType("System.Nullable`1[[System.IO.Pipes.PipeOptions, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
+               Type bad = System.Type.GetType("System.Nullable`1[[System.IO.MemoryMappedFiles.MemoryMappedFile, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
 
                if (good.Assembly.FullName.Split (',') [0] != "mscorlib")
                        throw new Exception ("Wrong assembly name");
index 1f2930da9655300e0a32a48da28c4f7ec9d69bd1..8f1cef273f40075165310ad858c344b9fb71324f 100644 (file)
@@ -889,12 +889,12 @@ mono_test_marshal_return_delegate (SimpleDelegate delegate)
        return delegate;
 }
 
-typedef int DelegateByrefDelegate (void *);
+typedef int (STDCALL *DelegateByrefDelegate) (void *);
 
 LIBTEST_API int STDCALL
 mono_test_marshal_delegate_ref_delegate (DelegateByrefDelegate del)
 {
-       int (*ptr) (int i);
+       int (STDCALL *ptr) (int i);
 
        del (&ptr);
 
@@ -1243,7 +1243,7 @@ mono_test_marshal_stringbuilder_ref (char **s)
 * C/C++ standard and the runtime.
 */
 typedef struct {
-#if !defined(__GNUC__) || (defined(TARGET_WIN32) && defined(TARGET_AMD64))
+#if !defined(__GNUC__) || defined(TARGET_WIN32)
     char a;
 #endif
 } EmptyStruct;
index 3be8342a49873dbc9e2796d44a76a81d5a9302e3..d103ef6aa333eeb96a920d8e62ef0af79db5ecb2 100644 (file)
@@ -477,8 +477,18 @@ mono_lock_free_free (gpointer ptr, size_t block_size)
                g_assert (old_anchor.data.state != STATE_EMPTY);
 
                if (InterlockedCompareExchangePointer ((gpointer * volatile)&heap->active, NULL, desc) == desc) {
-                       /* We own it, so we free it. */
-                       desc_retire (desc);
+                       /*
+                        * We own desc, check if it's still empty, in which case we retire it.
+                        * If it's partial we need to put it back either on the active slot or
+                        * on the partial list.
+                        */
+                       if (desc->anchor.data.state == STATE_EMPTY) {
+                               desc_retire (desc);
+                       } else if (desc->anchor.data.state == STATE_PARTIAL) {
+                               if (InterlockedCompareExchangePointer ((gpointer * volatile)&heap->active, desc, NULL) != NULL)
+                                       heap_put_partial (desc);
+
+                       }
                } else {
                        /*
                         * Somebody else must free it, so we do some
diff --git a/msvc/libmono-static.vcxproj b/msvc/libmono-static.vcxproj
new file mode 100644 (file)
index 0000000..6628317
--- /dev/null
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\mono\metadata\remoting.c" />\r
+    <ClCompile Include="..\mono\mini\alias-analysis.c" />\r
+    <ClCompile Include="..\mono\mini\arch-stubs.c" />\r
+    <ClCompile Include="..\mono\mini\exceptions-amd64.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\exceptions-x86.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-amd64.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-amd64-gsharedvt.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-runtime.c" />\r
+    <ClCompile Include="..\mono\mini\mini-windows.c" />\r
+    <ClCompile Include="..\mono\mini\mini-x86.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-x86-gsharedvt.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini.c" />\r
+    <ClInclude Include="..\mono\metadata\remoting.h" />\r
+    <ClInclude Include="..\mono\mini\ir-emit.h" />\r
+    <ClCompile Include="..\mono\mini\method-to-ir.c" />\r
+    <ClCompile Include="..\mono\mini\decompose.c" />\r
+    <ClInclude Include="..\mono\mini\mini-amd64.h">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-amd64-gsharedvt.h">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-x86.h">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini.h" />\r
+    <ClInclude Include="..\mono\mini\seq-points.h" />\r
+    <ClInclude Include="..\mono\mini\version.h" />\r
+    <ClInclude Include="..\mono\mini\optflags-def.h" />\r
+    <ClInclude Include="..\mono\mini\cfgdump.h" />\r
+    <ClCompile Include="..\mono\mini\cfgdump.c" />\r
+    <ClInclude Include="..\mono\mini\jit-icalls.h " />\r
+    <ClCompile Include="..\mono\mini\jit-icalls.c " />\r
+    <ClCompile Include="..\mono\mini\seq-points.c" />\r
+    <ClCompile Include="..\mono\mini\trace.c" />\r
+    <ClInclude Include="..\mono\mini\trace.h" />\r
+    <ClInclude Include="..\mono\mini\patch-info.h" />\r
+    <ClInclude Include="..\mono\mini\mini-ops.h" />\r
+    <ClInclude Include="..\mono\mini\mini-arch.h" />\r
+    <ClCompile Include="..\mono\mini\dominators.c" />\r
+    <ClCompile Include="..\mono\mini\cfold.c" />\r
+    <ClInclude Include="..\mono\mini\regalloc.h" />\r
+    <ClCompile Include="..\mono\mini\helpers.c" />\r
+    <ClCompile Include="..\mono\mini\liveness.c" />\r
+    <ClCompile Include="..\mono\mini\ssa.c" />\r
+    <ClCompile Include="..\mono\mini\abcremoval.c" />\r
+    <ClInclude Include="..\mono\mini\abcremoval.h" />\r
+    <ClCompile Include="..\mono\mini\local-propagation.c" />\r
+    <ClCompile Include="..\mono\mini\driver.c" />\r
+    <ClCompile Include="..\mono\mini\debug-mini.c" />\r
+    <ClCompile Include="..\mono\mini\linear-scan.c" />\r
+    <ClCompile Include="..\mono\mini\aot-compiler.c" />\r
+    <ClCompile Include="..\mono\mini\aot-runtime.c" />\r
+    <ClCompile Include="..\mono\mini\graph.c" />\r
+    <ClCompile Include="..\mono\mini\mini-codegen.c" />\r
+    <ClCompile Include="..\mono\mini\mini-cross-helpers.c" />\r
+    <ClCompile Include="..\mono\mini\mini-exceptions.c" />\r
+    <ClCompile Include="..\mono\mini\mini-exceptions-native-unwinder.c" />\r
+    <ClCompile Include="..\mono\mini\mini-trampolines.c  " />\r
+    <ClCompile Include="..\mono\mini\tramp-amd64.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-amd64-gsharedvt.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-x86.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-x86-gsharedvt.c">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\branch-opts.c" />\r
+    <ClCompile Include="..\mono\mini\mini-generic-sharing.c" />\r
+    <ClInclude Include="..\mono\mini\simd-methods.h" />\r
+    <ClCompile Include="..\mono\mini\tasklets.c" />\r
+    <ClInclude Include="..\mono\mini\tasklets.h" />\r
+    <ClCompile Include="..\mono\mini\simd-intrinsics.c" />\r
+    <ClInclude Include="..\mono\mini\mini-unwind.h" />\r
+    <ClCompile Include="..\mono\mini\unwind.c" />\r
+    <ClInclude Include="..\mono\mini\image-writer.h" />\r
+    <ClCompile Include="..\mono\mini\image-writer.c" />\r
+    <ClInclude Include="..\mono\mini\dwarfwriter.h" />\r
+    <ClCompile Include="..\mono\mini\dwarfwriter.c" />\r
+    <ClInclude Include="..\mono\mini\mini-gc.h" />\r
+    <ClCompile Include="..\mono\mini\mini-gc.c" />\r
+    <ClInclude Include="..\mono\mini\debugger-agent.h " />\r
+    <ClCompile Include="..\mono\mini\debugger-agent.c" />\r
+    <ClCompile Include="..\mono\mini\xdebug.c" />\r
+    <ClInclude Include="..\mono\mini\mini-llvm.h" />\r
+    <ClInclude Include="..\mono\mini\mini-llvm-cpp.h" />\r
+    <ClCompile Include="..\mono\mini\mini-native-types.c" />\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0772}</ProjectGuid>\r
+    <RootNamespace>libmono-static</RootNamespace>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="mono.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="mono.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="mono.props" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+    <Import Project="mono.props" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <LinkIncremental>true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <LinkIncremental>true</LinkIncremental>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <PreBuildEvent>\r
+      <Command>\r
+      </Command>\r
+    </PreBuildEvent>\r
+    <ClCompile>\r
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <BrowseInformation>false</BrowseInformation>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+    </Link>\r
+    <PostBuildEvent>\r
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>\r
+    </PostBuildEvent>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <PreBuildEvent>\r
+      <Command>\r
+      </Command>\r
+    </PreBuildEvent>\r
+    <ClCompile>\r
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <BrowseInformation>false</BrowseInformation>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+    </Link>\r
+    <PostBuildEvent>\r
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>\r
+    </PostBuildEvent>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <PreBuildEvent>\r
+      <Command>\r
+      </Command>\r
+    </PreBuildEvent>\r
+    <ClCompile>\r
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+    </Link>\r
+    <PostBuildEvent>\r
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>\r
+    </PostBuildEvent>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <PreBuildEvent>\r
+      <Command>\r
+      </Command>\r
+    </PreBuildEvent>\r
+    <ClCompile>\r
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+    </Link>\r
+    <PostBuildEvent>\r
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>\r
+    </PostBuildEvent>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <CustomBuildStep Include="..\mono\mini\mini-x86.h">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </CustomBuildStep>\r
+    <CustomBuildStep Include="..\mono\mini\mini-amd64.h">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </CustomBuildStep>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="eglib.vcxproj">\r
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="genmdesc.vcxproj">\r
+      <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="libgc.vcxproj">\r
+      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="libgcmonosgen.vcxproj">\r
+      <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d740}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="libmonoruntime.vcxproj">\r
+      <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>\r
+    </ProjectReference>\r
+    <ProjectReference Include="libmonoutils.vcxproj">\r
+      <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/msvc/libmono-static.vcxproj.filters b/msvc/libmono-static.vcxproj.filters
new file mode 100644 (file)
index 0000000..75748b8
--- /dev/null
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <ClCompile Include="..\mono\mini\abcremoval.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\alias-analysis.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\aot-compiler.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\aot-runtime.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\arch-stubs.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\branch-opts.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\cfold.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\debugger-agent.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\debug-mini.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\decompose.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\dominators.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\driver.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\dwarfwriter.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\exceptions-amd64.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\exceptions-x86.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\graph.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\helpers.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\image-writer.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\jit-icalls.c ">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\linear-scan.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\liveness.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\local-propagation.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\method-to-ir.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-amd64.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-codegen.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-exceptions.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-gc.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-generic-sharing.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-native-types.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-runtime.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-trampolines.c  ">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-windows.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-x86.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\metadata\remoting.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\seq-points.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\simd-intrinsics.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\ssa.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tasklets.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\trace.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-amd64.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-x86.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\unwind.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\xdebug.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\cfgdump.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-amd64-gsharedvt.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-cross-helpers.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-exceptions-native-unwinder.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\mini-x86-gsharedvt.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-amd64-gsharedvt.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\mono\mini\tramp-x86-gsharedvt.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\mono\mini\abcremoval.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\debugger-agent.h ">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\dwarfwriter.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\ir-emit.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\image-writer.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\seq-points.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\jit-icalls.h ">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-amd64.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-arch.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-gc.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-llvm.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-llvm-cpp.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-ops.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-unwind.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-x86.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\optflags-def.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\patch-info.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\regalloc.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\metadata\remoting.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\simd-methods.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\tasklets.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\trace.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\version.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\cfgdump.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\mono\mini\mini-amd64-gsharedvt.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{bdc9f80b-3045-49d2-bb7b-510450371395}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{f7700495-afaa-4d16-9aac-79d54d10de23}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{5370c3c4-b6ec-4f8a-8b21-ce4e782720a6}</UniqueIdentifier>\r
+    </Filter>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
index 6fca2cc5ae4439aaa535b3c08b833683d3b9cede..3acce45d4bbc5356b29c7993c7e5c5bef8f58108 100644 (file)
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\metadata\remoting.c" />\r
-    <ClCompile Include="..\mono\mini\alias-analysis.c" />\r
-    <ClCompile Include="..\mono\mini\arch-stubs.c" />\r
-    <ClCompile Include="..\mono\mini\exceptions-amd64.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\exceptions-x86.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-amd64.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-amd64-gsharedvt.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-runtime.c" />\r
-    <ClCompile Include="..\mono\mini\mini-windows.c" />\r
-    <ClCompile Include="..\mono\mini\mini-x86.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-x86-gsharedvt.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini.c" />\r
-    <ClInclude Include="..\mono\metadata\remoting.h" />\r
-    <ClInclude Include="..\mono\mini\ir-emit.h" />\r
-    <ClCompile Include="..\mono\mini\method-to-ir.c" />\r
-    <ClCompile Include="..\mono\mini\decompose.c" />\r
-    <ClInclude Include="..\mono\mini\mini-amd64.h">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-amd64-gsharedvt.h">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-x86.h">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini.h" />\r
-    <ClInclude Include="..\mono\mini\seq-points.h" />\r
-    <ClInclude Include="..\mono\mini\version.h" />\r
-    <ClInclude Include="..\mono\mini\optflags-def.h" />\r
-    <ClInclude Include="..\mono\mini\cfgdump.h" />\r
-    <ClCompile Include="..\mono\mini\cfgdump.c" />\r
-    <ClInclude Include="..\mono\mini\jit-icalls.h " />\r
-    <ClCompile Include="..\mono\mini\jit-icalls.c " />\r
-    <ClCompile Include="..\mono\mini\seq-points.c" />\r
-    <ClCompile Include="..\mono\mini\trace.c" />\r
-    <ClInclude Include="..\mono\mini\trace.h" />\r
-    <ClInclude Include="..\mono\mini\patch-info.h" />\r
-    <ClInclude Include="..\mono\mini\mini-ops.h" />\r
-    <ClInclude Include="..\mono\mini\mini-arch.h" />\r
-    <ClCompile Include="..\mono\mini\dominators.c" />\r
-    <ClCompile Include="..\mono\mini\cfold.c" />\r
-    <ClInclude Include="..\mono\mini\regalloc.h" />\r
-    <ClCompile Include="..\mono\mini\helpers.c" />\r
-    <ClCompile Include="..\mono\mini\liveness.c" />\r
-    <ClCompile Include="..\mono\mini\ssa.c" />\r
-    <ClCompile Include="..\mono\mini\abcremoval.c" />\r
-    <ClInclude Include="..\mono\mini\abcremoval.h" />\r
-    <ClCompile Include="..\mono\mini\local-propagation.c" />\r
-    <ClCompile Include="..\mono\mini\driver.c" />\r
-    <ClCompile Include="..\mono\mini\debug-mini.c" />\r
-    <ClCompile Include="..\mono\mini\linear-scan.c" />\r
-    <ClCompile Include="..\mono\mini\aot-compiler.c" />\r
-    <ClCompile Include="..\mono\mini\aot-runtime.c" />\r
-    <ClCompile Include="..\mono\mini\graph.c" />\r
-    <ClCompile Include="..\mono\mini\mini-codegen.c" />\r
-    <ClCompile Include="..\mono\mini\mini-cross-helpers.c" />\r
-    <ClCompile Include="..\mono\mini\mini-exceptions.c" />\r
-    <ClCompile Include="..\mono\mini\mini-exceptions-native-unwinder.c" />\r
-    <ClCompile Include="..\mono\mini\mini-trampolines.c  " />\r
-    <ClCompile Include="..\mono\mini\tramp-amd64.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-amd64-gsharedvt.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-x86.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-x86-gsharedvt.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\branch-opts.c" />\r
-    <ClCompile Include="..\mono\mini\mini-generic-sharing.c" />\r
-    <ClInclude Include="..\mono\mini\simd-methods.h" />\r
-    <ClCompile Include="..\mono\mini\tasklets.c" />\r
-    <ClInclude Include="..\mono\mini\tasklets.h" />\r
-    <ClCompile Include="..\mono\mini\simd-intrinsics.c" />\r
-    <ClInclude Include="..\mono\mini\mini-unwind.h" />\r
-    <ClCompile Include="..\mono\mini\unwind.c" />\r
-    <ClInclude Include="..\mono\mini\image-writer.h" />\r
-    <ClCompile Include="..\mono\mini\image-writer.c" />\r
-    <ClInclude Include="..\mono\mini\dwarfwriter.h" />\r
-    <ClCompile Include="..\mono\mini\dwarfwriter.c" />\r
-    <ClInclude Include="..\mono\mini\mini-gc.h" />\r
-    <ClCompile Include="..\mono\mini\mini-gc.c" />\r
-    <ClInclude Include="..\mono\mini\debugger-agent.h " />\r
-    <ClCompile Include="..\mono\mini\debugger-agent.c" />\r
-    <ClCompile Include="..\mono\mini\xdebug.c" />\r
-    <ClInclude Include="..\mono\mini\mini-llvm.h" />\r
-    <ClInclude Include="..\mono\mini\mini-llvm-cpp.h" />\r
-    <ClCompile Include="..\mono\mini\mini-native-types.c" />\r
-  </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}</ProjectGuid>\r
     <RootNamespace>libmono</RootNamespace>\r
       <Culture>0x0409</Culture>\r
     </ResourceCompile>\r
     <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmono-static$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <Culture>0x0409</Culture>\r
     </ResourceCompile>\r
     <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmono-static$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <Culture>0x0409</Culture>\r
     </ResourceCompile>\r
     <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmono-static$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
       <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <Culture>0x0409</Culture>\r
     </ResourceCompile>\r
     <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmono-static$(MONO_TARGET_SUFFIX).lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
     <ProjectReference Include="libgcmonosgen.vcxproj">\r
       <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d740}</Project>\r
     </ProjectReference>\r
+    <ProjectReference Include="libmono-static.vcxproj">\r
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0772}</Project>\r
+    </ProjectReference>\r
     <ProjectReference Include="libmonoruntime.vcxproj">\r
       <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>\r
     </ProjectReference>\r
index 75748b858bebbf78297ef860fe58601862bad323..0d407ea4f940edc25a0d364ff323a36f41c96cb9 100644 (file)
@@ -1,240 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\mini\abcremoval.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\alias-analysis.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\aot-compiler.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\aot-runtime.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\arch-stubs.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\branch-opts.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\cfold.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\debugger-agent.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\debug-mini.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\decompose.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\dominators.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\driver.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\dwarfwriter.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\exceptions-amd64.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\exceptions-x86.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\graph.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\helpers.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\image-writer.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\jit-icalls.c ">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\linear-scan.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\liveness.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\local-propagation.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\method-to-ir.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-amd64.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-codegen.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-exceptions.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-gc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-generic-sharing.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-native-types.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-runtime.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-trampolines.c  ">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-x86.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\remoting.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\seq-points.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\simd-intrinsics.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\ssa.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tasklets.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\trace.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-amd64.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-x86.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\unwind.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\xdebug.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\cfgdump.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-amd64-gsharedvt.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-cross-helpers.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-exceptions-native-unwinder.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-x86-gsharedvt.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-amd64-gsharedvt.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\tramp-x86-gsharedvt.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\mini\abcremoval.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\debugger-agent.h ">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\dwarfwriter.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\ir-emit.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\image-writer.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\seq-points.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\jit-icalls.h ">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-amd64.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-arch.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-gc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-llvm.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-llvm-cpp.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-ops.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-unwind.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-x86.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\optflags-def.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\patch-info.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\regalloc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\remoting.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\simd-methods.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\tasklets.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\trace.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\version.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\cfgdump.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\mini\mini-amd64-gsharedvt.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <Filter Include="Header Files">\r
       <UniqueIdentifier>{bdc9f80b-3045-49d2-bb7b-510450371395}</UniqueIdentifier>\r
index c02736c1bff8c3197b298dcd6a20f268f6dd34c6..d0c79d0f0a4e2d66cd6335238edaae8736756357 100644 (file)
       <SubSystem>Windows</SubSystem>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
     <ClCompile>\r
       <SubSystem>Windows</SubSystem>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
       <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <OptimizeReferences>true</OptimizeReferences>\r
     </Link>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
     <ClCompile>\r
       <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <OptimizeReferences>true</OptimizeReferences>\r
     </Link>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
index 408a8b7953166556d8333ee29425e862957f554c..0861cda54050dc6d3e14cfd52a335da11e7d7542 100644 (file)
@@ -161,6 +161,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono-mini-regression-aot-te
 EndProject\r
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "regression", "regression", "{A0068765-334B-414C-8E21-8376CD2EC9F6}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono-static", "libmono-static.vcxproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0772}"\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Debug|Win32 = Debug|Win32\r
@@ -351,6 +353,14 @@ Global
                {D632D664-C0F5-4B60-9375-BDDAD5C7A649}.Release|Win32.Build.0 = Release|Win32\r
                {D632D664-C0F5-4B60-9375-BDDAD5C7A649}.Release|x64.ActiveCfg = Release|x64\r
                {D632D664-C0F5-4B60-9375-BDDAD5C7A649}.Release|x64.Build.0 = Release|x64\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Debug|Win32.Build.0 = Debug|Win32\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Debug|x64.ActiveCfg = Debug|x64\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Debug|x64.Build.0 = Debug|x64\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Release|Win32.ActiveCfg = Release|Win32\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Release|Win32.Build.0 = Release|Win32\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Release|x64.ActiveCfg = Release|x64\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772}.Release|x64.Build.0 = Release|x64\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
@@ -382,6 +392,7 @@ Global
                {3E0D229E-C39F-4EDA-9A6A-A33ECEA0322D} = {A0068765-334B-414C-8E21-8376CD2EC9F6}\r
                {D632D664-C0F5-4B60-9375-BDDAD5C7A649} = {A0068765-334B-414C-8E21-8376CD2EC9F6}\r
                {A0068765-334B-414C-8E21-8376CD2EC9F6} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}\r
+               {CB0D9E92-293C-439C-9AC7-C5F59B6E0772} = {DE3617B4-17A8-4E5F-A00F-BA43D956881F}\r
        EndGlobalSection\r
        GlobalSection(ExtensibilityGlobals) = postSolution\r
                AMDCaProjectFile = C:\Users\Owner\Development\monogit\mono\msvc\CodeAnalyst\mono.caw\r
index 5dc264cffdea2a541075db8c12e202ef47f8ce7a..bcce919fa7d309f85d52a9e2d2be7eddbd889679 100755 (executable)
@@ -79,4 +79,8 @@ ${TESTCMD} --label=Microsoft.Build.Engine-14 --timeout=60m make -w -C mcs/class/
 ${TESTCMD} --label=Microsoft.Build.Framework-14 --timeout=60m make -w -C mcs/class/Microsoft.Build.Framework run-test PROFILE=xbuild_14
 ${TESTCMD} --label=Microsoft.Build.Tasks-14 --timeout=60m make -w -C mcs/class/Microsoft.Build.Tasks run-test PROFILE=xbuild_14
 ${TESTCMD} --label=Microsoft.Build.Utilities-14 --timeout=60m make -w -C mcs/class/Microsoft.Build.Utilities run-test PROFILE=xbuild_14
+if [[ ${label} == osx-* ]]
+then ${TESTCMD} --label=ms-test-suite --timeout=15m make -w -C acceptance-tests check-ms-test-suite
+else ${TESTCMD} --label=ms-test-suite --skip;
+fi
 rm -fr /tmp/jenkins-temp-aspnet*
index 440476df14051541e61639f3cc2d381c8b04e59d..3d429b80eac02769064d67bc5e5e8d36cf519f01 100644 (file)
@@ -68,7 +68,7 @@ test-$(1)::
 
 reset-$(1)::
        @if test -d $($(2)_PATH); then \
-               if ! (cd $($(2)_PATH) && git show $(NEEDED_$(2)_VERSION) >/dev/null 2>&1 && git log -1 $(NEEDED_$(2)_REMOTE) >/dev/null 2>&1) ; then \
+               if ! (cd $($(2)_PATH) && git show $(NEEDED_$(2)_VERSION) >/dev/null 2>&1 && git log -1 $(NEEDED_$(2)_REMOTE/NEEDED_$(2)_BRANCH) >/dev/null 2>&1) ; then \
                        echo "*** git fetch `basename $$($(2)_PATH)`" && (cd $($(2)_PATH) && git fetch); \
                fi;  \
        else \