Merge pull request #5636 from BrzVlad/fix-xmm-scan
authorVlad Brezae <brezaevlad@gmail.com>
Tue, 3 Oct 2017 15:51:20 +0000 (18:51 +0300)
committerGitHub <noreply@github.com>
Tue, 3 Oct 2017 15:51:20 +0000 (18:51 +0300)
[sgen] Scan simd registers on linux amd64 + apple arm64

348 files changed:
CODEOWNERS
Makefile.am
acceptance-tests/SUBMODULES.json
acceptance-tests/ms-test-suite.mk
external/api-snapshot
external/bockbuild
external/nuget-buildtasks
man/mono.1
man/mprof-report.1
mcs/class/Mono.Posix/Mono.Unix/UnixMarshal.cs
mcs/class/Mono.Posix/Test/Mono.Unix/UnixMarshalTest.cs
mcs/class/Mono.Profiler.Log/Mono.Profiler.Log/LogEnums.cs
mcs/class/Mono.Profiler.Log/Mono.Profiler.Log/LogProcessor.cs
mcs/class/Mono.Profiler.Log/Mono.Profiler.Log/LogReader.cs
mcs/class/Mono.Profiler.Log/Mono.Profiler.Log/LogStream.cs
mcs/class/Mono.Profiler.Log/Mono.Profiler.Log/LogStreamHeader.cs
mcs/class/System.Drawing/System.Drawing.Drawing2D/LinearGradientBrush.cs
mcs/class/System.Drawing/Test/System.Drawing.Drawing2D/LinearGradientBrushTest.cs
mcs/class/System.Drawing/Test/System.Drawing/GDIPlusTest.cs
mcs/class/System.Json/System.Json/JsonArray.cs
mcs/class/System.Json/Test/System.Json/JsonValueTest.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs
mcs/class/System.Runtime.Remoting/Makefile
mcs/class/System/System.Net/HttpListenerRequest.cs
mcs/class/System/Test/System.Net/HttpListenerRequestTest.cs
mcs/class/WindowsBase/System.Windows.Converters/Int32RectValueSerializer.cs
mcs/class/WindowsBase/System.Windows.Converters/PointValueSerializer.cs
mcs/class/WindowsBase/System.Windows.Converters/RectValueSerializer.cs
mcs/class/WindowsBase/System.Windows.Converters/SizeValueSerializer.cs
mcs/class/WindowsBase/System.Windows.Converters/VectorValueSerializer.cs
mcs/class/WindowsBase/System.Windows.Media/Matrix.cs
mcs/class/WindowsBase/System.Windows/Int32Rect.cs
mcs/class/WindowsBase/System.Windows/NumericListTokenizer.cs [new file with mode: 0644]
mcs/class/WindowsBase/System.Windows/Point.cs
mcs/class/WindowsBase/System.Windows/Rect.cs
mcs/class/WindowsBase/System.Windows/Size.cs
mcs/class/WindowsBase/System.Windows/Vector.cs
mcs/class/WindowsBase/Test/System.Windows.Media/MatrixConverterTest.cs
mcs/class/WindowsBase/Test/System.Windows.Media/MatrixTest.cs
mcs/class/WindowsBase/Test/System.Windows/Int32RectConverterTest.cs
mcs/class/WindowsBase/Test/System.Windows/Int32RectTest.cs
mcs/class/WindowsBase/Test/System.Windows/Int32RectValueSerializerTest.cs [new file with mode: 0644]
mcs/class/WindowsBase/Test/System.Windows/PointConverterTest.cs
mcs/class/WindowsBase/Test/System.Windows/PointTest.cs
mcs/class/WindowsBase/Test/System.Windows/PointValueSerializerTest.cs [new file with mode: 0644]
mcs/class/WindowsBase/Test/System.Windows/RectConverterTest.cs
mcs/class/WindowsBase/Test/System.Windows/RectTest.cs
mcs/class/WindowsBase/Test/System.Windows/RectValueSerializerTest.cs [new file with mode: 0644]
mcs/class/WindowsBase/Test/System.Windows/SizeConverterTest.cs
mcs/class/WindowsBase/Test/System.Windows/SizeTest.cs
mcs/class/WindowsBase/Test/System.Windows/SizeValueSerializerTest.cs
mcs/class/WindowsBase/Test/System.Windows/VectorConverterTest.cs
mcs/class/WindowsBase/Test/System.Windows/VectorTest.cs
mcs/class/WindowsBase/Test/System.Windows/VectorValueSerializerTest.cs [new file with mode: 0644]
mcs/class/WindowsBase/WindowsBase-net_4_x.csproj
mcs/class/WindowsBase/WindowsBase.dll.sources
mcs/class/WindowsBase/WindowsBase_test.dll.sources
mcs/class/corlib/System.IO/DirectoryInfo.cs
mcs/class/corlib/System.IO/MonoIO.cs
mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.cs
mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs
mcs/class/corlib/System.Security.Cryptography/DSACryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
mcs/class/corlib/System/TimeZoneInfo.Serialization.cs
mcs/class/corlib/System/TimeZoneInfo.cs
mcs/class/corlib/Test/System.IO/FileTest.cs
mcs/class/corlib/Test/System.Reflection.Emit/DynamicMethodTest.cs
mcs/class/corlib/Test/System.Reflection.Emit/ILGeneratorTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/DSACryptoServiceProviderTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/RSACryptoServiceProviderTest.cs
mcs/class/corlib/Test/System/TimeZoneInfo.SerializationTest.cs
mcs/class/corlib/Test/System/TypeTest.cs
mcs/class/test-helpers/NetworkHelpers.cs
mcs/errors/cs0106-11.cs [new file with mode: 0644]
mcs/errors/cs0131-6.cs [new file with mode: 0644]
mcs/errors/cs0199-2.cs [new file with mode: 0644]
mcs/errors/cs0206-5.cs [new file with mode: 0644]
mcs/errors/cs0459-5.cs [new file with mode: 0644]
mcs/errors/cs1503-17.cs [new file with mode: 0644]
mcs/errors/cs1547-13.cs [new file with mode: 0644]
mcs/errors/cs1604-2.cs [new file with mode: 0644]
mcs/errors/cs1605-2.cs [new file with mode: 0644]
mcs/errors/cs1617.cs
mcs/errors/cs1644-55.cs [new file with mode: 0644]
mcs/errors/cs1644-56.cs [new file with mode: 0644]
mcs/errors/cs1715-3.cs [new file with mode: 0644]
mcs/errors/cs1764.cs
mcs/errors/cs8145.cs [new file with mode: 0644]
mcs/errors/cs8146.cs [new file with mode: 0644]
mcs/errors/cs8147-2.cs [new file with mode: 0644]
mcs/errors/cs8147.cs [new file with mode: 0644]
mcs/errors/cs8148-2.cs [new file with mode: 0644]
mcs/errors/cs8148.cs [new file with mode: 0644]
mcs/errors/cs8149-2.cs [new file with mode: 0644]
mcs/errors/cs8149.cs [new file with mode: 0644]
mcs/errors/cs8150.cs [new file with mode: 0644]
mcs/errors/cs8151.cs [new file with mode: 0644]
mcs/errors/cs8152.cs [new file with mode: 0644]
mcs/errors/cs8153.cs [new file with mode: 0644]
mcs/errors/cs8154.cs [new file with mode: 0644]
mcs/errors/cs8155.cs [new file with mode: 0644]
mcs/errors/cs8156-2.cs [new file with mode: 0644]
mcs/errors/cs8156.cs [new file with mode: 0644]
mcs/errors/cs8157.cs [new file with mode: 0644]
mcs/errors/cs8160.cs [new file with mode: 0644]
mcs/errors/cs8161.cs [new file with mode: 0644]
mcs/errors/cs8170-2.cs [new file with mode: 0644]
mcs/errors/cs8170.cs [new file with mode: 0644]
mcs/errors/cs8171.cs [new file with mode: 0644]
mcs/errors/cs8172.cs [new file with mode: 0644]
mcs/errors/cs8173.cs [new file with mode: 0644]
mcs/errors/cs8174.cs [new file with mode: 0644]
mcs/errors/cs8175.cs [new file with mode: 0644]
mcs/errors/cs8176.cs [new file with mode: 0644]
mcs/errors/cs8177.cs [new file with mode: 0644]
mcs/errors/cs8178-2.cs [new file with mode: 0644]
mcs/errors/cs8178.cs [new file with mode: 0644]
mcs/errors/cs8189.cs [new file with mode: 0644]
mcs/errors/cs8303.cs [new file with mode: 0644]
mcs/errors/cs8340-2.cs [new file with mode: 0644]
mcs/errors/cs8340.cs [new file with mode: 0644]
mcs/errors/cs8341.cs [new file with mode: 0644]
mcs/errors/cs8342.cs [new file with mode: 0644]
mcs/errors/known-issues-net_4_x
mcs/jay/jay.vcxproj
mcs/mcs/argument.cs
mcs/mcs/attribute.cs
mcs/mcs/class.cs
mcs/mcs/convert.cs
mcs/mcs/cs-parser.jay
mcs/mcs/delegate.cs
mcs/mcs/ecore.cs
mcs/mcs/expression.cs
mcs/mcs/field.cs
mcs/mcs/generic.cs
mcs/mcs/import.cs
mcs/mcs/iterators.cs
mcs/mcs/lambda.cs
mcs/mcs/membercache.cs
mcs/mcs/pending.cs
mcs/mcs/property.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/mcs/typespec.cs
mcs/tests/test-readonly-01.cs [new file with mode: 0644]
mcs/tests/test-ref-01.cs [new file with mode: 0644]
mcs/tests/test-ref-02.cs [new file with mode: 0644]
mcs/tests/test-ref-03.cs [new file with mode: 0644]
mcs/tests/test-ref-04.cs [new file with mode: 0644]
mcs/tests/test-ref-05.cs [new file with mode: 0644]
mcs/tests/test-ref-06.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_x.xml
mcs/tools/linker-analyzer/README.md [new file with mode: 0644]
mcs/tools/mkbundle/mkbundle.cs
mcs/tools/mono-api-html/ConstructorComparer.cs
mcs/tools/mono-api-html/mono-api-html.sln [new file with mode: 0644]
mono/arch/ppc/ppc-codegen.h
mono/btls/Makefile.am
mono/metadata/Makefile.am
mono/metadata/callspec.c [new file with mode: 0644]
mono/metadata/callspec.h [new file with mode: 0644]
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/class.h
mono/metadata/coree.h
mono/metadata/dynamic-image.c
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/loader.c
mono/metadata/metadata-internals.h
mono/metadata/metadata-verify.c
mono/metadata/monitor.c
mono/metadata/mono-hash.c
mono/metadata/mono-hash.h
mono/metadata/object-internals.h
mono/metadata/object-offsets.h
mono/metadata/object.c
mono/metadata/remoting.c
mono/metadata/sgen-mono.c
mono/metadata/sgen-stw.c
mono/metadata/sre.c
mono/metadata/threadpool.c
mono/metadata/threads-types.h
mono/metadata/threads.c
mono/metadata/w32error-unix.c
mono/metadata/w32file-win32.c
mono/metadata/w32file.c
mono/metadata/w32file.h
mono/metadata/w32handle.c
mono/metadata/w32process-unix.c
mono/metadata/w32socket-win32.c
mono/metadata/w32socket.c
mono/metadata/w32socket.h
mono/mini/aot-compiler.c
mono/mini/aot-runtime-wasm.c
mono/mini/aot-tests.cs
mono/mini/builtin-types.cs
mono/mini/cpu-arm64.md
mono/mini/cpu-ppc.md
mono/mini/cpu-ppc64.md
mono/mini/debugger-agent.c
mono/mini/devirtualization.cs
mono/mini/driver.c
mono/mini/exceptions.cs
mono/mini/gc-test.cs
mono/mini/gshared.cs
mono/mini/iltests.il
mono/mini/interp/interp.c
mono/mini/interp/transform.c
mono/mini/jit-icalls.c
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-arm.c
mono/mini/mini-arm64.c
mono/mini/mini-arm64.h
mono/mini/mini-exceptions.c
mono/mini/mini-llvm.c
mono/mini/mini-native-types.c
mono/mini/mini-ppc.c
mono/mini/mini-runtime.c
mono/mini/mini-trampolines.c
mono/mini/mini.c
mono/mini/mini.h
mono/mini/mixed.cs
mono/mini/test.cs
mono/mini/trace.c
mono/mini/trace.h
mono/profiler/Makefile.am
mono/profiler/coverage.c [new file with mode: 0644]
mono/profiler/log-args.c
mono/profiler/log.c
mono/profiler/log.h
mono/sgen/sgen-conf.h
mono/sgen/sgen-gc.c
mono/sgen/sgen-marksweep.c
mono/tests/Makefile.am
mono/tests/appdomain-unload-exception.cs [new file with mode: 0644]
mono/tests/appdomain-unload.cs
mono/tests/array.cs
mono/tests/bug-59281.cs [new file with mode: 0644]
mono/tests/recursive-struct-arrays.cs [new file with mode: 0644]
mono/tests/runtime-invoke.cs
mono/tests/unhandled-exception-9.cs [new file with mode: 0644]
mono/utils/Makefile.am
mono/utils/mono-os-semaphore.h
mono/utils/mono-os-wait-win32.c [new file with mode: 0644]
mono/utils/mono-os-wait.h [new file with mode: 0644]
mono/utils/mono-threads-windows.c
mono/utils/mono-threads.h
mono/utils/os-event-win32.c
mono/utils/unlocked.h
msvc/Makefile.am
msvc/README
msvc/create-windef.pl [deleted file]
msvc/eglib-common.targets
msvc/eglib-common.targets.filters
msvc/eglib-posix.targets
msvc/eglib-posix.targets.filters
msvc/eglib-win32.targets
msvc/eglib-win32.targets.filters
msvc/eglib.targets [new file with mode: 0644]
msvc/eglib.targets.filters [new file with mode: 0644]
msvc/eglib.vcxproj
msvc/eglib.vcxproj.filters
msvc/genmdesc.vcxproj
msvc/libgc.targets [new file with mode: 0644]
msvc/libgc.targets.filters [new file with mode: 0644]
msvc/libgc.vcxproj
msvc/libgc.vcxproj.filters
msvc/libgcmonosgen.targets [new file with mode: 0644]
msvc/libgcmonosgen.targets.filters [new file with mode: 0644]
msvc/libgcmonosgen.vcxproj
msvc/libgcmonosgen.vcxproj.filters
msvc/libmini-arch.targets [new file with mode: 0644]
msvc/libmini-arch.targets.filters [new file with mode: 0644]
msvc/libmini-common.targets [new file with mode: 0644]
msvc/libmini-common.targets.filters [new file with mode: 0644]
msvc/libmini-interp.targets [new file with mode: 0644]
msvc/libmini-interp.targets.filters [new file with mode: 0644]
msvc/libmini-llvm.targets [new file with mode: 0644]
msvc/libmini-llvm.targets.filters [new file with mode: 0644]
msvc/libmini-posix.targets [new file with mode: 0644]
msvc/libmini-posix.targets.filters [new file with mode: 0644]
msvc/libmini-win32.targets [new file with mode: 0644]
msvc/libmini-win32.targets.filters [new file with mode: 0644]
msvc/libmini.targets [new file with mode: 0644]
msvc/libmini.targets.filters [new file with mode: 0644]
msvc/libmini.vcxproj [new file with mode: 0644]
msvc/libmini.vcxproj.filters [new file with mode: 0644]
msvc/libmono-dynamic.vcxproj [new file with mode: 0644]
msvc/libmono-dynamic.vcxproj.filters [new file with mode: 0644]
msvc/libmono-static.vcxproj
msvc/libmono-static.vcxproj.filters
msvc/libmono.vcxproj [deleted file]
msvc/libmono.vcxproj.filters [deleted file]
msvc/libmonodac.vcxproj
msvc/libmonoruntime-common.targets [new file with mode: 0644]
msvc/libmonoruntime-common.targets.filters [new file with mode: 0644]
msvc/libmonoruntime-posix.targets [new file with mode: 0644]
msvc/libmonoruntime-posix.targets.filters [new file with mode: 0644]
msvc/libmonoruntime-win32.targets [new file with mode: 0644]
msvc/libmonoruntime-win32.targets.filters [new file with mode: 0644]
msvc/libmonoruntime.targets [new file with mode: 0644]
msvc/libmonoruntime.targets.filters [new file with mode: 0644]
msvc/libmonoruntime.vcxproj
msvc/libmonoruntime.vcxproj.filters
msvc/libmonoutils-arch.targets [new file with mode: 0644]
msvc/libmonoutils-arch.targets.filters [new file with mode: 0644]
msvc/libmonoutils-common.targets [new file with mode: 0644]
msvc/libmonoutils-common.targets.filters [new file with mode: 0644]
msvc/libmonoutils-posix.targets [new file with mode: 0644]
msvc/libmonoutils-posix.targets.filters [new file with mode: 0644]
msvc/libmonoutils-win32.targets [new file with mode: 0644]
msvc/libmonoutils-win32.targets.filters [new file with mode: 0644]
msvc/libmonoutils.targets [new file with mode: 0644]
msvc/libmonoutils.targets.filters [new file with mode: 0644]
msvc/libmonoutils.vcxproj
msvc/libmonoutils.vcxproj.filters
msvc/libtest.vcxproj
msvc/mono.def [deleted file]
msvc/mono.props
msvc/mono.sln
msvc/mono.vcxproj
msvc/monodis.vcxproj
msvc/monograph.vcxproj
msvc/monoposixhelper.targets [new file with mode: 0644]
msvc/monoposixhelper.targets.filters [new file with mode: 0644]
msvc/monoposixhelper.vcxproj
msvc/monoposixhelper.vcxproj.filters
msvc/monosgen.def [deleted file]
msvc/pedump.vcxproj
msvc/pedump.vcxproj.filters
msvc/profiler-vtune.vcxproj
msvc/scripts/genproj.cs
msvc/test-invoke.vcxproj
msvc/test-metadata.vcxproj
msvc/test_eglib.vcxproj
msvc/teste.vcxproj
packaging/MacSDK/fsharp.py
packaging/MacSDK/msbuild.py
packaging/MacSDK/patches/fsharp-install-netsdk-targets.patch [new file with mode: 0644]
packaging/MacSDK/profile.py
packaging/MacSDKRelease/mono-extensions.py
scripts/ci/clang-thread-sanitizer-blacklist
scripts/ci/collect-coverage.sh
scripts/ci/run-jenkins.sh

index d72a176cb795514a1423bb2f986c4757abccc6f1..0624cbdfa588e30a86795b7dd8d6ec9aaad4bd6f 100644 (file)
@@ -76,6 +76,7 @@
 /mono/metadata/threads* @luhenry @kumpera
 /mono/metadata/threadpool* @luhenry
 /mono/metadata/w32* @luhenry
+/mono/metadata/*-win* @lateralusX @luhenry
 
 /mono/mini @vargaz @kumpera
 /mono/mini/*cfgdump* @lewurm
@@ -95,8 +96,9 @@
 /mono/utils/mono-hwcap* @alexrp
 /mono/utils/mono-mem* @alexrp
 /mono/utils/mono-threads* @luhenry @kumpera
+/mono/utils/*-win* @lateralusX @kumpera
 
-/msvc @ntherning
+/msvc @lateralusX
 /msvc/*profiler* @alexrp
 /msvc/scripts @akoeplinger
 
index c322d249127837da530f6c936ee1f98df0ed6540..12b27f14b08425ea15bae3ce0d3af13287c02368 100644 (file)
@@ -145,4 +145,7 @@ update-llvm-version:
 update-solution-files:
        make update-csproj
        make package-inputs
-       (cd msvc/scripts; make genproj.exe; mono genproj.exe)
+       (cd msvc/scripts; make genproj.exe; mono genproj.exe $(GENPROJ_ARGS))
+
+update-solution-files-with-tests:
+       make "GENPROJ_ARGS=2012 true true" update-solution-files
index e641e67e70cab7b90ef2aef4f564a360c03d3367..4d70a4150a0ae9adc977373137ee3ab153277754 100644 (file)
@@ -18,7 +18,7 @@
   {
     "name": "ms-test-suite", 
     "url": "git@github.com:xamarin/ms-test-suite.git", 
-    "rev": "73c155f76b55839f26ba707d6d40091060e4f5d8", 
+    "rev": "25f495326e141163d59e52ef499227a2f38fe036", 
     "remote-branch": "origin/master", 
     "branch": "master", 
     "directory": "ms-test-suite"
index 7ed072e797d59c86766cf1d57f878e9d851e0926..202e635594240a2235d3aaa8fb6d01f5aa881ee7 100644 (file)
@@ -1,9 +1,11 @@
 check-ms-test-suite: $(CLASS)/nunitlite.dll
        @if $(MAKE) validate-ms-test-suite RESET_VERSIONS=1; then \
                $(MAKE) -C $(MSTESTSUITE_PATH)/conformance build MCS="$(MCS) -debug:portable -t:library -warn:1 -r:$(CLASS)/nunitlite.dll" && \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/systemruntimebringup build MCS="$(MCS) -debug:portable -t:library -warn:1 -r:$(CLASS)/nunitlite.dll" && \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/System.Linq.Expressions build MCS="$(MCS) -debug:portable -t:library -warn:1 -r:$(CLASS)/nunitlite.dll" && \
                $(MAKE) -C $(MSTESTSUITE_PATH)/conformance run NUNIT-CONSOLE="$(RUNTIME) $(CLASS)/nunit-lite-console.exe -exclude=MonoBug,BadTest -format:nunit2" NUNIT_XML_RESULT="-result:$(abs_top_builddir)/acceptance-tests/TestResult-ms-test-suite-conformance.xml" || EXIT_CODE=1; \
-               $(MAKE) -C $(MSTESTSUITE_PATH)/systemruntimebringup build MCS="$(MCS) -debug:portable -warn:1" && \
-               $(MAKE) -C $(MSTESTSUITE_PATH)/systemruntimebringup run MONO="$(RUNTIME)" || EXIT_CODE=1; \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/systemruntimebringup run NUNIT-CONSOLE="$(RUNTIME) $(CLASS)/nunit-lite-console.exe -exclude=MonoBug,BadTest -format:nunit2" NUNIT_XML_RESULT="-result:$(abs_top_builddir)/acceptance-tests/TestResult-ms-test-suite-systemruntimebringup.xml" || EXIT_CODE=1; \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/System.Linq.Expressions run NUNIT-CONSOLE="$(RUNTIME) $(CLASS)/nunit-lite-console.exe -exclude=MonoBug,BadTest -format:nunit2" NUNIT_XML_RESULT="-result:$(abs_top_builddir)/acceptance-tests/TestResult-ms-test-suite-systemlinqexpressions.xml" || EXIT_CODE=1; \
                exit $$EXIT_CODE; \
        else \
                echo "*** [ms-test-suite] Getting the repository failed, you probably don't have access to this Xamarin-internal resource. Skipping."; \
index 090c95d755f8112db5cf6c30df92a9941d9124a4..627333cae84f02a36ee9ca605c96dac4557d9f35 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 090c95d755f8112db5cf6c30df92a9941d9124a4
+Subproject commit 627333cae84f02a36ee9ca605c96dac4557d9f35
index f2c8f2e7fb17e8a55b6679c7d13e3634ec45c639..29022af5d8a94651b2eece93f910559b254ec3f0 160000 (submodule)
@@ -1 +1 @@
-Subproject commit f2c8f2e7fb17e8a55b6679c7d13e3634ec45c639
+Subproject commit 29022af5d8a94651b2eece93f910559b254ec3f0
index 9e04cc7f41899c880807d1d055a24c768670784a..b58ba4282377bcefd48abdc2d62ce6330e079abe 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 9e04cc7f41899c880807d1d055a24c768670784a
+Subproject commit b58ba4282377bcefd48abdc2d62ce6330e079abe
index 7d2f14c151e5a42709de29d68df5022822d01667..5ac6ea81002aa08bca26649d78f1ea3288f0fe8e 100644 (file)
@@ -908,8 +908,11 @@ your profiler.
 For a sample of how to write your own custom profiler look in the
 Mono source tree for in the samples/profiler.c.
 .SH CODE COVERAGE
-Mono ships with a code coverage module in the \f[I]log\f[] profiler.
-Check the `coverage' option on the mprof-report(1) page for more details.
+Mono ships with a code coverage module in the \f[I]coverage\f[] profiler.
+To enable it, pass \fB--profile=coverage\fR to your mono invocation. It
+will by default output a coverage.xml in the current directory. Use
+\fBmono --profile=coverage:help sample.exe\fR for more information on the
+different options.
 .SH AOT PROFILING
 You can improve startup performance by using the AOT profiler.
 .PP
index 56663251bf8e0066c83fd9f700eb835d724a2ff2..45ea4f77b8825258569dafb600aa9461d41a6b5e 100644 (file)
@@ -213,9 +213,6 @@ The following commands are available:
 .IP \[bu] 2
 \f[I]nocounters\f[]: disables sampling of runtime and performance
 counters, which is normally done every 1 second.
-.IP \[bu] 2
-\f[I]coverage\f[]: collect code coverage data. This implies enabling
-the \f[I]calls\f[] option.
 .RE
 .SS Analyzing the profile data
 .PP
@@ -338,8 +335,6 @@ version
 .IP \[bu] 2
 \f[I]counters\f[]: counters samples
 .IP \[bu] 2
-\f[I]coverage\f[]: code coverage data
-.IP \[bu] 2
 \f[I]stats\f[]: event statistics
 .PP
 It is possible to limit some of the data displayed to a timeframe
@@ -411,13 +406,6 @@ By default mprof-report will print the summary data to the console.
 To print it to a file, instead, use the option:
 .PP
 \f[B]--out=FILENAME\f[]
-.SS Processing code coverage data
-.PP
-If you ran the profiler with the \f[I]coverage\f[] option, you can
-process the collected coverage data into an XML file by running
-mprof-report like this:
-.PP
-\f[B]mprof-report --coverage-out=coverage.xml output.mlpd\f[]
 .SS Dealing with profiler slowness
 .PP
 If the profiler needs to collect lots of data, the execution of the
index 0b01eb19ad40fc1592cd78c2ed3aa74f6a1c6a7e..7d39fd4c43ffad92bcf2f284a542482b63f0c4eb 100644 (file)
@@ -309,6 +309,9 @@ namespace Mono.Unix {
 
                public static IntPtr StringToHeap (string s, Encoding encoding)
                {
+                       if (s == null)
+                               return IntPtr.Zero;
+
                        return StringToHeap (s, 0, s.Length, encoding);
                }
 
index 8ae50b98c977fa9af5531e7dbae9227c8d8586cd..9b0ce35d9614123b25bf97468dbdb3a68be03bfd 100644 (file)
@@ -40,6 +40,13 @@ namespace MonoTests.Mono.Unix {
                }
 #endif
 
+               [Test]
+               public void BXC10074 ()
+               {
+                       var result = UnixMarshal.StringToHeap (null, Encoding.ASCII);
+                       Assert.AreEqual (IntPtr.Zero, result, "This used to crash due to a NullReferenceException");
+               }
+
                [Test]
                public void TestStringToHeap ()
                {
index 9772f224ff6cb7c1a9a2915906f3c8ff944e04cc..a204195730d0b763517044c5dd6afeb04029d9c0 100644 (file)
@@ -173,6 +173,15 @@ namespace Mono.Profiler.Log {
                PreStartWorld = 8,
                PostStartWorld = 9,
                PostStartWorldUnlocked = 11,
+               // Following are v13 and older only
+               [Obsolete ("This event is no longer produced.")]
+               MarkBegin = 1,
+               [Obsolete ("This event is no longer produced.")]
+               MarkEnd = 2,
+               [Obsolete ("This event is no longer produced.")]
+               ReclaimBegin = 3,
+               [Obsolete ("This event is no longer produced.")]
+               ReclaimEnd = 4
        }
 
        // mono/metadata/mono-gc.h : MonoGCHandleType
index f6928f74505c4f9dd6390eda8ac5c7b048c4aa66..d40897c3a7e60a8e1a8307a09b6f90b4755b68b9 100644 (file)
@@ -12,7 +12,7 @@ namespace Mono.Profiler.Log {
 
        public sealed class LogProcessor {
 
-               public LogReader Reader { get; }
+               public LogStream Stream { get; }
 
                public LogEventVisitor ImmediateVisitor { get; }
 
@@ -20,18 +20,20 @@ namespace Mono.Profiler.Log {
 
                public LogStreamHeader StreamHeader { get; private set; }
 
+               LogReader _reader;
+
                LogBufferHeader _bufferHeader;
 
                ulong _time;
 
                bool _used;
 
-               public LogProcessor (LogReader reader, LogEventVisitor immediateVisitor, LogEventVisitor sortedVisitor)
+               public LogProcessor (LogStream stream, LogEventVisitor immediateVisitor, LogEventVisitor sortedVisitor)
                {
-                       if (reader == null)
-                               throw new ArgumentNullException (nameof (reader));
+                       if (stream == null)
+                               throw new ArgumentNullException (nameof (stream));
 
-                       Reader = reader;
+                       Stream = stream;
                        ImmediateVisitor = immediateVisitor;
                        SortedVisitor = sortedVisitor;
                }
@@ -66,29 +68,44 @@ namespace Mono.Profiler.Log {
                                throw new InvalidOperationException ("This log processor cannot be reused.");
 
                        _used = true;
-                       StreamHeader = new LogStreamHeader (Reader);
+                       _reader = new LogReader (Stream, true);
+
+                       StreamHeader = new LogStreamHeader (_reader);
 
                        var events = new List<LogEvent> (Environment.ProcessorCount * 1000);
 
-                       while (!Reader.BaseStream.EndOfStream) {
+                       while (!Stream.EndOfStream) {
                                token.ThrowIfCancellationRequested ();
 
-                               _bufferHeader = new LogBufferHeader (StreamHeader, Reader);
+                               _bufferHeader = new LogBufferHeader (StreamHeader, _reader);
+
+                               // Read the entire buffer into a MemoryStream ahead of time to
+                               // reduce the amount of I/O system calls we do. This should be
+                               // fine since the profiler tries to keep buffers small and
+                               // flushes them every second at minimum. This also has the
+                               // advantage that we can use the Position and Length properties
+                               // even if the stream we read the buffer from is actually
+                               // non-seekable.
+                               var stream = new MemoryStream (_reader.ReadBytes (_bufferHeader.Length), false);
+
+                               using (var reader = new LogReader (stream, false)) {
+                                       var oldReader = _reader;
 
-                               // Use the manual position tracking in LogReader so we're
-                               // compatible with non-seekable streams.
-                               var goal = Reader.Position + _bufferHeader.Length;
+                                       _reader = reader;
 
-                               while (Reader.Position < goal) {
-                                       token.ThrowIfCancellationRequested ();
+                                       while (stream.Position < stream.Length) {
+                                               token.ThrowIfCancellationRequested ();
 
-                                       var ev = ReadEvent ();
+                                               var ev = ReadEvent ();
 
-                                       ProcessEvent (ImmediateVisitor, ev);
-                                       events.Add (ev);
+                                               ProcessEvent (ImmediateVisitor, ev);
+                                               events.Add (ev);
 
-                                       if (ev is SynchronizationPointEvent)
-                                               ProcessEvents (events, token);
+                                               if (ev is SynchronizationPointEvent)
+                                                       ProcessEvents (events, token);
+                                       }
+
+                                       _reader = oldReader;
                                }
                        }
 
@@ -97,7 +114,7 @@ namespace Mono.Profiler.Log {
 
                LogEvent ReadEvent ()
                {
-                       var type = Reader.ReadByte ();
+                       var type = _reader.ReadByte ();
                        var basicType = (LogEventType) (type & 0xf);
                        var extType = (LogEventType) (type & 0xf0);
 
@@ -112,7 +129,7 @@ namespace Mono.Profiler.Log {
                                        ev = new AllocationEvent {
                                                ClassPointer = ReadPointer (),
                                                ObjectPointer = ReadObject (),
-                                               ObjectSize = (long) Reader.ReadULeb128 (),
+                                               ObjectSize = (long) _reader.ReadULeb128 (),
                                                Backtrace = ReadBacktrace (extType == LogEventType.AllocationBacktrace),
                                        };
                                        break;
@@ -124,17 +141,17 @@ namespace Mono.Profiler.Log {
                                switch (extType) {
                                case LogEventType.GCEvent:
                                        ev = new GCEvent {
-                                               Type = (LogGCEvent) Reader.ReadByte (),
-                                               Generation = Reader.ReadByte (),
+                                               Type = (LogGCEvent) _reader.ReadByte (),
+                                               Generation = _reader.ReadByte (),
                                        };
                                        break;
                                case LogEventType.GCResize:
                                        ev = new GCResizeEvent {
-                                               NewSize = (long) Reader.ReadULeb128 (),
+                                               NewSize = (long) _reader.ReadULeb128 (),
                                        };
                                        break;
                                case LogEventType.GCMove: {
-                                       var list = new long [(int) Reader.ReadULeb128 ()];
+                                       var list = new long [(int) _reader.ReadULeb128 ()];
 
                                        for (var i = 0; i < list.Length; i++)
                                                list [i] = ReadObject ();
@@ -148,8 +165,8 @@ namespace Mono.Profiler.Log {
                                case LogEventType.GCHandleCreationNoBacktrace:
                                case LogEventType.GCHandleCreationBacktrace:
                                        ev = new GCHandleCreationEvent {
-                                               Type = (LogGCHandleType) Reader.ReadULeb128 (),
-                                               Handle = (long) Reader.ReadULeb128 (),
+                                               Type = (LogGCHandleType) _reader.ReadULeb128 (),
+                                               Handle = (long) _reader.ReadULeb128 (),
                                                ObjectPointer = ReadObject (),
                                                Backtrace = ReadBacktrace (extType == LogEventType.GCHandleCreationBacktrace),
                                        };
@@ -157,8 +174,8 @@ namespace Mono.Profiler.Log {
                                case LogEventType.GCHandleDeletionNoBacktrace:
                                case LogEventType.GCHandleDeletionBacktrace:
                                        ev = new GCHandleDeletionEvent {
-                                               Type = (LogGCHandleType) Reader.ReadULeb128 (),
-                                               Handle = (long) Reader.ReadULeb128 (),
+                                               Type = (LogGCHandleType) _reader.ReadULeb128 (),
+                                               Handle = (long) _reader.ReadULeb128 (),
                                                Backtrace = ReadBacktrace (extType == LogEventType.GCHandleDeletionBacktrace),
                                        };
                                        break;
@@ -199,7 +216,7 @@ namespace Mono.Profiler.Log {
                                        throw new LogException ($"Invalid extended event type ({extType}).");
                                }
 
-                               var metadataType = (LogMetadataType) Reader.ReadByte ();
+                               var metadataType = (LogMetadataType) _reader.ReadByte ();
 
                                switch (metadataType) {
                                case LogMetadataType.Class:
@@ -207,7 +224,7 @@ namespace Mono.Profiler.Log {
                                                ev = new ClassLoadEvent {
                                                        ClassPointer = ReadPointer (),
                                                        ImagePointer = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       Name = _reader.ReadCString (),
                                                };
                                        } else
                                                throw new LogException ("Invalid class metadata event.");
@@ -216,12 +233,12 @@ namespace Mono.Profiler.Log {
                                        if (load) {
                                                ev = new ImageLoadEvent {
                                                        ImagePointer = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       Name = _reader.ReadCString (),
                                                };
                                        } else if (unload) {
                                                ev = new ImageUnloadEvent {
                                                        ImagePointer = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       Name = _reader.ReadCString (),
                                                };
                                        } else
                                                throw new LogException ("Invalid image metadata event.");
@@ -230,14 +247,14 @@ namespace Mono.Profiler.Log {
                                        if (load) {
                                                ev = new AssemblyLoadEvent {
                                                        AssemblyPointer = ReadPointer (),
-                                                       ImagePointer = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       ImagePointer = StreamHeader.FormatVersion >= 14 ? ReadPointer () : 0,
+                                                       Name = _reader.ReadCString (),
                                                };
                                        } else if (unload) {
                                                ev = new AssemblyUnloadEvent {
                                                        AssemblyPointer = ReadPointer (),
-                                                       ImagePointer = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       ImagePointer = StreamHeader.FormatVersion >= 14 ? ReadPointer () : 0,
+                                                       Name = _reader.ReadCString (),
                                                };
                                        } else
                                                throw new LogException ("Invalid assembly metadata event.");
@@ -254,7 +271,7 @@ namespace Mono.Profiler.Log {
                                        } else {
                                                ev = new AppDomainNameEvent {
                                                        AppDomainId = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       Name = _reader.ReadCString (),
                                                };
                                        }
                                        break;
@@ -270,7 +287,7 @@ namespace Mono.Profiler.Log {
                                        } else {
                                                ev = new ThreadNameEvent {
                                                        ThreadId = ReadPointer (),
-                                                       Name = Reader.ReadCString (),
+                                                       Name = _reader.ReadCString (),
                                                };
                                        }
                                        break;
@@ -314,8 +331,8 @@ namespace Mono.Profiler.Log {
                                        ev = new JitEvent {
                                                MethodPointer = ReadMethod (),
                                                CodePointer = ReadPointer (),
-                                               CodeSize = (long) Reader.ReadULeb128 (),
-                                               Name = Reader.ReadCString (),
+                                               CodeSize = (long) _reader.ReadULeb128 (),
+                                               Name = _reader.ReadCString (),
                                        };
                                        break;
                                default:
@@ -333,10 +350,10 @@ namespace Mono.Profiler.Log {
                                        break;
                                case LogEventType.ExceptionClause:
                                        ev = new ExceptionClauseEvent {
-                                               Type = (LogExceptionClause) Reader.ReadByte (),
-                                               Index = (long) Reader.ReadULeb128 (),
+                                               Type = (LogExceptionClause) _reader.ReadByte (),
+                                               Index = (long) _reader.ReadULeb128 (),
                                                MethodPointer = ReadMethod (),
-                                               ObjectPointer = ReadObject (),
+                                               ObjectPointer = StreamHeader.FormatVersion >= 14 ? ReadObject () : 0,
                                        };
                                        break;
                                default:
@@ -344,11 +361,20 @@ namespace Mono.Profiler.Log {
                                }
                                break;
                        case LogEventType.Monitor:
+                               if (StreamHeader.FormatVersion < 14) {
+                                       if (extType.HasFlag (LogEventType.MonitorBacktrace)) {
+                                               extType = LogEventType.MonitorBacktrace;
+                                       } else {
+                                               extType = LogEventType.MonitorNoBacktrace;
+                                       }
+                               }
                                switch (extType) {
                                case LogEventType.MonitorNoBacktrace:
                                case LogEventType.MonitorBacktrace:
                                        ev = new MonitorEvent {
-                                               Event = (LogMonitorEvent) Reader.ReadByte (),
+                                               Event = StreamHeader.FormatVersion >= 14 ?
+                                                                   (LogMonitorEvent) _reader.ReadByte () :
+                                                                   (LogMonitorEvent) ((((byte) type & 0xf0) >> 4) & 0x3),
                                                ObjectPointer = ReadObject (),
                                                Backtrace = ReadBacktrace (extType == LogEventType.MonitorBacktrace),
                                        };
@@ -369,14 +395,14 @@ namespace Mono.Profiler.Log {
                                        HeapObjectEvent hoe = new HeapObjectEvent {
                                                ObjectPointer = ReadObject (),
                                                ClassPointer = ReadPointer (),
-                                               ObjectSize = (long) Reader.ReadULeb128 (),
+                                               ObjectSize = (long) _reader.ReadULeb128 (),
                                        };
 
-                                       var list = new HeapObjectEvent.HeapObjectReference [(int) Reader.ReadULeb128 ()];
+                                       var list = new HeapObjectEvent.HeapObjectReference [(int) _reader.ReadULeb128 ()];
 
                                        for (var i = 0; i < list.Length; i++) {
                                                list [i] = new HeapObjectEvent.HeapObjectReference {
-                                                       Offset = (long) Reader.ReadULeb128 (),
+                                                       Offset = (long) _reader.ReadULeb128 (),
                                                        ObjectPointer = ReadObject (),
                                                };
                                        }
@@ -390,15 +416,15 @@ namespace Mono.Profiler.Log {
                                case LogEventType.HeapRoots: {
                                        // TODO: This entire event makes no sense.
                                        var hre = new HeapRootsEvent ();
-                                       var list = new HeapRootsEvent.HeapRoot [(int) Reader.ReadULeb128 ()];
+                                       var list = new HeapRootsEvent.HeapRoot [(int) _reader.ReadULeb128 ()];
 
-                                       hre.MaxGenerationCollectionCount = (long) Reader.ReadULeb128 ();
+                                       hre.MaxGenerationCollectionCount = (long) _reader.ReadULeb128 ();
 
                                        for (var i = 0; i < list.Length; i++) {
                                                list [i] = new HeapRootsEvent.HeapRoot {
                                                        ObjectPointer = ReadObject (),
-                                                       Attributes = (LogHeapRootAttributes) Reader.ReadULeb128 (),
-                                                       ExtraInfo = (long) Reader.ReadULeb128 (),
+                                                       Attributes = StreamHeader.FormatVersion == 13 ? (LogHeapRootAttributes) _reader.ReadByte () : (LogHeapRootAttributes) _reader.ReadULeb128 (),
+                                                       ExtraInfo = (long) _reader.ReadULeb128 (),
                                                };
                                        }
 
@@ -414,42 +440,46 @@ namespace Mono.Profiler.Log {
                        case LogEventType.Sample:
                                switch (extType) {
                                case LogEventType.SampleHit:
+                                       if (StreamHeader.FormatVersion < 14) {
+                                               // Read SampleType (always set to .Cycles) for versions < 14
+                                               _reader.ReadByte ();
+                                       }
                                        ev = new SampleHitEvent {
                                                ThreadId = ReadPointer (),
                                                UnmanagedBacktrace = ReadBacktrace (true, false),
-                                               ManagedBacktrace = ReadBacktrace (true),
+                                               ManagedBacktrace = ReadBacktrace (true).Reverse ().ToArray (),
                                        };
                                        break;
                                case LogEventType.SampleUnmanagedSymbol:
                                        ev = new UnmanagedSymbolEvent {
                                                CodePointer = ReadPointer (),
-                                               CodeSize = (long) Reader.ReadULeb128 (),
-                                               Name = Reader.ReadCString (),
+                                               CodeSize = (long) _reader.ReadULeb128 (),
+                                               Name = _reader.ReadCString (),
                                        };
                                        break;
                                case LogEventType.SampleUnmanagedBinary:
                                        ev = new UnmanagedBinaryEvent {
-                                               SegmentPointer = ReadPointer (),
-                                               SegmentOffset = (long) Reader.ReadULeb128 (),
-                                               SegmentSize = (long) Reader.ReadULeb128 (),
-                                               FileName = Reader.ReadCString (),
+                                               SegmentPointer = StreamHeader.FormatVersion >= 14 ? ReadPointer () : _reader.ReadSLeb128 (),
+                                               SegmentOffset = (long) _reader.ReadULeb128 (),
+                                               SegmentSize = (long) _reader.ReadULeb128 (),
+                                               FileName = _reader.ReadCString (),
                                        };
                                        break;
                                case LogEventType.SampleCounterDescriptions: {
                                        var cde = new CounterDescriptionsEvent ();
-                                       var list = new CounterDescriptionsEvent.CounterDescription [(int) Reader.ReadULeb128 ()];
+                                       var list = new CounterDescriptionsEvent.CounterDescription [(int) _reader.ReadULeb128 ()];
 
                                        for (var i = 0; i < list.Length; i++) {
-                                               var section = (LogCounterSection) Reader.ReadULeb128 ();
+                                               var section = (LogCounterSection) _reader.ReadULeb128 ();
 
                                                list [i] = new CounterDescriptionsEvent.CounterDescription {
                                                        Section = section,
-                                                       SectionName = section == LogCounterSection.User ? Reader.ReadCString () : string.Empty,
-                                                       CounterName = Reader.ReadCString (),
-                                                       Type = (LogCounterType) Reader.ReadByte (),
-                                                       Unit = (LogCounterUnit) Reader.ReadByte (),
-                                                       Variance = (LogCounterVariance) Reader.ReadByte (),
-                                                       Index = (long) Reader.ReadULeb128 (),
+                                                       SectionName = section == LogCounterSection.User ? _reader.ReadCString () : null,
+                                                       CounterName = _reader.ReadCString (),
+                                                       Type = (LogCounterType) _reader.ReadByte (),
+                                                       Unit = (LogCounterUnit) _reader.ReadByte (),
+                                                       Variance = (LogCounterVariance) _reader.ReadByte (),
+                                                       Index = (long) _reader.ReadULeb128 (),
                                                };
                                        }
 
@@ -463,31 +493,31 @@ namespace Mono.Profiler.Log {
                                        var list = new List<CounterSamplesEvent.CounterSample> ();
 
                                        while (true) {
-                                               var index = (long) Reader.ReadULeb128 ();
+                                               var index = (long) _reader.ReadULeb128 ();
 
                                                if (index == 0)
                                                        break;
 
-                                               var counterType = (LogCounterType) Reader.ReadByte ();
+                                               var counterType = (LogCounterType) _reader.ReadByte ();
 
                                                object value = null;
 
                                                switch (counterType) {
                                                case LogCounterType.String:
-                                                       value = Reader.ReadByte () == 1 ? Reader.ReadCString () : null;
+                                                       value = _reader.ReadByte () == 1 ? _reader.ReadCString () : null;
                                                        break;
                                                case LogCounterType.Int32:
                                                case LogCounterType.Word:
                                                case LogCounterType.Int64:
                                                case LogCounterType.Interval:
-                                                       value = Reader.ReadSLeb128 ();
+                                                       value = _reader.ReadSLeb128 ();
                                                        break;
                                                case LogCounterType.UInt32:
                                                case LogCounterType.UInt64:
-                                                       value = Reader.ReadULeb128 ();
+                                                       value = _reader.ReadULeb128 ();
                                                        break;
                                                case LogCounterType.Double:
-                                                       value = Reader.ReadDouble ();
+                                                       value = _reader.ReadDouble ();
                                                        break;
                                                default:
                                                        throw new LogException ($"Invalid counter type ({counterType}).");
@@ -512,13 +542,13 @@ namespace Mono.Profiler.Log {
                        case LogEventType.Runtime:
                                switch (extType) {
                                case LogEventType.RuntimeJitHelper: {
-                                       var helperType = (LogJitHelper) Reader.ReadByte ();
+                                       var helperType = (LogJitHelper) _reader.ReadByte ();
 
                                        ev = new JitHelperEvent {
                                                Type = helperType,
                                                BufferPointer = ReadPointer (),
-                                               BufferSize = (long) Reader.ReadULeb128 (),
-                                               Name = helperType == LogJitHelper.SpecificTrampoline ? Reader.ReadCString () : string.Empty,
+                                               BufferSize = (long) _reader.ReadULeb128 (),
+                                               Name = helperType == LogJitHelper.SpecificTrampoline ? _reader.ReadCString () : null,
                                        };
                                        break;
                                }
@@ -530,7 +560,7 @@ namespace Mono.Profiler.Log {
                                switch (extType) {
                                case LogEventType.MetaSynchronizationPoint:
                                        ev = new SynchronizationPointEvent {
-                                               Type = (LogSynchronizationPoint) Reader.ReadByte (),
+                                               Type = (LogSynchronizationPoint) _reader.ReadByte (),
                                        };
                                        break;
                                default:
@@ -549,24 +579,24 @@ namespace Mono.Profiler.Log {
 
                long ReadPointer ()
                {
-                       var ptr = Reader.ReadSLeb128 () + _bufferHeader.PointerBase;
+                       var ptr = _reader.ReadSLeb128 () + _bufferHeader.PointerBase;
 
                        return StreamHeader.PointerSize == sizeof (long) ? ptr : ptr & 0xffffffffL;
                }
 
                long ReadObject ()
                {
-                       return Reader.ReadSLeb128 () + _bufferHeader.ObjectBase << 3;
+                       return _reader.ReadSLeb128 () + _bufferHeader.ObjectBase << 3;
                }
 
                long ReadMethod ()
                {
-                       return _bufferHeader.CurrentMethod += Reader.ReadSLeb128 ();
+                       return _bufferHeader.CurrentMethod += _reader.ReadSLeb128 ();
                }
 
                ulong ReadTime ()
                {
-                       return _bufferHeader.CurrentTime += Reader.ReadULeb128 ();
+                       return _bufferHeader.CurrentTime += _reader.ReadULeb128 ();
                }
 
                IReadOnlyList<long> ReadBacktrace (bool actuallyRead, bool managed = true)
@@ -574,7 +604,7 @@ namespace Mono.Profiler.Log {
                        if (!actuallyRead)
                                return Array.Empty<long> ();
 
-                       var list = new long [(int) Reader.ReadULeb128 ()];
+                       var list = new long [(int) _reader.ReadULeb128 ()];
 
                        for (var i = 0; i < list.Length; i++)
                                list [i] = managed ? ReadMethod () : ReadPointer ();
index 4b241ba155d11db44c5850a67b56d7438057bf09..a58211a1510642ca2a0d8eaa9eabc507598f490b 100644 (file)
@@ -3,27 +3,22 @@
 // See the LICENSE file in the project root for more information.
 
 using System;
-using System.Collections.Generic;
 using System.IO;
 using System.Text;
 
 namespace Mono.Profiler.Log {
 
-       public sealed class LogReader : IDisposable {
+       sealed class LogReader : IDisposable {
 
-               public static Encoding Encoding { get; } = Encoding.UTF8;
-
-               public LogStream BaseStream => (LogStream) _reader.BaseStream;
-
-               public long Position { get; private set; }
+               static readonly Encoding _encoding = Encoding.UTF8;
 
                readonly BinaryReader _reader;
 
                byte[] _stringBuffer = new byte [1024];
 
-               public LogReader (LogStream stream, bool leaveOpen)
+               public LogReader (Stream stream, bool leaveOpen)
                {
-                       _reader = new BinaryReader (stream, Encoding, leaveOpen);
+                       _reader = new BinaryReader (stream, _encoding, leaveOpen);
                }
 
                public void Dispose ()
@@ -31,73 +26,54 @@ namespace Mono.Profiler.Log {
                        _reader.Dispose ();
                }
 
-               internal byte ReadByte ()
+               public byte[] ReadBytes (int count)
                {
-                       var b = _reader.ReadByte ();
+                       var bytes = new byte [count];
 
-                       Position += sizeof (byte);
+                       // BinaryReader.ReadBytes doesn't necessarily read the specified
+                       // amount of bytes, so just do it this way.
+                       for (var i = 0; i < bytes.Length; i++)
+                               bytes [i] = ReadByte ();
 
-                       return b;
+                       return bytes;
                }
 
-               internal ushort ReadUInt16 ()
+               public byte ReadByte ()
                {
-                       var i = _reader.ReadUInt16 ();
-
-                       Position += sizeof (ushort);
-
-                       return i;
+                       return _reader.ReadByte ();
                }
 
-               internal int ReadInt32 ()
+               public ushort ReadUInt16 ()
                {
-                       var i = _reader.ReadInt32 ();
-
-                       Position += sizeof (int);
-
-                       return i;
+                       return _reader.ReadUInt16 ();
                }
 
-               internal long ReadInt64 ()
+               public int ReadInt32 ()
                {
-                       var i = _reader.ReadInt64 ();
-
-                       Position += sizeof (long);
-
-                       return i;
+                       return _reader.ReadInt32 ();
                }
 
-               internal ulong ReadUInt64 ()
+               public long ReadInt64 ()
                {
-                       var i = _reader.ReadUInt64 ();
-
-                       Position += sizeof (ulong);
-
-                       return i;
+                       return _reader.ReadInt64 ();
                }
 
-               internal double ReadDouble ()
+               public ulong ReadUInt64 ()
                {
-                       var d = _reader.ReadDouble ();
-
-                       Position += sizeof (double);
-
-                       return d;
+                       return _reader.ReadUInt64 ();
                }
 
-               internal string ReadHeaderString ()
+               public double ReadDouble ()
                {
-                       var bytes = new byte [ReadInt32 ()];
-
-                       // ReadBytes doesn't necessarily read the specified amount of
-                       // bytes, so just do it this way.
-                       for (var i = 0; i < bytes.Length; i++)
-                               bytes [i] = ReadByte ();
+                       return _reader.ReadDouble ();
+               }
 
-                       return Encoding.GetString (bytes);
+               public string ReadHeaderString ()
+               {
+                       return _encoding.GetString (ReadBytes (ReadInt32 ()));
                }
 
-               internal string ReadCString ()
+               public string ReadCString ()
                {
                        var pos = 0;
 
@@ -110,10 +86,10 @@ namespace Mono.Profiler.Log {
                                _stringBuffer [pos++] = val;
                        }
 
-                       return Encoding.GetString (_stringBuffer, 0, pos);
+                       return _encoding.GetString (_stringBuffer, 0, pos);
                }
 
-               internal long ReadSLeb128 ()
+               public long ReadSLeb128 ()
                {
                        long result = 0;
                        var shift = 0;
@@ -135,7 +111,7 @@ namespace Mono.Profiler.Log {
                        return result;
                }
 
-               internal ulong ReadULeb128 ()
+               public ulong ReadULeb128 ()
                {
                        ulong result = 0;
                        var shift = 0;
index 4fd0daf227d415e4cdfd69fa2f5e6a910a31a95b..b52402a91d43e23a359acfadb0fb14a61d7ffae2 100644 (file)
@@ -26,6 +26,8 @@ namespace Mono.Profiler.Log {
                        set => throw new NotSupportedException ();
                }
 
+               readonly byte[] _byteBuffer = new byte [1];
+
                public LogStream (Stream baseStream)
                {
                        if (baseStream == null)
@@ -48,6 +50,14 @@ namespace Mono.Profiler.Log {
                        throw new NotSupportedException ();
                }
 
+               public override int ReadByte ()
+               {
+                       // The base method on Stream is extremely inefficient in that it
+                       // allocates a 1-byte array for every call. Simply use a private
+                       // buffer instead.
+                       return Read (_byteBuffer, 0, sizeof (byte)) == 0 ? -1 : _byteBuffer [0];
+               }
+
                public override int Read (byte[] buffer, int offset, int count)
                {
                        return BaseStream.Read (buffer, offset, count);
index b8eb4413fd7884dfbd6409a8a5d38def590d5bcb..44575028a7a38613d59d698f2c282e06d4ff6100 100644 (file)
@@ -7,6 +7,9 @@ using System;
 namespace Mono.Profiler.Log {
 
        public sealed class LogStreamHeader {
+               
+               const int MinVersion = 13;
+               const int MaxVersion = 14;
 
                const int Id = 0x4d505a01;
 
@@ -41,6 +44,10 @@ namespace Mono.Profiler.Log {
 
                        Version = new Version (reader.ReadByte (), reader.ReadByte ());
                        FormatVersion = reader.ReadByte ();
+
+                       if (FormatVersion < MinVersion || FormatVersion > MaxVersion)
+                               throw new LogException ($"Unsupported MLPD version {FormatVersion}. Should be >= {MinVersion} and <= {MaxVersion}.");
+                       
                        PointerSize = reader.ReadByte ();
                        StartupTime = reader.ReadUInt64 ();
                        TimerOverhead = reader.ReadInt32 ();
index 3b006fd5c9684a4356f5ef5808b6683e39655277..d2e645d2ccbd23152f27b54043cf6ad60308cdd5 100644 (file)
@@ -67,6 +67,14 @@ namespace System.Drawing.Drawing2D {
 
                public LinearGradientBrush (Rectangle rect, Color color1, Color color2, LinearGradientMode linearGradientMode)
                {
+                       if (linearGradientMode < LinearGradientMode.Horizontal || linearGradientMode > LinearGradientMode.BackwardDiagonal) {
+                               throw new InvalidEnumArgumentException (nameof (linearGradientMode), unchecked ((int)linearGradientMode), typeof (LinearGradientMode));
+                       }
+
+                       if (rect.Width == 0 || rect.Height == 0) {
+                               throw new ArgumentException( string.Format ("Rectangle '{0}' cannot have a width or height equal to 0.", rect.ToString ()));
+                       }
+
                        IntPtr nativeObject;
                        Status status = GDIPlus.GdipCreateLineBrushFromRectI (ref rect, color1.ToArgb (), color2.ToArgb (), linearGradientMode, WrapMode.Tile, out nativeObject);
                        GDIPlus.CheckStatus (status);
@@ -81,6 +89,14 @@ namespace System.Drawing.Drawing2D {
 
                public LinearGradientBrush (RectangleF rect, Color color1, Color color2, LinearGradientMode linearGradientMode)
                {
+                       if (linearGradientMode < LinearGradientMode.Horizontal || linearGradientMode > LinearGradientMode.BackwardDiagonal) {
+                               throw new InvalidEnumArgumentException (nameof (linearGradientMode), unchecked ((int)linearGradientMode), typeof (LinearGradientMode));
+                       }
+
+                       if (rect.Width == 0.0 || rect.Height == 0.0) {
+                               throw new ArgumentException (string.Format ("Rectangle '{0}' cannot have a width or height equal to 0.", rect.ToString ()));
+                       }
+
                        IntPtr nativeObject;
                        Status status = GDIPlus.GdipCreateLineBrushFromRect (ref rect, color1.ToArgb (), color2.ToArgb (), linearGradientMode, WrapMode.Tile, out nativeObject);
                        GDIPlus.CheckStatus (status);
@@ -95,6 +111,10 @@ namespace System.Drawing.Drawing2D {
 
                public LinearGradientBrush (Rectangle rect, Color color1, Color color2, float angle, bool isAngleScaleable)
                {
+                       if (rect.Width == 0 || rect.Height == 0) {
+                               throw new ArgumentException (string.Format ("Rectangle '{0}' cannot have a width or height equal to 0.", rect.ToString ()));
+                       }
+
                        IntPtr nativeObject;
                        Status status = GDIPlus.GdipCreateLineBrushFromRectWithAngleI (ref rect, color1.ToArgb (), color2.ToArgb (), angle, isAngleScaleable, WrapMode.Tile, out nativeObject);
                        GDIPlus.CheckStatus (status);
@@ -105,6 +125,10 @@ namespace System.Drawing.Drawing2D {
 
                public LinearGradientBrush (RectangleF rect, Color color1, Color color2, float angle, bool isAngleScaleable)
                {
+                       if (rect.Width == 0 || rect.Height == 0) {
+                               throw new ArgumentException (string.Format ("Rectangle '{0}' cannot have a width or height equal to 0.", rect.ToString ()));
+                       }
+
                        IntPtr nativeObject;
                        Status status = GDIPlus.GdipCreateLineBrushFromRectWithAngle (ref rect, color1.ToArgb (), color2.ToArgb (), angle, isAngleScaleable, WrapMode.Tile, out nativeObject);
                        GDIPlus.CheckStatus (status);
index 937c9ebbc792cae616e995b0e53c62cfb8248d3d..ebf1f86e98c011afcb83248fff95483c59b9ce40 100644 (file)
@@ -324,6 +324,42 @@ namespace MonoTests.System.Drawing.Drawing2D {
                        Assert.AreEqual (32, elements[5], 0.0001, "matrix.5");
                }
 
+               [Test]
+               public void Constructor_Rectangle_InvalidWidthHeight ()
+               {
+                       var emptyWidth = new Rectangle (0, 0, 0, 1);
+                       var emptyHeight = new Rectangle (0, 0, 0, 1);
+
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyWidth, Color.Empty, Color.Empty, 1));
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyHeight, Color.Empty, Color.Empty, 1));
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyWidth, Color.Empty, Color.Empty, LinearGradientMode.BackwardDiagonal));
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyHeight, Color.Empty, Color.Empty, LinearGradientMode.BackwardDiagonal));
+               }
+
+               [Test]
+               public void Constructor_RectangleF_InvalidWidthHeight ()
+               {
+                       var emptyWidth = new RectangleF (0, 0, 0, 1);
+                       var emptyHeight = new RectangleF (0, 0, 0, 1);
+
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyWidth, Color.Empty, Color.Empty, 1));
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyHeight, Color.Empty, Color.Empty, 1));
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyWidth, Color.Empty, Color.Empty, LinearGradientMode.BackwardDiagonal));
+                       Assert.Throws<ArgumentException>(() => new LinearGradientBrush (emptyHeight, Color.Empty, Color.Empty, LinearGradientMode.BackwardDiagonal));
+               }
+
+               [Test]
+               public void Constructor_LinearGradientMode_InvalidMode ()
+               {
+                       var rect = new Rectangle (0, 0, 1, 1);
+                       var rectf = new RectangleF (0, 0, 1, 1);
+
+                       Assert.Throws<InvalidEnumArgumentException>(() => new LinearGradientBrush (rect, Color.Empty, Color.Empty, LinearGradientMode.Horizontal - 1));
+                       Assert.Throws<InvalidEnumArgumentException>(() => new LinearGradientBrush (rectf, Color.Empty, Color.Empty, LinearGradientMode.Horizontal - 1));
+                       Assert.Throws<InvalidEnumArgumentException>(() => new LinearGradientBrush (rect, Color.Empty, Color.Empty, LinearGradientMode.BackwardDiagonal + 1));
+                       Assert.Throws<InvalidEnumArgumentException>(() => new LinearGradientBrush (rectf, Color.Empty, Color.Empty, LinearGradientMode.BackwardDiagonal + 1));
+               }
+
                [Test]
                public void InterpolationColors_Colors_InvalidBlend ()
                {
index 958aa0bb31907f87a009abc73daa667031716b1e..4e6c25725298c8f808a2ac4720fcbd63a8c4dece 100644 (file)
@@ -864,14 +864,6 @@ namespace MonoTests.System.Drawing {
                                        Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetImagePalette (IntPtr.Zero, palette), "GdipSetImagePalette(null,palette)");
                                        Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetImagePalette (bitmap, IntPtr.Zero), "GdipSetImagePalette(bitmap,null)");
                                        Assert.AreEqual (Status.Ok, GDIPlus.GdipSetImagePalette (bitmap, palette), "GdipSetImagePalette");
-
-                                       // change palette to 0 entries
-                                       int flags = Marshal.ReadInt32 (palette);
-                                       Marshal.WriteInt64 (palette, flags << 32);
-                                       Assert.AreEqual (Status.Ok, GDIPlus.GdipSetImagePalette (bitmap, palette), "GdipSetImagePalette/Empty");
-
-                                       Assert.AreEqual (Status.Ok, GDIPlus.GdipGetImagePaletteSize (bitmap, out size), "GdipGetImagePaletteSize/Empty");
-                                       Assert.AreEqual (8, size, "size");
                                }
                                finally {
                                        Marshal.FreeHGlobal (palette);
index c63004422b5b4919cd665c7adc08144b1aee53e8..524e3e8b75007c0163ca85dce45f1bf4c003b4cb 100644 (file)
@@ -45,9 +45,6 @@ namespace System.Json
 
                public void Add (JsonValue item)
                {
-                       if (item == null)
-                               throw new ArgumentNullException ("item");
-
                        list.Add (item);
                }
 
index b267bd7c98e4e10fef7e93e91cebdf63dedca924..baff3cc32b181579cbcbb199970fde60290d7cb4 100644 (file)
@@ -44,6 +44,9 @@ namespace MonoTests.System
                        Assert.AreEqual (JsonType.Array, j.JsonType, "type");
                        var str = j.ToString ();
                        Assert.AreEqual (str, "[1, 2, 3, null]");
+                       ((JsonArray) j).Add (null);
+                       str = j.ToString ();
+                       Assert.AreEqual (str, "[1, 2, 3, null, null]");
                }
 
                // Test that we correctly serialize JsonObject with null elements.
index baa6dd9f0d26cc6a219c5187164013043009be9d..c9fd2354abe136be56708c73b9a2bf30ff6f2098 100644 (file)
@@ -96,7 +96,7 @@ namespace System.Net.Http
                                return timeout;
                        }
                        set {
-                               if (value != System.Threading.Timeout.InfiniteTimeSpan && value < TimeSpan.Zero)
+                               if (value != System.Threading.Timeout.InfiniteTimeSpan && (value <= TimeSpan.Zero || value.Ticks > int.MaxValue))
                                        throw new ArgumentOutOfRangeException ();
 
                                timeout = value;
index 8344c26cc68687b585f7be3a8ef3dd08c2f36328..c87bb7562a16337730f027439914e8bfcfb2b383 100644 (file)
@@ -308,6 +308,18 @@ namespace MonoTests.System.Net.Http
                                Assert.Fail ("#2");
                        } catch (ArgumentOutOfRangeException) {
                        }
+
+                       try {
+                               client.Timeout = TimeSpan.Zero;
+                               Assert.Fail ("#3");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               client.Timeout = new TimeSpan(int.MaxValue + 1L);
+                               Assert.Fail ("#3");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
                }
 
                [Test]
index 25d474679f9508a1f1766d09ed4aa9de96fa4fb7..4dc2f64f9d2f527f91944065facbeb97f970a8eb 100644 (file)
@@ -13,7 +13,7 @@ LIB_REFS += System.Web
 endif
 
 TEST_MCS_FLAGS = -nowarn:618
-TEST_LIB_REFS = System System.Xml
+TEST_LIB_REFS = System System.Xml System.Core
 
 TEST_MONO_PATH = .
 
index 2a690b0e3b2519630622fb0e815026af226ab65b..e351807aa3befe092968fe95930f0c1820320e00 100644 (file)
@@ -330,16 +330,20 @@ namespace System.Net {
                                                        if (current != null) {
                                                                cookies.Add (current);
                                                        }
-                                                       current = new Cookie ();
-                                                       int idx = str.IndexOf ('=');
-                                                       if (idx > 0) {
-                                                               current.Name = str.Substring (0, idx).Trim ();
-                                                               current.Value =  str.Substring (idx + 1).Trim ();
-                                                       } else {
-                                                               current.Name = str.Trim ();
-                                                               current.Value = String.Empty;
+                                                       try {
+                                                               current = new Cookie ();
+                                                               int idx = str.IndexOf ('=');
+                                                               if (idx > 0) {
+                                                                       current.Name = str.Substring (0, idx).Trim ();
+                                                                       current.Value =  str.Substring (idx + 1).Trim ();
+                                                               } else {
+                                                                       current.Name = str.Trim ();
+                                                                       current.Value = String.Empty;
+                                                               }
+                                                               current.Version = version;
+                                                       } catch (CookieException) {
+                                                               current = null;
                                                        }
-                                                       current.Version = version;
                                                }
                                        }
                                        if (current != null) {
index 2f24f73ec0d0efc50f2572ae0a8f235ec5c17e2c..2066cc6a6db490128d6ecf29756286db2e776030 100644 (file)
@@ -285,7 +285,19 @@ namespace MonoTests.System.Net
                        var request = (HttpWebRequest)WebRequest.Create (prefix);
                        var rsp = request.GetResponseAsync ();
                        Assert.IsFalse (rsp.Wait (1000), "Don't send on empty write");
+               }
 
+               [Test]
+               public void HttpRequestIgnoreBadCookies ()
+               {
+                       var port = NetworkHelpers.FindFreePort ();
+                       HttpListener listener = HttpListener2Test.CreateAndStartListener (
+                               "http://127.0.0.1:" + port + "/HttpRequestIgnoreBadCookiesTest/");
+                       NetworkStream ns = HttpListener2Test.CreateNS (port);
+                       HttpListener2Test.Send (ns, "GET /HttpRequestIgnoreBadCookiesTest/?a=b HTTP/1.1\r\nHost: 127.0.0.1\r\nCookie: ELOQUA=GUID=5ca2346347357f4-f877-4eff-96aa-70fe0b677650; ELQSTATUS=OK; WRUID=609099666.123259461695; CommunityServer-UserCookie2101=lv=Thu, 26 Jul 2012 15:25:11 GMT&mra=Mon, 01 Oct 2012 17:40:05 GMT; PHPSESSID=1234dg3opfjb4qafp0oo645; __utma=9761706.1153317537.1357240270.1357240270.1357317902.2; __utmb=9761706.6.10.1357317902; __utmc=9761706; __utmz=9761706.1357240270.1.1.utmcsr=test.testdomain.com|utmccn=(referral)|utmcmd=referral|utmcct=/test/1234\r\n\r\n");
+                       HttpListenerContext ctx = listener.GetContext ();
+                       HttpListenerRequest request = ctx.Request;
+                       Assert.AreEqual ("/HttpRequestIgnoreBadCookiesTest/?a=b", request.Url.PathAndQuery);
                        listener.Close ();
                }
        }
index a6681780275aaf59355fe2336cfd717b03fc97b9..acaa7b2852a9a32556a45e55886f5e1a426795c3 100644 (file)
@@ -23,7 +23,7 @@
 //     Chris Toshok (toshok@ximian.com)
 //
 
-using System;
+using System.Globalization;
 using System.Windows.Markup;
 
 namespace System.Windows.Converters {
@@ -32,22 +32,26 @@ namespace System.Windows.Converters {
        {
                public override bool CanConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return true;
                }
 
                public override bool CanConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return value is Int32Rect;
                }
 
                public override object ConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value == null)
+                               throw new NotSupportedException ("value != null");
+                       return Int32Rect.Parse (value);
                }
 
                public override string ConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value is Int32Rect int32Rect)
+                               return int32Rect.ToString (CultureInfo.InvariantCulture);
+                       return base.ConvertToString (value, context);
                }
        }
 
index 86f5ae77d167c799798c289b31dee975f34f8d13..150c2e8304cd8b2ca2a54e135f3a9fa05b1a77de 100644 (file)
@@ -23,7 +23,7 @@
 //     Chris Toshok (toshok@ximian.com)
 //
 
-using System;
+using System.Globalization;
 using System.Windows.Markup;
 
 namespace System.Windows.Converters {
@@ -32,22 +32,26 @@ namespace System.Windows.Converters {
        {
                public override bool CanConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return true;
                }
 
                public override bool CanConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return value is Point;
                }
 
                public override object ConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value == null)
+                               throw new NotSupportedException ("value != null");
+                       return Point.Parse (value);
                }
 
                public override string ConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value is Point point)
+                               return point.ToString (CultureInfo.InvariantCulture);
+                       return base.ConvertToString (value, context);
                }
        }
 
index 1a607763929e75cb8b38c589a91ea12f85a2c0bd..623c0d688bb1ad969dabf21ff18341ca01456f34 100644 (file)
@@ -22,8 +22,7 @@
 // Authors:
 //     Chris Toshok (toshok@ximian.com)
 //
-
-using System;
+using System.Globalization;
 using System.Windows.Markup;
 
 namespace System.Windows.Converters {
@@ -32,22 +31,26 @@ namespace System.Windows.Converters {
        {
                public override bool CanConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return true;
                }
 
                public override bool CanConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return value is Rect;
                }
 
                public override object ConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value == null)
+                               throw new NotSupportedException ("value != null");
+                       return Rect.Parse (value);
                }
 
                public override string ConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value is Rect rect)
+                               return rect.ToString (CultureInfo.InvariantCulture);
+                       return base.ConvertToString (value, context);
                }
        }
 
index 0a46f1d1e9710cbe798a64e28df4027daddc73a6..2765b7397f80ef7de361872ebad9acbc3ed2d87d 100644 (file)
@@ -45,7 +45,7 @@ namespace System.Windows.Converters {
                public override object ConvertFromString (string value, IValueSerializerContext context)
                {
                        if (value == null)
-                               throw new ArgumentNullException ("value");
+                               throw new NotSupportedException ("value != null");
                        return Size.Parse (value);
                }
 
index c9feb17a7d4cb556da962234341b70cf3a3f0074..6ec7ae6f5899c86be5ff97dd25a8c39516fb61fb 100644 (file)
@@ -23,7 +23,7 @@
 //     Chris Toshok (toshok@ximian.com)
 //
 
-using System;
+using System.Globalization;
 using System.Windows.Markup;
 
 namespace System.Windows.Converters {
@@ -32,22 +32,26 @@ namespace System.Windows.Converters {
        {
                public override bool CanConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return true;
                }
 
                public override bool CanConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       return value is Vector;
                }
 
                public override object ConvertFromString (string value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value == null)
+                               throw new NotSupportedException ("value != null");
+                       return Vector.Parse (value);
                }
 
                public override string ConvertToString (object value, IValueSerializerContext context)
                {
-                       throw new NotImplementedException ();
+                       if (value is Vector vector)
+                               return vector.ToString (CultureInfo.InvariantCulture);
+                       return base.ConvertToString (value, context);
                }
        }
 
index e9c60b528db3bbaa88eab8cad06d50165b7df2c8..49e0548887875bd81ec0f23cf7ac2ccfcc2aeb2c 100644 (file)
@@ -186,22 +186,24 @@ namespace System.Windows.Media {
                        }
                        else
                        {
-                               var parts = source.Split (',');
-                               if (parts.Length != 6)
-                                       throw new FormatException (string.Format ("Invalid Matrix format: {0}", source));
+                               var tokenizer = new NumericListTokenizer (source, CultureInfo.InvariantCulture);
                                double m11;
                                double m12;
                                double m21;
                                double m22;
                                double offsetX;
                                double offsetY;
-                               if (double.TryParse (parts[0], NumberStyles.Float, CultureInfo.InvariantCulture, out m11)
-                                   && double.TryParse (parts[1], NumberStyles.Float, CultureInfo.InvariantCulture, out m12)
-                                   && double.TryParse (parts[2], NumberStyles.Float, CultureInfo.InvariantCulture, out m21)
-                                   && double.TryParse (parts[3], NumberStyles.Float, CultureInfo.InvariantCulture, out m22)
-                                   && double.TryParse (parts[4], NumberStyles.Float, CultureInfo.InvariantCulture, out offsetX)
-                                   && double.TryParse (parts[5], NumberStyles.Float, CultureInfo.InvariantCulture, out offsetY))
+                               if (double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out m11)
+                                   && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out m12)
+                                   && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out m21)
+                                   && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out m22)
+                                   && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out offsetX)
+                                   && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out offsetY))
                                {
+                                       if (!tokenizer.HasNoMoreTokens ())
+                                       {
+                                               throw new InvalidOperationException ("Invalid Matrix format: " + source);
+                                       }
                                        value = new Matrix (m11, m12, m21, m22, offsetX, offsetY);
                                }
                                else
@@ -336,12 +338,6 @@ namespace System.Windows.Media {
                        Prepend (m);
                }
 
-               string IFormattable.ToString (string format,
-                                             IFormatProvider provider)
-               {
-                       return ToString (provider);
-               }
-
                public override string ToString ()
                {
                        return ToString (null);
@@ -349,9 +345,33 @@ namespace System.Windows.Media {
 
                public string ToString (IFormatProvider provider)
                {
-                       return IsIdentity
-                               ? "Identity"
-                               : string.Concat (_m11, ",", _m12, ",", _m21, ",", _m22, ",", _offsetX, ",", _offsetY);
+                       return ToString (null, provider);
+               }
+
+               string IFormattable.ToString (string format,
+                       IFormatProvider provider)
+               {
+                       return ToString (provider);
+               }
+
+               private string ToString (string format, IFormatProvider provider)
+               {
+                       if (IsIdentity)
+                               return "Identity";
+
+                       if (provider == null)
+                               provider = CultureInfo.CurrentCulture;
+
+                       if (format == null)
+                               format = string.Empty;
+
+                       var separator = NumericListTokenizer.GetSeparator (provider);
+
+                       var matrixFormat = string.Format (
+                               "{{0:{0}}}{1}{{1:{0}}}{1}{{2:{0}}}{1}{{3:{0}}}{1}{{4:{0}}}{1}{{5:{0}}}",
+                               format, separator);
+                       return string.Format (provider, matrixFormat,
+                               _m11, _m12, _m21, _m22, _offsetX, _offsetY);
                }
 
                public Point Transform (Point point)
index f2b464be1e5b68808a2d0b9f6168842dae539650..815fee0b1b20146ec6afbcfa9b764aa50df63f04 100644 (file)
@@ -26,8 +26,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.ComponentModel;
+using System.Globalization;
 using System.Windows.Converters;
 using System.Windows.Markup;
 
@@ -109,29 +109,84 @@ namespace System.Windows {
 
                public override int GetHashCode ()
                {
-                       throw new NotImplementedException ();
+                       unchecked
+                       {
+                               var hashCode = _x;
+                               hashCode = (hashCode * 397) ^ _y;
+                               hashCode = (hashCode * 397) ^ _width;
+                               hashCode = (hashCode * 397) ^ _height;
+                               return hashCode;
+                       }
                }
 
                public static Int32Rect Parse (string source)
                {
-                       throw new NotImplementedException ();
+                       if (source == null)
+                               throw new ArgumentNullException ("source");
+                       Int32Rect value;
+                       if (source.Trim () == "Empty")
+                       {
+                               value = Empty;
+                       }
+                       else
+                       {
+                               var tokenizer = new NumericListTokenizer (source, CultureInfo.InvariantCulture);
+                               int x;
+                               int y;
+                               int width;
+                               int height;
+                               if (int.TryParse (tokenizer.GetNextToken (), NumberStyles.Integer, CultureInfo.InvariantCulture, out x)
+                                   && int.TryParse (tokenizer.GetNextToken (), NumberStyles.Integer, CultureInfo.InvariantCulture, out y)
+                                   && int.TryParse (tokenizer.GetNextToken (), NumberStyles.Integer, CultureInfo.InvariantCulture, out width)
+                                   && int.TryParse (tokenizer.GetNextToken (), NumberStyles.Integer, CultureInfo.InvariantCulture, out height))
+                               {
+                                       if (!tokenizer.HasNoMoreTokens ())
+                                       {
+                                               throw new InvalidOperationException ("Invalid Int32Rect format: " + source);
+                                       }
+                                       value = new Int32Rect (x, y, width, height);
+                               }
+                               else
+                               {
+                                       throw new FormatException (string.Format ("Invalid Int32Rect format: {0}", source));
+                               }
+                       }
+                       return value;
                }
 
                public override string ToString ()
                {
-                       if (IsEmpty)
-                               return "Empty";
-                       return String.Format ("{0},{1},{2},{3}", _x, _y, _width, _height);
+                       return ToString (null);
                }
 
                public string ToString (IFormatProvider provider)
                {
-                       throw new NotImplementedException ();
+                       return ToString (null, provider);
                }
 
                string IFormattable.ToString (string format, IFormatProvider provider)
                {
-                       throw new NotImplementedException ();
+                       return ToString (provider);
+               }
+
+               private string ToString (string format, IFormatProvider provider)
+               {
+                       if (IsEmpty)
+                               return "Empty";
+
+                       if (provider == null)
+                               provider = CultureInfo.CurrentCulture;
+
+                       if (format == null)
+                               format = string.Empty;
+
+                       var separator = NumericListTokenizer.GetSeparator (provider);
+
+                       var rectFormat = string.Format (
+                               "{{0:{0}}}{1}{{1:{0}}}{1}{{2:{0}}}{1}{{3:{0}}}",
+                               format, separator);
+                       return string.Format (provider, rectFormat,
+                               _x, _y, _width, _height);
                }
        }
 }
diff --git a/mcs/class/WindowsBase/System.Windows/NumericListTokenizer.cs b/mcs/class/WindowsBase/System.Windows/NumericListTokenizer.cs
new file mode 100644 (file)
index 0000000..81905ec
--- /dev/null
@@ -0,0 +1,102 @@
+using System.Globalization;
+
+namespace System.Windows
+{
+       /// <summary>
+       /// Helper class for parsing serialized data structures from the System.Windows namespace.
+       /// </summary>
+       internal class NumericListTokenizer
+       {
+               private readonly string _str;
+               private readonly char _separator;
+               private int _position;
+
+               private enum Symbol
+               {
+                       Token,
+                       Separator,
+                       Whitspace,
+                       EndOfLine
+               }
+
+               public NumericListTokenizer (string str, IFormatProvider formatProvider)
+               {
+                       _str = str ?? throw new ArgumentNullException (nameof(str));
+                       _separator = GetSeparator (formatProvider ?? throw new ArgumentNullException (nameof(formatProvider)));
+               }
+
+               public static char GetSeparator (IFormatProvider formatProvider)
+               {
+                       // By convention, string representations of target classes always use ';' as a separator
+                       // if the decimal number separator is ','. Otherwise, the separator is ','.
+                       return NumberFormatInfo.GetInstance (formatProvider).NumberDecimalSeparator != "," ? ',' : ';';
+               }
+
+               private Symbol GetCurrentSymbol ()
+               {
+                       if (_position >= _str.Length)
+                               return Symbol.EndOfLine;
+                       if (_str[_position] == _separator)
+                               return Symbol.Separator;
+                       if (char.IsWhiteSpace (_str, _position))
+                               return Symbol.Whitspace;
+                       return Symbol.Token;
+               }
+
+               private void SkipAllWhitespaces ()
+               {
+                       while (GetCurrentSymbol () == Symbol.Whitspace)
+                       {
+                               _position++;
+                       }
+               }
+
+               private void SkipNextDelimeter ()
+               {
+                       SkipAllWhitespaces ();
+                       switch (GetCurrentSymbol ())
+                       {
+                               case Symbol.Token:
+                                       return;
+                               case Symbol.Separator:
+                                       _position++;
+                                       SkipAllWhitespaces ();
+                                       return;
+                               default:
+                                       throw new InvalidOperationException ("Separator not found");
+                       }
+               }
+
+               public bool HasNoMoreTokens ()
+               {
+                       SkipAllWhitespaces ();
+                       return GetCurrentSymbol () == Symbol.EndOfLine;
+               }
+
+               public string GetNextToken ()
+               {
+                       var length = 0;
+                       if (_position == 0)
+                       {
+                               SkipAllWhitespaces ();
+                       }
+                       else
+                       {
+                               SkipNextDelimeter ();
+                       }
+
+                       while (GetCurrentSymbol () == Symbol.Token)
+                       {
+                               _position++;
+                               length++;
+                       }
+
+                       if (length == 0)
+                       {
+                               throw new InvalidOperationException ("Next token not found");
+                       }
+
+                       return _str.Substring (_position - length, length);
+               }
+       }
+}
\ No newline at end of file
index 206b0edd3ab7302b161d03cd78e98c01758da003..af57f92829d43bcffa045a95f4e6dafa3eaff50e 100644 (file)
@@ -147,15 +147,21 @@ namespace System.Windows {
 
                public static Point Parse (string source)
                {
-                       string[] points = source.Split(',');
-
-                       if (points.Length<2)
-                               throw new InvalidOperationException ("source does not contain two numbers");
-                       if (points.Length > 2)
-                               throw new InvalidOperationException ("source contains too many delimiters");
-
-                       CultureInfo ci = CultureInfo.InvariantCulture;
-                       return new Point (Convert.ToDouble(points[0],ci), Convert.ToDouble(points[1],ci));      
+                       if (source == null)
+                               throw new ArgumentNullException ("source");
+                       var tokenizer = new NumericListTokenizer (source, CultureInfo.InvariantCulture);
+                       double x;
+                       double y;
+                       if (!double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out x) ||
+                           !double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out y))
+                       {
+                               throw new FormatException (string.Format ("Invalid Point format: {0}", source));
+                       }
+                       if (!tokenizer.HasNoMoreTokens ())
+                       {
+                               throw new InvalidOperationException ("Invalid Point format: " + source);
+                       }
+                       return new Point(x, y);
                }
 
                public override string ToString ()
@@ -170,18 +176,13 @@ namespace System.Windows {
 
                private string ToString(string format,IFormatProvider formatProvider)
                {
-                       CultureInfo ci = (CultureInfo)formatProvider;
-
-                       if (ci == null)
-                               ci = CultureInfo.CurrentCulture;
-                       string seperator = ci.NumberFormat.NumberDecimalSeparator;
-                       if (seperator.Equals(","))
-                               seperator = ";";
-                       else
-                               seperator = ",";
-                       object[] ob = { this._x, seperator, this._y };
-
-                       return string.Format(formatProvider, "{0:" + format + "}{1}{2:" + format + "}", ob);
+                       if (formatProvider == null)
+                               formatProvider = CultureInfo.CurrentCulture;
+                       if (format == null)
+                               format = string.Empty;
+                       var separator = NumericListTokenizer.GetSeparator (formatProvider);
+                       var pointFormat  = string.Format ("{{0:{0}}}{1}{{1:{0}}}", format, separator);
+                       return string.Format (formatProvider, pointFormat, _x, _y);
                }
 
                string IFormattable.ToString (string format, IFormatProvider formatProvider)
index fd38ec6c25ed169cbff90534070b583eb93b99be..6e2e3d9adbcf1e0b69d3189f4535b5fcc47c11a5 100644 (file)
 //     Sebastien Pouliot  <sebastien@ximian.com>
 //
 
-using System;
 using System.ComponentModel;
 using System.Globalization;
-using System.Text;
 using System.Windows.Converters;
 using System.Windows.Markup;
 using System.Windows.Media;
@@ -121,7 +119,14 @@ namespace System.Windows {
 
                public override int GetHashCode ()
                {
-                       throw new NotImplementedException ();
+                       unchecked
+                       {
+                               var hashCode = _x.GetHashCode ();
+                               hashCode = (hashCode * 397) ^ _y.GetHashCode ();
+                               hashCode = (hashCode * 397) ^ _width.GetHashCode ();
+                               hashCode = (hashCode * 397) ^ _height.GetHashCode ();
+                               return hashCode;
+                       }
                }
 
                public bool Contains (Rect rect)
@@ -296,7 +301,37 @@ namespace System.Windows {
 
                public static Rect Parse (string source)
                {
-                       throw new NotImplementedException ();
+                       if (source == null)
+                               throw new ArgumentNullException ("source");
+                       Rect value;
+                       if (source.Trim () == "Empty")
+                       {
+                               value = Empty;
+                       }
+                       else
+                       {
+                               var tokenizer = new NumericListTokenizer (source, CultureInfo.InvariantCulture);
+                               double x;
+                               double y;
+                               double width;
+                               double height;
+                               if (double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out x)
+                                       && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out y)
+                                       && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out width)
+                                       && double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out height))
+                               {
+                                       if (!tokenizer.HasNoMoreTokens ())
+                                       {
+                                               throw new InvalidOperationException ("Invalid Rect format: " + source);
+                                       }
+                                       value = new Rect (x, y, width, height);
+                               }
+                               else
+                               {
+                                       throw new FormatException (string.Format ("Invalid Rect format: {0}", source));
+                               }
+                       }
+                       return value;
                }
 
                public override string ToString ()
@@ -325,17 +360,12 @@ namespace System.Windows {
                        if (format == null)
                                format = string.Empty;
 
-                       string separator = ",";
-                       NumberFormatInfo numberFormat =
-                               provider.GetFormat (typeof (NumberFormatInfo)) as NumberFormatInfo;
-                       if (numberFormat != null &&
-                           numberFormat.NumberDecimalSeparator == separator)
-                               separator = ";";
+                       var separator = NumericListTokenizer.GetSeparator (provider);
 
-                       string rectFormat = String.Format (
+                       var rectFormat = string.Format (
                                "{{0:{0}}}{1}{{1:{0}}}{1}{{2:{0}}}{1}{{3:{0}}}",
                                format, separator);
-                       return String.Format (provider, rectFormat,
+                       return string.Format (provider, rectFormat,
                                _x, _y, _width, _height);
                }
 
index d42beb95b7388ddf4ccaa2307d76d4af27784fcd..69f497228f0031f609b98b33e9a7896a2074063d 100644 (file)
@@ -78,46 +78,50 @@ namespace System.Windows {
                        Size value;
                        if (source.Trim () == "Empty")
                        {
-                               value = Empty;
+                               return Empty;
                        }
-                       else
+                       var tokenizer = new NumericListTokenizer (source, CultureInfo.InvariantCulture);
+                       double width;
+                       double height;
+                       if (!double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out width) ||
+                           !double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out height))
                        {
-                               var parts = source.Split (',');
-                               if (parts.Length != 2)
-                                       throw new FormatException (string.Format ("Invalid Size format: {0}", source));
-                               double width;
-                               double height;
-                               if (double.TryParse (parts[0], NumberStyles.Float, CultureInfo.InvariantCulture, out width)
-                                       && double.TryParse (parts[1], NumberStyles.Float, CultureInfo.InvariantCulture, out height))
-                               {
-                                       value = new Size (width, height);
-                               }
-                               else
-                               {
-                                       throw new FormatException (string.Format ("Invalid Size format: {0}", source));
-                               }
+                               throw new FormatException (string.Format ("Invalid Size format: {0}", source));
                        }
-                       return value;
+                       if (!tokenizer.HasNoMoreTokens ())
+                       {
+                               throw new InvalidOperationException ("Invalid Size format: " + source);
+                       }
+                       return new Size(width, height);
                }
 
                public override string ToString ()
                {
-                       return ConvertToString (null);
+                       return ConvertToString (null, null);
                }
 
                public string ToString (IFormatProvider provider)
                {
-                       return ConvertToString (provider);
+                       return ConvertToString (null, provider);
                }
 
                string IFormattable.ToString (string format, IFormatProvider provider)
                {
-                       return ConvertToString (provider);
+                       return ConvertToString (format, provider);
                }
 
-               private string ConvertToString (IFormatProvider provider)
+               private string ConvertToString (string format, IFormatProvider provider)
                {
-                       return IsEmpty ? "Empty" : string.Concat (_width, ",", _height);
+                       if (IsEmpty)
+                               return "Empty";
+
+                       if (provider == null)
+                               provider = CultureInfo.CurrentCulture;
+                       if (format == null)
+                               format = string.Empty;
+                       var separator = NumericListTokenizer.GetSeparator (provider);
+                       var vectorFormat  = string.Format ("{{0:{0}}}{1}{{1:{0}}}", format, separator);
+                       return string.Format (provider, vectorFormat, _width, _height);
                }
 
                public bool IsEmpty {
index 5ed53c3e249cbab2c7ca461a8082147f3b16218a..88b23054fdb220d7613a848e75a4096bdce2ed03 100644 (file)
@@ -23,8 +23,8 @@
 //     Chris Toshok (toshok@novell.com)
 //
 
-using System;
 using System.ComponentModel;
+using System.Globalization;
 using System.Windows.Converters;
 using System.Windows.Markup;
 using System.Windows.Media;
@@ -57,12 +57,10 @@ namespace System.Windows {
 
                public override int GetHashCode ()
                {
-                       throw new NotImplementedException ();
-               }
-
-               string IFormattable.ToString (string format, IFormatProvider provider)
-               {
-                       return string.Format (provider, "{0:" + format + "},{1:" + format + "}", _x, _y);
+                       unchecked
+                       {
+                               return (_x.GetHashCode () * 397) ^ _y.GetHashCode ();
+                       }
                }
 
                public static bool Equals (Vector vector1, Vector vector2)
@@ -150,17 +148,47 @@ namespace System.Windows {
 
                public static Vector Parse (string source)
                {
-                       throw new NotImplementedException ();
+                       if (source == null)
+                               throw new ArgumentNullException ("source");
+                       var tokenizer = new NumericListTokenizer (source, CultureInfo.InvariantCulture);
+                       double x;
+                       double y;
+                       if (!double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out x) ||
+                           !double.TryParse (tokenizer.GetNextToken (), NumberStyles.Float, CultureInfo.InvariantCulture, out y))
+                       {
+                               throw new FormatException (string.Format ("Invalid Vector format: {0}", source));
+                       }
+                       if (!tokenizer.HasNoMoreTokens ())
+                       {
+                               throw new InvalidOperationException("Invalid Vector format: " + source);
+                       }
+                       return new Vector(x, y);
                }
 
                public override string ToString ()
                {
-                       return String.Format ("{0},{1}", _x, _y);
+                       return ToString(null);
                }
 
                public string ToString (IFormatProvider provider)
                {
-                       throw new NotImplementedException ();
+                       return ToString (null, provider);
+               }
+
+               string IFormattable.ToString (string format, IFormatProvider provider)
+               {
+                       return ToString (format, provider);
+               }
+
+               private string ToString(string format,IFormatProvider formatProvider)
+               {
+                       if (formatProvider == null)
+                               formatProvider = CultureInfo.CurrentCulture;
+                       if (format == null)
+                               format = string.Empty;
+                       var separator = NumericListTokenizer.GetSeparator (formatProvider);
+                       var vectorFormat  = string.Format ("{{0:{0}}}{1}{{1:{0}}}", format, separator);
+                       return string.Format (formatProvider, vectorFormat, _x, _y);
                }
 
                public double Length {
index 9134aec4b47c67cb6f1198a52a4a826691e684b0..f9e15374908dab1488945271b314cdac024eda4b 100644 (file)
@@ -1,5 +1,6 @@
 using NUnit.Framework;
 using System;
+using System.Globalization;
 using System.Windows.Media;
 
 namespace MonoTests.System.Windows.Media {
@@ -56,7 +57,7 @@ namespace MonoTests.System.Windows.Media {
                {
                        var conv = new MatrixConverter ();
                        var matrix = new Matrix (1, 2, 3, 4, 5, 6);
-                       object obj = conv.ConvertTo (matrix, typeof (string));
+                       object obj = conv.ConvertTo (null, CultureInfo.InvariantCulture, matrix, typeof (string));
                        Assert.AreEqual (typeof (string), obj.GetType ());
                        Assert.AreEqual ("1,2,3,4,5,6", (string)obj);
                }
index cbccb4339bb10d2facce83d497a179b8f504f779..29503407fb18a21579ff502910de5f7849662fcf 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -347,7 +348,7 @@ namespace MonoTests.System.Windows.Media {
                public void ToStringTest ()
                {
                        Matrix m = new Matrix (1, 2, 3, 4, 5, 6);
-                       Assert.AreEqual ("1,2,3,4,5,6", m.ToString());
+                       Assert.AreEqual ("1,2,3,4,5,6", m.ToString(CultureInfo.InvariantCulture));
                        m = Matrix.Identity;
                        Assert.AreEqual ("Identity", m.ToString());
                }
index a5519a462d2e23d384c69cb475d3ecb18a201e7d..2aecc932a3ad0637006c1940bd916f69e40124b8 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -54,7 +55,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertFrom ()
                {
                        Int32RectConverter r = new Int32RectConverter ();
@@ -79,7 +79,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertFrom_negative ()
                {
                        Int32RectConverter r = new Int32RectConverter ();
@@ -90,14 +89,13 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertTo ()
                {
                        Int32RectConverter r = new Int32RectConverter ();
 
                        Int32Rect rect = new Int32Rect (0, 0, 1, 2);
 
-                       object o = r.ConvertTo (rect, typeof (string));
+                       object o = r.ConvertTo (null, CultureInfo.InvariantCulture, rect, typeof (string));
                        
                        Assert.AreEqual (typeof (string), o.GetType());
                        Assert.AreEqual ("0,0,1,2", (string)o);
index 8275f1813b8611bd88151fe3406cc6502b8b4e5d..d65da4e23f20216618d1730912f3680fb7d8c953 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -136,13 +137,12 @@ namespace MonoTests.System.Windows {
                public void ToStringTest ()
                {
                        Int32Rect r = new Int32Rect (1, 2, 3, 4);
-                       Assert.AreEqual ("1,2,3,4", r.ToString());
+                       Assert.AreEqual ("1,2,3,4", r.ToString(CultureInfo.InvariantCulture));
 
                        Assert.AreEqual ("Empty", Int32Rect.Empty.ToString());
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Parse ()
                {
                        Int32Rect r = Int32Rect.Parse ("1, 2, 3, 4");
@@ -150,7 +150,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ParseNegative ()
                {
                        Int32Rect.Parse ("1, 2, -3, -4");
diff --git a/mcs/class/WindowsBase/Test/System.Windows/Int32RectValueSerializerTest.cs b/mcs/class/WindowsBase/Test/System.Windows/Int32RectValueSerializerTest.cs
new file mode 100644 (file)
index 0000000..222b35c
--- /dev/null
@@ -0,0 +1,69 @@
+using System;
+using System.Windows;
+using System.Windows.Converters;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows {
+
+       [TestFixture]
+       public class Int32RectValueSerializerTest
+       {
+               [Test]
+               public void CanConvertFromString ()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertFromString ("", null));
+               }
+
+               [Test]
+               public void CanConvertToString ()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertToString (new Int32Rect (0, 0, 0, 0), null));
+                       Assert.IsFalse (serializer.CanConvertToString ("", null));
+               }
+
+               [Test]
+               public void ConvertFromString ()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       object obj = serializer.ConvertFromString ("3,4,5,6", null);
+                       Assert.AreEqual (typeof (Int32Rect), obj.GetType ());
+                       Assert.AreEqual (new Int32Rect (3, 4, 5, 6), obj);
+               }
+
+               [Test]
+               public void RoundTripConvert()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       var size = new Int32Rect (7, 8, 9, 10);
+                       var obj = serializer.ConvertFromString (serializer.ConvertToString (size, null), null);
+                       Assert.AreEqual (size, obj);
+               }
+
+               [Test]
+               [ExpectedException (typeof (FormatException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringHasInvalidFormat ()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       serializer.ConvertFromString ("a,b,c,d", null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringIsNull ()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       serializer.ConvertFromString (null, null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertToStringShouldThrowExceptionWhenInvalidType ()
+               {
+                       var serializer = new Int32RectValueSerializer ();
+                       serializer.ConvertToString (10, null);
+               }
+       }
+
+}
index a5c335953d57b70bc1db0ea14800089143d6a2d5..9e80eb1dedf9531a9f651a4e23ac6b3ef752dbcf 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -52,7 +53,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertFrom ()
                {
                        PointConverter r = new PointConverter ();
@@ -77,14 +77,13 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertTo ()
                {
                        PointConverter r = new PointConverter ();
 
                        Point rect = new Point (1, 2);
 
-                       object o = r.ConvertTo (rect, typeof (string));
+                       object o = r.ConvertTo (null, CultureInfo.InvariantCulture, rect, typeof (string));
                        
                        Assert.AreEqual (typeof (string), o.GetType());
                        Assert.AreEqual ("1,2", (string)o);
index 521b227d046854591251f6704e13ae443e447460..001f74243eefba11f5d1cde942bef415d7527cec 100644 (file)
@@ -51,20 +51,18 @@ namespace MonoTests.System.Windows {
                        Assert.IsFalse (p.Equals (new object()));
                }
 
-        [Test]
-               [Category ("NotWorking")]
-        public void getHashCodeTest()
-        {
-                       Point p1 = new Point(-5, -4);
-                       Point p2 = new Point(5, 4);
-                       Point p3 = new Point(5, 4);
-
-                       Assert.AreEqual(p2.GetHashCode(), p3.GetHashCode());
-                       Assert.AreEqual(p1.GetHashCode(),p2.GetHashCode());
-        }
+                       [Test]
+                       public void GetHashCodeTest()
+                       {
+                               Point p1 = new Point(-5, -4);
+                               Point p2 = new Point(5, 4);
+                               Point p3 = new Point(5, 4);
+
+                               Assert.AreEqual (p2.GetHashCode (), p3.GetHashCode ());
+                               Assert.AreEqual (p1.GetHashCode (),p2.GetHashCode ());
+                       }
 
                [Test]
-               [Category ("NotWorking")]
                public void ToStringTest ()
                {
                        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-us");
@@ -85,7 +83,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Parse ()
                {
                        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr-fr");
diff --git a/mcs/class/WindowsBase/Test/System.Windows/PointValueSerializerTest.cs b/mcs/class/WindowsBase/Test/System.Windows/PointValueSerializerTest.cs
new file mode 100644 (file)
index 0000000..679cd74
--- /dev/null
@@ -0,0 +1,69 @@
+using System;
+using System.Windows;
+using System.Windows.Converters;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows {
+
+       [TestFixture]
+       public class PointValueSerializerTest
+       {
+               [Test]
+               public void CanConvertFromString ()
+               {
+                       var serializer = new PointValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertFromString ("", null));
+               }
+
+               [Test]
+               public void CanConvertToString ()
+               {
+                       var serializer = new PointValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertToString (new Point (0, 0), null));
+                       Assert.IsFalse (serializer.CanConvertToString ("", null));
+               }
+
+               [Test]
+               public void ConvertFromString ()
+               {
+                       var serializer = new PointValueSerializer ();
+                       object obj = serializer.ConvertFromString ("3.14,4.15", null);
+                       Assert.AreEqual (typeof (Point), obj.GetType ());
+                       Assert.AreEqual (new Point (3.14, 4.15), obj);
+               }
+
+               [Test]
+               public void RoundTripConvert()
+               { 
+                       var serializer = new PointValueSerializer ();
+                       var Point = new Point (1.234, 2.678);
+                       var obj = serializer.ConvertFromString (serializer.ConvertToString (Point, null), null);
+                       Assert.AreEqual (Point, obj);
+               }
+
+               [Test]
+               [ExpectedException (typeof (FormatException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringHasInvalidFormat ()
+               {
+                       var serializer = new PointValueSerializer ();
+                       serializer.ConvertFromString ("a,b", null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringIsNull ()
+               {
+                       var serializer = new PointValueSerializer ();
+                       serializer.ConvertFromString (null, null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertToStringShouldThrowExceptionWhenInvalidType ()
+               {
+                       var serializer = new PointValueSerializer ();
+                       serializer.ConvertToString (10, null);
+               }
+       }
+
+}
index 0fa463fe71e49bcc9a4ca2a53c879646f854672f..0e1161c9dca8921b133010f28d07e3c4eb483a79 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -54,7 +55,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertFrom ()
                {
                        RectConverter r = new RectConverter ();
@@ -79,7 +79,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (ArgumentException))]
                public void ConvertFrom_negative ()
                {
@@ -88,14 +87,13 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertTo ()
                {
                        RectConverter r = new RectConverter ();
 
                        Rect rect = new Rect (0, 0, 1, 2);
 
-                       object o = r.ConvertTo (rect, typeof (string));
+                       object o = r.ConvertTo (null, CultureInfo.InvariantCulture, rect, typeof (string));
                        
                        Assert.AreEqual (typeof (string), o.GetType());
                        Assert.AreEqual ("0,0,1,2", (string)o);
index 6fddadb2f9167de43dcc81e91ce1875d9548c3f6..c1d0dae4d7b56044ff08b2b2cffaaa5edcea08fb 100644 (file)
@@ -327,7 +327,6 @@ namespace MonoTests.System.Windows {
                }
                
                [Test]
-               [Category ("NotWorking")]
                public void ToString_FormatException ()
                {
                        // This test does not currently work because
@@ -343,7 +342,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Parse ()
                {
                        Rect r = Rect.Parse ("1 , 2, 3, 4");
@@ -351,7 +349,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Parse2 ()
                {
                        Rect r = Rect.Parse ("1 2 3 4");
@@ -359,7 +356,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Parse3 ()
                {
                        Rect r = Rect.Parse ("  1 2 3 4  ");
@@ -367,14 +363,12 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ParseWithBothSeparators ()
                {
                        Rect.Parse ("1.0, 3 2.0, 5.0");
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (ArgumentException))]
                public void ParseNegative ()
                {
@@ -382,7 +376,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (InvalidOperationException))] // "Premature string termination encountered."
                public void Parse3Doubles ()
                {
@@ -390,7 +383,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (FormatException))]
                public void ParseInvalidString1 ()
                {
@@ -398,7 +390,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (InvalidOperationException))]
                public void ParseInvalidString3 ()
                {
@@ -406,7 +397,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (FormatException))]
                public void ParseInvalidString4 ()
                {
@@ -414,7 +404,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (InvalidOperationException))]
                public void ParseInvalidString5 ()
                {
@@ -422,14 +411,12 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ParseInvalidString6 ()
                {
                        Rect.Parse ("\n1.0, 2.0, 5.0, 2");
                }
 
                [Test]
-               [Category ("NotWorking")]
                [ExpectedException (typeof (InvalidOperationException))]
                public void ParseInvalidString7 ()
                {
diff --git a/mcs/class/WindowsBase/Test/System.Windows/RectValueSerializerTest.cs b/mcs/class/WindowsBase/Test/System.Windows/RectValueSerializerTest.cs
new file mode 100644 (file)
index 0000000..3a549c3
--- /dev/null
@@ -0,0 +1,77 @@
+using System;
+using System.Windows;
+using System.Windows.Converters;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows {
+
+       [TestFixture]
+       public class RectValueSerializerTest
+       {
+               [Test]
+               public void CanConvertFromString ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertFromString ("", null));
+               }
+
+               [Test]
+               public void CanConvertToString ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertToString (new Rect (0, 0, 0, 0), null));
+                       Assert.IsFalse (serializer.CanConvertToString ("", null));
+               }
+
+               [Test]
+               public void ConvertFromString ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       object obj = serializer.ConvertFromString ("3.14,4.15,5.16,6.17", null);
+                       Assert.AreEqual (typeof (Rect), obj.GetType ());
+                       Assert.AreEqual (new Rect (3.14, 4.15, 5.16, 6.17), obj);
+               }
+
+               [Test]
+               public void RoundTripConvert()
+               { 
+                       var serializer = new RectValueSerializer ();
+                       var rect = new Rect (1.234, 2.678, 3.123, 4.567);
+                       var obj = serializer.ConvertFromString (serializer.ConvertToString (rect, null), null);
+                       Assert.AreEqual (rect, obj);
+               }
+
+               [Test]
+               [ExpectedException (typeof (FormatException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringHasInvalidFormat ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       serializer.ConvertFromString ("a,b,c,d", null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringIsNull ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       serializer.ConvertFromString (null, null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertToStringShouldThrowExceptionWhenInvalidType ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       serializer.ConvertToString (10, null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void ConvertToStringShouldThrowExceptionWhenHeightOrWidthIsNegative ()
+               {
+                       var serializer = new RectValueSerializer ();
+                       var result = serializer.ConvertFromString ("1,2,-1,-2", null);
+               }
+       }
+
+}
index d320100f1a074164c6c944b3ef4d970ba7506ce6..74a0f0b3be1be941591c224aa9415a23fd52f294 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -86,7 +87,7 @@ namespace MonoTests.System.Windows {
 
                        Size rect = new Size (1, 2);
 
-                       object o = r.ConvertTo (rect, typeof (string));
+                       object o = r.ConvertTo (null, CultureInfo.InvariantCulture, rect, typeof (string));
                        
                        Assert.AreEqual (typeof (string), o.GetType());
                        Assert.AreEqual ("1,2", (string)o);
index 6c04fd244d4877230928612956991331737e2277..e9bb8d925c02ea90c4b756afcb747a2e5e266b69 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -158,7 +159,7 @@ namespace MonoTests.System.Windows {
                [Test]
                public void ToStringTest ()
                {
-                       Assert.AreEqual ("1,2", (new Size (1, 2)).ToString ());
+                       Assert.AreEqual ("1,2", (new Size (1, 2)).ToString (CultureInfo.InvariantCulture));
                }
 
                [Test]
index 003e9fc0505f5487032772b4dfd28068d71ff3f9..368085d00cf45b4c73ea4660a6a3b29ce911c392 100644 (file)
@@ -50,7 +50,7 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
+               [ExpectedException (typeof (NotSupportedException))]
                public void ConvertFromStringShouldThrowExceptionWhenStringIsNull ()
                {
                        var serializer = new SizeValueSerializer ();
index 2e394a88152e07d1952ff1022e9b9c659f5d45d0..af6dd725aeaad74c2cf6b3548ab45163bc6baf48 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -52,7 +53,6 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertFrom ()
                {
                        VectorConverter r = new VectorConverter ();
@@ -77,14 +77,13 @@ namespace MonoTests.System.Windows {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void ConvertTo ()
                {
                        VectorConverter r = new VectorConverter ();
 
                        Vector rect = new Vector (1, 2);
 
-                       object o = r.ConvertTo (rect, typeof (string));
+                       object o = r.ConvertTo (null, CultureInfo.InvariantCulture, rect, typeof (string));
                        
                        Assert.AreEqual (typeof (string), o.GetType());
                        Assert.AreEqual ("1,2", (string)o);
index 2f203729adf21c3f8fe9e8ed17f5303fa284fd7b..20e64e3134ee603583331ea904071c2af11c9acd 100644 (file)
@@ -24,6 +24,7 @@
 //
 
 using System;
+using System.Globalization;
 using System.Windows;
 using System.Windows.Media;
 using NUnit.Framework;
@@ -56,7 +57,7 @@ namespace MonoTests.System.Windows {
                public void ToStringTest ()
                {
                        Vector v = new Vector (4, 5);
-                       Assert.AreEqual ("4,5", v.ToString());
+                       Assert.AreEqual ("4,5", v.ToString(CultureInfo.InvariantCulture));
                }
 
                [Test]
diff --git a/mcs/class/WindowsBase/Test/System.Windows/VectorValueSerializerTest.cs b/mcs/class/WindowsBase/Test/System.Windows/VectorValueSerializerTest.cs
new file mode 100644 (file)
index 0000000..3b79a99
--- /dev/null
@@ -0,0 +1,69 @@
+using System;
+using System.Windows;
+using System.Windows.Converters;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows {
+
+       [TestFixture]
+       public class VectorValueSerializerTest
+       {
+               [Test]
+               public void CanConvertFromString ()
+               {
+                       var serializer = new VectorValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertFromString ("", null));
+               }
+
+               [Test]
+               public void CanConvertToString ()
+               {
+                       var serializer = new VectorValueSerializer ();
+                       Assert.IsTrue (serializer.CanConvertToString (new Vector (0, 0), null));
+                       Assert.IsFalse (serializer.CanConvertToString ("", null));
+               }
+
+               [Test]
+               public void ConvertFromString ()
+               {
+                       var serializer = new VectorValueSerializer ();
+                       object obj = serializer.ConvertFromString ("3.14,4.15", null);
+                       Assert.AreEqual (typeof (Vector), obj.GetType ());
+                       Assert.AreEqual (new Vector (3.14, 4.15), obj);
+               }
+
+               [Test]
+               public void RoundTripConvert()
+               { 
+                       var serializer = new VectorValueSerializer ();
+                       var Vector = new Vector (1.234, 2.678);
+                       var obj = serializer.ConvertFromString (serializer.ConvertToString (Vector, null), null);
+                       Assert.AreEqual (Vector, obj);
+               }
+
+               [Test]
+               [ExpectedException (typeof (FormatException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringHasInvalidFormat ()
+               {
+                       var serializer = new VectorValueSerializer ();
+                       serializer.ConvertFromString ("a,b", null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertFromStringShouldThrowExceptionWhenStringIsNull ()
+               {
+                       var serializer = new VectorValueSerializer ();
+                       serializer.ConvertFromString (null, null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void ConvertToStringShouldThrowExceptionWhenInvalidType ()
+               {
+                       var serializer = new VectorValueSerializer ();
+                       serializer.ConvertToString (10, null);
+               }
+       }
+
+}
index daf139486885cd34858f23dffb38efdebdcceef1..e672ffb286ea4120bd869a6406de9fdd0f2a440e 100644 (file)
     <Compile Include="System.Windows\IWeakEventListener.cs" />\r
     <Compile Include="System.Windows\LocalValueEntry.cs" />\r
     <Compile Include="System.Windows\LocalValueEnumerator.cs" />\r
+    <Compile Include="System.Windows\NumericListTokenizer.cs" />\r
     <Compile Include="System.Windows\Point.cs" />\r
     <Compile Include="System.Windows\PointConverter.cs" />\r
     <Compile Include="System.Windows\PropertyChangedCallback.cs" />\r
index c36c7ce5608ab796e4a659abf9e57fae4d39ae48..649a1a450e38295eec0186b80bef937683b5918e 100644 (file)
@@ -102,6 +102,7 @@ System.Windows/RectConverter.cs
 System.Windows/Size.cs
 System.Windows/SizeConverter.cs
 System.Windows/SplashScreen.cs
+System.Windows/NumericListTokenizer.cs
 System.Windows/ValidateValueCallback.cs
 System.Windows/Vector.cs
 System.Windows/VectorConverter.cs
index 5fba4fc771069f5e0a6d9d4a0e42338e1ab55547..fa7855a690f33613fb46449ff29d8e919b2e5664 100644 (file)
@@ -25,16 +25,20 @@ System.Windows/DependencyObjectTypeTest.cs
 System.Windows/DependencyPropertyTest.cs
 System.Windows/Int32RectTest.cs
 System.Windows/Int32RectConverterTest.cs
+System.Windows/Int32RectValueSerializerTest.cs
 System.Windows/PointTest.cs
 System.Windows/PointConverterTest.cs
+System.Windows/PointValueSerializerTest.cs
 System.Windows/PropertyMetadataTest.cs
 System.Windows/RectTest.cs
 System.Windows/RectConverterTest.cs
+System.Windows/RectValueSerializerTest.cs
 System.Windows/SizeTest.cs
 System.Windows/SizeConverterTest.cs
 System.Windows/SizeValueSerializerTest.cs
 System.Windows/VectorTest.cs
 System.Windows/VectorConverterTest.cs
+System.Windows/VectorValueSerializerTest.cs
 System.Windows.Markup/ConstructorArgumentAttributeTest.cs
 System.Windows.Markup/ContentPropertyAttributeTest.cs
 System.Windows.Markup/ContentWrapperAttributeTest.cs
index 205fadc0026b852b25a17c83bdd4cf76aaff0239..1cf54bf5b2bbf408cea543afcdd4ae1994f922bf 100644 (file)
@@ -41,6 +41,8 @@ using System.Security;
 using System.Text;
 using System.Security.AccessControl;
 
+using Microsoft.Win32.SafeHandles;
+
 namespace System.IO {
        
        [Serializable]
@@ -424,39 +426,57 @@ namespace System.IO {
                        return EnumerateFileSystemInfos (FullPath, searchPattern, searchOption);
                }
 
-               static internal IEnumerable<FileSystemInfo> EnumerateFileSystemInfos (string full, string searchPattern, SearchOption searchOption)
+               static internal IEnumerable<FileSystemInfo> EnumerateFileSystemInfos (string basePath, string searchPattern, SearchOption searchOption)
                {
-                       string path_with_pattern = Path.Combine (full, searchPattern);
-                       IntPtr handle = IntPtr.Zero;
-                       MonoIOError error;
-                       FileAttributes rattr;
-                       bool subdirs = searchOption == SearchOption.AllDirectories;
+                       Path.Validate (basePath);
+
+                       SafeFindHandle findHandle = null;
 
-                       Path.Validate (full);
-                       
                        try {
-                               string s = MonoIO.FindFirst (full, path_with_pattern, out rattr, out error, out handle);
-                               if (s == null)
+                               string filePath;
+                               int nativeAttrs;
+
+                               string basePathWithPattern = Path.Combine (basePath, searchPattern);
+
+                               int nativeError;
+                               try {} finally {
+                                       findHandle = new SafeFindHandle (MonoIO.FindFirstFile (basePathWithPattern, out filePath, out nativeAttrs, out nativeError));
+                               }
+
+                               if (findHandle.IsInvalid) {
+                                       MonoIOError error = (MonoIOError) nativeError;
+                                       if (error != MonoIOError.ERROR_FILE_NOT_FOUND)
+                                               throw MonoIO.GetException (Path.GetDirectoryName (basePathWithPattern), error);
+
                                        yield break;
-                               if (error != 0)
-                                       throw MonoIO.GetException (Path.GetDirectoryName (path_with_pattern), (MonoIOError) error);
+                               }
 
                                do {
-                                       if (((rattr & FileAttributes.ReparsePoint) == 0)){
-                                               if ((rattr & FileAttributes.Directory) != 0)
-                                                       yield return new DirectoryInfo (s);
+                                       if (filePath == null)
+                                               yield break;
+
+                                       if (filePath == "." || filePath == "..")
+                                               continue;
+
+                                       FileAttributes attrs = (FileAttributes) nativeAttrs;
+
+                                       string fullPath = Path.Combine (basePath, filePath);
+
+                                       if ((attrs & FileAttributes.ReparsePoint) == 0) {
+                                               if ((attrs & FileAttributes.Directory) != 0)
+                                                       yield return new DirectoryInfo (fullPath);
                                                else
-                                                       yield return new FileInfo (s);
+                                                       yield return new FileInfo (fullPath);
                                        }
 
-                                       if (((rattr & FileAttributes.Directory) != 0) && subdirs)
-                                               foreach (FileSystemInfo child in EnumerateFileSystemInfos (s, searchPattern, searchOption))
+                                       if ((attrs & FileAttributes.Directory) != 0 && searchOption == SearchOption.AllDirectories) {
+                                               foreach (FileSystemInfo child in EnumerateFileSystemInfos (fullPath, searchPattern, searchOption))
                                                        yield return child;
-
-                               } while ((s = MonoIO.FindNext (handle, out rattr, out error)) != null);
+                                       }
+                               } while (MonoIO.FindNextFile (findHandle.DangerousGetHandle (), out filePath, out nativeAttrs, out int _));
                        } finally {
-                               if (handle != IntPtr.Zero)
-                                       MonoIO.FindClose (handle);
+                               if (findHandle != null)
+                                       findHandle.Dispose ();
                        }
                }
                
index 0dac31494ba7938f586301104382f31e55e721d8..38c8cf3de735623fa52e6cd144ae626ceaed1fe7 100644 (file)
@@ -174,9 +174,6 @@ namespace System.IO
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                public extern static bool RemoveDirectory (string path, out MonoIOError error);
 
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public extern static string [] GetFileSystemEntries (string path, string path_with_pattern, int attrs, int mask, out MonoIOError error);
-
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                public extern static string GetCurrentDirectory (out MonoIOError error);
 
@@ -229,14 +226,6 @@ namespace System.IO
                //
                // Find file methods
                //
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public extern static string FindFirst (string path, string pattern, out FileAttributes result_attr, out MonoIOError error, out IntPtr handle);
-               
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public extern static string FindNext (IntPtr handle, out FileAttributes result_attr, out MonoIOError error);
-               
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public extern static int FindClose (IntPtr handle);
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                public extern static IntPtr FindFirstFile (string path_with_pattern, out string fileName, out int fileAttr, out int error);
index 9312f1da9fe53725d40125713af0238d09eeb27a..9c642ffa0062445fd98db4fe2ef938197a3fade6 100644 (file)
@@ -257,6 +257,9 @@ namespace System.Reflection.Emit
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private static extern void basic_init (AssemblyBuilder ab);
 
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               static extern void UpdateNativeCustomAttributes (AssemblyBuilder ab);
+
                /* Keep this in sync with codegen.cs in mcs */
                private const AssemblyBuilderAccess COMPILER_ACCESS = (AssemblyBuilderAccess) 0x800;
 
@@ -949,6 +952,12 @@ namespace System.Reflection.Emit
                                cattrs = new CustomAttributeBuilder [1];
                                cattrs [0] = customBuilder;
                        }
+
+                       /*
+                       Only update the native list of custom attributes if we're adding one that is known to change dynamic execution behavior.
+                       */
+                       if (customBuilder.Ctor != null && customBuilder.Ctor.DeclaringType == typeof (System.Runtime.CompilerServices.RuntimeCompatibilityAttribute))
+                               UpdateNativeCustomAttributes (this);
                }
 
                [ComVisible (true)]
index 128b8c983b134408a2056bddd9aec8cd09fc2c2e..e94898a5c3863487d63de1900d08563c96fae40c 100644 (file)
@@ -1239,7 +1239,7 @@ namespace System.Runtime.InteropServices
 
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern static IntPtr BufferToBSTR (Array ptr, int slen);
+               extern static IntPtr BufferToBSTR (Array ptr, int slen);
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static IntPtr UnsafeAddrOfPinnedArrayElement (Array arr, int index);
index ceef9625fe5ae26c34889a8bdeffc8f5ee47d38b..07200f28b4e90e0b126da82922e3c8aa6cbf1619 100644 (file)
@@ -114,6 +114,7 @@ namespace System.Security.Cryptography {
                                persisted = true;
                                this.FromXmlString (store.KeyValue);
                        }
+                       privateKeyExportable = (parameters.Flags & CspProviderFlags.UseNonExportableKey) == 0;
                }
 
                ~DSACryptoServiceProvider ()
index a8ebc812da3aff1068f07cb3114b0099cdc870a0..16fdfa15e5eb7a9d3b191fa793c83a036e558b7b 100644 (file)
@@ -111,6 +111,7 @@ namespace System.Security.Cryptography {
                        store = new KeyPairPersistence (p);
                        bool exists = store.Load ();
                        bool required = (p.Flags & CspProviderFlags.UseExistingKey) != 0;
+                       privateKeyExportable = (p.Flags & CspProviderFlags.UseNonExportableKey) == 0;
 
                        if (required && !exists)
                                throw new CryptographicException ("Keyset does not exist");
index b272a20f00cf4bf1ed0c970d89779cac3f9ae511..b78b5536b8e4522a1992eacf85c1affea0975326 100644 (file)
@@ -42,12 +42,14 @@ namespace System
                        var displayName = DeserializeString (ref input);
                        var standardName = DeserializeString (ref input);
                        var daylightName = DeserializeString (ref input);
-                       var rules = new List<TimeZoneInfo.AdjustmentRule> ();
+                       List<TimeZoneInfo.AdjustmentRule> rules = null;
                        while (input [0] != ';') {
+                               if (rules == null)
+                                       rules = new List<TimeZoneInfo.AdjustmentRule> ();
                                rules.Add (DeserializeAdjustmentRule (ref input));
                        }
                        var offsetSpan = TimeSpan.FromMinutes (offset);
-                       return TimeZoneInfo.CreateCustomTimeZone (tzId, offsetSpan, displayName, standardName, daylightName, rules.ToArray ());
+                       return TimeZoneInfo.CreateCustomTimeZone (tzId, offsetSpan, displayName, standardName, daylightName, rules?.ToArray ());
                }
 
                public string ToSerializedString ()
index 1c5cdd3ae820dc363687a19efbfe553ca31b6b20..25d9e9a39becbcd5e395d7c057ecaf11afc3d312 100644 (file)
@@ -624,7 +624,7 @@ namespace System
                        else
                                ParseRegTzi(adjustmentRules, 1, 9999, reg_tzi);
 
-                       return CreateCustomTimeZone (id, baseUtcOffset, display_name, standard_name, daylight_name, ValidateRules (adjustmentRules).ToArray ());
+                       return CreateCustomTimeZone (id, baseUtcOffset, display_name, standard_name, daylight_name, ValidateRules (adjustmentRules));
                }
 
                private static void ParseRegTzi (List<AdjustmentRule> adjustmentRules, int start_year, int end_year, byte [] buffer)
@@ -1231,8 +1231,11 @@ namespace System
                        return new DateTime (year, transition.Month, day) + transition.TimeOfDay.TimeOfDay;
                }
 
-               static List<AdjustmentRule> ValidateRules (List<AdjustmentRule> adjustmentRules)
+               static AdjustmentRule[] ValidateRules (List<AdjustmentRule> adjustmentRules)
                {
+                       if (adjustmentRules == null || adjustmentRules.Count == 0)
+                               return null;
+
                        AdjustmentRule prev = null;
                        foreach (AdjustmentRule current in adjustmentRules.ToArray ()) {
                                if (prev != null && prev.DateEnd > current.DateStart) {
@@ -1240,7 +1243,7 @@ namespace System
                                }
                                prev = current;
                        }
-                       return adjustmentRules;
+                       return adjustmentRules.ToArray ();
                }
 
 #if LIBC || MONOTOUCH
@@ -1404,13 +1407,13 @@ namespace System
                                }
                                tz = CreateCustomTimeZone (id, baseUtcOffset, id, standardDisplayName);
                        } else {
-                               tz = CreateCustomTimeZone (id, baseUtcOffset, id, standardDisplayName, daylightDisplayName, ValidateRules (adjustmentRules).ToArray ());
+                               tz = CreateCustomTimeZone (id, baseUtcOffset, id, standardDisplayName, daylightDisplayName, ValidateRules (adjustmentRules));
                        }
 
                        if (storeTransition && transitions.Count > 0) {
                                tz.transitions = transitions;
-                               tz.supportsDaylightSavingTime = true;
                        }
+                       tz.supportsDaylightSavingTime = adjustmentRules.Count > 0;
 
                        return tz;
                }
index 4528027b24e9bc730bcb914ef0f2573189f1cc90..7e01ce544d7240a073f1ca6fbc32d2cf3cb54c71 100644 (file)
@@ -2709,8 +2709,10 @@ namespace MonoTests.System.IO
                        File.Delete (path2);
 
                        try {
-                               symlink (path1, path2);
-                               symlink (path2, path1);
+                               if (symlink (path1, path2) != 0)
+                                       Assert.Fail ("symlink #1 failed with errno={0}", Marshal.GetLastWin32Error ());
+                               if (symlink (path2, path1) != 0)
+                                       Assert.Fail ("symlink #2 failed with errno={0}", Marshal.GetLastWin32Error ());
 
                                Assert.IsTrue (File.Exists (path1), "File.Exists must return true for path1 symlink loop");
                                Assert.IsTrue (File.Exists (path2), "File.Exists must return true for path2 symlink loop");
index fcf6284a00e429177e7982527ec5d406ba9eb426..f8c898d2f00095dc76ad39d04fed5704732b807f 100644 (file)
@@ -610,6 +610,102 @@ namespace MonoTests.System.Reflection.Emit
                        invoke (444);
                }
 
+               static Func<int> EmitDelegate (DynamicMethod dm) {
+                       ILGenerator il = dm.GetILGenerator ();
+                       var ret_val = il.DeclareLocal (typeof (int));
+                       var leave_label = il.DefineLabel ();
+
+                       //ret = 1;
+                       il.Emit (OpCodes.Ldc_I4, 1);
+                       il.Emit (OpCodes.Stloc, ret_val);
+
+                       // try {
+                       il.BeginExceptionBlock ();
+                       //      throw "hello";
+                       il.Emit (OpCodes.Ldstr, "hello");
+                       il.Emit (OpCodes.Throw, typeof (string));
+                       //      ret = 2
+                       il.Emit (OpCodes.Ldc_I4, 2);
+                       il.Emit (OpCodes.Stloc, ret_val);
+                       // }
+                       il.Emit (OpCodes.Leave, leave_label);
+                       //catch (string)
+                       il.BeginCatchBlock (typeof (string));
+                       il.Emit (OpCodes.Pop);
+                       //      ret = 3
+                       il.Emit (OpCodes.Ldc_I4, 3);
+                       il.Emit (OpCodes.Stloc, ret_val);
+                       //}
+                       il.Emit (OpCodes.Leave, leave_label);
+                       il.EndExceptionBlock ();
+
+                       il.MarkLabel (leave_label);
+                       //return ret;
+                       il.Emit (OpCodes.Ldloc, ret_val);
+                       il.Emit (OpCodes.Ret);
+
+                       var dele = (Func<int>)dm.CreateDelegate (typeof (Func<int>));
+                       return dele;
+               }
+
+               [Test] //see bxc #59334
+               public void ExceptionWrapping ()
+               {
+                       AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (new AssemblyName ("ehatevfheiw"), AssemblyBuilderAccess.Run);
+                       AssemblyBuilder ab2 = AppDomain.CurrentDomain.DefineDynamicAssembly (new AssemblyName ("ddf4234"), AssemblyBuilderAccess.Run);
+                       CustomAttributeBuilder cab = new CustomAttributeBuilder (
+                                       typeof (RuntimeCompatibilityAttribute).GetConstructor (new Type [0]),
+                                       new object [0],
+                                       new PropertyInfo[] { typeof (RuntimeCompatibilityAttribute).GetProperty ("WrapNonExceptionThrows") },
+                                       new object[] { true });
+                       ab2.SetCustomAttribute (cab);
+
+                       AssemblyBuilder ab3 = AppDomain.CurrentDomain.DefineDynamicAssembly (new AssemblyName ("frfhfher"), AssemblyBuilderAccess.Run);
+                       //1 NamedArg. Property name: WrapNonExceptionThrows value: true (0x01) 
+                       byte[] blob = new byte[] { 0x01, 0x00, 0x01, 0x00, 0x54, 0x02, 0x16, 0x57, 0x72, 0x61, 0x70, 0x4E, 0x6F, 0x6E, 0x45, 0x78,
+                               0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x73, 0x01 };
+                       ab3.SetCustomAttribute (typeof (RuntimeCompatibilityAttribute).GetConstructor (new Type [0]), blob);
+               
+                       DynamicMethod invoke_no_module = new DynamicMethod("throw_1", typeof (int), new Type [0]);
+                       DynamicMethod invoke_with_module = new DynamicMethod("throw_2", typeof (int), new Type [0], typeof (DynamicMethodTest).Module);
+                       DynamicMethod invoke_with_ab = new DynamicMethod("throw_3", typeof (int), new Type [0], ab.ManifestModule);
+                       DynamicMethod invoke_with_ab2 = new DynamicMethod("throw_4", typeof (int), new Type [0], ab2.ManifestModule);
+                       DynamicMethod invoke_with_ab3 = new DynamicMethod("throw_5", typeof (int), new Type [0], ab3.ManifestModule);
+
+                       int result = 0;
+                       try {
+                               int res = EmitDelegate (invoke_no_module)();
+                               Assert.AreEqual (3, res, "invoke_no_module bad return value");
+                       } catch (RuntimeWrappedException e) {
+                               Assert.Fail ("invoke_no_module threw RWE");
+                       }
+
+                       try {
+                               int res = EmitDelegate (invoke_with_module)();
+                               Assert.Fail ("invoke_with_module did not throw RWE");
+                       } catch (RuntimeWrappedException e) {
+                       }
+
+                       try {
+                               int res = EmitDelegate (invoke_with_ab)();
+                               Assert.AreEqual (3, res, "invoke_with_ab bad return value");
+                       } catch (RuntimeWrappedException e) {
+                               Assert.Fail ("invoke_with_ab threw RWE");
+                       }
+
+                       try {
+                               int res = EmitDelegate (invoke_with_ab2)();
+                               Assert.Fail ("invoke_with_ab2 did not throw RWE");
+                       } catch (RuntimeWrappedException e) {
+                       }
+
+                       try {
+                               int res = EmitDelegate (invoke_with_ab3)();
+                               Assert.Fail ("invoke_with_a3 did not throw RWE");
+                       } catch (RuntimeWrappedException e) {
+                       }                       
+               }
+
 #if !MONODROID
                // RUNTIME: crash
                [Test]
index a31821924c7607f96df896764acb854ff9d61dcf..c943d6859ca60634cc75f9e2278d10163aab871f 100644 (file)
@@ -480,5 +480,97 @@ namespace MonoTests.System.Reflection.Emit
                        Assert.AreEqual (0x02, il [14]); //typedef
                        Assert.AreEqual (0x01, il [19]); //typeref
                }
+
+               [Test]
+               public void MethodRefTokenSame () {
+                       // Get the same non-virtual method from a base and a derived type so
+                       // that the MemberInfo:DeclaredType differs but the tokens are the same.
+                       //
+                       // Regression test for bugzilla #59364
+
+                       DefineBasicMethod ();
+
+                       var m1 = typeof (object).GetMethod ("GetType");
+                       var m2 = typeof (string).GetMethod ("GetType");
+
+                       var value_getter = typeof (RuntimeMethodHandle).GetProperty ("Value").GetMethod;
+
+                       var il = il_gen;
+
+                       var loc = il.DeclareLocal (typeof (RuntimeMethodHandle));
+
+                       // return ((int)(RuntimeMethodHandle (m1).Value == RuntimeMethodHandle (m2).Value)).ToString ()
+                       il.Emit (OpCodes.Ldtoken, m1);
+                       il.Emit (OpCodes.Stloc, loc);
+                       il.Emit (OpCodes.Ldloca, loc);
+                       il.Emit (OpCodes.Call, value_getter);
+                       il.Emit (OpCodes.Ldtoken, m2);
+                       il.Emit (OpCodes.Stloc, loc);
+                       il.Emit (OpCodes.Ldloca, loc);
+                       il.Emit (OpCodes.Call, value_getter);
+                       il.Emit (OpCodes.Ceq);
+                       il.Emit (OpCodes.Box, typeof (Int32));
+                       il.Emit (OpCodes.Callvirt, typeof (object).GetMethod ("ToString"));
+                       il.Emit (OpCodes.Ret);
+
+                       var baked = tb.CreateType ();
+
+                       var x = Activator.CreateInstance (baked);
+                       var m = baked.GetMethod ("F");
+
+                       var s = m.Invoke (x, null);
+
+                       Assert.AreEqual ("1", s);
+                       
+               }
+
+               public class Base {
+                       public int x;
+               }
+
+               public class Derived : Base {
+               }
+
+               [Test]
+               public void FieldRefTokenSame () {
+                       DefineBasicMethod ();
+
+                       // Get the same field from a base and a derived type so hat
+                       // the MemberInfo:DeclaredType differs but the tokens are the same.
+                       //
+                       // Regression test for bugzilla #59364
+
+                       var f1 = typeof (Base).GetField ("x");
+                       var f2 = typeof (Derived).GetField ("x");
+
+                       var value_getter = typeof (RuntimeFieldHandle).GetProperty("Value").GetMethod;
+
+                       var il = il_gen;
+
+                       var loc = il.DeclareLocal (typeof (RuntimeFieldHandle));
+
+                       il.Emit (OpCodes.Ldtoken, f1);
+                       il.Emit (OpCodes.Stloc, loc);
+                       il.Emit (OpCodes.Ldloca, loc);
+                       il.Emit (OpCodes.Call, value_getter);
+                       il.Emit (OpCodes.Ldtoken, f2);
+                       il.Emit (OpCodes.Stloc, loc);
+                       il.Emit (OpCodes.Ldloca, loc);
+                       il.Emit (OpCodes.Call, value_getter);
+                       il.Emit (OpCodes.Ceq);
+                       il.Emit (OpCodes.Box, typeof (Int32));
+                       il.Emit (OpCodes.Callvirt, typeof (object).GetMethod ("ToString"));
+                       il.Emit (OpCodes.Ret);
+
+                       var baked = tb.CreateType ();
+
+                       var x = Activator.CreateInstance (baked);
+                       var m = baked.GetMethod ("F");
+
+                       var s = m.Invoke (x, null);
+
+                       Assert.AreEqual ("1", s);
+               }
+
        }
 }
index e56a20c75cd3ce2c0797c843aad267d91a7354f0..ac005e2711ad4262a087e309e7924682803f47bc 100644 (file)
@@ -1046,6 +1046,16 @@ public class DSACryptoServiceProviderTest {
                dsa = new DSACryptoServiceProvider (minKeySize);
                dsa.ImportCspBlob (blob);
        }
+
+       [Test] //bug 38054
+       public void NonExportableKeysAreNonExportable ()
+       {
+               var cspParams = new CspParameters (13, null, "Mono1024");
+               cspParams.KeyContainerName = "TestDSAKey";
+               cspParams.Flags = CspProviderFlags.UseNonExportableKey;
+               var rsa = new DSACryptoServiceProvider(cspParams);
+               Assert.Throws<CryptographicException>(() => rsa.ExportParameters(true));
+       }
 }
 
 }
index 6e44e3235b24061c7626bc48311a4cacbf686184..c9011cb41f6f9a37736eb9d0ba9e89d39e203b67 100644 (file)
@@ -1403,6 +1403,16 @@ public class RSACryptoServiceProviderTest {
                rsa = new RSACryptoServiceProvider (minKeySize);
                rsa.ImportCspBlob (blob);
        }
+
+       [Test] //bug 38054
+       public void NonExportableKeysAreNonExportable ()
+       {
+               var cspParams = new CspParameters();
+               cspParams.KeyContainerName = "TestRSAKey";
+               cspParams.Flags = CspProviderFlags.UseNonExportableKey;
+               var rsa = new RSACryptoServiceProvider(cspParams);
+               Assert.Throws<CryptographicException>(() => rsa.ExportParameters(true));
+       }
 }
 
 }
index f4d0cfa1e8c915d7de6b518eed18934222c91a58..b53a8d4496aaf50d01f99c4b9e29363b5f2b80d0 100644 (file)
@@ -1,5 +1,6 @@
 using System;
 using System.IO;
+using System.Linq;
 using NUnit.Framework;
 
 namespace MonoTests.System
@@ -24,6 +25,20 @@ namespace MonoTests.System
                        Assert.AreEqual (0, utc.GetAdjustmentRules ().Length);
                }
 
+               [Test] // Bug-44255
+               public void SystemTimeZoneSerializationTests ()
+               {
+                       foreach (var tmz in TimeZoneInfo.GetSystemTimeZones ())
+                       {
+                               var tmzClone = TimeZoneInfo.FromSerializedString (tmz.ToSerializedString ());
+                               Assert.AreEqual (tmz, tmzClone);
+                               Assert.AreEqual (tmz.DisplayName, tmzClone.DisplayName);
+                               Assert.AreEqual (tmz.StandardName, tmzClone.StandardName);
+                               Assert.AreEqual (tmz.SupportsDaylightSavingTime, tmzClone.SupportsDaylightSavingTime);
+                               Assert.AreEqual (tmz.DaylightName, tmzClone.DaylightName);
+                       }
+               }
+
                [Test]
                public void SerializeCustomUtcZoneWithOddNaming ()
                {
index d03e4c21f2af694ee1ea2bf45fa97fad43341c19..72c2cb41923870747b317d5a06907fe1da14446c 100644 (file)
@@ -296,6 +296,14 @@ namespace MonoTests.System
                {
                }
 
+               private void GenericMethod2<A, B, C, D> ()
+                       where C : Duper
+                       where A : B, IFace
+                       where B : C
+                       where D : Baz<object>
+               {
+               }
+
                public class Nested
                {
 
@@ -369,6 +377,54 @@ namespace MonoTests.System
                        // Tests for parameters with generic constraints
                        mi = typeof (TypeTest).GetMethod ("GenericMethod", BindingFlags.Instance|BindingFlags.NonPublic);
                        Assert.IsTrue (typeof (IFace).IsAssignableFrom (mi.GetParameters ()[1].ParameterType));
+
+                       // Transitivity of IsAssignableFrom for type parameters
+                       mi = typeof (TypeTest).GetMethod ("GenericMethod2", BindingFlags.Instance|BindingFlags.NonPublic);
+                       var gparams = mi.GetGenericArguments ();
+                       // B : Duper since B : C and C : Duper
+                       Assert.IsTrue (typeof (Duper).IsAssignableFrom (gparams[1]), "#36");
+                       // A : Duper since A : B and B : Duper
+                       Assert.IsTrue (typeof (Duper).IsAssignableFrom (gparams[0]), "#37a");
+                       // A : IFace since A : IFace
+                       Assert.IsTrue (typeof (IFace).IsAssignableFrom (gparams[0]), "#37b");
+                       // B : Super since B : Duper and Duper : Super
+                       Assert.IsTrue (typeof (Super).IsAssignableFrom (gparams[1]), "#38");
+                       // A : Super since A : B and B : Super
+                       Assert.IsTrue (typeof (Super).IsAssignableFrom (gparams[0]), "#39");
+                       // D : IBar<object> since D : Baz<object> and Baz<object> : IBar<object>
+                       Assert.IsTrue (typeof (IBar<object>).IsAssignableFrom (gparams [3]), "#40");
+                       // A not assignable from B since A : B
+                       Assert.IsFalse (gparams[0].IsAssignableFrom (gparams [1]), "#41");
+                       Assert.IsFalse (gparams[0].IsAssignableFrom (gparams [2]), "#42");
+
+                       // A is not assignable from Array and Delegate and vice versa
+                       Assert.IsFalse (gparams[0].IsAssignableFrom (typeof (Array)), "#43");
+                       Assert.IsFalse (gparams[0].IsAssignableFrom (typeof (Delegate)), "#44");
+                       Assert.IsFalse (typeof (Array).IsAssignableFrom (gparams[0]), "#45");
+                       Assert.IsFalse (typeof (Delegate).IsAssignableFrom (gparams[0]), "#46");
+
+               }
+
+               [Test]
+               public void GenericParameterBaseType ()
+               {
+                       var mi = typeof (TypeTest).GetMethod ("GenericMethod2", BindingFlags.Instance|BindingFlags.NonPublic);
+                       var gparams = mi.GetGenericArguments ();
+
+                       // From the .NET documentation: BaseType property of a
+                       // gparam is "object" if its only constraints are other
+                       // gparams or interfaces, otherwise if it has a class
+                       // constraint that class is the BaseType.
+
+                       // A : B where B is a gparam, and A : IFace which is an
+                       // interface, so A.BaseType is object
+                       Assert.AreEqual (typeof (object), gparams[0].BaseType, "#1");
+                       // B : C where C is a gparam, so B.BaseType is object
+                       Assert.AreEqual (typeof (object), gparams[1].BaseType, "#2");
+                       // C : Duper where Duper is a class, so A.BaseType is Duper
+                       Assert.AreEqual (typeof (Duper), gparams[2].BaseType, "#3");
+                       // D : Baz<object>
+                       Assert.AreEqual (typeof (Baz<object>), gparams[3].BaseType, "#4");
                }
 
                [Test]
@@ -3619,6 +3675,38 @@ namespace MonoTests.System
                        public int field;
                }
 
+               [Test]
+               public void IsAssignableFromGenericArgumentsWithConstraints ()
+               {
+                       // Regression test for #58809
+
+                       // Generic Parameters of a gtd should have their
+                       // constraints respected even when those constraints
+                       // are other generic parameters themselves.
+
+                       var ps = typeof (GenericWithParamConstraints<,,>).GetGenericArguments ();
+
+                       var a = ps[0];
+                       var b = ps[1];
+                       var c = ps[2];
+
+                       // Foo<C>
+                       var fooOfC = typeof (Foo<>).MakeGenericType (c);
+
+                       // constraint B : Foo <C>
+                       Assert.IsTrue (fooOfC.IsAssignableFrom (b), "#1");
+
+                       // constraint A : B
+                       Assert.IsTrue (b.IsAssignableFrom (a), "#2");
+
+                       // A : Foo<C> since A : B and B : Foo<C>
+                       Assert.IsTrue (fooOfC.IsAssignableFrom (a), "#3");
+               }
+
+               class GenericWithParamConstraints<A, B, C> where B : Foo<C> where A : B
+               {
+               }
+
                [Test] // Bug #612780
                public void CannotMakeDerivedTypesFromTypedByRef ()
                {
index 9d5eb1140816690a5d1ab6c03e97b8a94935da32..262b8d33232459be06ddde9a7b9e8f9bfbd7befc 100644 (file)
@@ -1,12 +1,14 @@
 using System;
 using System.Net;
 using System.Net.Sockets;
+using System.Collections.Generic;
 
 namespace MonoTests.Helpers {
 
        public static class NetworkHelpers
        {
                static Random rndPort = new Random ();
+               static HashSet<int> portsTable = new HashSet<int> ();
 
                public static int FindFreePort ()
                {
@@ -15,17 +17,32 @@ namespace MonoTests.Helpers {
 
                public static IPEndPoint LocalEphemeralEndPoint ()
                {
-                       while (true) {
-                               var ep = new IPEndPoint (IPAddress.Loopback, rndPort.Next (10000, 60000));
-
-                               try {
-                                       using (var socket = new Socket (ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) {
-                                               socket.Bind (ep);
-                                               socket.Close ();
-                                       }
-                                       return ep;
-                               } catch (SocketException) { }
+                       int counter = 0;
+
+                       while (counter < 1000) {
+                               var testingPort = rndPort.Next (10000, 60000);
+
+                               var ep = new IPEndPoint (IPAddress.Loopback, testingPort);
+
+                               lock (portsTable) {
+                                       if (portsTable.Contains (testingPort))
+                                               continue;
+
+                                       ++counter;
+
+                                       try {
+                                               using (var socket = new Socket (ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) {
+                                                       socket.Bind (ep);
+                                                       socket.Close ();
+                                               }
+
+                                               portsTable.Add (testingPort);
+                                               return ep;
+                                       } catch (SocketException) { }
+                               }
                        }
+
+                       throw new ApplicationException ($"Could not find available local port after {counter} retries");
                }
        }
 }
diff --git a/mcs/errors/cs0106-11.cs b/mcs/errors/cs0106-11.cs
new file mode 100644 (file)
index 0000000..9aa99e3
--- /dev/null
@@ -0,0 +1,7 @@
+// CS0106: The modifier `readonly' is not valid for this item
+// Line: 6
+// Compiler option: -langversion:latest
+
+readonly interface I
+{
+}
diff --git a/mcs/errors/cs0131-6.cs b/mcs/errors/cs0131-6.cs
new file mode 100644 (file)
index 0000000..8af3e93
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0131: The left-hand side of an assignment must be a variable, a property or an indexer
+// Line: 8
+
+class X
+{
+       void Test ()
+       {
+               Foo () = 1;
+       }
+
+       static int Foo ()
+       {
+               return 1;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0199-2.cs b/mcs/errors/cs0199-2.cs
new file mode 100644 (file)
index 0000000..efad7c8
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0199: A static readonly field `X.f' cannot be passed ref or out (except in a static constructor)
+// Line: 10
+
+class X
+{
+       static readonly int f = 0;
+
+       public static void Main ()
+       {
+               ref int j = ref f;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0206-5.cs b/mcs/errors/cs0206-5.cs
new file mode 100644 (file)
index 0000000..bd9691f
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0206: A property, indexer or dynamic member access may not be passed as `ref' or `out' parameter
+// Line: 10
+
+class X
+{
+       static int P { get; set; }
+
+       static void Main ()
+       {
+               ref int rl = ref P;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0459-5.cs b/mcs/errors/cs0459-5.cs
new file mode 100644 (file)
index 0000000..fa2cfd2
--- /dev/null
@@ -0,0 +1,13 @@
+// CS0459: Cannot take the address of `this' because it is read-only
+// Line: 11
+// Compiler options: -unsafe -langversion:latest
+
+readonly struct X
+{
+       unsafe void Test ()
+       {
+               fixed (X* x = &this) {
+
+               }
+       }
+}
diff --git a/mcs/errors/cs1503-17.cs b/mcs/errors/cs1503-17.cs
new file mode 100644 (file)
index 0000000..23921ed
--- /dev/null
@@ -0,0 +1,31 @@
+// CS1503: Argument `#1' cannot convert `ref long' expression to type `ref int'
+// Line: 18
+
+using System;
+
+class X
+{
+       long field;
+
+       static void Main ()
+       {
+               var x = new X ();
+               x.Run ();
+       }
+
+       void Run ()
+       {
+               Test (ref Prop);
+       }
+
+       static int Test (ref int y)
+       {
+               return y;
+       }
+
+       ref long Prop {
+               get {
+                       return ref field;
+               }
+       }
+}
diff --git a/mcs/errors/cs1547-13.cs b/mcs/errors/cs1547-13.cs
new file mode 100644 (file)
index 0000000..1b3f8e1
--- /dev/null
@@ -0,0 +1,7 @@
+// CS1547: Keyword `void' cannot be used in this context
+// Line: 6
+
+interface IA
+{
+       ref void Foo ();
+}
diff --git a/mcs/errors/cs1604-2.cs b/mcs/errors/cs1604-2.cs
new file mode 100644 (file)
index 0000000..7116ba3
--- /dev/null
@@ -0,0 +1,11 @@
+// CS1604: Cannot assign to `this' because it is read-only
+// Line: 8
+// Compiler options: -langversion:latest
+
+readonly struct S
+{
+       void Foo ()
+       {
+               this = new S ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1605-2.cs b/mcs/errors/cs1605-2.cs
new file mode 100644 (file)
index 0000000..738899b
--- /dev/null
@@ -0,0 +1,16 @@
+// CS1605: Cannot pass `this' as a ref or out argument because it is read-only
+// Line: 14
+// Compiler options: -langversion:latest
+
+readonly struct X
+{
+       void Test (out X x)
+       {
+               x = new X ();
+       }
+       
+       void Run ()
+       {
+               Test (out this);
+       }
+}
index cfa63a7d8355e7be6928a4cfa58b370cb57d8743..ae9c328960b4d1281ed4ee34faf12eb80fa4c5ed 100644 (file)
@@ -1,3 +1,3 @@
-// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 7
+// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default, Latest or value in range 1 to 7.2
 // Line: 0
 // Compiler options: -langversion:ISO
diff --git a/mcs/errors/cs1644-55.cs b/mcs/errors/cs1644-55.cs
new file mode 100644 (file)
index 0000000..58384a6
--- /dev/null
@@ -0,0 +1,11 @@
+// CS1644: Feature `byref locals and returns' cannot be used because it is not part of the C# 6.0 language specification
+// Line: 9
+// Compiler options: -langversion:6
+
+class Text
+{
+       static ref long Foo ()
+       {
+               throw new System.NotImplementedException ();
+       }
+}
diff --git a/mcs/errors/cs1644-56.cs b/mcs/errors/cs1644-56.cs
new file mode 100644 (file)
index 0000000..de713ef
--- /dev/null
@@ -0,0 +1,7 @@
+// CS1644: Feature `readonly structs' cannot be used because it is not part of the C# 7.0 language specification
+// Line: 5
+// Compiler options: -langversion:7
+
+readonly struct S
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1715-3.cs b/mcs/errors/cs1715-3.cs
new file mode 100644 (file)
index 0000000..d3cd5da
--- /dev/null
@@ -0,0 +1,16 @@
+// CS1715: `B.Foo': type must be `int' to match overridden member `A.Foo'
+// Line: 11
+
+public abstract class A
+{
+       public abstract ref int Foo { get; }
+}
+
+public class B : A
+{
+       public override ref long Foo {
+               get {
+                       throw null;
+               }
+       }
+}
\ No newline at end of file
index f8a89b25659474ba368650c02a016c41b8197656..a1dd2e36d1591c8f4bd3fdcb8e8dad9daea66c9a 100644 (file)
@@ -1,4 +1,4 @@
-// CS1764: Cannot use fixed local `p' inside an anonymous method, lambda expression or query expression
+// CS1764: Cannot use fixed variable `p' inside an anonymous method, lambda expression or query expression
 // Line: 10
 // Compiler options: -unsafe
 
diff --git a/mcs/errors/cs8145.cs b/mcs/errors/cs8145.cs
new file mode 100644 (file)
index 0000000..ffbadfd
--- /dev/null
@@ -0,0 +1,7 @@
+// CS8145: Auto-implemented property `X.TestProp' cannot return by reference
+// Line: 6
+
+public class X
+{
+       ref string TestProp { get; }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8146.cs b/mcs/errors/cs8146.cs
new file mode 100644 (file)
index 0000000..758804c
--- /dev/null
@@ -0,0 +1,7 @@
+// CS8146: `X.TestProp': property and indexer which return by reference must have a get accessor
+// Line: 6
+
+public class X
+{
+       ref string TestProp { set; }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8147-2.cs b/mcs/errors/cs8147-2.cs
new file mode 100644 (file)
index 0000000..a4375d2
--- /dev/null
@@ -0,0 +1,14 @@
+// CS8147: `X.this[int]': property and indexer which return by reference cannot have set accessors
+// Line: 6
+
+public class X
+{
+       ref string this [int arg] { 
+               set {
+
+               }
+               get {
+
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8147.cs b/mcs/errors/cs8147.cs
new file mode 100644 (file)
index 0000000..a006a4d
--- /dev/null
@@ -0,0 +1,14 @@
+// CS8147: `X.TestProp': property and indexer which return by reference cannot have set accessors
+// Line: 6
+
+public class X
+{
+       ref string TestProp { 
+               set {
+
+               }
+               get {
+
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8148-2.cs b/mcs/errors/cs8148-2.cs
new file mode 100644 (file)
index 0000000..1961026
--- /dev/null
@@ -0,0 +1,16 @@
+// CS8148: `B.Foo': must return by reference to match overridden member `A.Foo'
+// Line: 11
+
+public abstract class A
+{
+       public abstract ref int Foo { get; }
+}
+
+public class B : A
+{
+       public override long Foo {
+               get {
+                       throw null;
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8148.cs b/mcs/errors/cs8148.cs
new file mode 100644 (file)
index 0000000..1e91789
--- /dev/null
@@ -0,0 +1,15 @@
+// CS8148: `B.Foo()': must not return by reference to match overridden member `A.Foo()'
+// Line: 11
+
+public abstract class A
+{
+       public abstract int Foo ();
+}
+
+public class B : A
+{
+       public override ref int Foo ()
+       {
+
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8149-2.cs b/mcs/errors/cs8149-2.cs
new file mode 100644 (file)
index 0000000..3514769
--- /dev/null
@@ -0,0 +1,14 @@
+// CS8149: By-reference returns can only be used in lambda expressions that return by reference
+// Line: 12
+
+using System;
+
+class A
+{
+       int p;
+       
+       void Test ()
+       {
+               Action a = () => ref p;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8149.cs b/mcs/errors/cs8149.cs
new file mode 100644 (file)
index 0000000..351dd54
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8149: By-reference returns can only be used in methods that return by reference
+// Line: 10
+
+class A
+{
+       int p;
+
+       int Test ()
+       {
+               return ref p;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8150.cs b/mcs/errors/cs8150.cs
new file mode 100644 (file)
index 0000000..fd4ef7a
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8150: By-reference return is required when method returns by reference
+// Line: 10
+
+class A
+{
+       int p;
+
+       ref int Test ()
+       {
+               return p;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8151.cs b/mcs/errors/cs8151.cs
new file mode 100644 (file)
index 0000000..934faef
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8151: The return by reference expression must be of type `string' because this method returns by reference
+// Line: 10
+
+public class X
+{
+       int field;
+
+       ref string TestMethod ()
+       {
+               return ref field;
+       }
+}
diff --git a/mcs/errors/cs8152.cs b/mcs/errors/cs8152.cs
new file mode 100644 (file)
index 0000000..45546ad
--- /dev/null
@@ -0,0 +1,14 @@
+// CS8152: `C' does not implement interface member `IA.Foo()' and the best implementing candidate `C.Foo()' return type `void' does not return by reference
+// Line: 11
+
+interface IA
+{
+       ref char Foo ();
+}
+
+public class C : IA
+{
+       public void Foo ()
+       {
+       }
+}
diff --git a/mcs/errors/cs8153.cs b/mcs/errors/cs8153.cs
new file mode 100644 (file)
index 0000000..d36f110
--- /dev/null
@@ -0,0 +1,24 @@
+// CS8153: An expression tree lambda cannot contain a call to a method, property, or indexer that returns by reference
+// Line: 11
+
+using System;
+using System.Linq.Expressions;
+
+class X
+{
+       void Foo ()
+       {
+               Expression<Func<int>> e = () => Test (ref this[0]);
+       }
+
+       static int Test (ref int y)
+       {
+               return y;
+       }
+
+       ref int this [int y] {
+               get {
+                       throw null;
+               }
+       }
+}
diff --git a/mcs/errors/cs8154.cs b/mcs/errors/cs8154.cs
new file mode 100644 (file)
index 0000000..ed98513
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8154: The body of `TestClass.TestFunction()' cannot be an iterator block because the method returns by reference
+// Line: 10
+
+class TestClass
+{
+    int x;
+
+    ref int TestFunction()
+    {
+        yield return x;
+    }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8155.cs b/mcs/errors/cs8155.cs
new file mode 100644 (file)
index 0000000..45d8b4e
--- /dev/null
@@ -0,0 +1,16 @@
+// CS8155: Lambda expressions that return by reference cannot be converted to expression trees
+// Line: 14
+
+using System.Linq.Expressions;
+
+class TestClass
+{
+    static int x;
+
+    delegate ref int D ();
+
+    static void Main ()
+    {
+        Expression<D> e = () => ref x;
+    }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8156-2.cs b/mcs/errors/cs8156-2.cs
new file mode 100644 (file)
index 0000000..7507ec4
--- /dev/null
@@ -0,0 +1,16 @@
+// CS8156: An expression cannot be used in this context because it may not be returned by reference
+// Line: 8
+
+class X
+{
+       int Prop {
+               get {
+                       return 1;
+               }
+       }
+
+       ref int Test ()
+       {
+               return ref Prop;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8156.cs b/mcs/errors/cs8156.cs
new file mode 100644 (file)
index 0000000..fe3f6b7
--- /dev/null
@@ -0,0 +1,10 @@
+// CS8156: An expression cannot be used in this context because it may not be returned by reference
+// Line: 8
+
+class Test
+{
+       ref int Foo ()
+       {
+               return ref 2;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8157.cs b/mcs/errors/cs8157.cs
new file mode 100644 (file)
index 0000000..35d700f
--- /dev/null
@@ -0,0 +1,13 @@
+// CS8157: Cannot return `r' by reference because it was initialized to a value that cannot be returned by reference
+// Line: 11
+
+struct S
+{
+       int i;
+
+       ref int M ()
+       {
+               ref int r = ref i;
+               return ref r;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8160.cs b/mcs/errors/cs8160.cs
new file mode 100644 (file)
index 0000000..2b4ea42
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8160: A readonly field cannot be returned by reference
+// Line: 10
+
+class X
+{
+       readonly int f = 0;
+
+       ref int Test ()
+       {
+               return ref f;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8161.cs b/mcs/errors/cs8161.cs
new file mode 100644 (file)
index 0000000..0d028a1
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8161: A static readonly field cannot be returned by reference
+// Line: 10
+
+class X
+{
+       static readonly int f;
+
+       static ref int Test ()
+       {
+               return ref f;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8170-2.cs b/mcs/errors/cs8170-2.cs
new file mode 100644 (file)
index 0000000..dbd76a4
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8170:
+// Line: 10
+
+public struct S
+{
+       int f;
+
+       public ref S Foo ()
+       {
+               return ref f;
+       }
+}
diff --git a/mcs/errors/cs8170.cs b/mcs/errors/cs8170.cs
new file mode 100644 (file)
index 0000000..142e1a1
--- /dev/null
@@ -0,0 +1,10 @@
+// CS8170:
+// Line: 8
+
+public struct S
+{
+       public ref S Foo ()
+       {
+               return ref this;
+       }
+}
diff --git a/mcs/errors/cs8171.cs b/mcs/errors/cs8171.cs
new file mode 100644 (file)
index 0000000..36eae2c
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8171: Cannot initialize a by-value variable `l' with a reference expression
+// Line: 10
+
+class Test
+{
+       int field;
+
+       void Foo ()
+       {
+               int l = ref field;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8172.cs b/mcs/errors/cs8172.cs
new file mode 100644 (file)
index 0000000..7ddd383
--- /dev/null
@@ -0,0 +1,12 @@
+// CS8172: Cannot initialize a by-reference variable `j' with a value
+// Line: 10
+
+class X
+{
+       static int f;
+
+       public static void Main ()
+       {
+               ref int j = f;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8173.cs b/mcs/errors/cs8173.cs
new file mode 100644 (file)
index 0000000..7c7d894
--- /dev/null
@@ -0,0 +1,13 @@
+// CS8173: The expression must be of type `long' because it is being assigned by reference
+// Line: 11
+
+public class X
+{
+       int field;
+
+       public static void Main ()
+       {
+               int i = 5;
+               ref long j = ref i;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8174.cs b/mcs/errors/cs8174.cs
new file mode 100644 (file)
index 0000000..888711a
--- /dev/null
@@ -0,0 +1,10 @@
+// CS8174: A declaration of a by-reference variable must have an initializer
+// Line: 8
+
+class X
+{
+       public static void Main ()
+       {
+               ref int j;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8175.cs b/mcs/errors/cs8175.cs
new file mode 100644 (file)
index 0000000..4ef39db
--- /dev/null
@@ -0,0 +1,17 @@
+// CS8175: Cannot use by-reference variable `v' inside an anonymous method, lambda expression, or query expression
+// Line: 14
+
+using System;
+
+public class Test
+{
+       public static void Main()
+       {
+               var arr = new int [1];
+               ref var v = ref arr [0];
+
+               Action a = delegate {
+                       ref var v2 = ref v;
+               };
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8176.cs b/mcs/errors/cs8176.cs
new file mode 100644 (file)
index 0000000..514c0b2
--- /dev/null
@@ -0,0 +1,15 @@
+// CS8176: Iterators cannot use by-reference variables
+// Line: 12
+
+using System.Collections.Generic;
+
+class X
+{
+       int x;
+
+       IEnumerable<int> Test ()
+       {
+               ref int y = ref x;
+               yield break;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8177.cs b/mcs/errors/cs8177.cs
new file mode 100644 (file)
index 0000000..414ece1
--- /dev/null
@@ -0,0 +1,15 @@
+// CS8177: Async methods cannot use by-reference variables
+// Line: 12
+
+using System.Threading.Tasks;
+
+class X
+{
+       int x;
+
+       async Task Test ()
+       {
+               ref int y = ref x;
+               await Task.Yield ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8178-2.cs b/mcs/errors/cs8178-2.cs
new file mode 100644 (file)
index 0000000..e61b7d9
--- /dev/null
@@ -0,0 +1,20 @@
+// CS8178: `await' cannot be used in an expression containing a call to `X.this[int]' because it returns by reference
+// Line: 12
+
+using System.Threading.Tasks;
+
+class X
+{
+       int x;
+
+       async Task Test ()
+       {
+               Foo (ref this [await Task.FromResult (1)]);
+       }
+
+       ref int this [int arg] => ref x;
+
+       static void Foo (ref int arg)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8178.cs b/mcs/errors/cs8178.cs
new file mode 100644 (file)
index 0000000..6f77962
--- /dev/null
@@ -0,0 +1,24 @@
+// CS8178: `await' cannot be used in an expression containing a call to `X.Wrap(int)' because it returns by reference
+// Line: 12
+
+using System.Threading.Tasks;
+
+class X
+{
+       int x;
+
+       async Task Test ()
+       {
+               Foo (ref Wrap (await Task.FromResult (1))) = 4;
+       }
+
+       ref int Wrap (int arg)
+       {
+               return ref x;
+       }
+
+       static ref int Foo (ref int arg)
+       {
+               return ref arg;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8189.cs b/mcs/errors/cs8189.cs
new file mode 100644 (file)
index 0000000..909ec3b
--- /dev/null
@@ -0,0 +1,17 @@
+// CS8189: By reference return delegate does not match `C.D()' return type
+// Line: 15
+
+class C
+{
+       delegate ref int D ();
+
+       static int M ()
+       {
+               return 1;
+       }
+
+       static void Main ()
+       {
+               D d = new D (M);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8303.cs b/mcs/errors/cs8303.cs
new file mode 100644 (file)
index 0000000..2761d41
--- /dev/null
@@ -0,0 +1,3 @@
+// CS8303: Specified language version `0.5' cannot have leading zeroes
+// Line: 0
+// Compiler options: -langversion:0.5
\ No newline at end of file
diff --git a/mcs/errors/cs8340-2.cs b/mcs/errors/cs8340-2.cs
new file mode 100644 (file)
index 0000000..9236e94
--- /dev/null
@@ -0,0 +1,13 @@
+// CS8340: `S.field': Instance fields in readonly structs must be readonly
+// Line: 6
+// Compiler options: -langversion:latest
+
+readonly partial struct S
+{
+
+}
+
+partial struct S
+{
+       int field;
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8340.cs b/mcs/errors/cs8340.cs
new file mode 100644 (file)
index 0000000..fb33767
--- /dev/null
@@ -0,0 +1,8 @@
+// CS8340: `S.field': Instance fields in readonly structs must be readonly
+// Line: 6
+// Compiler options: -langversion:latest
+
+readonly struct S
+{
+       int field;
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8341.cs b/mcs/errors/cs8341.cs
new file mode 100644 (file)
index 0000000..c784063
--- /dev/null
@@ -0,0 +1,8 @@
+// CS8341: Auto-implemented instance property `S.field' in readonly structs must be readonly
+// Line: 6
+// Compiler options: -langversion:latest
+
+readonly struct S
+{
+       int field { get; set; }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs8342.cs b/mcs/errors/cs8342.cs
new file mode 100644 (file)
index 0000000..d6d7f43
--- /dev/null
@@ -0,0 +1,10 @@
+// CS8342: `S.e': Field-like instance events are not allowed in readonly structs
+// Line: 6
+// Compiler options: -langversion:latest
+
+using System;
+
+readonly struct S
+{
+       event Action e;
+}
\ No newline at end of file
index 40f81ded9703c88ae78fa849f4db1d028545e0bf..c9ed9317350d471d891e70fc18423b7a99c1bd44 100644 (file)
@@ -22,3 +22,8 @@ cs8129.cs NO ERROR
 cs8141.cs
 cs8141-2.cs
 cs8144.cs
+cs8157.cs NO ERROR
+cs8160.cs
+cs8161.cs
+cs8170.cs NO ERROR
+cs8170-2.cs
index 3d6f8c0d4f0591f8baf6c06661ef245cd63f40e2..653bb388f7e819eb001935c6485f5045fec28b1c 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
     <PostBuildEvent>\r
       <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>\r
     </PostBuildEvent>\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+    </ProjectReference>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
     <PostBuildEvent>\r
       <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>\r
     </PostBuildEvent>\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+    </ProjectReference>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="closure.c" />\r
index 00fd56d8a64a23743451fc6b829f07abe77f3cec..8421b4dfbfcc766e11af46e124c59be508d68165 100644 (file)
@@ -104,12 +104,17 @@ namespace Mono.CSharp
                        return Clone (Expr.Clone (clonectx));
                }
 
-               public virtual Expression CreateExpressionTree (ResolveContext ec)
+               public virtual Expression CreateExpressionTree (ResolveContext rc)
                {
+                       if (Type.Kind == MemberKind.ByRef) {
+                               rc.Report.Error (8153, Expr.Location, "An expression tree lambda cannot contain a call to a method, property, or indexer that returns by reference");
+                               return null;
+                       }
+
                        if (ArgType == AType.Default)
-                               ec.Report.Error (854, Expr.Location, "An expression tree cannot contain an invocation which uses optional parameter");
+                               rc.Report.Error (854, Expr.Location, "An expression tree cannot contain an invocation which uses optional parameter");
 
-                       return Expr.CreateExpressionTree (ec);
+                       return Expr.CreateExpressionTree (rc);
                }
 
 
@@ -126,12 +131,16 @@ namespace Mono.CSharp
                                return;
                        }
 
+                       if (Expr.Type.Kind == MemberKind.ByRef) {
+                               Expr.Emit (ec);
+                               return;
+                       }
+
                        AddressOp mode = AddressOp.Store;
                        if (ArgType == AType.Ref)
                                mode |= AddressOp.Load;
 
-                       IMemoryLocation ml = (IMemoryLocation) Expr;
-                       ml.AddressOf (ec, mode);
+                       ((IMemoryLocation)Expr).AddressOf (ec, mode);
                }
 
                public Argument EmitToField (EmitContext ec, bool cloneResult)
@@ -421,17 +430,19 @@ namespace Mono.CSharp
                        return all;
                }
 
-               public static Arguments CreateForExpressionTree (ResolveContext ec, Arguments args, params Expression[] e)
+               public static Arguments CreateForExpressionTree (ResolveContext rc, Arguments args, params Expression[] e)
                {
                        Arguments all = new Arguments ((args == null ? 0 : args.Count) + e.Length);
                        for (int i = 0; i < e.Length; ++i) {
-                               if (e [i] != null)
-                                       all.Add (new Argument (e[i]));
+                               var expr = e [i];
+                               if (expr != null) {
+                                       all.Add (new Argument (expr));
+                               }
                        }
 
                        if (args != null) {
                                foreach (Argument a in args.args) {
-                                       Expression tree_arg = a.CreateExpressionTree (ec);
+                                       Expression tree_arg = a.CreateExpressionTree (rc);
                                        if (tree_arg != null)
                                                all.Add (new Argument (tree_arg));
                                }
index ca142609003dc480033ea2ae6be3e5182266453d..3ff2d68ccb5ad38964c23c0890f4372c9a4406ef 100644 (file)
@@ -1755,6 +1755,9 @@ namespace Mono.CSharp {
                // New in .NET 4.7
                public readonly PredefinedTupleElementNamesAttribute TupleElementNames;
 
+               // New in .NET 4.7.1
+               public readonly PredefinedAttribute IsReadOnly;
+
                //
                // Optional types which are used as types and for member lookup
                //
@@ -1835,6 +1838,7 @@ namespace Mono.CSharp {
                        CallerFilePathAttribute = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "CallerFilePathAttribute");
 
                        TupleElementNames = new PredefinedTupleElementNamesAttribute (module, "System.Runtime.CompilerServices", "TupleElementNamesAttribute");
+                       IsReadOnly = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "IsReadOnlyAttribute");
 
                        // TODO: Should define only attributes which are used for comparison
                        const System.Reflection.BindingFlags all_fields = System.Reflection.BindingFlags.Public |
index 48b1c6921f3c897fe0b8e5780e59fe5f34a514aa..9afb32c6fe5677d71cdd7632d08c79a43302e040 100644 (file)
@@ -3022,7 +3022,8 @@ namespace Mono.CSharp
                        Modifiers.PROTECTED |
                        Modifiers.INTERNAL  |
                        Modifiers.UNSAFE    |
-                       Modifiers.PRIVATE;
+                       Modifiers.PRIVATE   |
+                       Modifiers.READONLY;
 
                public Struct (TypeContainer parent, MemberName name, Modifiers mod, Attributes attrs)
                        : base (parent, name, attrs, MemberKind.Struct)
@@ -3135,6 +3136,9 @@ namespace Mono.CSharp
 
                public override void Emit ()
                {
+                       if ((ModFlags & Modifiers.READONLY) != 0)
+                               Module.PredefinedAttributes.IsReadOnly.EmitAttribute (TypeBuilder);
+
                        CheckStructCycles ();
 
                        base.Emit ();
@@ -3527,7 +3531,10 @@ namespace Mono.CSharp
                        var base_member_type = ((IInterfaceMemberSpec)base_member).MemberType;
                        if (!TypeSpecComparer.Override.IsEqual (MemberType, base_member_type)) {
                                Report.SymbolRelatedToPreviousError (base_member);
-                               if (this is PropertyBasedMember) {
+                               if (((base_member_type.Kind ^ MemberType.Kind) & MemberKind.ByRef) != 0) {
+                                       Report.Error (8148, Location, "`{0}': must {2}return by reference to match overridden member `{1}'",
+                                                     GetSignatureForError (), base_member.GetSignatureForError (), base_member_type.Kind == MemberKind.ByRef ? "" : "not ");
+                               } else if (this is PropertyBasedMember) {
                                        Report.Error (1715, Location, "`{0}': type must be `{1}' to match overridden member `{2}'",
                                                GetSignatureForError (), base_member_type.GetSignatureForError (), base_member.GetSignatureForError ());
                                } else {
index 8fe0e2026ca5842fdc286d456bf41a536f79456b..b11477c104394b7bc77075d6e4fa02827797529e 100644 (file)
@@ -1503,6 +1503,11 @@ namespace Mono.CSharp {
                                        return null;
                        }
 
+                       if (expr is ReferenceExpression) {
+                               // Only identify conversion is allowed
+                               return null;
+                       }
+
                        e = ImplicitNumericConversion (expr, expr_type, target_type);
                        if (e != null)
                                return e;
index 5f885a77763b8ccebc07be47fb643c310be926f5..6e20a8b13f0aeedac01b0a29afcb61722a4b34c1 100644 (file)
@@ -1020,13 +1020,16 @@ struct_declaration
          opt_modifiers
          opt_partial
          STRUCT
-         {
-         }
          type_declaration_name
-         { 
+         {
+               var mods = (Modifiers) $2;
+               if ((mods & Modifiers.READONLY) != 0 && lang_version < LanguageVersion.V_7_2) {
+                       FeatureIsNotAvailable (GetLocation ($4), "readonly structs");
+               }
+
                lexer.ConstraintsParsing = true;
                valid_param_mod = ParameterModifierType.PrimaryConstructor;
-               push_current_container (new Struct (current_container, (MemberName) $6, (Modifiers) $2, (Attributes) $1), $3);
+               push_current_container (new Struct (current_container, (MemberName) $5, mods, (Attributes) $1), $3);
          }
          opt_primary_parameters
          opt_class_base
@@ -1035,11 +1038,11 @@ struct_declaration
                valid_param_mod = 0;
                lexer.ConstraintsParsing = false;
 
-               if ($8 != null)
-                       current_type.PrimaryConstructorParameters = (ParametersCompiled) $8;
+               if ($7 != null)
+                       current_type.PrimaryConstructorParameters = (ParametersCompiled) $7;
 
-               if ($10 != null)
-                       current_container.SetConstraints ((List<Constraints>) $10);
+               if ($9 != null)
+                       current_container.SetConstraints ((List<Constraints>) $9);
 
                if (doc_support)
                        current_container.PartialContainer.DocComment = Lexer.consume_doc_comment ();
@@ -1061,10 +1064,10 @@ struct_declaration
          }
          opt_semicolon
          {
-               if ($16 == null) {
-                       lbag.AppendToMember (current_container, GetLocation ($12), GetLocation ($15));
+               if ($15 == null) {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($14));
                } else {
-                       lbag.AppendToMember (current_container, GetLocation ($12), GetLocation ($15), GetLocation ($17));
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($14), GetLocation ($16));
                }
                $$ = pop_current_class ();
          }
@@ -1161,7 +1164,7 @@ constant_initializer_expr
 field_declaration
        : opt_attributes
          opt_modifiers
-         member_type IDENTIFIER
+         ref_member_type IDENTIFIER
          {
                lexer.parsing_generic_declaration = false;
 
@@ -1364,10 +1367,29 @@ method_declaration
          }
        ;
 
+ref_member_type
+       : member_type
+         {
+               $$ = $1;
+         }
+       | REF
+         {
+               lexer.parsing_generic_declaration = true;
+         }
+         type
+         {
+               if (lang_version < LanguageVersion.V_7) {
+                       FeatureIsNotAvailable (GetLocation ($1), "byref locals and returns");
+               }
+
+               $$ = new ReferenceTypeExpr ((FullNamedExpression) $3, GetLocation ($1));
+         }
+       ;
+
 method_header
        : opt_attributes
          opt_modifiers
-         member_type
+         ref_member_type
          method_declaration_name OPEN_PARENS
          {
                valid_param_mod = ParameterModifierType.All;
@@ -1452,7 +1474,7 @@ method_header
          }
        | opt_attributes
          opt_modifiers
-         member_type
+         ref_member_type
          modifiers method_declaration_name OPEN_PARENS opt_formal_parameter_list CLOSE_PARENS
          {
                MemberName name = (MemberName) $5;
@@ -1473,7 +1495,7 @@ method_header
          }
        | opt_attributes
          opt_modifiers
-         member_type
+         ref_member_type
          method_declaration_name error
          {
                Error_SyntaxError (yyToken);
@@ -1534,7 +1556,7 @@ expression_block
                ++lexer.parsing_block;
                start_block (GetLocation ($1));
         }
-        expression SEMICOLON
+        lambda_arrow_expression SEMICOLON
         {
                lexer.parsing_block = 0;
                current_block.AddStatement (new ContextualReturn ((Expression) $3));
@@ -1838,7 +1860,7 @@ arglist_modifier
 property_declaration
        : opt_attributes
          opt_modifiers
-         member_type
+         ref_member_type
          member_declaration_name
          {
                lexer.parsing_generic_declaration = false;
@@ -1865,6 +1887,16 @@ property_declaration
 
                if (doc_support)
                        current_property.DocComment = ConsumeStoredComment ();
+
+               if ($3 is ReferenceTypeExpr) {
+                       if (current_property.Get == null) {
+                               report.Error (8146, GetLocation ($4), "`{0}': property and indexer which return by reference must have a get accessor", current_property.GetSignatureForError ());
+                       }
+
+                       if (current_property.Set != null) {
+                               report.Error (8147, GetLocation ($4), "`{0}': property and indexer which return by reference cannot have set accessors", current_property.GetSignatureForError ());
+                       }
+               }
          }
          CLOSE_BRACE
          {
@@ -1877,7 +1909,7 @@ property_declaration
          }
        | opt_attributes
          opt_modifiers
-         member_type
+         ref_member_type
          member_declaration_name
          {
                lexer.parsing_generic_declaration = false;
@@ -1939,7 +1971,7 @@ property_initializer
 
 indexer_declaration
        : opt_attributes opt_modifiers
-         member_type indexer_declaration_name OPEN_BRACKET
+         ref_member_type indexer_declaration_name OPEN_BRACKET
          {
                valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue;
          }
@@ -1979,6 +2011,16 @@ indexer_declaration
          
                if (doc_support)
                        current_property.DocComment = ConsumeStoredComment ();
+
+               if ($3 is ReferenceTypeExpr) {
+                       if (current_property.Get == null) {
+                               report.Error (8146, GetLocation ($4), "`{0}': property and indexer which return by reference must have a get accessor", current_property.GetSignatureForError ());
+                       }
+
+                       if (current_property.Set != null) {
+                               report.Error (8147, GetLocation ($4), "`{0}': property and indexer which return by reference cannot have set accessors", current_property.GetSignatureForError ());
+                       }
+               }
                        
                current_property = null;                
          }
@@ -2938,7 +2980,7 @@ delegate_declaration
        : opt_attributes
          opt_modifiers
          DELEGATE
-         member_type type_declaration_name
+         ref_member_type type_declaration_name
          OPEN_PARENS
          {
                valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue;
@@ -5109,7 +5151,7 @@ lambda_expression_body
        : {
                start_block (Location.Null);
          }
-         expression    // All expressions must handle error or current block won't be restored and breaking ast completely
+         lambda_arrow_expression       // All expressions must handle error or current block won't be restored and breaking ast completely
          {
                Block b = end_block (Location.Null);
                b.IsCompilerGenerated = true;
@@ -5129,6 +5171,11 @@ lambda_expression_body
          }
        ;
 
+lambda_arrow_expression
+       : expression
+       | reference_expression
+       ;
+
 expression_or_error
        : expression
        | error
@@ -5939,6 +5986,28 @@ block_variable_declaration
                current_variable = null;
                lbag.AddLocation ($$, GetLocation ($1), GetLocation ($7));
          }
+       | REF variable_type identifier_inside_body
+         {
+               if (lang_version < LanguageVersion.V_7) {
+                       FeatureIsNotAvailable (GetLocation ($1), "byref locals and returns");
+               }
+
+               var lt = (LocatedToken) $3;
+               var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ByRef, lt.Location);
+               current_block.AddLocalName (li);
+               current_variable = new BlockVariable ((FullNamedExpression) $2, li);
+         }
+         opt_local_variable_initializer opt_variable_declarators SEMICOLON
+         {
+               $$ = current_variable;
+               current_variable = null;
+               if ($5 != null) {
+                       lbag.AddLocation ($$, PopLocation (), GetLocation ($7));
+               } else {
+                       report.Error (8174, GetLocation ($3), "A declaration of a by-reference variable must have an initializer");
+                       lbag.AddLocation ($$, GetLocation ($7));
+               }
+         }
        ;
 
 opt_local_variable_initializer
@@ -6047,6 +6116,18 @@ block_variable_initializer
                report.Error (1575, GetLocation ($1), "A stackalloc expression requires [] after type");
                $$ = new StackAlloc ((Expression) $2, null, GetLocation ($1));          
          }
+       | reference_expression
+       ;
+
+reference_expression
+       : REF expression
+         {
+               if (lang_version < LanguageVersion.V_7) {
+                       FeatureIsNotAvailable (GetLocation ($1), "byref locals and returns");
+               }
+
+               $$ = new ReferenceExpression ((Expression) $2, GetLocation ($1));
+         }
        ;
 
 expression_statement
@@ -6522,6 +6603,11 @@ return_statement
                $$ = new Return ((Expression) $2, GetLocation ($1));
                lbag.AddStatement ($$, GetLocation ($3));
          }
+       | RETURN reference_expression SEMICOLON
+         {
+               $$ = new Return ((Expression) $2, GetLocation ($1));
+               lbag.AddStatement ($$, GetLocation ($3));
+         }
        | RETURN expression error
          {
                Error_SyntaxError (yyToken);
index 368bb19c1b165d507f90e877ec40a5b993217093..80eb7e265f1395bec67ce6ba117212b0474a80b5 100644 (file)
@@ -587,8 +587,7 @@ namespace Mono.CSharp {
                                rt = ec.BuiltinTypes.Object;
 
                        if (!Delegate.IsTypeCovariant (ec, rt, invoke_method.ReturnType)) {
-                               Expression ret_expr = new TypeExpression (delegate_method.ReturnType, loc);
-                               Error_ConversionFailed (ec, delegate_method, ret_expr);
+                               Error_ConversionFailed (ec, delegate_method, delegate_method.ReturnType);
                        }
 
                        if (method_group.IsConditionallyExcluded) {
@@ -639,7 +638,7 @@ namespace Mono.CSharp {
                        method_group.FlowAnalysis (fc);
                }
 
-               void Error_ConversionFailed (ResolveContext ec, MethodSpec method, Expression return_type)
+               void Error_ConversionFailed (ResolveContext ec, MethodSpec method, TypeSpec return_type)
                {
                        var invoke_method = Delegate.GetInvokeMethod (type);
                        string member_name = method_group.InstanceExpression != null ?
@@ -661,6 +660,12 @@ namespace Mono.CSharp {
                                return;
                        }
 
+                       if (invoke_method.ReturnType.Kind == MemberKind.ByRef) {
+                               ec.Report.Error (8189, loc, "By reference return delegate does not match `{0}' return type",
+                                       Delegate.FullDelegateDesc (invoke_method));
+                               return;
+                       }
+
                        ec.Report.Error (407, loc, "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' return type",
                                return_type.GetSignatureForError (), member_name,
                                invoke_method.ReturnType.GetSignatureForError (), Delegate.FullDelegateDesc (invoke_method));
index 9486475305452e2ab5c326d264e3f0954e58a661..34ff9a30dab3cb423f4b9f64b7a7640d67a2b56a 100644 (file)
@@ -303,7 +303,12 @@ namespace Mono.CSharp {
                                return;
 
                        string from_type = type.GetSignatureForError ();
+                       if (type.Kind == MemberKind.ByRef)
+                               from_type = "ref " + from_type;
                        string to_type = target.GetSignatureForError ();
+                       if (target.Kind == MemberKind.ByRef)
+                               to_type = "ref " + to_type;
+
                        if (from_type == to_type) {
                                from_type = type.GetSignatureForErrorIncludingAssemblyName ();
                                to_type = target.GetSignatureForErrorIncludingAssemblyName ();
@@ -559,18 +564,18 @@ namespace Mono.CSharp {
                public Expression ResolveLValue (ResolveContext ec, Expression right_side)
                {
                        int errors = ec.Report.Errors;
-                       bool out_access = right_side == EmptyExpression.OutAccess;
+                       //bool out_access = right_side == EmptyExpression.OutAccess;
 
                        Expression e = DoResolveLValue (ec, right_side);
 
-                       if (e != null && out_access && !(e is IMemoryLocation)) {
+                       //if (e != null && out_access && !(e is IMemoryLocation)) {
                                // FIXME: There's no problem with correctness, the 'Expr = null' handles that.
                                //        Enabling this 'throw' will "only" result in deleting useless code elsewhere,
 
                                //throw new InternalErrorException ("ResolveLValue didn't return an IMemoryLocation: " +
                                //                                e.GetType () + " " + e.GetSignatureForError ());
-                               e = null;
-                       }
+                       //      e = null;
+                       //}
 
                        if (e == null) {
                                if (errors == ec.Report.Errors) {
@@ -5417,6 +5422,11 @@ namespace Mono.CSharp {
                                        if (arg_type == InternalType.VarOutType)
                                                return 0;
 
+                                       var ref_arg_type = arg_type as ReferenceContainer;
+                                       if (ref_arg_type != null) {
+                                               arg_type = ref_arg_type.Element;
+                                       }
+
                                        //
                                        // Do full equality check after quick path
                                        //
@@ -5982,13 +5992,13 @@ namespace Mono.CSharp {
                        int arg_count = args == null ? 0 : args.Count;
 
                        for (; a_idx < arg_count; a_idx++, ++a_pos) {
-                               a = args[a_idx];
+                               a = args [a_idx];
                                if (a == null)
                                        continue;
 
                                if (p_mod != Parameter.Modifier.PARAMS) {
                                        p_mod = cpd.FixedParameters [a_idx].ModFlags;
-                                       pt = ptypes[a_idx];
+                                       pt = ptypes [a_idx];
                                        has_unsafe_arg |= pt.IsPointer;
 
                                        if (p_mod == Parameter.Modifier.PARAMS) {
@@ -6018,6 +6028,14 @@ namespace Mono.CSharp {
                                                continue;
                                        }
 
+                                       var ref_arg_type = arg_type as ReferenceContainer;
+                                       if (ref_arg_type != null) {
+                                               if (ref_arg_type.Element != pt)
+                                                       break;
+
+                                               return true;
+                                       }
+
                                        if (!TypeSpecComparer.IsEqual (arg_type, pt))
                                                break;
                                }
@@ -6525,12 +6543,12 @@ namespace Mono.CSharp {
                                                GetSignatureForError ());
                                }
 
-                               return null;
+                               return ErrorExpression.Instance;
                        }
 
                        if (right_side == EmptyExpression.LValueMemberAccess) {
                                // Already reported as CS1648/CS1650
-                               return null;
+                               return ErrorExpression.Instance;
                        }
 
                        if (right_side == EmptyExpression.LValueMemberOutAccess) {
@@ -6541,7 +6559,7 @@ namespace Mono.CSharp {
                                        rc.Report.Error (1649, loc, "Members of readonly field `{0}' cannot be passed ref or out (except in a constructor)",
                                                GetSignatureForError ());
                                }
-                               return null;
+                               return ErrorExpression.Instance;
                        }
 
                        if (IsStatic) {
@@ -6552,7 +6570,7 @@ namespace Mono.CSharp {
                                        GetSignatureForError ());
                        }
 
-                       return null;
+                       return ErrorExpression.Instance;
                }
 
                public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
@@ -7341,6 +7359,15 @@ namespace Mono.CSharp {
                                Error_NullPropagatingLValue (rc);
 
                        if (right_side == EmptyExpression.OutAccess) {
+                               if (best_candidate?.MemberType.Kind == MemberKind.ByRef) {
+                                       if (Arguments?.ContainsEmitWithAwait () == true) {
+                                               rc.Report.Error (8178, loc, "`await' cannot be used in an expression containing a call to `{0}' because it returns by reference",
+                                                       GetSignatureForError ());
+                                       }
+
+                                       return this;
+                               }
+
                                // TODO: best_candidate can be null at this point
                                INamedBlockVariable variable = null;
                                if (best_candidate != null && rc.CurrentBlock.ParametersBlock.TopBlock.GetLocalName (best_candidate.Name, rc.CurrentBlock, ref variable) && variable is Linq.RangeVariable) {
@@ -7367,6 +7394,11 @@ namespace Mono.CSharp {
                                if (ResolveAutopropertyAssignment (rc, right_side))
                                        return this;
 
+                               if (best_candidate.MemberType.Kind == MemberKind.ByRef) {
+                                       getter = CandidateToBaseOverride (rc, best_candidate.Get);
+                                       return ByRefDereference.Create(this).Resolve(rc);
+                               }
+
                                rc.Report.Error (200, loc, "Property or indexer `{0}' cannot be assigned to (it is read-only)",
                                        GetSignatureForError ());
                                return null;
index 113ed29910c155493a769098bc9e058a05712a96..89207a3b54a26868eeadd5b13ed7110a4e9f768e 100644 (file)
@@ -6562,18 +6562,19 @@ namespace Mono.CSharp
                                return;
                        }
 
+                       bool dereference = IsRef && !(source is ReferenceExpression);
                        New n_source = source as New;
                        if (n_source != null && n_source.CanEmitOptimizedLocalTarget (ec)) {
                                if (!n_source.Emit (ec, this)) {
                                        if (leave_copy) {
                                                EmitLoad (ec);
-                                               if (IsRef)
+                                               if (dereference)
                                                        ec.EmitLoadFromPtr (type);
                                        }
                                        return;
                                }
                        } else {
-                               if (IsRef)
+                               if (dereference)
                                        EmitLoad (ec);
 
                                source.Emit (ec);
@@ -6581,13 +6582,13 @@ namespace Mono.CSharp
 
                        if (leave_copy) {
                                ec.Emit (OpCodes.Dup);
-                               if (IsRef) {
+                               if (dereference) {
                                        temp = new LocalTemporary (Type);
                                        temp.Store (ec);
                                }
                        }
 
-                       if (IsRef)
+                       if (dereference)
                                ec.EmitStoreFromPtr (type);
                        else
                                Variable.EmitAssign (ec);
@@ -6671,7 +6672,7 @@ namespace Mono.CSharp
                }
 
                public override bool IsRef {
-                       get { return false; }
+                       get { return local_info.IsByRef; }
                }
 
                public override string Name {
@@ -6712,7 +6713,11 @@ namespace Mono.CSharp
                                        AnonymousMethodExpression.Error_AddressOfCapturedVar (ec, this, loc);
                                } else if (local_info.IsFixed) {
                                        ec.Report.Error (1764, loc,
-                                               "Cannot use fixed local `{0}' inside an anonymous method, lambda expression or query expression",
+                                               "Cannot use fixed variable `{0}' inside an anonymous method, lambda expression or query expression",
+                                               GetSignatureForError ());
+                               } else if (local_info.IsByRef) {
+                                       ec.Report.Error (8175, loc,
+                                               "Cannot use by-reference variable `{0}' inside an anonymous method, lambda expression, or query expression",
                                                GetSignatureForError ());
                                }
 
@@ -7134,7 +7139,7 @@ namespace Mono.CSharp
                protected override Expression DoResolve (ResolveContext rc)
                {
                        ResolveConditionalAccessReceiver (rc);
-                       return DoResolveInvocation (rc);
+                       return DoResolveInvocation (rc, null);
                }
 
                public override Expression DoResolveLValue (ResolveContext rc, Expression right_side)
@@ -7161,10 +7166,21 @@ namespace Mono.CSharp
                                return res.Resolve (rc);
                        }
 
+                       if (right_side != null) {
+                               if (eclass != ExprClass.Unresolved)
+                                       return this;
+
+                               var res = DoResolveInvocation (rc, right_side);
+                               if (res == null)
+                                       return null;
+
+                               return res;
+                       }
+
                        return base.DoResolveLValue (rc, right_side);
                }
 
-               Expression DoResolveInvocation (ResolveContext ec)
+               Expression DoResolveInvocation (ResolveContext ec, Expression rhs)
                {
                        Expression member_expr;
                        var atn = expr as ATypeNameExpression;
@@ -7260,6 +7276,17 @@ namespace Mono.CSharp
                        IsSpecialMethodInvocation (ec, method, loc);
                        
                        eclass = ExprClass.Value;
+
+                       if (type.Kind == MemberKind.ByRef) {
+                               if (rhs == null && arguments?.ContainsEmitWithAwait () == true) {
+                                       ec.Report.Error (8178, loc, "`await' cannot be used in an expression containing a call to `{0}' because it returns by reference",
+                                               GetSignatureForError ());
+                               }
+
+                               if (rhs != EmptyExpression.OutAccess)
+                                       return ByRefDereference.Create (this).Resolve (ec);
+                       }
+
                        return this;
                }
 
@@ -8978,7 +9005,7 @@ namespace Mono.CSharp
                        if (eclass == ExprClass.Unresolved)
                                ResolveBase (ec);
 
-                       if (type.IsClass){
+                       if (type.IsClass || type.IsReadOnly) {
                                if (right_side == EmptyExpression.UnaryAddress)
                                        ec.Report.Error (459, loc, "Cannot take the address of `this' because it is read-only");
                                else if (right_side == EmptyExpression.OutAccess)
@@ -11591,6 +11618,39 @@ namespace Mono.CSharp
                }
        }
 
+       class ReferenceTypeExpr : TypeExpr
+       {
+               FullNamedExpression element;
+
+               public ReferenceTypeExpr (FullNamedExpression element, Location loc)
+               {
+                       this.element = element;
+                       this.loc = loc;
+               }
+
+               public override TypeSpec ResolveAsType (IMemberContext mc, bool allowUnboundTypeArguments = false)
+               {
+                       type = element.ResolveAsType (mc);
+                       if (type == null)
+                               return null;
+
+                       eclass = ExprClass.Type;
+                       type = ReferenceContainer.MakeType (mc.Module, type);
+
+                       return type;
+               }
+
+               public override string GetSignatureForError ()
+               {
+                       return "ref " + element.GetSignatureForError ();
+               }
+
+               public override object Accept (StructuralVisitor visitor)
+               {
+                       return visitor.Visit (this);
+               }
+       }
+
        class FixedBufferPtr : Expression
        {
                readonly Expression array;
@@ -12918,4 +12978,146 @@ namespace Mono.CSharp
                        return Reachability.CreateUnreachable ();
                }
        }
+
+       class ReferenceExpression : CompositeExpression
+       {
+               public ReferenceExpression (Expression expr, Location loc)
+                       : base (expr)
+               {
+                       this.loc = loc;
+               }
+
+               static bool CanBeByRef (Expression expr)
+               {
+                       if (expr is IAssignMethod)
+                               return true;
+
+                       var invocation = expr as Invocation;
+                       if (invocation?.Type.Kind == MemberKind.ByRef)
+                               return true;
+
+                       return false;
+               }
+
+               public override Expression CreateExpressionTree (ResolveContext rc)
+               {
+                       throw new NotSupportedException ("ET");
+               }
+
+               protected override Expression DoResolve (ResolveContext rc)
+               {
+                       var res = expr.DoResolveLValue (rc, EmptyExpression.OutAccess);
+                       if (res == null || !CanBeByRef (res)) {
+                               if (res?.Type != InternalType.ErrorType)
+                                       rc.Report.Error (8156, expr.Location, "An expression cannot be used in this context because it may not be returned by reference");
+                               return ErrorExpression.Instance;
+                       }
+
+                       type = res.Type;
+                       var type_container = type as ReferenceContainer;
+                       if (type_container != null)
+                               type = type_container.Element;
+
+                       expr = res;
+                       eclass = ExprClass.Value;
+                       return this;
+               }
+
+               public override void Emit (EmitContext ec)
+               {
+                       var ml = expr as IMemoryLocation;
+                       if (ml != null)
+                               ml.AddressOf (ec, AddressOp.LoadStore);
+                       else
+                               expr.Emit (ec);
+               }
+
+               public override void Error_ValueCannotBeConverted (ResolveContext rc, TypeSpec target, bool expl)
+               {
+                       rc.Report.Error (8173, loc, "The expression must be of type `{0}' because it is being assigned by reference", target.GetSignatureForError ());
+               }
+       }
+
+       class ByRefDereference : CompositeExpression, IMemoryLocation, IAssignMethod
+       {
+               bool prepared;
+               LocalTemporary temporary;
+
+               private ByRefDereference (Expression expr)
+                       : base (expr)
+               {
+               }
+
+               public static Expression Create (Expression expr)
+               {
+                       var rc = expr.Type as ReferenceContainer;
+                       if (rc == null)
+                               return expr;
+
+                       return new ByRefDereference (expr) {
+                               type = rc.Element
+                       };
+               }
+
+               public void AddressOf (EmitContext ec, AddressOp mode)
+               {
+                       expr.Emit (ec);
+               }
+
+               public void Emit (EmitContext ec, bool leave_copy)
+               {
+                       Emit (ec);
+                       if (leave_copy) {
+                               ec.Emit (OpCodes.Dup);
+                               temporary = new LocalTemporary (type);
+                               temporary.Store (ec);
+                       }
+               }
+
+               public void EmitAssign (EmitContext ec, Expression source, bool leave_copy, bool isCompound)
+               {
+                       prepared = isCompound;
+
+                       expr.Emit (ec);
+
+                       if (isCompound)
+                               ec.Emit (OpCodes.Dup);
+                       
+                       source.Emit (ec);
+                       if (leave_copy) {
+                               throw new NotImplementedException ("leave_copy");
+                       }
+                       
+                       ec.EmitStoreFromPtr (type);
+                       
+                       if (temporary != null) {
+                               temporary.Emit (ec);
+                               temporary.Release (ec);
+                       }
+               }
+
+               protected override Expression DoResolve (ResolveContext rc)
+               {
+                       eclass = ExprClass.Variable;
+                       return this;
+               }
+
+               public override Expression DoResolveLValue (ResolveContext rc, Expression right_side)
+               {
+                       return DoResolve (rc);
+               }
+
+               public override void Emit (EmitContext ec)
+               {
+                       if (!prepared)
+                               base.Emit(ec);
+                       
+                       ec.EmitLoadFromPtr (type);
+               }
+
+               public override object Accept (StructuralVisitor visitor)
+               {
+                       return visitor.Visit (this);
+               }
+       }
 }
index da337a8261ab40ed86f89ad0d63b53e2aec3c2cc..86bb028defcb766e3d46d3ff6bed497962cb470b 100644 (file)
@@ -700,6 +700,16 @@ namespace Mono.CSharp
                        return true;
                }
 
+               protected override void DoMemberTypeIndependentChecks ()
+               {
+                       if ((Parent.PartialContainer.ModFlags & Modifiers.READONLY) != 0 && (ModFlags & (Modifiers.READONLY | Modifiers.STATIC)) == 0) {
+                               Report.Error (8340, Location, "`{0}': Instance fields in readonly structs must be readonly",
+                                       GetSignatureForError ());
+                       }
+
+                       base.DoMemberTypeIndependentChecks ();
+               }
+
                protected override void DoMemberTypeDependentChecks ()
                {
                        if ((ModFlags & Modifiers.BACKING_FIELD) != 0)
index 1efba64ba575caf08f33deae99bafc47c5fc4e3f..625cd0c773f0588fefcd0b3055c1ddbc20d0e44a 100644 (file)
@@ -1543,6 +1543,9 @@ namespace Mono.CSharp {
                                        if (ec is PointerContainer)
                                                return PointerContainer.MakeType (context.Module, et);
 
+                                       if (ec is ReferenceContainer)
+                                               return ReferenceContainer.MakeType (context.Module, et);
+                                       
                                        throw new NotImplementedException ();
                                }
 
index 719ba23952cd714f0021ef68335b081af7a94640..1cddf7c01f4b8478f80c0a158e47a25a1b688873 100644 (file)
@@ -959,7 +959,8 @@ namespace Mono.CSharp
                                        }
                                }
 
-                               if (kind == MemberKind.Class) {
+                               switch (kind) {
+                               case MemberKind.Class:
                                        if ((ma & TypeAttributes.Sealed) != 0) {
                                                if ((ma & TypeAttributes.Abstract) != 0)
                                                        mod |= Modifiers.STATIC;
@@ -968,6 +969,13 @@ namespace Mono.CSharp
                                        } else if ((ma & TypeAttributes.Abstract) != 0) {
                                                mod |= Modifiers.ABSTRACT;
                                        }
+                                       break;
+                               case MemberKind.Struct:
+                                       if (HasAttribute (CustomAttributeData.GetCustomAttributes (type), "IsReadOnlyAttribute", CompilerServicesNamespace)) {
+                                               mod |= Modifiers.READONLY;
+                                       }
+
+                                       break;
                                }
                        }
 
index c0ccf129e74a77fd44b33e4c702b9e69412cd1e6..feb10844b8c7f0eac017a4454d3d7bf8a5d426b2 100644 (file)
@@ -1187,11 +1187,15 @@ namespace Mono.CSharp
                                return;
 
                        if (!CheckType (ret, parent, out iterator_type, out is_enumerable)) {
-                               parent.Compiler.Report.Error (1624, method.Location,
-                                             "The body of `{0}' cannot be an iterator block " +
-                                             "because `{1}' is not an iterator interface type",
-                                             method.GetSignatureForError (),
-                                             ret.GetSignatureForError ());
+                               if (ret.Kind == MemberKind.ByRef) {
+                                       parent.Compiler.Report.Error (8154, method.Location,
+                                                         "The body of `{0}' cannot be an iterator block because the method returns by reference",
+                                                         method.GetSignatureForError ());
+                               } else {
+                                       parent.Compiler.Report.Error (1624, method.Location,
+                                                         "The body of `{0}' cannot be an iterator block because `{1}' is not an iterator interface type",
+                                                         method.GetSignatureForError (), ret.GetSignatureForError ());
+                               }
                                return;
                        }
 
index 9c804ceca575e6730e194e54a8bce5735a24cb81..360c5c9463002d0d8e1956573bfcb688702589e4 100644 (file)
@@ -188,6 +188,11 @@ namespace Mono.CSharp {
 
                public override Expression CreateExpressionTree (ResolveContext ec)
                {
+                       if (Expr is ReferenceExpression) {
+                               ec.Report.Error (8155, Expr.Location, "Lambda expressions that return by reference cannot be converted to expression trees");
+                               return null;
+                       }
+
                        return Expr.CreateExpressionTree (ec);
                }
 
@@ -216,6 +221,12 @@ namespace Mono.CSharp {
                                if (Expr == null)
                                        return false;
 
+                               if (Expr is ReferenceExpression) {
+                                       // CSC: should be different error code
+                                       ec.Report.Error (8149, loc, "By-reference returns can only be used in lambda expressions that return by reference");
+                                       return false;
+                               }
+
                                statement = Expr as ExpressionStatement;
                                if (statement == null) {
                                        var reduced = Expr as IReducedExpressionStatement;
index d132c872bafced81c59fd1eaf5bc8fd8245eb9a1..eebf71b844b8e2a51337bf35a1560c7b13d7134f 100644 (file)
@@ -35,6 +35,7 @@ namespace Mono.CSharp {
                Enum            = 1 << 14,
                Interface       = 1 << 15,
                TypeParameter = 1 << 16,
+               ByRef           = 1 << 17,
 
                ArrayType = 1 << 19,
                PointerType = 1 << 20,
index 1de765fb4ac041eb7926c501e0aeb235c98579ad..d95f8f13956d867d0d60df079a4a10e9ebe98c80 100644 (file)
@@ -748,6 +748,11 @@ namespace Mono.CSharp {
                                                                Report.Error (737, container.Location,
                                                                        "`{0}' does not implement interface member `{1}' and the best implementing candidate `{2}' is not public",
                                                                        container.GetSignatureForError (), mi.GetSignatureForError (), candidate.GetSignatureForError ());
+                                                       } else if (mi.ReturnType.Kind == MemberKind.ByRef) {
+                                                               Report.Error (8152, container.Location,
+                                                                       "`{0}' does not implement interface member `{1}' and the best implementing candidate `{2}' return type `{3}' does not return by reference",
+                                                                       container.GetSignatureForError (), mi.GetSignatureForError (), candidate.GetSignatureForError (),
+                                                                       candidate.ReturnType.GetSignatureForError ());
                                                        } else {
                                                                Report.Error (738, container.Location,
                                                                        "`{0}' does not implement interface member `{1}' and the best implementing candidate `{2}' return type `{3}' does not match interface member return type `{4}'",
index 1dd8a86468eb1ab0f2727a649f67d3273ed6d8cd..c55432cf2d59171c7b4a9e3576a418ec8b12c300 100644 (file)
@@ -879,6 +879,17 @@ namespace Mono.CSharp
                                        return false;
                                }
 
+                               if (MemberType.Kind == MemberKind.ByRef) {
+                                       Report.Error (8145, Location, "Auto-implemented property `{0}' cannot return by reference",
+                                               GetSignatureForError ());
+                                       return false;
+                               }
+
+                               if ((Parent.PartialContainer.ModFlags & Modifiers.READONLY) != 0 && Set != null && !IsStatic) {
+                                       Report.Error (8341, Location, "Auto-implemented instance property `{0}' in readonly structs must be readonly",
+                                               GetSignatureForError ());
+                               }
+
                                if (Compiler.Settings.Version < LanguageVersion.V_3 && Initializer == null)
                                        Report.FeatureIsNotAvailable (Compiler, Location, "auto-implemented properties");
 
@@ -1186,6 +1197,16 @@ namespace Mono.CSharp
                        base.ApplyAttributeBuilder (a, ctor, cdata, pa);
                }
 
+               protected override void DoMemberTypeIndependentChecks ()
+               {
+                       if ((Parent.PartialContainer.ModFlags & Modifiers.READONLY) != 0 && (ModFlags & Modifiers.STATIC) == 0) {
+                               Report.Error (8342, Location, "`{0}': Field-like instance events are not allowed in readonly structs",
+                                       GetSignatureForError ());
+                       }
+
+                       base.DoMemberTypeIndependentChecks ();
+               }
+
                public override bool Define()
                {
                        var mod_flags_src = ModFlags;
index 98083a7e0ec4b46803e1d2eb34a312883e7d7151..37664187c71ff19aa466fb3abab4677f72b7e62a 100644 (file)
@@ -30,9 +30,12 @@ namespace Mono.CSharp {
                V_5 = 5,
                V_6 = 6,
                V_7 = 7,
+               V_7_1 = 71,
+               V_7_2 = 72,
                Experimental = 100,
 
                Default = V_7,
+               Latest = V_7_2
        }
 
        public enum RuntimeVersion
@@ -1143,36 +1146,57 @@ namespace Mono.CSharp {
                                switch (value.ToLowerInvariant ()) {
                                case "iso-1":
                                case "1":
+                               case "1.0":
                                        settings.Version = LanguageVersion.ISO_1;
                                        return ParseResult.Success;
                                case "default":
                                        settings.Version = LanguageVersion.Default;
                                        return ParseResult.Success;
                                case "2":
+                               case "2.0":
                                case "iso-2":
                                        settings.Version = LanguageVersion.ISO_2;
                                        return ParseResult.Success;
                                case "3":
+                               case "3.0":
                                        settings.Version = LanguageVersion.V_3;
                                        return ParseResult.Success;
                                case "4":
+                               case "4.0":
                                        settings.Version = LanguageVersion.V_4;
                                        return ParseResult.Success;
                                case "5":
+                               case "5.0":
                                        settings.Version = LanguageVersion.V_5;
                                        return ParseResult.Success;
                                case "6":
+                               case "6.0":
                                        settings.Version = LanguageVersion.V_6;
                                        return ParseResult.Success;
                                case "7":
+                               case "7.0":
                                        settings.Version = LanguageVersion.V_7;
                                        return ParseResult.Success;
+                               case "7.1":
+                                       settings.Version = LanguageVersion.V_7_1;
+                                       return ParseResult.Success;
+                               case "7.2":
+                                       settings.Version = LanguageVersion.V_7_2;
+                                       return ParseResult.Success;
+                               case "latest":
+                                       settings.Version = LanguageVersion.Latest;
+                                       return ParseResult.Success;
                                case "experimental":
                                        settings.Version = LanguageVersion.Experimental;
                                        return ParseResult.Success;
                                }
 
-                               report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 7", value);
+                               if (value.StartsWith ("0", StringComparison.Ordinal)) {
+                                       report.Error (8303, "Specified language version `{0}' cannot have leading zeroes", value);
+                               } else {
+                                       report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default, Latest or value in range 1 to 7.2", value);
+                               }
+
                                return ParseResult.Error;
 
                        case "/codepage":
index 7a379fc172aff0bd375aefb7cdbee386f7e4f0c4..0c02bf0562a271da6811188fd102ecf836f0986a 100644 (file)
@@ -1272,16 +1272,38 @@ namespace Mono.CSharp {
                        if (expr == null)
                                return false;
 
+                       if (expr is ReferenceExpression && block_return_type.Kind != MemberKind.ByRef) {
+                               ec.Report.Error (8149, loc, "By-reference returns can only be used in methods that return by reference");
+                               return false;
+                       }
+
                        if (expr.Type != block_return_type && expr.Type != InternalType.ErrorType) {
-                               expr = Convert.ImplicitConversionRequired (ec, expr, block_return_type, loc);
+                               if (block_return_type.Kind == MemberKind.ByRef) {
+                                       var ref_expr = Expr as ReferenceExpression;
+                                       if (ref_expr == null) {
+                                               ec.Report.Error (8150, loc, "By-reference return is required when method returns by reference");
+                                               return false;
+                                       }
 
-                               if (expr == null) {
-                                       if (am != null && block_return_type == ec.ReturnType) {
-                                               ec.Report.Error (1662, loc,
-                                                       "Cannot convert `{0}' to delegate type `{1}' because some of the return types in the block are not implicitly convertible to the delegate return type",
-                                                       am.ContainerType, am.GetSignatureForError ());
+                                       var byref_return = (ReferenceContainer)block_return_type;
+
+                                       if (expr.Type != byref_return.Element) {
+                                               ec.Report.Error (8151, loc, "The return by reference expression must be of type `{0}' because this method returns by reference",
+                                                                                byref_return.GetSignatureForError ());
+                                               return false;
+                                       }
+                               } else {
+
+                                       expr = Convert.ImplicitConversionRequired (ec, expr, block_return_type, loc);
+
+                                       if (expr == null) {
+                                               if (am != null && block_return_type == ec.ReturnType) {
+                                                       ec.Report.Error (1662, loc,
+                                                               "Cannot convert `{0}' to delegate type `{1}' because some of the return types in the block are not implicitly convertible to the delegate return type",
+                                                               am.ContainerType, am.GetSignatureForError ());
+                                               }
+                                               return false;
                                        }
-                                       return false;
                                }
                        }
 
@@ -2185,7 +2207,7 @@ namespace Mono.CSharp {
                                }
 
                                if (type == null) {
-                                       type = type_expr.ResolveAsType (bc);
+                                       type = ResolveTypeExpression (bc);
                                        if (type == null)
                                                return false;
 
@@ -2208,6 +2230,25 @@ namespace Mono.CSharp {
                        }
 
                        if (initializer != null) {
+                               if (li.IsByRef) {
+                                       if (!(initializer is ReferenceExpression)) {
+                                               bc.Report.Error (8172, loc, "Cannot initialize a by-reference variable `{0}' with a value", li.Name);
+                                               return false;
+                                       }
+
+                                       if (bc.CurrentAnonymousMethod is AsyncInitializer) {
+                                               bc.Report.Error (8177, loc, "Async methods cannot use by-reference variables");
+                                       } else if (bc.CurrentIterator != null) {
+                                               bc.Report.Error (8176, loc, "Iterators cannot use by-reference variables");
+                                       }
+
+                               } else {
+                                       if (initializer is ReferenceExpression) {
+                                               bc.Report.Error (8171, loc, "Cannot initialize a by-value variable `{0}' with a reference expression", li.Name);
+                                               return false;
+                                       }
+                               }
+
                                initializer = ResolveInitializer (bc, li, initializer);
                                // li.Variable.DefinitelyAssigned 
                        }
@@ -2237,6 +2278,11 @@ namespace Mono.CSharp {
                        return a.ResolveStatement (bc);
                }
 
+               protected virtual TypeSpec ResolveTypeExpression (BlockContext bc)
+               {
+                       return type_expr.ResolveAsType (bc);
+               }
+
                protected override void DoEmit (EmitContext ec)
                {
                        li.CreateBuilder (ec);
@@ -2364,6 +2410,7 @@ namespace Mono.CSharp {
                        UsingVariable = 1 << 7,
                        IsLocked = 1 << 8,
                        SymbolFileHidden = 1 << 9,
+                       ByRef = 1 << 10,
 
                        ReadonlyMask = ForeachVariable | FixedVariable | UsingVariable
                }
@@ -2448,6 +2495,8 @@ namespace Mono.CSharp {
                        }
                }
 
+               public bool IsByRef => (flags & Flags.ByRef) != 0;
+
                public bool IsCompilerGenerated {
                        get {
                                return (flags & Flags.CompilerGenerated) != 0;
@@ -2550,10 +2599,15 @@ namespace Mono.CSharp {
                                throw new InternalErrorException ("Already created variable `{0}'", name);
                        }
 
-                       //
-                       // All fixed variabled are pinned, a slot has to be alocated
-                       //
-                       builder = ec.DeclareLocal (Type, IsFixed);
+                       if (IsByRef) {
+                               builder = ec.DeclareLocal (ReferenceContainer.MakeType (ec.Module, Type), IsFixed);
+                       } else {
+                               //
+                               // All fixed variabled are pinned, a slot has to be alocated
+                               //
+                               builder = ec.DeclareLocal(Type, IsFixed);
+                       }
+
                        if ((flags & Flags.SymbolFileHidden) == 0)
                                ec.DefineLocalVariable (name, builder);
                }
@@ -2602,7 +2656,10 @@ namespace Mono.CSharp {
                        if ((flags & Flags.CompilerGenerated) != 0)
                                CreateBuilder (ec);
 
-                       ec.Emit (OpCodes.Ldloca, builder);
+                       if (IsByRef)
+                               ec.Emit (OpCodes.Ldloc, builder);
+                       else
+                               ec.Emit (OpCodes.Ldloca, builder);
                }
 
                public static string GetCompilerGeneratedName (Block block)
index e6ee60c585a8780e1af95af20b7941356d0a160b..d14e1ead3e317c07b55873ca2e679a7d6d3205a9 100644 (file)
@@ -237,6 +237,8 @@ namespace Mono.CSharp
                        }
                }
 
+               public bool IsReadOnly => (modifiers & Modifiers.READONLY) != 0;
+
                //
                // Returns true for instances of any System.ValueTuple<......> type
                //
@@ -1991,10 +1993,11 @@ namespace Mono.CSharp
                }
        }
 
+       [System.Diagnostics.DebuggerDisplay("{DisplayDebugInfo()}")]
        class ReferenceContainer : ElementTypeSpec
        {
                ReferenceContainer (TypeSpec element)
-                       : base (MemberKind.Class, element, null)        // TODO: Kind.Class is most likely wrong
+                       : base (MemberKind.ByRef, element, null)
                {
                }
 
@@ -2004,6 +2007,11 @@ namespace Mono.CSharp
                        }
                }
 
+               string DisplayDebugInfo()
+               {
+                       return "ref " + GetSignatureForError();
+               }
+
                public override MetaType GetMetaInfo ()
                {
                        if (info == null) {
@@ -2013,8 +2021,16 @@ namespace Mono.CSharp
                        return info;
                }
 
+               public override string GetSignatureForError ()
+               {
+                       return Element.GetSignatureForError ();
+               }
+
                public static ReferenceContainer MakeType (ModuleContainer module, TypeSpec element)
                {
+                       if (element.Kind == MemberKind.ByRef)
+                               throw new ArgumentException ();
+
                        ReferenceContainer pc;
                        if (!module.ReferenceTypesCache.TryGetValue (element, out pc)) {
                                pc = new ReferenceContainer (element);
diff --git a/mcs/tests/test-readonly-01.cs b/mcs/tests/test-readonly-01.cs
new file mode 100644 (file)
index 0000000..7cce9e0
--- /dev/null
@@ -0,0 +1,16 @@
+// Compiler options: -langversion:latest
+
+using System;
+
+readonly struct S
+{
+       readonly int field;
+
+       static int sf;
+       static event Action e;
+       static int Prop { get; set; }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ref-01.cs b/mcs/tests/test-ref-01.cs
new file mode 100644 (file)
index 0000000..60126a3
--- /dev/null
@@ -0,0 +1,38 @@
+// Compiler options: -unsafe
+
+public unsafe class X
+{
+       int field;
+       int* ufield;
+
+       public static void Main ()
+       {
+               int i = 5;
+               ref int j = ref i;
+
+               var x = new X ();
+               ref var v = ref x.TestMethod ();
+       }
+
+       ref int TestMethod ()
+       {
+               return ref field;
+       }
+
+       ref int TestProperty {
+               get {
+                       return ref field;
+               }
+       }
+
+       ref int this [long arg] {
+               get {
+                       return ref field;
+               }
+       }
+
+       unsafe ref int* Foo ()
+       {
+               return ref ufield;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ref-02.cs b/mcs/tests/test-ref-02.cs
new file mode 100644 (file)
index 0000000..9adf471
--- /dev/null
@@ -0,0 +1,35 @@
+using System;
+
+class X
+{
+       int field;
+
+       static void Main ()
+       {
+               var x = new X ();
+               x.Run ();
+       }
+
+       void Run ()
+       {
+               Test (ref this[0]);
+               Test (ref Prop);
+       }
+
+       static int Test (ref int y)
+       {
+               return y;
+       }
+
+       ref int this [int y] {
+               get {
+                       return ref field;
+               }
+       }
+
+       ref int Prop {
+               get {
+                       return ref field;
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ref-03.cs b/mcs/tests/test-ref-03.cs
new file mode 100644 (file)
index 0000000..201bd6c
--- /dev/null
@@ -0,0 +1,33 @@
+class X
+{
+       int x;
+
+       static void Main ()
+       {
+               var x = new X ();
+               Foo (ref x.Wrap (1));
+               Foo (ref x.Prop);
+               Foo (ref x[""]);                
+       }
+
+       ref int Wrap (int arg)
+       {
+               return ref x;
+       }
+
+       ref int Prop {
+               get {
+                       return ref x;
+               }
+       }
+
+       ref int this [string arg] {
+               get {
+                       return ref x;
+               }
+       }
+
+       static void Foo (ref int arg)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ref-04.cs b/mcs/tests/test-ref-04.cs
new file mode 100644 (file)
index 0000000..af96f23
--- /dev/null
@@ -0,0 +1,45 @@
+class X
+{
+       int field;
+
+       public static int Main ()
+       {
+               var x = new X ();
+
+               x.field = 5;
+               if (!x.Test1 ())
+                       return 1;
+
+               x.Test2 ();
+
+               if (x.Test3 ()++ != 6)
+                       return 2;
+
+               if (x.field != 7)
+                       return 3;
+
+               return 0;
+       }
+
+       bool Test1 ()
+       {
+               ref var x = ref field;
+               int v = x;
+               ++x;
+
+               return x == 6;
+       }
+
+       void Test2 ()
+       {
+               ref int x = ref field;
+               x.ToString ();
+       }
+
+       ref int Test3 ()
+       {
+               ref int l = ref field;
+               ref int v = ref l;
+               return ref l;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ref-05.cs b/mcs/tests/test-ref-05.cs
new file mode 100644 (file)
index 0000000..4848468
--- /dev/null
@@ -0,0 +1,46 @@
+class X
+{
+       static int field;
+
+       public static int Main ()
+       {
+               Test () = 3;
+
+               if (field != (byte) 3)
+                       return 1;
+
+               G<string>.Test (ref field) = 6;
+               if (field != 6)
+                       return 2;
+
+               --Test ();
+               if (field != 5)
+                       return 3;
+
+               Test (ref Test (), ref Test ());
+
+               return 0;
+       }
+
+       static ref int Test ()
+       {
+               return ref field;
+       }
+
+       static void Test<T> (ref T a, ref int b)
+       {
+       }
+
+       static void Test2<T> (ref T arg)
+       {
+               Test (ref arg, ref Test ());
+       }
+}
+
+class G<U>
+{
+       public static ref T Test<T> (ref T arg)
+       {
+               return ref arg;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-ref-06.cs b/mcs/tests/test-ref-06.cs
new file mode 100644 (file)
index 0000000..74d35f4
--- /dev/null
@@ -0,0 +1,24 @@
+using System;
+
+class X
+{
+       public static int Main ()
+       {
+               var x = new X ();
+               x [0] = 3;
+               if (x.field != 3)
+                       return 1;
+               x.Prop = 5;
+               if (x.field != 5)
+                       return 2;
+
+               return 0;
+       }
+
+       int field;
+
+       ref int this [int idx] => ref field;
+
+       ref int Prop => ref field;
+
+}
\ No newline at end of file
index db5bfbd387c5090a47e7c7e01c8813a6cec6540e..636afd18a008618d542007d52c3a340bb8697323 100644 (file)
       </method>
     </type>
   </test>
+  <test name="test-readonly-01.cs">
+    <type name="S">
+      <method name="Void add_e(System.Action)" attrs="2193">
+        <size>40</size>
+      </method>
+      <method name="Void remove_e(System.Action)" attrs="2193">
+        <size>40</size>
+      </method>
+      <method name="Int32 get_Prop()" attrs="2193">
+        <size>13</size>
+      </method>
+      <method name="Void set_Prop(Int32)" attrs="2193">
+        <size>7</size>
+      </method>
+      <method name="Void Main()" attrs="150">
+        <size>2</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-ref-01.cs">
+    <type name="X">
+      <method name="Void Main()" attrs="150">
+        <size>20</size>
+      </method>
+      <method name="Int32&amp; TestMethod()" attrs="129">
+        <size>15</size>
+      </method>
+      <method name="Int32&amp; get_TestProperty()" attrs="2177">
+        <size>15</size>
+      </method>
+      <method name="Int32&amp; get_Item(Int64)" attrs="2177">
+        <size>15</size>
+      </method>
+      <method name="Int32*&amp; Foo()" attrs="129">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-ref-02.cs">
+    <type name="X">
+      <method name="Void Main()" attrs="145">
+        <size>14</size>
+      </method>
+      <method name="Void Run()" attrs="129">
+        <size>27</size>
+      </method>
+      <method name="Int32 Test(Int32 ByRef)" attrs="145">
+        <size>11</size>
+      </method>
+      <method name="Int32&amp; get_Item(Int32)" attrs="2177">
+        <size>15</size>
+      </method>
+      <method name="Int32&amp; get_Prop()" attrs="2177">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-ref-03.cs">
+    <type name="X">
+      <method name="Void Main()" attrs="145">
+        <size>47</size>
+      </method>
+      <method name="Int32&amp; Wrap(Int32)" attrs="129">
+        <size>15</size>
+      </method>
+      <method name="Int32&amp; get_Prop()" attrs="2177">
+        <size>15</size>
+      </method>
+      <method name="Int32&amp; get_Item(System.String)" attrs="2177">
+        <size>15</size>
+      </method>
+      <method name="Void Foo(Int32 ByRef)" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-ref-04.cs">
+    <type name="X">
+      <method name="Int32 Main()" attrs="150">
+        <size>93</size>
+      </method>
+      <method name="Boolean Test1()" attrs="129">
+        <size>30</size>
+      </method>
+      <method name="Void Test2()" attrs="129">
+        <size>22</size>
+      </method>
+      <method name="Int32&amp; Test3()" attrs="129">
+        <size>19</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-ref-05.cs">
+    <type name="X">
+      <method name="Int32 Main()" attrs="150">
+        <size>108</size>
+      </method>
+      <method name="Int32&amp; Test()" attrs="145">
+        <size>14</size>
+      </method>
+      <method name="Void Test[T](T ByRef, Int32 ByRef)" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void Test2[T](T ByRef)" attrs="145">
+        <size>13</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="G`1[U]">
+      <method name="T&amp; Test[T](T ByRef)" attrs="150">
+        <size>10</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-ref-06.cs">
+    <type name="X">
+      <method name="Int32 Main()" attrs="150">
+        <size>71</size>
+      </method>
+      <method name="Int32&amp; get_Item(Int32)" attrs="2177">
+        <size>14</size>
+      </method>
+      <method name="Int32&amp; get_Prop()" attrs="2177">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-static-using-01.cs">
     <type name="A.B.X">
       <method name="Int32 Test()" attrs="150">
diff --git a/mcs/tools/linker-analyzer/README.md b/mcs/tools/linker-analyzer/README.md
new file mode 100644 (file)
index 0000000..a848021
--- /dev/null
@@ -0,0 +1,125 @@
+Linker analyzer is a command line tool to analyze dependencies, which
+were recorded during linker processing, and led linker to mark an item
+to keep it in the resulting linked assembly.
+
+It works on an oriented graph of dependencies, which are collected and
+dumped during the linker run. The vertices of this graph are the items
+of interest like assemblies, types, methods, fields, linker steps,
+etc. The edges represent the dependencies.
+
+How to dump dependencies
+------------------------
+
+The linker analyzer needs a linker dependencies file as an input. It
+can be retrieved by enabling dependencies dumping during linking of a
+Xamarin.Android or a Xamarin.iOS project.
+
+That can be done on the command line by setting
+`LinkerDumpDependencies` property to `true` and building the
+project. (make sure the LinkAssemblies task is called, it might
+require cleaning the project sometimes) Usually it is enough to build
+the project like this:
+
+```msbuild /p:LinkerDumpDependencies=true /p:Configuration=Release YourAppProject.csproj```
+
+After a successful build, there will be a linker-dependencies.xml.gz
+file created, containing the information for the analyzer.
+
+How to use the analyzer
+-----------------------
+
+Let say you would like to know, why a type, Android.App.Activity for
+example, was marked by the linker. So run the analyzer like this:
+
+```mono linkeranalyzer.exe -t Android.App.Activity linker-dependencies.xml.gz```
+
+Output:
+
+```
+Loading dependency tree from: linker-dependencies.xml.gz
+
+--- Type dependencies: 'Android.App.Activity' -----------------------
+
+--- TypeDef:Android.App.Activity dependencies -----------------------
+Dependency #1
+       TypeDef:Android.App.Activity
+       | TypeDef:XA.App.MainActivity [2 deps]
+       | Assembly:XA.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null [3 deps]
+       | Other:Mono.Linker.Steps.ResolveFromAssemblyStep
+```
+
+The output contains dependencies string(s), starting with the type and
+continuing with the item of interest, which depends on the type. The
+dependency could be result of multiple reasons. For example the type
+was referenced from a method, or the type was listed in the linker xml
+file to be protected.
+
+In our example there is only one dependency string called `Dependency
+#1`. It shows us that the type `Android.App.Activity` was marked
+during processing of type `XA.App.MainActivity` by the linker. In this
+case because the `MainActivity` type is based on the `Activity` type
+and thus the linker marked it and kept it in the linked assembly. We
+can also see that there are 2 dependencies for the `MainActivity`
+class. Note that in the string (above) we see only 1st dependency of
+the 2, the dependency on the assembly `XA.App`. And finally the
+assembly vertex depends on the `ResolveFromAssemblyStep` vertex. So we
+see that the assembly was processed in the `ResolveFromAssembly`
+linker step.
+
+Now we might want to see the `MainActivity` dependencies. That could
+be done by the following analyzer run:
+
+```mono linkeranalyzer.exe -r TypeDef:XA.App.MainActivity linker-dependencies.xml.gz```
+
+Output:
+
+```
+Loading dependency tree from: linker-dependencies.xml.gz
+
+--- Raw dependencies: 'TypeDef:XA.App.MainActivity' -----------------
+
+--- TypeDef:XA.App.MainActivity dependencies ------------------------
+Dependency #1
+       TypeDef:XA.App.MainActivity
+       | Assembly:XA.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null [3 deps]
+       | Other:Mono.Linker.Steps.ResolveFromAssemblyStep
+Dependency #2
+       TypeDef:XA.App.MainActivity
+       | TypeDef:XA.App.MainActivity/<>c__DisplayClass1_0 [2 deps]
+       | TypeDef:XA.App.MainActivity [2 deps]
+       | Assembly:XA.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null [3 deps]
+       | Other:Mono.Linker.Steps.ResolveFromAssemblyStep
+```
+
+Known issues
+------------
+
+Sometimes the linker processing is not straight forward and the
+marking is postponed, like processing of some of the methods. They are
+queued to be processed later. In such case the dependencies are
+"interrupted" and the dependecy string for the method usually shows
+just dependency on the Mark step.
+
+Command line help
+-----------------
+```
+Usage:
+
+       linkeranalyzer [Options] <linker-dependency-file.xml.gz>
+
+Options:
+
+  -a, --alldeps              show all dependencies
+  -h, --help                 show this message and exit.
+  -r, --rawdeps=VALUE        show raw vertex dependencies. Raw vertex VALUE is
+                               in the raw format written by linker to the
+                               dependency XML file. VALUE can be regular
+                               expression
+      --roots                show root dependencies.
+      --stat                 show statistic of loaded dependencies.
+      --tree                 reduce the dependency graph to the tree.
+      --types                show all types dependencies.
+  -t, --typedeps=VALUE       show type dependencies. The VALUE can be regular
+                               expression
+  -v, --verbose              be more verbose. Enables stat and roots options.
+```
index 8680e0bbf8160f8f502a3705956eb7ebc06b88cb..d4ef1cbb5520e4f8c493fdcce14d61e2b21730f1 100755 (executable)
@@ -1009,6 +1009,7 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                        else
                        {
                                string zlib = (compress ? "-lz" : "");
+                               string objc = (style == "osx" ? "-framework CoreFoundation -lobjc" : "");
                                string debugging = "-g";
                                string cc = GetEnv("CC", "cc");
                                string cmd = null;
@@ -1022,16 +1023,16 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                                smonolib = "`pkg-config --variable=libdir mono-2`/libmono-2.0.a ";
                                        else
                                                smonolib = "-Wl,-Bstatic -lmono-2.0 -Wl,-Bdynamic ";
-                                       cmd = String.Format("{4} -o '{2}' -Wall `pkg-config --cflags mono-2` {0} {3} " +
+                                       cmd = String.Format("{4} -o '{2}' -Wall {5} `pkg-config --cflags mono-2` {0} {3} " +
                                                "`pkg-config --libs-only-L mono-2` " + smonolib +
                                                "`pkg-config --libs-only-l mono-2 | sed -e \"s/\\-lmono-2.0 //\"` {1}",
-                                               temp_c, temp_o, output, zlib, cc);
+                                               temp_c, temp_o, output, zlib, cc, objc);
                                }
                                else
                                {
 
-                                       cmd = String.Format("{4} " + debugging + " -o '{2}' -Wall {0} `pkg-config --cflags --libs mono-2` {3} {1}",
-                                               temp_c, temp_o, output, zlib, cc);
+                                       cmd = String.Format("{4} " + debugging + " -o '{2}' -Wall {5} {0} `pkg-config --cflags --libs mono-2` {3} {1}",
+                                               temp_c, temp_o, output, zlib, cc, objc);
                                }
                                Execute (cmd);
                        }
index 9bd837e241fe94065b70d30a15c2d6acc82bdfb6..e322d4ef556875ee0a770cdb2808f6a371f2ef37 100644 (file)
@@ -133,10 +133,15 @@ namespace Xamarin.ApiDiff {
                        if (parameters != null) {
                                var list = new List<string> ();
                                foreach (var p in parameters.Elements ("parameter")) {
-                                       var pTypeName   = p.GetTypeName ("type");
-                                       list.Add (State.IgnoreParameterNameChanges
-                                               ? pTypeName
-                                               : pTypeName + " " + p.GetAttribute ("name"));
+                                       var param = p.GetTypeName ("type");
+                                       if (!State.IgnoreParameterNameChanges)
+                                               param += " " + p.GetAttribute ("name");
+
+                                       var direction = p.GetAttribute ("direction");
+                                       if (direction?.Length > 0)
+                                               param = direction + " " + param;
+                                               
+                                       list.Add (param);
                                }
                                sb.Append (String.Join (", ", list));
                        }
diff --git a/mcs/tools/mono-api-html/mono-api-html.sln b/mcs/tools/mono-api-html/mono-api-html.sln
new file mode 100644 (file)
index 0000000..265e4fa
--- /dev/null
@@ -0,0 +1,17 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 2012\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mono-api-html", "mono-api-html.csproj", "{D25986E2-7A41-4966-A26D-5614BAC7B8A7}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Any CPU = Debug|Any CPU\r
+               Release|Any CPU = Release|Any CPU\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Release|Any CPU.Build.0 = Release|Any CPU\r
+       EndGlobalSection\r
+EndGlobal\r
index 869365b4bccd9b3d93d99dd1184dfbc049253d8f..98fed7525fb2937dea3a7cc334c33c026d596503 100644 (file)
@@ -333,7 +333,7 @@ my and Ximian's copyright to this code. ;)
 #define ppc_andid(c,S,A,ui) ppc_emit32(c, (28 << 26) | ((S) << 21 ) | ((A) << 16) | ((guint16)(ui)))
 #define ppc_andisd(c,S,A,ui) ppc_emit32(c, (29 << 26) | ((S) << 21 ) | ((A) << 16) | ((guint16)(ui)))
 
-#define ppc_bcx(c,BO,BI,BD,AA,LK) ppc_emit32(c, (16 << 26) | (BO << 21 )| (BI << 16) | (BD << 2) | ((AA) << 1) | LK)
+#define ppc_bcx(c,BO,BI,BD,AA,LK) ppc_emit32(c, (16 << 26) | ((BO) << 21 )| ((BI) << 16) | (BD << 2) | ((AA) << 1) | LK)
 #define ppc_bc(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,0,0) 
 #define ppc_bca(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,1,0)
 #define ppc_bcl(c,BO,BI,BD) ppc_bcx(c,BO,BI,BD,0,1)
index 713826839958b8dfb9d57f717b50dc6039e8e814..0902fb41fb84df8430700f6c918665f6e7f4e45a 100644 (file)
@@ -39,6 +39,7 @@ MONO_BTLS_SOURCES_FILES = \
 EXTRA_DIST = $(MONO_BTLS_SOURCES_FILES)
 
 CMAKE_VERBOSE=$(if $(V),VERBOSE=1,)
+NINJA_VERBOSE=$(if ($V),-v,)
 
 if NINJA
 NINJA_ARGS = -G Ninja
@@ -59,7 +60,7 @@ build-shared/$(BUILDFILE):
 
 if NINJA
 build-shared/libmono-btls-shared$(libsuffix): build-shared/$(BUILDFILE) $(MONO_BTLS_SOURCES_FILES)
-       ninja -C build-shared $(CMAKE_VERBOSE)
+       ninja -C build-shared $(NINJA_VERBOSE)
 else
 build-shared/libmono-btls-shared$(libsuffix): build-shared/$(BUILDFILE) $(MONO_BTLS_SOURCES_FILES)
        $(MAKE) -C build-shared $(CMAKE_VERBOSE)
index 2fbf826ceece5a6338eadd77b1deb9d5267801e0..8a9494054d94eaf9124c9c2731160131de14af16 100644 (file)
@@ -283,7 +283,9 @@ common_sources = \
        sre-save.c      \
        custom-attrs.c  \
        fdhandle.h      \
-       fdhandle.c
+       fdhandle.c      \
+       callspec.h      \
+       callspec.c
 
 # These source files have compile time dependencies on GC code
 gc_dependent_sources = \
diff --git a/mono/metadata/callspec.c b/mono/metadata/callspec.c
new file mode 100644 (file)
index 0000000..bf108d9
--- /dev/null
@@ -0,0 +1,348 @@
+/**
+ * \file
+ * Call specification facilities for the Mono Runtime.
+ *
+ * Author:
+ *   Paolo Molaro (lupus@ximian.com)
+ *   Dietmar Maurer (dietmar@ximian.com)
+ *
+ * (C) 2002 Ximian, Inc.
+ * Copyright 2011 Xamarin, Inc (http://www.xamarin.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full
+ * license information.
+ */
+#include "metadata.h"
+#include "callspec.h"
+#include "assembly.h"
+#include "class-internals.h"
+#include "debug-helpers.h"
+
+static MonoAssembly *prog_assembly;
+
+gboolean
+mono_callspec_eval_exception (MonoClass *klass, MonoCallSpec *spec)
+{
+       int include = 0;
+       int i;
+
+       if (!klass)
+               return FALSE;
+
+       for (i = 0; i < spec->len; i++) {
+               MonoTraceOperation *op = &spec->ops [i];
+               int inc = 0;
+
+               switch (op->op) {
+               case MONO_TRACEOP_EXCEPTION:
+                       if (strcmp ("", op->data) == 0 &&
+                           strcmp ("all", op->data2) == 0)
+                               inc = 1;
+                       else if (strcmp ("", op->data) == 0 ||
+                                strcmp (klass->name_space, op->data) == 0)
+                               if (strcmp (klass->name, op->data2) == 0)
+                                       inc = 1;
+                       break;
+               default:
+                       break;
+               }
+               if (op->exclude) {
+                       if (inc)
+                               include = 0;
+               } else if (inc)
+                       include = 1;
+       }
+
+       return include;
+}
+
+gboolean mono_callspec_eval (MonoMethod *method, const MonoCallSpec *spec)
+{
+       int include = 0;
+       int i;
+
+       for (i = 0; i < spec->len; i++) {
+               MonoTraceOperation *op = &spec->ops[i];
+               int inc = 0;
+
+               switch (op->op) {
+               case MONO_TRACEOP_ALL:
+                       inc = 1;
+                       break;
+               case MONO_TRACEOP_PROGRAM:
+                       if (prog_assembly &&
+                           (method->klass->image ==
+                            mono_assembly_get_image (prog_assembly)))
+                               inc = 1;
+                       break;
+               case MONO_TRACEOP_WRAPPER:
+                       if ((method->wrapper_type ==
+                            MONO_WRAPPER_NATIVE_TO_MANAGED) ||
+                           (method->wrapper_type ==
+                            MONO_WRAPPER_MANAGED_TO_NATIVE))
+                               inc = 1;
+                       break;
+               case MONO_TRACEOP_METHOD:
+                       if (mono_method_desc_full_match (
+                               (MonoMethodDesc *)op->data, method))
+                               inc = 1;
+                       break;
+               case MONO_TRACEOP_CLASS:
+                       if (strcmp (method->klass->name_space, op->data) == 0)
+                               if (strcmp (method->klass->name, op->data2) ==
+                                   0)
+                                       inc = 1;
+                       break;
+               case MONO_TRACEOP_ASSEMBLY:
+                       if (strcmp (mono_image_get_name (method->klass->image),
+                                   op->data) == 0)
+                               inc = 1;
+                       break;
+               case MONO_TRACEOP_NAMESPACE:
+                       if (strcmp (method->klass->name_space, op->data) == 0)
+                               inc = 1;
+                       break;
+               case MONO_TRACEOP_EXCEPTION:
+                       break;
+               }
+               if (op->exclude) {
+                       if (inc)
+                               include = 0;
+               } else if (inc) {
+                       include = 1;
+               }
+       }
+       return include;
+}
+
+static int is_filenamechar (char p)
+{
+       if (p >= 'A' && p <= 'Z')
+               return TRUE;
+       if (p >= 'a' && p <= 'z')
+               return TRUE;
+       if (p >= '0' && p <= '9')
+               return TRUE;
+       if (p == '.' || p == ':' || p == '_' || p == '-' || p == '`')
+               return TRUE;
+       return FALSE;
+}
+
+static char *get_string (char **in)
+{
+       char *start = *in;
+       char *p = *in;
+       while (is_filenamechar (*p)) {
+               p++;
+       }
+       size_t len = p - start;
+       char *ret = (char *)g_malloc (len + 1);
+       memcpy (ret, start, len);
+       ret [len] = 0;
+       *in = p;
+       return ret;
+}
+
+enum Token {
+       TOKEN_METHOD,
+       TOKEN_CLASS,
+       TOKEN_ALL,
+       TOKEN_PROGRAM,
+       TOKEN_EXCEPTION,
+       TOKEN_NAMESPACE,
+       TOKEN_WRAPPER,
+       TOKEN_STRING,
+       TOKEN_EXCLUDE,
+       TOKEN_DISABLED,
+       TOKEN_SEPARATOR,
+       TOKEN_END,
+       TOKEN_ERROR
+};
+
+static int get_token (char **in, char **extra, char **errstr)
+{
+       char *p = *in;
+       while (p[0] == '+')
+               p++;
+
+       *extra = NULL;
+
+       if (p[0] == '\0') {
+               *in = p;
+               return TOKEN_END;
+       }
+       if (p[0] == 'M' && p[1] == ':') {
+               p += 2;
+               *extra = get_string (&p);
+               *in = p;
+               return TOKEN_METHOD;
+       }
+       if (p[0] == 'N' && p[1] == ':') {
+               p += 2;
+               *extra = get_string (&p);
+               *in = p;
+               return TOKEN_NAMESPACE;
+       }
+       if (p[0] == 'T' && p[1] == ':') {
+               p += 2;
+               *extra = get_string (&p);
+               *in = p;
+               return TOKEN_CLASS;
+       }
+       if (p[0] == 'E' && p[1] == ':') {
+               p += 2;
+               *extra = get_string (&p);
+               *in = p;
+               return TOKEN_EXCEPTION;
+       }
+       if (*p == '-') {
+               p++;
+               *in = p;
+               return TOKEN_EXCLUDE;
+       }
+       if (is_filenamechar (*p)) {
+               *extra = get_string (&p);
+               *in = p;
+               if (strcmp (*extra, "all") == 0)
+                       return TOKEN_ALL;
+               if (strcmp (*extra, "program") == 0)
+                       return TOKEN_PROGRAM;
+               if (strcmp (*extra, "wrapper") == 0)
+                       return TOKEN_WRAPPER;
+               if (strcmp (*extra, "disabled") == 0)
+                       return TOKEN_DISABLED;
+               return TOKEN_STRING;
+       }
+       if (*p == ',') {
+               p++;
+               *in = p;
+               return TOKEN_SEPARATOR;
+       }
+
+       *errstr = g_strdup_printf ("Syntax error at or around '%s'", p);
+       return TOKEN_ERROR;
+}
+
+static int get_spec (char **in, MonoCallSpec *spec, char **errstr)
+{
+       int n = spec->len;
+       char *extra = NULL;
+
+       int token = get_token (in, &extra, errstr);
+       gboolean exclude = FALSE;
+       if (token == TOKEN_EXCLUDE) {
+               exclude = TRUE;
+               token = get_token (in, &extra, errstr);
+               if (token == TOKEN_EXCLUDE || token == TOKEN_DISABLED) {
+                       *errstr = g_strdup_printf ("Expecting an expression");
+                       token = TOKEN_ERROR;
+                       goto out;
+               }
+       }
+       if (token == TOKEN_END || token == TOKEN_SEPARATOR ||
+           token == TOKEN_ERROR)
+               goto out;
+
+       if (token == TOKEN_DISABLED) {
+               spec->enabled = FALSE;
+               goto out;
+       }
+
+       if (token == TOKEN_METHOD) {
+               MonoMethodDesc *desc = mono_method_desc_new (extra, TRUE);
+               if (desc == NULL) {
+                       *errstr =
+                           g_strdup_printf ("Invalid method name: %s", extra);
+                       token = TOKEN_ERROR;
+                       goto out;
+               }
+               spec->ops[n].op = MONO_TRACEOP_METHOD;
+               spec->ops[n].data = desc;
+       } else if (token == TOKEN_ALL)
+               spec->ops[n].op = MONO_TRACEOP_ALL;
+       else if (token == TOKEN_PROGRAM)
+               spec->ops[n].op = MONO_TRACEOP_PROGRAM;
+       else if (token == TOKEN_WRAPPER)
+               spec->ops[n].op = MONO_TRACEOP_WRAPPER;
+       else if (token == TOKEN_NAMESPACE) {
+               spec->ops[n].op = MONO_TRACEOP_NAMESPACE;
+               spec->ops[n].data = g_strdup (extra);
+       } else if (token == TOKEN_CLASS || token == TOKEN_EXCEPTION) {
+               char *p = strrchr (extra, '.');
+               if (p) {
+                       *p++ = 0;
+                       spec->ops[n].data = g_strdup (extra);
+                       spec->ops[n].data2 = g_strdup (p);
+               } else {
+                       spec->ops[n].data = g_strdup ("");
+                       spec->ops[n].data2 = g_strdup (extra);
+               }
+               spec->ops[n].op = token == TOKEN_CLASS ? MONO_TRACEOP_CLASS
+                                                      : MONO_TRACEOP_EXCEPTION;
+       } else if (token == TOKEN_STRING) {
+               spec->ops[n].op = MONO_TRACEOP_ASSEMBLY;
+               spec->ops[n].data = g_strdup (extra);
+       } else {
+               *errstr =
+                   g_strdup_printf ("Syntax error in method specification");
+               token = TOKEN_ERROR;
+               goto out;
+       }
+
+       if (exclude)
+               spec->ops[n].exclude = 1;
+
+       spec->len = n + 1;
+       token = TOKEN_SEPARATOR;
+out:
+       if (extra != NULL) {
+               g_free (extra);
+       }
+       return token;
+}
+
+gboolean
+mono_callspec_parse (const char *options, MonoCallSpec *spec, char **errstr)
+{
+       char *p = (char *)options;
+       int size = 1;
+       int token;
+
+       memset (spec, 0, sizeof (*spec));
+       *errstr = NULL;
+
+       spec->enabled = TRUE;
+       if (*p == 0) {
+               spec->len = 1;
+               spec->ops = g_new0 (MonoTraceOperation, 1);
+               spec->ops[0].op = MONO_TRACEOP_ALL;
+               return TRUE;
+       }
+
+       for (p = (char *)options; *p != 0; p++)
+               if (*p == ',')
+                       size++;
+
+       spec->ops = g_new0 (MonoTraceOperation, size);
+
+       p = (char *)options;
+
+       while ((token = (get_spec (&p, spec, errstr))) != TOKEN_END) {
+               if (token == TOKEN_ERROR)
+                       return FALSE;
+       }
+       return TRUE;
+}
+
+void mono_callspec_cleanup (MonoCallSpec *spec)
+{
+       if (spec->ops != NULL) {
+               g_free (spec->ops);
+       }
+       memset (spec, 0, sizeof (*spec));
+}
+
+void
+mono_callspec_set_assembly (MonoAssembly *assembly)
+{
+       prog_assembly = assembly;
+}
diff --git a/mono/metadata/callspec.h b/mono/metadata/callspec.h
new file mode 100644 (file)
index 0000000..c9f6998
--- /dev/null
@@ -0,0 +1,47 @@
+/**
+ * \file
+ */
+
+#ifndef __MONO_CALLSPEC_H__
+#define __MONO_CALLSPEC_H__
+#include <glib.h>
+#include <mono/utils/mono-compiler.h>
+
+typedef enum {
+       MONO_TRACEOP_ALL,
+       MONO_TRACEOP_PROGRAM,
+       MONO_TRACEOP_METHOD,
+       MONO_TRACEOP_ASSEMBLY,
+       MONO_TRACEOP_CLASS,
+       MONO_TRACEOP_NAMESPACE,
+       MONO_TRACEOP_EXCEPTION,
+       MONO_TRACEOP_WRAPPER,
+} MonoTraceOpcode;
+
+typedef struct {
+       MonoTraceOpcode op;
+       int exclude;
+       void *data, *data2;
+} MonoTraceOperation;
+
+typedef struct {
+       int len;
+       gboolean enabled;
+       MonoTraceOperation *ops;
+} MonoCallSpec;
+
+G_BEGIN_DECLS
+
+MONO_PROFILER_API gboolean mono_callspec_parse         (const char *options,
+                                                        MonoCallSpec *spec,
+                                                        char **errstr);
+MONO_PROFILER_API void     mono_callspec_cleanup       (MonoCallSpec *spec);
+MONO_PROFILER_API gboolean mono_callspec_eval_exception        (MonoClass *klass,
+                                                        MonoCallSpec *spec);
+MONO_PROFILER_API gboolean mono_callspec_eval          (MonoMethod *method,
+                                                        const MonoCallSpec *spec);
+void                      mono_callspec_set_assembly   (MonoAssembly *assembly);
+
+G_END_DECLS
+
+#endif /* __MONO_CALLSPEC_H__ */
index 2b3a0b42aa31a9359c2bd01ed41803e6beda8942..ed4190372cd80e57d5c04efc2927a0a40ba588ae 100644 (file)
@@ -27,6 +27,7 @@ extern gboolean mono_align_small_structs;
 typedef struct _MonoMethodWrapper MonoMethodWrapper;
 typedef struct _MonoMethodInflated MonoMethodInflated;
 typedef struct _MonoMethodPInvoke MonoMethodPInvoke;
+typedef struct _MonoDynamicMethod MonoDynamicMethod;
 
 /* Properties that applies to a group of structs should better use a higher number
  * to avoid colision with type specific properties.
@@ -100,12 +101,17 @@ struct _MonoMethodWrapper {
        void *method_data;
 };
 
+struct _MonoDynamicMethod {
+       MonoMethodWrapper method;
+       MonoAssembly *assembly;
+};
+
 struct _MonoMethodPInvoke {
        MonoMethod method;
        gpointer addr;
        /* add marshal info */
        guint16 piflags;  /* pinvoke flags */
-       guint16 implmap_idx;  /* index into IMPLMAP */
+       guint32 implmap_idx;  /* index into IMPLMAP */
 };
 
 /* 
@@ -1170,6 +1176,8 @@ GENERATE_GET_CLASS_WITH_CACHE_DECL (variant)
 
 #endif
 
+GENERATE_GET_CLASS_WITH_CACHE_DECL (appdomain_unloaded_exception)
+
 extern MonoDefaults mono_defaults;
 
 void
index 8df8cb531d4a88faed3a3591ff7afbd5a3a88453..da8fc30585b67fb1fa23f44a182cb0ae2ea3ce3f 100644 (file)
@@ -1513,6 +1513,7 @@ mono_class_set_type_load_failure_causedby_class (MonoClass *klass, const MonoCla
  * Sets the following fields in \p klass:
  *  - all the fields initialized by mono_class_init_sizes ()
  *  - element_class/cast_class (for enums)
+ *  - sizes:element_size (for arrays)
  *  - field->type/offset for all fields
  *  - fields_inited
  *
@@ -1772,6 +1773,7 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_
        MonoClassField *field;
        gboolean blittable;
        int instance_size = base_instance_size;
+       int element_size = -1;
        int class_size, min_align;
        int *field_offsets;
        gboolean *fields_has_references;
@@ -2101,6 +2103,9 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_
        else if (klass->byval_arg.type == MONO_TYPE_PTR)
                instance_size = sizeof (MonoObject) + sizeof (gpointer);
 
+       if (klass->byval_arg.type == MONO_TYPE_SZARRAY || klass->byval_arg.type == MONO_TYPE_ARRAY)
+               element_size = mono_class_array_element_size (klass->element_class);
+
        /* Publish the data */
        mono_loader_lock ();
        if (klass->instance_size && !klass->image->dynamic) {
@@ -2131,6 +2136,9 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_
                        klass->fields [i].offset = field_offsets [i];
        }
 
+       if (klass->byval_arg.type == MONO_TYPE_SZARRAY || klass->byval_arg.type == MONO_TYPE_ARRAY)
+               klass->sizes.element_size = element_size;
+
        mono_memory_barrier ();
        klass->size_inited = 1;
        mono_loader_unlock ();
@@ -2918,6 +2926,10 @@ collect_implemented_interfaces_aux (MonoClass *klass, GPtrArray **res, GHashTabl
                        *ifaces = g_hash_table_new (NULL, NULL);
                if (g_hash_table_lookup (*ifaces, ic))
                        continue;
+               /* A gparam is not an implemented interface for the purposes of
+                * mono_class_get_implemented_interfaces */
+               if (mono_class_is_gparam (ic))
+                       continue;
                g_ptr_array_add (*res, ic);
                g_hash_table_insert (*ifaces, ic, ic);
                mono_class_init (ic);
@@ -3308,7 +3320,9 @@ setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
                for (i = 0; i < k->interface_count; i++) {
                        ic = k->interfaces [i];
 
-                       mono_class_init (ic);
+                       /* A gparam does not have any interface_id set. */
+                       if (! mono_class_is_gparam (ic))
+                               mono_class_init (ic);
 
                        if (max_iid < ic->interface_id)
                                max_iid = ic->interface_id;
@@ -4880,7 +4894,7 @@ mono_class_init (MonoClass *klass)
        GSList *init_list = (GSList *)mono_native_tls_get_value (init_pending_tls_id);
        if (g_slist_find (init_list, klass)) {
                mono_class_set_type_load_failure (klass, "Recursive type definition detected");
-               goto leave;
+               goto leave_no_init_pending;
        }
        init_list = g_slist_prepend (init_list, klass);
        mono_native_tls_set_value (init_pending_tls_id, init_list);
@@ -4941,12 +4955,19 @@ mono_class_init (MonoClass *klass)
                ghcimpl = cached_info.ghcimpl;
                has_cctor = cached_info.has_cctor;
        } else if (klass->rank == 1 && klass->byval_arg.type == MONO_TYPE_SZARRAY) {
-               /* SZARRAY can have 2 vtable layouts, with and without the stelemref method.
+               /* SZARRAY can have 3 vtable layouts, with and without the stelemref method and enum element type
                 * The first slot if for array with.
                 */
-               static int szarray_vtable_size[2] = { 0 };
+               static int szarray_vtable_size[3] = { 0 };
 
-               int slot = MONO_TYPE_IS_REFERENCE (&klass->element_class->byval_arg) ? 0 : 1;
+               int slot;
+
+               if (MONO_TYPE_IS_REFERENCE (&klass->element_class->byval_arg))
+                       slot = 0;
+               else if (klass->element_class->enumtype)
+                       slot = 1;
+               else
+                       slot = 2;
 
                /* SZARRAY case */
                if (!szarray_vtable_size [slot]) {
@@ -5079,10 +5100,12 @@ mono_class_init (MonoClass *klass)
 
        goto leave;
 
- leave:
+leave:
+       init_list = mono_native_tls_get_value (init_pending_tls_id);
        init_list = g_slist_remove (init_list, klass);
        mono_native_tls_set_value (init_pending_tls_id, init_list);
 
+leave_no_init_pending:
        if (locked)
                mono_loader_unlock ();
 
@@ -6596,7 +6619,7 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                /* element_size -1 is ok as this is not an instantitable type*/
                klass->sizes.element_size = -1;
        } else
-               klass->sizes.element_size = mono_class_array_element_size (eclass);
+               klass->sizes.element_size = -1;
 
        mono_class_setup_supertypes (klass);
 
@@ -8210,22 +8233,31 @@ mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass)
                return mono_gparam_is_assignable_from (klass, oklass);
        }
 
-       if (MONO_CLASS_IS_INTERFACE (klass)) {
-               if ((oklass->byval_arg.type == MONO_TYPE_VAR) || (oklass->byval_arg.type == MONO_TYPE_MVAR)) {
-                       MonoGenericParam *gparam = oklass->byval_arg.data.generic_param;
-                       MonoClass **constraints = mono_generic_container_get_param_info (gparam->owner, gparam->num)->constraints;
-                       int i;
+       /* This can happen if oklass is a tyvar that has a constraint which is another tyvar which in turn
+        * has a constraint which is a class type:
+        *
+        *  class Foo { }
+        *  class G<T1, T2> where T1 : T2 where T2 : Foo { }
+        *
+        * In this case, Foo is assignable from T1.
+        */
+       if ((oklass->byval_arg.type == MONO_TYPE_VAR) || (oklass->byval_arg.type == MONO_TYPE_MVAR)) {
+               MonoGenericParam *gparam = oklass->byval_arg.data.generic_param;
+               MonoClass **constraints = mono_generic_container_get_param_info (gparam->owner, gparam->num)->constraints;
+               int i;
 
-                       if (constraints) {
-                               for (i = 0; constraints [i]; ++i) {
-                                       if (mono_class_is_assignable_from (klass, constraints [i]))
-                                               return TRUE;
-                               }
+               if (constraints) {
+                       for (i = 0; constraints [i]; ++i) {
+                               if (mono_class_is_assignable_from (klass, constraints [i]))
+                                       return TRUE;
                        }
-
-                       return FALSE;
                }
 
+               return mono_class_has_parent (oklass, klass);
+       }
+
+       if (MONO_CLASS_IS_INTERFACE (klass)) {
+
                /* interface_offsets might not be set for dynamic classes */
                if (mono_class_get_ref_info_handle (oklass) && !oklass->interface_bitmap) {
                        /* 
@@ -8634,11 +8666,16 @@ handle_enum:
  * \param ac pointer to a \c MonoArrayClass
  *
  * \returns The size of single array element.
+ *
+ * LOCKING: Acquires the loader lock.
  */
 gint32
 mono_array_element_size (MonoClass *ac)
 {
        g_assert (ac->rank);
+       if (G_UNLIKELY (!ac->size_inited)) {
+               mono_class_setup_fields (ac);
+       }
        return ac->sizes.element_size;
 }
 
@@ -10510,8 +10547,8 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error)
        if (klass->rank == 1 && klass->byval_arg.type != MONO_TYPE_ARRAY) {
                MonoType *args [1];
 
-               /* generic IList, ICollection, IEnumerable */
-               interface_count = 2;
+               /* IList and IReadOnlyList -> 2x if enum*/
+               interface_count = klass->element_class->enumtype ? 4 : 2;
                interfaces = (MonoClass **)mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count);
 
                args [0] = &klass->element_class->byval_arg;
@@ -10519,6 +10556,13 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error)
                        mono_defaults.generic_ilist_class, 1, args, FALSE);
                interfaces [1] = mono_class_bind_generic_parameters (
                           mono_defaults.generic_ireadonlylist_class, 1, args, FALSE);
+               if (klass->element_class->enumtype) {
+                       args [0] = mono_class_enum_basetype (klass->element_class);
+                       interfaces [2] = mono_class_bind_generic_parameters (
+                               mono_defaults.generic_ilist_class, 1, args, FALSE);
+                       interfaces [3] = mono_class_bind_generic_parameters (
+                                  mono_defaults.generic_ireadonlylist_class, 1, args, FALSE);
+               }
        } else if (mono_class_is_ginst (klass)) {
                MonoClass *gklass = mono_class_get_generic_class (klass)->container_class;
 
index f79cd9bff99e928cd3b8c9834b69311126c43fcd..565dac59e4f215b0ac4c2dd7a5abf35b10b62195 100644 (file)
@@ -45,6 +45,7 @@ mono_class_from_typeref    (MonoImage *image, uint32_t type_token);
 MONO_API MonoClass *
 mono_class_from_typeref_checked (MonoImage *image, uint32_t type_token, MonoError *error);
 
+MONO_RT_EXTERNAL_ONLY
 MONO_API MonoClass *
 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
 
index 7ddfad6165c8bfb97a1db3d5714fd10551c7e666..5057ab1cf2f27a0bc34d5bcf58dd4062f220b288 100644 (file)
@@ -24,7 +24,7 @@
 #define STATUS_SUCCESS 0x00000000L
 #define STATUS_INVALID_IMAGE_FORMAT 0xC000007BL
 
-STDAPI MonoFixupCorEE(HMODULE ModuleHandle);
+MONO_API STDAPI MonoFixupCorEE(HMODULE ModuleHandle);
 
 /* Defined by the linker. */
 #ifndef _MSC_VER
index 85fd2708111b57412ebf56997d5a28e1e9a7609a..fb381452b5a6127d598d81f5602ca7a57742d8ed 100644 (file)
@@ -355,7 +355,6 @@ mono_dynamic_image_create (MonoDynamicAssembly *assembly, char *assembly_name, c
        image->method_aux_hash = g_hash_table_new (NULL, NULL);
        image->vararg_aux_hash = g_hash_table_new (NULL, NULL);
        image->handleref = g_hash_table_new (NULL, NULL);
-       image->handleref_managed = mono_g_hash_table_new_type ((GHashFunc)mono_object_hash, NULL, MONO_HASH_KEY_GC, MONO_ROOT_SOURCE_REFLECTION, "dynamic module reference-to-token table");
        image->tokens = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_REFLECTION, "dynamic module tokens table");
        image->generic_def_objects = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_REFLECTION, "dynamic module generic definitions table");
        image->typespec = g_hash_table_new ((GHashFunc)mono_metadata_type_hash, (GCompareFunc)mono_metadata_type_equal);
@@ -475,7 +474,6 @@ void
 mono_dynamic_image_release_gc_roots (MonoDynamicImage *image)
 {
        release_hashtable (&image->token_fixups);
-       release_hashtable (&image->handleref_managed);
        release_hashtable (&image->tokens);
        release_hashtable (&image->remapped_tokens);
        release_hashtable (&image->generic_def_objects);
@@ -495,8 +493,6 @@ mono_dynamic_image_free (MonoDynamicImage *image)
                g_hash_table_destroy (di->typeref);
        if (di->handleref)
                g_hash_table_destroy (di->handleref);
-       if (di->handleref_managed)
-               mono_g_hash_table_destroy (di->handleref_managed);
        if (di->tokens)
                mono_g_hash_table_destroy (di->tokens);
        if (di->remapped_tokens)
index 3c78b6153c23f4d56966de04b7c5dba586f11911..4cda6ddb320b7b922fc56033c80a6b3594322aed 100644 (file)
@@ -44,6 +44,8 @@
 #include <mono/utils/mono-coop-semaphore.h>
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/w32api.h>
+#include <mono/utils/unlocked.h>
+#include <mono/utils/mono-os-wait.h>
 
 #ifndef HOST_WIN32
 #include <pthread.h>
@@ -597,7 +599,7 @@ ves_icall_System_GC_WaitForPendingFinalizers (void)
        mono_gc_finalize_notify ();
        /* g_print ("Waiting for pending finalizers....\n"); */
        MONO_ENTER_GC_SAFE;
-       WaitForSingleObjectEx (pending_done_event, INFINITE, TRUE);
+       mono_win32_wait_for_single_object_ex (pending_done_event, INFINITE, TRUE);
        MONO_EXIT_GC_SAFE;
        /* g_print ("Done pending....\n"); */
 #else
@@ -780,7 +782,7 @@ finalize_domain_objects (void)
        DomainFinalizationReq *req = NULL;
        MonoDomain *domain;
 
-       if (domains_to_finalize) {
+       if (UnlockedReadPointer ((gpointer)&domains_to_finalize)) {
                mono_finalizer_lock ();
                if (domains_to_finalize) {
                        req = (DomainFinalizationReq *)domains_to_finalize->data;
@@ -995,7 +997,7 @@ mono_gc_cleanup (void)
                                        ret = guarded_wait (gc_thread->handle, MONO_INFINITE_WAIT, FALSE);
                                        g_assert (ret == MONO_THREAD_INFO_WAIT_RET_SUCCESS_0);
 
-                                       mono_threads_add_joinable_thread (GUINT_TO_POINTER (gc_thread->tid));
+                                       mono_threads_add_joinable_thread ((gpointer)(MONO_UINT_TO_NATIVE_THREAD_ID (gc_thread->tid)));
                                        break;
                                }
 
@@ -1008,7 +1010,7 @@ mono_gc_cleanup (void)
                                        mono_gc_suspend_finalizers ();
 
                                        /* Try to abort the thread, in the hope that it is running managed code */
-                                       mono_thread_internal_abort (gc_thread);
+                                       mono_thread_internal_abort (gc_thread, FALSE);
 
                                        /* Wait for it to stop */
                                        ret = guarded_wait (gc_thread->handle, 100, FALSE);
@@ -1020,7 +1022,7 @@ mono_gc_cleanup (void)
 
                                        g_assert (ret == MONO_THREAD_INFO_WAIT_RET_SUCCESS_0);
 
-                                       mono_threads_add_joinable_thread (GUINT_TO_POINTER (gc_thread->tid));
+                                       mono_threads_add_joinable_thread ((gpointer)(MONO_UINT_TO_NATIVE_THREAD_ID (gc_thread->tid)));
                                        break;
                                }
 
index 28615d8c1a986bb9eacb71051805387e20e365f0..aa9404b3f5304cd6eed1b4e75a21371bb124fd37 100644 (file)
@@ -365,17 +365,13 @@ ICALL(MONOIO_5, "DeleteFile(string,System.IO.MonoIOError&)", ves_icall_System_IO
 #endif /* !PLATFORM_RO_FS */
 ICALL(MONOIO_38, "DumpHandles", ves_icall_System_IO_MonoIO_DumpHandles)
 ICALL(MONOIO_34, "DuplicateHandle", ves_icall_System_IO_MonoIO_DuplicateHandle)
-ICALL(MONOIO_37, "FindClose", ves_icall_System_IO_MonoIO_FindClose)
 ICALL(MONOIO_37a, "FindCloseFile", ves_icall_System_IO_MonoIO_FindCloseFile)
-ICALL(MONOIO_35, "FindFirst", ves_icall_System_IO_MonoIO_FindFirst)
 ICALL(MONOIO_35a, "FindFirstFile", ves_icall_System_IO_MonoIO_FindFirstFile)
-ICALL(MONOIO_36, "FindNext", ves_icall_System_IO_MonoIO_FindNext)
 ICALL(MONOIO_36a, "FindNextFile", ves_icall_System_IO_MonoIO_FindNextFile)
 ICALL(MONOIO_6, "Flush(intptr,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_Flush)
 ICALL(MONOIO_7, "GetCurrentDirectory(System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_GetCurrentDirectory)
 ICALL(MONOIO_8, "GetFileAttributes(string,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_GetFileAttributes)
 ICALL(MONOIO_9, "GetFileStat(string,System.IO.MonoIOStat&,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_GetFileStat)
-ICALL(MONOIO_10, "GetFileSystemEntries", ves_icall_System_IO_MonoIO_GetFileSystemEntries)
 ICALL(MONOIO_11, "GetFileType(intptr,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_GetFileType)
 ICALL(MONOIO_12, "GetLength(intptr,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_GetLength)
 #ifndef PLATFORM_RO_FS
@@ -535,7 +531,8 @@ ICALL(ASSEMN_2, "get_public_token", mono_digest_get_public_token)
 ICALL_TYPE(CATTR_DATA, "System.Reflection.CustomAttributeData", CATTR_DATA_1)
 ICALL(CATTR_DATA_1, "ResolveArgumentsInternal", ves_icall_System_Reflection_CustomAttributeData_ResolveArgumentsInternal)
 
-ICALL_TYPE(ASSEMB, "System.Reflection.Emit.AssemblyBuilder", ASSEMB_2)
+ICALL_TYPE(ASSEMB, "System.Reflection.Emit.AssemblyBuilder", ASSEMB_1)
+HANDLES(ICALL(ASSEMB_1, "UpdateNativeCustomAttributes", ves_icall_AssemblyBuilder_UpdateNativeCustomAttributes))
 ICALL(ASSEMB_2, "basic_init", ves_icall_AssemblyBuilder_basic_init)
 
 #ifndef DISABLE_REFLECTION_EMIT
index ea3a441b76bc897cc819a2ed25edfbf5d9f05732..a5ef34da2d6e5901cd3c2e704b90bb3fdeeeb3b6 100644 (file)
@@ -76,6 +76,9 @@ MonoNativeTlsKey loader_lock_nest_id;
 static void dllmap_cleanup (void);
 static void cached_module_cleanup(void);
 
+/* Class lazy loading functions */
+GENERATE_GET_CLASS_WITH_CACHE (appdomain_unloaded_exception, "System", "AppDomainUnloadedException")
+
 static void
 global_loader_data_lock (void)
 {
@@ -314,9 +317,17 @@ mono_field_from_token_checked (MonoImage *image, guint32 token, MonoClass **retk
                mono_class_init (k);
                if (retklass)
                        *retklass = k;
-               field = mono_class_get_field (k, token);
-               if (!field) {
-                       mono_error_set_bad_image (error, image, "Could not resolve field token 0x%08x", token);
+               if (mono_class_has_failure (k)) {
+                       MonoError causedby_error;
+                       error_init (&causedby_error);
+                       mono_error_set_for_class_failure (&causedby_error, k);
+                       mono_error_set_bad_image (error, image, "Could not resolve field token 0x%08x, due to: %s", token, mono_error_get_message (&causedby_error));
+                       mono_error_cleanup (&causedby_error);
+               } else {
+                       field = mono_class_get_field (k, token);
+                       if (!field) {
+                               mono_error_set_bad_image (error, image, "Could not resolve field token 0x%08x", token);
+                       }
                }
        }
 
index 68bf872fbfe1a64e74e92cad2f7076ea6be0ad5e..24cde472b2665a8e0d0a401e2910c53c7000362f 100644 (file)
@@ -503,7 +503,6 @@ struct _MonoDynamicImage {
        GHashTable *typespec;
        GHashTable *typeref;
        GHashTable *handleref;
-       MonoGHashTable *handleref_managed;
        MonoGHashTable *tokens;
        GHashTable *blob_cache;
        GHashTable *standalonesig_cache;
index 666c158332e59a59b3bcbb48ea0328defc7a9dd5..e898178e00a1532a253acbf3adea8e23787c6fd9 100644 (file)
@@ -1514,6 +1514,7 @@ parse_method_signature (VerifyContext *ctx, const char **_ptr, const char *end,
 static gboolean
 parse_property_signature (VerifyContext *ctx, const char **_ptr, const char *end)
 {
+       unsigned type = 0;
        unsigned sig = 0;
        unsigned param_count = 0, i;
        const char *ptr = *_ptr;
@@ -1530,6 +1531,13 @@ parse_property_signature (VerifyContext *ctx, const char **_ptr, const char *end
        if (!parse_custom_mods (ctx, &ptr, end))
                return FALSE;
 
+       if (!safe_read8 (type, ptr, end))
+               FAIL (ctx, g_strdup ("PropertySig: Not enough room for the type"));
+
+       //check if it's a byref. safe_read8 did update ptr, so we rollback if it's not a byref
+       if (type != MONO_TYPE_BYREF)
+               --ptr;
+
        if (!parse_type (ctx, &ptr, end))
                FAIL (ctx, g_strdup ("PropertySig: Could not parse property type"));
 
index c371f0f3c476c0e6756c97460e5c37e9cd3e1bc5..d3b51abfc80247f536fdb2410f28edf528411200 100644 (file)
@@ -32,6 +32,7 @@
 #include <mono/utils/mono-time.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/w32api.h>
+#include <mono/utils/mono-os-wait.h>
 
 /*
  * Pull the list of opcodes
@@ -1387,7 +1388,7 @@ ves_icall_System_Threading_Monitor_Monitor_wait (MonoObject *obj, guint32 ms)
         */
        MONO_ENTER_GC_SAFE;
 #ifdef HOST_WIN32
-       ret = mono_w32handle_convert_wait_ret (WaitForSingleObjectEx (event, ms, TRUE), 1);
+       ret = mono_w32handle_convert_wait_ret (mono_win32_wait_for_single_object_ex (event, ms, TRUE), 1);
 #else
        ret = mono_w32handle_wait_one (event, ms, TRUE);
 #endif /* HOST_WIN32 */
@@ -1416,7 +1417,7 @@ ves_icall_System_Threading_Monitor_Monitor_wait (MonoObject *obj, guint32 ms)
                 */
                MONO_ENTER_GC_SAFE;
 #ifdef HOST_WIN32
-               ret = mono_w32handle_convert_wait_ret (WaitForSingleObjectEx (event, 0, FALSE), 1);
+               ret = mono_w32handle_convert_wait_ret (mono_win32_wait_for_single_object_ex (event, 0, FALSE), 1);
 #else
                ret = mono_w32handle_wait_one (event, 0, FALSE);
 #endif /* HOST_WIN32 */
index 1b558370d02c12c4bfc3ce7d7394a0ffff774f8d..4ef79e7385c5d70efaeddd8d5aa7109d53675382 100644 (file)
@@ -34,8 +34,9 @@
 #include "metadata/gc-internals.h"
 #include <mono/utils/checked-build.h>
 #include <mono/utils/mono-threads-coop.h>
+#include <mono/utils/unlocked.h>
 
-int mono_g_hash_table_max_chain_length;
+gint32 mono_g_hash_table_max_chain_length;
 
 #ifdef HAVE_BOEHM_GC
 #define mg_new0(type,n)  ((type *) GC_MALLOC(sizeof(type) * (n)))
@@ -136,10 +137,12 @@ static inline int mono_g_hash_table_find_slot (MonoGHashTable *hash, const MonoO
                }
        }
 
-       if (i > start && (i - start) > mono_g_hash_table_max_chain_length)
-               mono_g_hash_table_max_chain_length = i - start;
-       else if (i < start && (hash->table_size - (start - i)) > mono_g_hash_table_max_chain_length)
-               mono_g_hash_table_max_chain_length = hash->table_size - (start - i);
+       gint32 max_length = UnlockedRead (&mono_g_hash_table_max_chain_length);
+       if (i > start && (i - start) > max_length)
+               UnlockedWrite (&mono_g_hash_table_max_chain_length, i - start);
+       else if (i < start && (hash->table_size - (start - i)) > max_length)
+               UnlockedWrite (&mono_g_hash_table_max_chain_length, hash->table_size - (start - i));
+
        return i;
 }
 
index 7f778e50bd10445a9413a184e4f9683235358af2..10e3ca390eda833103f4c7b5d8787a631e0f7d2b 100644 (file)
@@ -22,7 +22,7 @@ typedef enum {
        MONO_HASH_KEY_VALUE_GC = MONO_HASH_KEY_GC | MONO_HASH_VALUE_GC,
 } MonoGHashGCType;
 
-extern int mono_g_hash_table_max_chain_length;
+extern gint32 mono_g_hash_table_max_chain_length;
 
 typedef struct _MonoGHashTable MonoGHashTable;
 
index 07aaee6830005ba3f2df4103838289d2820a772a..26b11d77371cea4845516ba3b19805a7f4390335 100644 (file)
@@ -376,6 +376,7 @@ typedef struct {
 typedef enum {
        MONO_THREAD_FLAG_DONT_MANAGE = 1, // Don't wait for or abort this thread
        MONO_THREAD_FLAG_NAME_SET = 2, // Thread name set from managed code
+       MONO_THREAD_FLAG_APPDOMAIN_ABORT = 4, // Current requested abort originates from appdomain unload
 } MonoThreadFlags;
 
 struct _MonoInternalThread {
@@ -1925,8 +1926,8 @@ ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilderHandle mb
 void
 ves_icall_AssemblyBuilder_basic_init (MonoReflectionAssemblyBuilder *assemblyb);
 
-MonoReflectionModule*
-ves_icall_AssemblyBuilder_InternalAddModule (MonoReflectionAssemblyBuilder *ab, MonoString *fileName);
+void
+ves_icall_AssemblyBuilder_UpdateNativeCustomAttributes (MonoReflectionAssemblyBuilderHandle assemblyb, MonoError *error);
 
 MonoArray*
 ves_icall_CustomAttributeBuilder_GetBlob (MonoReflectionAssembly *assembly, MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *propValues, MonoArray *fields, MonoArray* fieldValues);
index 233f9528ed90ca0a34cdf5377989320fe0dc61c7..8968bf737f5b1a9219671cdf4d0473e92777e330 100644 (file)
@@ -232,6 +232,7 @@ DECL_OFFSET(MonoLMF, pc)
 DECL_OFFSET(MonoLMF, gregs)
 DECL_OFFSET(DynCallArgs, regs)
 DECL_OFFSET(DynCallArgs, fpregs)
+DECL_OFFSET(DynCallArgs, n_stackargs)
 DECL_OFFSET(DynCallArgs, n_fpargs)
 DECL_OFFSET(DynCallArgs, n_fpret)
 #endif
index 2ea88c75f8cfde20ecb362453f027e16dbe1225a..457c50e02cc115b4deeeaa547ff0453ef9df24c5 100644 (file)
@@ -4587,7 +4587,14 @@ mono_unhandled_exception_checked (MonoObjectHandle exc, MonoError *error)
        MonoObjectHandle current_appdomain_delegate = MONO_HANDLE_NEW (MonoObject, NULL);
 
        MonoClass *klass = mono_handle_class (exc);
-       if (mono_class_has_parent (klass, mono_defaults.threadabortexception_class))
+       /*
+        * AppDomainUnloadedException don't behave like unhandled exceptions unless thrown from 
+        * a thread started in unmanaged world.
+        * https://msdn.microsoft.com/en-us/library/system.appdomainunloadedexception(v=vs.110).aspx#Anchor_6
+        */
+       if (klass == mono_defaults.threadabortexception_class ||
+                       (klass == mono_class_get_appdomain_unloaded_exception_class () &&
+                       mono_thread_info_current ()->runtime_thread))
                return;
 
        field = mono_class_get_field_from_name (mono_defaults.appdomain_class, "UnhandledException");
@@ -7403,6 +7410,9 @@ mono_wait_handle_get_handle (MonoWaitHandle *handle)
 static MonoObject*
 mono_runtime_capture_context (MonoDomain *domain, MonoError *error)
 {
+#ifdef HOST_WASM
+       return mono_runtime_invoke_checked (mono_get_context_capture_method (), NULL, NULL, error);
+#else
        MONO_REQ_GC_UNSAFE_MODE;
 
        RuntimeInvokeFunction runtime_invoke;
@@ -7424,6 +7434,7 @@ mono_runtime_capture_context (MonoDomain *domain, MonoError *error)
        runtime_invoke = (RuntimeInvokeFunction)domain->capture_context_runtime_invoke;
 
        return runtime_invoke (NULL, NULL, NULL, domain->capture_context_method);
+#endif
 }
 /**
  * mono_async_result_new:
index ea2ff0c3d7b2fc029d42a882f828d220bee6258f..dccb077b4f72cc41ccf1b0a47e9dee452794ad3d 100644 (file)
@@ -21,6 +21,7 @@
 #include "mono/metadata/exception.h"
 #include "mono/metadata/debug-helpers.h"
 #include "mono/metadata/reflection-internals.h"
+#include "mono/metadata/assembly.h"
 
 typedef enum {
        MONO_MARSHAL_NONE,                      /* No marshalling needed */
@@ -52,6 +53,9 @@ typedef struct _MonoRemotingMethods MonoRemotingMethods;
 static MonoObject *
 mono_remoting_wrapper (MonoMethod *method, gpointer *params);
 
+static MonoException *
+mono_remoting_update_exception (MonoException *exc);
+
 static gint32
 mono_marshal_set_domain_by_id (gint32 id, MonoBoolean push);
 
@@ -206,6 +210,7 @@ mono_remoting_marshal_init (void)
                register_icall (ves_icall_mono_marshal_xdomain_copy_value, "ves_icall_mono_marshal_xdomain_copy_value", "object object", FALSE);
                register_icall (mono_marshal_xdomain_copy_out_value, "mono_marshal_xdomain_copy_out_value", "void object object", FALSE);
                register_icall (mono_remoting_wrapper, "mono_remoting_wrapper", "object ptr ptr", FALSE);
+               register_icall (mono_remoting_update_exception, "mono_remoting_update_exception", "object object", FALSE);
                register_icall (mono_upgrade_remote_class_wrapper, "mono_upgrade_remote_class_wrapper", "void object object", FALSE);
 
 #ifndef DISABLE_JIT
@@ -425,6 +430,7 @@ mono_remoting_wrapper (MonoMethod *method, gpointer *params)
 
        if (exc) {
                error_init (&error);
+               exc = (MonoObject*) mono_remoting_update_exception ((MonoException*)exc);
                mono_error_set_exception_instance (&error, (MonoException *)exc);
                goto fail;
        }
@@ -444,6 +450,37 @@ fail:
        return NULL;
 } 
 
+/*
+ * Handles exception transformation at appdomain call boundary.
+ * Note this is called from target appdomain inside xdomain wrapper, but from
+ * source domain in the mono_remoting_wrapper slowpath.
+ */
+static MonoException *
+mono_remoting_update_exception (MonoException *exc)
+{
+       MonoInternalThread *thread;
+       MonoClass *klass = mono_object_get_class ((MonoObject*)exc);
+
+       /* Serialization error can only happen when still in the target appdomain */
+       if (!(mono_class_get_flags (klass) & TYPE_ATTRIBUTE_SERIALIZABLE)) {
+               MonoException *ret;
+               char *aname = mono_stringify_assembly_name (&klass->image->assembly->aname);
+               char *message = g_strdup_printf ("Type '%s' in Assembly '%s' is not marked as serializable", klass->name, aname);
+               ret =  mono_get_exception_serialization (message);
+               g_free (aname);
+               g_free (message);
+               return ret;
+       }
+
+       thread = mono_thread_internal_current ();
+       if (mono_object_get_class ((MonoObject*)exc) == mono_defaults.threadabortexception_class &&
+                       thread->flags & MONO_THREAD_FLAG_APPDOMAIN_ABORT) {
+               mono_thread_internal_reset_abort (thread);
+               return mono_get_exception_appdomain_unloaded ();
+       }
+
+       return exc;
+}
 
 /**
  * mono_marshal_get_remoting_invoke:
@@ -671,8 +708,8 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
        int i, j, param_index, copy_locals_base;
        MonoClass *ret_class = NULL;
        int loc_array=0, loc_return=0, loc_serialized_exc=0;
-       MonoExceptionClause *clauses, *main_clause, *serialization_clause;
-       int pos, pos_leave, pos_leave_serialization;
+       MonoExceptionClause *main_clause;
+       int pos, pos_leave;
        gboolean copy_return;
        WrapperInfo *info;
 
@@ -714,8 +751,7 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
 
        /* try */
 
-       clauses = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, 2 * sizeof (MonoExceptionClause));
-       main_clause = &clauses [0];
+       main_clause = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
        main_clause->try_offset = mono_mb_get_label (mb);
 
        /* Clean the call context */
@@ -896,33 +932,8 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
        /* handler code */
        main_clause->handler_offset = mono_mb_get_label (mb);
 
-       /*
-        * We deserialize the exception in another try-catch so we can catch
-        * serialization failure exceptions.
-        */
-       serialization_clause = &clauses [1];
-       serialization_clause->try_offset = mono_mb_get_label (mb);
-
-       mono_mb_emit_managed_call (mb, method_rs_serialize_exc, NULL);
-       mono_mb_emit_stloc (mb, loc_serialized_exc);
-       mono_mb_emit_ldarg (mb, 2);
-       mono_mb_emit_ldloc (mb, loc_serialized_exc);
-       mono_mb_emit_byte (mb, CEE_STIND_REF);
-       pos_leave_serialization = mono_mb_emit_branch (mb, CEE_LEAVE);
-
-       /* Serialization exception catch */
-       serialization_clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
-       serialization_clause->try_len = mono_mb_get_pos (mb) - serialization_clause->try_offset;
-       serialization_clause->data.catch_class = mono_defaults.object_class;
-
-       /* handler code */
-       serialization_clause->handler_offset = mono_mb_get_label (mb);
-
-       /*
-        * If the serialization of the original exception failed we serialize the newly
-        * thrown exception, which should always succeed, passing it over to the calling
-        * domain.
-        */
+       mono_mb_emit_icall (mb, mono_remoting_update_exception);
+       mono_mb_emit_op (mb, CEE_CASTCLASS, mono_defaults.exception_class);
        mono_mb_emit_managed_call (mb, method_rs_serialize_exc, NULL);
        mono_mb_emit_stloc (mb, loc_serialized_exc);
        mono_mb_emit_ldarg (mb, 2);
@@ -930,13 +941,8 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
        mono_mb_emit_byte (mb, CEE_STIND_REF);
        mono_mb_emit_branch (mb, CEE_LEAVE);
 
-       /* end serialization exception catch */
-       serialization_clause->handler_len = mono_mb_get_pos (mb) - serialization_clause->handler_offset;
-       mono_mb_patch_branch (mb, pos_leave_serialization);
-
-       mono_mb_emit_branch (mb, CEE_LEAVE);
-       /* end main catch */
        main_clause->handler_len = mono_mb_get_pos (mb) - main_clause->handler_offset;
+       /* end catch */
        mono_mb_patch_branch (mb, pos_leave);
        
        if (copy_return)
@@ -944,7 +950,7 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
 
        mono_mb_emit_byte (mb, CEE_RET);
 
-       mono_mb_set_clauses (mb, 2, clauses);
+       mono_mb_set_clauses (mb, 1, main_clause);
 #endif
 
        info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
index 4cd30493fff80524e3b60b368623d7e2d35563c7..4f8a285f4993c05e2bf1a4a90c99967917841032 100644 (file)
@@ -398,6 +398,7 @@ get_array_fill_vtable (void)
                klass.rank = 1;
                klass.instance_size = MONO_SIZEOF_MONO_ARRAY;
                klass.sizes.element_size = 1;
+               klass.size_inited = 1;
                klass.name = "array_filler_type";
 
                vtable->klass = &klass;
@@ -2260,8 +2261,7 @@ sgen_client_thread_detach_with_lock (SgenThreadInfo *p)
 
        tid = mono_thread_info_get_tid (p);
 
-       if (p->client_info.info.runtime_thread)
-               mono_threads_add_joinable_thread ((gpointer)tid);
+       mono_threads_add_joinable_runtime_thread (&p->client_info.info);
 
        if (mono_gc_get_gc_callbacks ()->thread_detach_func) {
                mono_gc_get_gc_callbacks ()->thread_detach_func (p->client_info.runtime_data);
@@ -2361,6 +2361,10 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
 {
        scan_area_arg_start = start_nursery;
        scan_area_arg_end = end_nursery;
+#ifdef HOST_WASM
+       //Under WASM we don't scan thread stacks and we can't trust the values we find there either.
+       return;
+#endif
 
        FOREACH_THREAD (info) {
                int skip_reason = 0;
index 48ce7f963ed23cfab6cc0eb68b6b42aa4f37eebf..a8a1b9bf32c9f8437d6772e3031ddf03ea1e3625 100644 (file)
@@ -70,6 +70,8 @@ update_current_thread_stack (void *start)
 
 #if !defined(MONO_CROSS_COMPILE) && MONO_ARCH_HAS_MONO_CONTEXT
        MONO_CONTEXT_GET_CURRENT (info->client_info.ctx);
+#elif defined (HOST_WASM)
+       //nothing
 #else
        g_error ("Sgen STW requires a working mono-context");
 #endif
index 649791e7beafcb4104a181e0c720a2509ea53d4b..48df45db99732e672656cef36644cfca5cd8081f 100644 (file)
@@ -374,6 +374,12 @@ mono_save_custom_attrs (MonoImage *image, void *obj, MonoArray *cattrs)
        mono_image_property_insert (image, obj, MONO_PROP_DYNAMIC_CATTR, ainfo);
        mono_loader_unlock ();
 
+}
+#else
+//FIXME some code compiled under DISABLE_REFLECTION_EMIT depends on this function, we should be more aggressively disabling things
+static void
+mono_save_custom_attrs (MonoImage *image, void *obj, MonoArray *cattrs)
+{
 }
 #endif
 
@@ -740,7 +746,7 @@ is_field_on_inst (MonoClassField *field)
 
 #ifndef DISABLE_REFLECTION_EMIT
 static guint32
-mono_image_get_fieldref_token (MonoDynamicImage *assembly, MonoObjectHandle f, MonoClassField *field)
+mono_image_get_fieldref_token (MonoDynamicImage *assembly, MonoClassField *field)
 {
        MonoType *type;
        guint32 token;
@@ -748,7 +754,7 @@ mono_image_get_fieldref_token (MonoDynamicImage *assembly, MonoObjectHandle f, M
        g_assert (field);
        g_assert (field->parent);
 
-       token = GPOINTER_TO_UINT (mono_g_hash_table_lookup (assembly->handleref_managed, MONO_HANDLE_RAW (f)));
+       token = GPOINTER_TO_UINT (g_hash_table_lookup (assembly->handleref, field));
        if (token)
                return token;
 
@@ -761,7 +767,7 @@ mono_image_get_fieldref_token (MonoDynamicImage *assembly, MonoObjectHandle f, M
        token = mono_image_get_memberref_token (assembly, &field->parent->byval_arg,
                                                                                        mono_field_get_name (field),
                                                                                        mono_dynimage_encode_fieldref_signature (assembly, field->parent->image, type));
-       mono_g_hash_table_insert (assembly->handleref_managed, MONO_HANDLE_RAW (f), GUINT_TO_POINTER(token));
+       g_hash_table_insert (assembly->handleref, field, GUINT_TO_POINTER(token));
        return token;
 }
 
@@ -1115,17 +1121,20 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObjectHandle obj,
                         gboolean create_open_instance, gboolean register_token,
                         MonoError *error)
 {
+       HANDLE_FUNCTION_ENTER ();
        guint32 token = 0;
 
        error_init (error);
 
        MonoClass *klass = mono_handle_class (obj);
+       MonoObjectHandle register_obj = MONO_HANDLE_NEW (MonoObject, NULL);
+       MONO_HANDLE_ASSIGN (register_obj, obj);
 
        /* Check for user defined reflection objects */
        /* TypeDelegator is the only corlib type which doesn't look like a MonoReflectionType */
        if (klass->image != mono_defaults.corlib || (strcmp (klass->name, "TypeDelegator") == 0)) {
                mono_error_set_not_supported (error, "User defined subclasses of System.Type are not yet supported");
-               return 0;
+               goto leave;
        }
 
        /* This function is called from ModuleBuilder:getToken multiple times for the same objects */
@@ -1133,7 +1142,8 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObjectHandle obj,
 
        if (strcmp (klass->name, "RuntimeType") == 0) {
                MonoType *type = mono_reflection_type_handle_mono_type (MONO_HANDLE_CAST (MonoReflectionType, obj), error);
-               return_val_if_nok (error, 0);
+               if (!is_ok (error))
+                       goto leave;
                MonoClass *mc = mono_class_from_mono_type (type);
                token = mono_metadata_token_from_dor (
                        mono_dynimage_encode_typedef_or_ref_full (assembly, type, !mono_class_is_gtd (mc) || create_open_instance));
@@ -1170,7 +1180,21 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObjectHandle obj,
                                how_collide = MONO_DYN_IMAGE_TOK_NEW;
                        }
                } else {
-                       token = mono_image_get_methodref_token (assembly, method, create_open_instance);
+                       guint32 methodref_token = mono_image_get_methodref_token (assembly, method, create_open_instance);
+                       /* We need to register a 'canonical' object.  The same
+                        * MonoMethod could have been reflected via different
+                        * classes so the MonoReflectionMethod:reftype could be
+                        * different, and the object lookup in
+                        * dynamic_image_register_token would assert assert. So
+                        * we pick the MonoReflectionMethod object that has the
+                        * reflected type as NULL (ie, take the declaring type
+                        * of the method) */
+                       MonoReflectionMethodHandle canonical_obj =
+                               mono_method_get_object_handle (MONO_HANDLE_DOMAIN (obj), method, NULL, error);
+                       if (!is_ok (error))
+                               goto leave;
+                       MONO_HANDLE_ASSIGN (register_obj, canonical_obj);
+                       token = methodref_token;
                }
                /*g_print ("got token 0x%08x for %s\n", token, m->method->name);*/
        } else if (strcmp (klass->name, "MonoField") == 0) {
@@ -1182,25 +1206,42 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObjectHandle obj,
                        token = MONO_TOKEN_FIELD_DEF | field_table_idx;
                        how_collide = MONO_DYN_IMAGE_TOK_NEW;
                } else {
-                       token = mono_image_get_fieldref_token (assembly, obj, field);
+                       guint32 fieldref_token = mono_image_get_fieldref_token (assembly, field);
+                       /* Same as methodref: get a canonical object to
+                        * register with the token. */
+                       MonoReflectionFieldHandle canonical_obj =
+                               mono_field_get_object_handle (MONO_HANDLE_DOMAIN (obj), field->parent, field, error);
+                       if (!is_ok (error))
+                               goto leave;
+                       MONO_HANDLE_ASSIGN (register_obj, canonical_obj);
+                       token = fieldref_token;
                }
                /*g_print ("got token 0x%08x for %s\n", token, f->field->name);*/
        } else if (strcmp (klass->name, "MonoArrayMethod") == 0) {
                MonoReflectionArrayMethodHandle m = MONO_HANDLE_CAST (MonoReflectionArrayMethod, obj);
-               token = mono_image_get_array_token (assembly, m, error);
-               return_val_if_nok (error, 0);
+               /* always returns a fresh token */
+               guint32 array_token = mono_image_get_array_token (assembly, m, error);
+               if (!is_ok (error))
+                       goto leave;
+               token = array_token;
+               how_collide = MONO_DYN_IMAGE_TOK_NEW;
        } else if (strcmp (klass->name, "SignatureHelper") == 0) {
                MonoReflectionSigHelperHandle s = MONO_HANDLE_CAST (MonoReflectionSigHelper, obj);
-               token = MONO_TOKEN_SIGNATURE | mono_image_get_sighelper_token (assembly, s, error);
-               return_val_if_nok (error, 0);
+               /* always returns a fresh token */
+               guint32 sig_token = MONO_TOKEN_SIGNATURE | mono_image_get_sighelper_token (assembly, s, error);
+               if (!is_ok (error))
+                       goto leave;
+               token = sig_token;
+               how_collide = MONO_DYN_IMAGE_TOK_NEW;
        } else {
                g_error ("requested token for %s\n", klass->name);
        }
 
        if (register_token)
-               mono_dynamic_image_register_token (assembly, token, obj, how_collide);
+               mono_dynamic_image_register_token (assembly, token, register_obj, how_collide);
 
-       return token;
+leave:
+       HANDLE_FUNCTION_RETURN_VAL (token);
 }
 
 
@@ -2777,7 +2818,7 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                        (rmb->iattrs & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL))
                m = (MonoMethod *)image_g_new0 (image, MonoMethodPInvoke, 1);
        else
-               m = (MonoMethod *)image_g_new0 (image, MonoMethodWrapper, 1);
+               m = (MonoMethod *)image_g_new0 (image, MonoDynamicMethod, 1);
 
        wrapperm = (MonoMethodWrapper*)m;
 
@@ -2872,6 +2913,8 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                }
 
                wrapperm->header = header;
+               MonoDynamicMethod *dm = (MonoDynamicMethod*)wrapperm;
+               dm->assembly = klass->image->assembly;
        }
 
        if (rmb->generic_params) {
@@ -3908,6 +3951,7 @@ reflection_create_dynamic_method (MonoReflectionDynamicMethodHandle ref_mb, Mono
                rmb.refs [i + 1] = handle_class;
        }               
 
+       MonoAssembly *ass = NULL;
        if (mb->owner) {
                MonoType *owner_type = mono_reflection_type_get_handle ((MonoReflectionType*)mb->owner, error);
                if (!is_ok (error)) {
@@ -3915,11 +3959,14 @@ reflection_create_dynamic_method (MonoReflectionDynamicMethodHandle ref_mb, Mono
                        return FALSE;
                }
                klass = mono_class_from_mono_type (owner_type);
+               ass = klass->image->assembly;
        } else {
                klass = mono_defaults.object_class;
+               ass = (mb->module && mb->module->image) ? mb->module->image->assembly : NULL;
        }
 
        mb->mhandle = handle = reflection_methodbuilder_to_mono_method (klass, &rmb, sig, error);
+       ((MonoDynamicMethod*)handle)->assembly = ass;
        g_free (rmb.refs);
        return_val_if_nok (error, FALSE);
 
@@ -4371,6 +4418,18 @@ ves_icall_AssemblyBuilder_basic_init (MonoReflectionAssemblyBuilder *assemblyb)
        mono_reflection_dynimage_basic_init (assemblyb);
 }
 
+void
+ves_icall_AssemblyBuilder_UpdateNativeCustomAttributes (MonoReflectionAssemblyBuilderHandle assemblyb, MonoError *error)
+{
+       MonoArrayHandle cattrs = MONO_HANDLE_NEW_GET (MonoArray, assemblyb, cattrs);
+
+       MonoReflectionAssemblyHandle assembly_handle = MONO_HANDLE_CAST (MonoReflectionAssembly, assemblyb);
+       MonoAssembly *assembly = MONO_HANDLE_GETVAL (assembly_handle, assembly);
+       g_assert (assembly);
+
+       mono_save_custom_attrs (assembly->image, assembly, MONO_HANDLE_RAW (cattrs));
+}
+
 void
 ves_icall_EnumBuilder_setup_enum_type (MonoReflectionTypeHandle enumtype,
                                       MonoReflectionTypeHandle t,
index 1c8c1f401a8fb0a49c3f0cdb8b9f1abeeedeeda4..a1424beaebaea483723c7cda7050bed4182730f6 100644 (file)
@@ -46,6 +46,7 @@
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/refcount.h>
+#include <mono/utils/mono-os-wait.h>
 
 typedef struct {
        MonoDomain *domain;
@@ -495,7 +496,7 @@ mono_threadpool_end_invoke (MonoAsyncResult *ares, MonoArray **out_args, MonoObj
                mono_monitor_exit ((MonoObject*) ares);
                MONO_ENTER_GC_SAFE;
 #ifdef HOST_WIN32
-               WaitForSingleObjectEx (wait_event, INFINITE, TRUE);
+               mono_win32_wait_for_single_object_ex (wait_event, INFINITE, TRUE);
 #else
                mono_w32handle_wait_one (wait_event, MONO_INFINITE_WAIT, TRUE);
 #endif
index ced0ac516efbf9a8e91c47df9fbef6ceec645bc6..2feb0ba4f8488713a117dd3a8156fb28de455e03 100644 (file)
@@ -189,7 +189,7 @@ void ves_icall_System_Runtime_Remoting_Contexts_Context_ReleaseContext (MonoAppC
 
 MonoInternalThread *mono_thread_internal_current (void);
 
-void mono_thread_internal_abort (MonoInternalThread *thread);
+void mono_thread_internal_abort (MonoInternalThread *thread, gboolean appdomain_unload);
 void mono_thread_internal_suspend_for_shutdown (MonoInternalThread *thread);
 
 gboolean mono_thread_internal_has_appdomain_ref (MonoInternalThread *thread, MonoDomain *domain);
@@ -242,6 +242,7 @@ gboolean
 mono_thread_create_checked (MonoDomain *domain, gpointer func, gpointer arg, MonoError *error);
 
 /* Can't include utils/mono-threads.h because of the THREAD_INFO_TYPE wizardry */
+void mono_threads_add_joinable_runtime_thread (gpointer thread_info);
 void mono_threads_add_joinable_thread (gpointer tid);
 void mono_threads_join_threads (void);
 void mono_thread_join (gpointer tid);
index 3eb6b3b623c8994cf3b2442b79a4270c2eebcc0b..43c8a61d9ab8159f75591149aa572c470dc52227 100644 (file)
@@ -54,6 +54,7 @@
 #include <mono/metadata/abi-details.h>
 #include <mono/metadata/w32error.h>
 #include <mono/utils/w32api.h>
+#include <mono/utils/mono-os-wait.h>
 
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
@@ -61,6 +62,9 @@
 
 #if defined(HOST_WIN32)
 #include <objbase.h>
+
+extern gboolean
+mono_native_thread_join_handle (HANDLE thread_handle, gboolean close_handle);
 #endif
 
 #if defined(HOST_ANDROID) && !defined(TARGET_ARM64) && !defined(TARGET_AMD64)
@@ -199,9 +203,6 @@ static gboolean shutting_down = FALSE;
 
 static gint32 managed_thread_id_counter = 0;
 
-/* Class lazy loading functions */
-static GENERATE_GET_CLASS_WITH_CACHE (appdomain_unloaded_exception, "System", "AppDomainUnloadedException")
-
 static void
 mono_threads_lock (void)
 {
@@ -760,6 +761,15 @@ mono_thread_detach_internal (MonoInternalThread *thread)
        thread->abort_exc = NULL;
        thread->current_appcontext = NULL;
 
+       /*
+       * Prevent race condition between execution of this method and runtime shutdown.
+       * Adding runtime thread to the joinable threads list will make sure runtime shutdown
+       * won't complete until added runtime thread have exited. Owner of threads attached to the
+       * runtime but not identified as runtime threads needs to make sure thread detach calls won't
+       * race with runtime shutdown.
+       */
+       mono_threads_add_joinable_runtime_thread (thread->thread_info);
+
        /*
         * thread->synch_cs can be NULL if this was called after
         * ves_icall_System_Threading_InternalThread_Thread_free_internal.
@@ -1023,9 +1033,7 @@ static guint32 WINAPI start_wrapper_internal(StartInfo *start_info, gsize *stack
 
        mono_thread_detach_internal (internal);
 
-       internal->tid = 0;
-
-       return(0);
+       return 0;
 }
 
 static gsize WINAPI
@@ -1119,7 +1127,7 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, MonoObject *sta
        else
                stack_set_size = 0;
 
-       if (!mono_thread_platform_create_thread (start_wrapper, start_info, &stack_set_size, &tid)) {
+       if (!mono_thread_platform_create_thread ((MonoThreadStart)start_wrapper, start_info, &stack_set_size, &tid)) {
                /* The thread couldn't be created, so set an exception */
                mono_threads_lock ();
                mono_g_hash_table_remove (threads_starting_up, thread);
@@ -1593,6 +1601,8 @@ ves_icall_System_Threading_Thread_GetName_internal (MonoInternalThread *this_obj
 void 
 mono_thread_set_name_internal (MonoInternalThread *this_obj, MonoString *name, gboolean permanent, gboolean reset, MonoError *error)
 {
+       MonoNativeThreadId tid = 0;
+
        LOCK_THREAD (this_obj);
 
        error_init (error);
@@ -1619,14 +1629,16 @@ mono_thread_set_name_internal (MonoInternalThread *this_obj, MonoString *name, g
        else
                this_obj->name = NULL;
 
-       
+       if (!(this_obj->state & ThreadState_Stopped))
+               tid = thread_get_tid (this_obj);
+
        UNLOCK_THREAD (this_obj);
 
-       if (this_obj->name && this_obj->tid) {
+       if (this_obj->name && tid) {
                char *tname = mono_string_to_utf8_checked (name, error);
                return_if_nok (error);
-               MONO_PROFILER_RAISE (thread_name, (this_obj->tid, tname));
-               mono_native_thread_set_name (thread_get_tid (this_obj), tname);
+               MONO_PROFILER_RAISE (thread_name, ((uintptr_t)tid, tname));
+               mono_native_thread_set_name (tid, tname);
                mono_free (tname);
        }
 }
@@ -1822,8 +1834,6 @@ ves_icall_System_Threading_Thread_Join_internal (MonoThread *this_obj, int ms)
                return FALSE;
        }
 
-       MonoNativeThreadId tid = thread_get_tid (thread);
-
        UNLOCK_THREAD (thread);
 
        if (ms == -1)
@@ -1841,16 +1851,9 @@ ves_icall_System_Threading_Thread_Join_internal (MonoThread *this_obj, int ms)
        if (ret == MONO_THREAD_INFO_WAIT_RET_SUCCESS_0) {
                THREAD_DEBUG (g_message ("%s: join successful", __func__));
 
-#ifdef HOST_WIN32
-               /* TODO: Do this on Unix platforms as well. See PR #5454 for context.  */
                /* Wait for the thread to really exit */
-               MONO_ENTER_GC_SAFE;
-               /* This shouldn't block */
-               mono_threads_join_lock ();
-               mono_native_thread_join (tid);
-               mono_threads_join_unlock ();
-               MONO_EXIT_GC_SAFE;
-#endif
+               MonoNativeThreadId tid = thread_get_tid (thread);
+               mono_thread_join (tid);
 
                return TRUE;
        }
@@ -1909,9 +1912,9 @@ ves_icall_System_Threading_WaitHandle_Wait_internal (gpointer *handles, gint32 n
                MONO_ENTER_GC_SAFE;
 #ifdef HOST_WIN32
                if (numhandles != 1)
-                       ret = mono_w32handle_convert_wait_ret (WaitForMultipleObjectsEx (numhandles, handles, waitall, timeoutLeft, TRUE), numhandles);
+                       ret = mono_w32handle_convert_wait_ret (mono_win32_wait_for_multiple_objects_ex(numhandles, handles, waitall, timeoutLeft, TRUE), numhandles);
                else
-                       ret = mono_w32handle_convert_wait_ret (WaitForSingleObjectEx (handles [0], timeoutLeft, TRUE), 1);
+                       ret = mono_w32handle_convert_wait_ret (mono_win32_wait_for_single_object_ex (handles [0], timeoutLeft, TRUE), 1);
 #else
                /* mono_w32handle_wait_multiple optimizes the case for numhandles == 1 */
                ret = mono_w32handle_wait_multiple (handles, numhandles, waitall, timeoutLeft, TRUE);
@@ -1961,7 +1964,7 @@ ves_icall_System_Threading_WaitHandle_SignalAndWait_Internal (gpointer toSignal,
        
        MONO_ENTER_GC_SAFE;
 #ifdef HOST_WIN32
-       ret = mono_w32handle_convert_wait_ret (SignalObjectAndWait (toSignal, toWait, ms, TRUE), 1);
+       ret = mono_w32handle_convert_wait_ret (mono_win32_signal_object_and_wait (toSignal, toWait, ms, TRUE), 1);
 #else
        ret = mono_w32handle_signal_and_wait (toSignal, toWait, ms, TRUE);
 #endif
@@ -2294,7 +2297,7 @@ mono_thread_current_check_pending_interrupt (void)
 }
 
 static gboolean
-request_thread_abort (MonoInternalThread *thread, MonoObject *state)
+request_thread_abort (MonoInternalThread *thread, MonoObject *state, gboolean appdomain_unload)
 {
        LOCK_THREAD (thread);
        
@@ -2311,6 +2314,11 @@ request_thread_abort (MonoInternalThread *thread, MonoObject *state)
        }
 
        thread->state |= ThreadState_AbortRequested;
+       if (appdomain_unload)
+               thread->flags |= MONO_THREAD_FLAG_APPDOMAIN_ABORT;
+       else
+               thread->flags &= ~MONO_THREAD_FLAG_APPDOMAIN_ABORT;
+
        if (thread->abort_state_handle)
                mono_gchandle_free (thread->abort_state_handle);
        if (state) {
@@ -2335,7 +2343,7 @@ request_thread_abort (MonoInternalThread *thread, MonoObject *state)
 void
 ves_icall_System_Threading_Thread_Abort (MonoInternalThread *thread, MonoObject *state)
 {
-       if (!request_thread_abort (thread, state))
+       if (!request_thread_abort (thread, state, FALSE))
                return;
 
        if (thread == mono_thread_internal_current ()) {
@@ -2353,11 +2361,11 @@ ves_icall_System_Threading_Thread_Abort (MonoInternalThread *thread, MonoObject
  * \p thread MUST NOT be the current thread.
  */
 void
-mono_thread_internal_abort (MonoInternalThread *thread)
+mono_thread_internal_abort (MonoInternalThread *thread, gboolean appdomain_unload)
 {
        g_assert (thread != mono_thread_internal_current ());
 
-       if (!request_thread_abort (thread, NULL))
+       if (!request_thread_abort (thread, NULL, appdomain_unload))
                return;
        async_abort_internal (thread, TRUE);
 }
@@ -2366,17 +2374,23 @@ void
 ves_icall_System_Threading_Thread_ResetAbort (MonoThread *this_obj)
 {
        MonoInternalThread *thread = mono_thread_internal_current ();
-       gboolean was_aborting;
+       gboolean was_aborting, is_domain_abort;
 
        LOCK_THREAD (thread);
        was_aborting = thread->state & ThreadState_AbortRequested;
-       thread->state &= ~ThreadState_AbortRequested;
+       is_domain_abort = thread->flags & MONO_THREAD_FLAG_APPDOMAIN_ABORT; 
+
+       if (was_aborting && !is_domain_abort)
+               thread->state &= ~ThreadState_AbortRequested;
        UNLOCK_THREAD (thread);
 
        if (!was_aborting) {
                const char *msg = "Unable to reset abort because no abort was requested";
                mono_set_pending_exception (mono_get_exception_thread_state (msg));
                return;
+       } else if (is_domain_abort) {
+               /* Silently ignore abort resets in unloading appdomains */
+               return;
        }
 
        mono_get_eh_callbacks ()->mono_clear_abort_threshold ();
@@ -2576,7 +2590,7 @@ mono_thread_stop (MonoThread *thread)
 {
        MonoInternalThread *internal = thread->internal_thread;
 
-       if (!request_thread_abort (internal, NULL))
+       if (!request_thread_abort (internal, NULL, FALSE))
                return;
 
        if (internal == mono_thread_internal_current ()) {
@@ -2999,7 +3013,7 @@ thread_detach (MonoThreadInfo *info)
 static void
 thread_detach_with_lock (MonoThreadInfo *info)
 {
-       return mono_gc_thread_detach_with_lock (info);
+       mono_gc_thread_detach_with_lock (info);
 }
 
 static gboolean
@@ -3224,7 +3238,7 @@ remove_and_abort_threads (gpointer key, gpointer value, gpointer user)
                wait->num++;
 
                THREAD_DEBUG (g_print ("%s: Aborting id: %"G_GSIZE_FORMAT"\n", __func__, (gsize)thread->tid));
-               mono_thread_internal_abort (thread);
+               mono_thread_internal_abort (thread, FALSE);
        }
 
        return TRUE;
@@ -3939,7 +3953,7 @@ mono_threads_abort_appdomain_threads (MonoDomain *domain, int timeout)
                if (user_data.wait.num > 0) {
                        /* Abort the threads outside the threads lock */
                        for (i = 0; i < user_data.wait.num; ++i)
-                               mono_thread_internal_abort (user_data.wait.threads [i]);
+                               mono_thread_internal_abort (user_data.wait.threads [i], TRUE);
 
                        /*
                         * We should wait for the threads either to abort, or to leave the
@@ -4449,8 +4463,9 @@ mono_thread_execute_interruption (void)
 
        /* this will consume pending APC calls */
 #ifdef HOST_WIN32
-       WaitForSingleObjectEx (GetCurrentThread(), 0, TRUE);
+       mono_win32_wait_for_single_object_ex (GetCurrentThread (), 0, TRUE);
 #endif
+
        /* Clear the interrupted flag of the thread so it can wait again */
        mono_thread_info_clear_self_interrupt ();
 
@@ -4518,9 +4533,8 @@ mono_thread_request_interruption (gboolean running_managed)
 
                /* this will awake the thread if it is in WaitForSingleObject 
                   or similar */
-               /* Our implementation of this function ignores the func argument */
 #ifdef HOST_WIN32
-               QueueUserAPC ((PAPCFUNC)dummy_apc, thread->native_handle, (ULONG_PTR)NULL);
+               mono_win32_interrupt_wait (thread->thread_info, thread->native_handle, (DWORD)thread->tid);
 #else
                mono_thread_info_self_interrupt ();
 #endif
@@ -4996,6 +5010,78 @@ mono_thread_is_foreign (MonoThread *thread)
        return info->runtime_thread == FALSE;
 }
 
+#ifndef HOST_WIN32
+static void
+threads_native_thread_join_lock (gpointer tid, gpointer value)
+{
+       pthread_t thread = (pthread_t)tid;
+       if (thread != pthread_self ()) {
+               MONO_ENTER_GC_SAFE;
+               /* This shouldn't block */
+               mono_threads_join_lock ();
+               mono_native_thread_join (thread);
+               mono_threads_join_unlock ();
+               MONO_EXIT_GC_SAFE;
+       }
+}
+static void
+threads_native_thread_join_nolock (gpointer tid, gpointer value)
+{
+       pthread_t thread = (pthread_t)tid;
+       MONO_ENTER_GC_SAFE;
+       mono_native_thread_join (thread);
+       MONO_EXIT_GC_SAFE;
+}
+
+static void
+threads_add_joinable_thread_nolock (gpointer tid)
+{
+       g_hash_table_insert (joinable_threads, tid, tid);
+}
+#else
+static void
+threads_native_thread_join_lock (gpointer tid, gpointer value)
+{
+       MonoNativeThreadId thread_id = (MonoNativeThreadId)(guint64)tid;
+       HANDLE thread_handle = (HANDLE)value;
+       if (thread_id != GetCurrentThreadId () && thread_handle != NULL && thread_handle != INVALID_HANDLE_VALUE) {
+               MONO_ENTER_GC_SAFE;
+               /* This shouldn't block */
+               mono_threads_join_lock ();
+               mono_native_thread_join_handle (thread_handle, TRUE);
+               mono_threads_join_unlock ();
+               MONO_EXIT_GC_SAFE;
+       }
+}
+
+static void
+threads_native_thread_join_nolock (gpointer tid, gpointer value)
+{
+       HANDLE thread_handle = (HANDLE)value;
+       MONO_ENTER_GC_SAFE;
+       mono_native_thread_join_handle (thread_handle, TRUE);
+       MONO_EXIT_GC_SAFE;
+}
+
+static void
+threads_add_joinable_thread_nolock (gpointer tid)
+{
+       g_hash_table_insert (joinable_threads, tid, (gpointer)OpenThread (SYNCHRONIZE, TRUE, (MonoNativeThreadId)(guint64)tid));
+}
+#endif
+
+void
+mono_threads_add_joinable_runtime_thread (gpointer thread_info)
+{
+       g_assert (thread_info);
+       MonoThreadInfo *mono_thread_info = (MonoThreadInfo*)thread_info;
+
+       if (mono_thread_info->runtime_thread) {
+               if (InterlockedCompareExchange (&mono_thread_info->thread_pending_native_join, TRUE, FALSE) == FALSE)
+                       mono_threads_add_joinable_thread ((gpointer)(MONO_UINT_TO_NATIVE_THREAD_ID (mono_thread_info_get_tid (mono_thread_info))));
+       }
+}
+
 /*
  * mono_add_joinable_thread:
  *
@@ -5005,21 +5091,24 @@ mono_thread_is_foreign (MonoThread *thread)
 void
 mono_threads_add_joinable_thread (gpointer tid)
 {
-#ifndef HOST_WIN32
        /*
         * We cannot detach from threads because it causes problems like
         * 2fd16f60/r114307. So we collect them and join them when
-        * we have time (in he finalizer thread).
+        * we have time (in the finalizer thread).
         */
        joinable_threads_lock ();
        if (!joinable_threads)
                joinable_threads = g_hash_table_new (NULL, NULL);
-       g_hash_table_insert (joinable_threads, tid, tid);
-       UnlockedIncrement (&joinable_thread_count);
+
+       gpointer orig_key;
+       gpointer value;
+       if (!g_hash_table_lookup_extended (joinable_threads, tid, &orig_key, &value)) {
+               threads_add_joinable_thread_nolock (tid);
+               UnlockedIncrement (&joinable_thread_count);
+       }
        joinable_threads_unlock ();
 
        mono_gc_finalize_notify ();
-#endif
 }
 
 /*
@@ -5031,11 +5120,9 @@ mono_threads_add_joinable_thread (gpointer tid)
 void
 mono_threads_join_threads (void)
 {
-#ifndef HOST_WIN32
        GHashTableIter iter;
        gpointer key;
-       gpointer tid;
-       pthread_t thread;
+       gpointer value;
        gboolean found;
 
        /* Fastpath */
@@ -5047,27 +5134,17 @@ mono_threads_join_threads (void)
                found = FALSE;
                if (g_hash_table_size (joinable_threads)) {
                        g_hash_table_iter_init (&iter, joinable_threads);
-                       g_hash_table_iter_next (&iter, &key, (void**)&tid);
-                       thread = (pthread_t)tid;
+                       g_hash_table_iter_next (&iter, &key, (void**)&value);
                        g_hash_table_remove (joinable_threads, key);
                        UnlockedDecrement (&joinable_thread_count);
                        found = TRUE;
                }
                joinable_threads_unlock ();
-               if (found) {
-                       if (thread != pthread_self ()) {
-                               MONO_ENTER_GC_SAFE;
-                               /* This shouldn't block */
-                               mono_threads_join_lock ();
-                               mono_native_thread_join (thread);
-                               mono_threads_join_unlock ();
-                               MONO_EXIT_GC_SAFE;
-                       }
-               } else {
+               if (found)
+                       threads_native_thread_join_lock (key, value);
+               else
                        break;
-               }
        }
-#endif
 }
 
 /*
@@ -5079,26 +5156,25 @@ mono_threads_join_threads (void)
 void
 mono_thread_join (gpointer tid)
 {
-#ifndef HOST_WIN32
-       pthread_t thread;
        gboolean found = FALSE;
+       gpointer orig_key;
+       gpointer value;
 
        joinable_threads_lock ();
        if (!joinable_threads)
                joinable_threads = g_hash_table_new (NULL, NULL);
-       if (g_hash_table_lookup (joinable_threads, tid)) {
+
+       if (g_hash_table_lookup_extended (joinable_threads, tid, &orig_key, &value)) {
                g_hash_table_remove (joinable_threads, tid);
                UnlockedDecrement (&joinable_thread_count);
                found = TRUE;
        }
        joinable_threads_unlock ();
+
        if (!found)
                return;
-       thread = (pthread_t)tid;
-       MONO_ENTER_GC_SAFE;
-       mono_native_thread_join (thread);
-       MONO_EXIT_GC_SAFE;
-#endif
+
+       threads_native_thread_join_nolock (tid, value);
 }
 
 void
index d25681126a4be13107c66a64fc52b24bb9dadcca..67fde9c8c1dcb764b6a36ee73c4a5a967c55ed73 100644 (file)
@@ -69,6 +69,9 @@ mono_w32error_unix_to_win32 (guint32 error)
 #ifdef ENODEV
        case ENODEV: return ERROR_DEV_NOT_EXIST;
 #endif
+#ifdef ENXIO
+       case ENXIO: return ERROR_DEV_NOT_EXIST;
+#endif
 
        default:
                g_error ("%s: unknown error (%d) \"%s\"", __FILE__, error, g_strerror (error));
index a0fbf95003d08d3c0ee12cf5de77a73907982910..6ecb7ff9d5f40c58d05e8c72cff844bb9b1ee634 100644 (file)
@@ -221,34 +221,91 @@ mono_w32file_remove_directory (const gunichar2 *name)
        return res;
 }
 
+/*
+ * GetFileAttributes|Ex () seems to try opening the file, which might lead to sharing violation errors, whereas
+ * FindFirstFile always succeeds.
+ */
 guint32
 mono_w32file_get_attributes (const gunichar2 *name)
 {
        guint32 res;
+       guint32 error;
+       HANDLE find_handle;
+       WIN32_FIND_DATA find_data;
+
        MONO_ENTER_GC_SAFE;
        res = GetFileAttributes (name);
        MONO_EXIT_GC_SAFE;
-       return res;
+
+       if (res != INVALID_FILE_ATTRIBUTES)
+               return res;
+
+       error = GetLastError ();
+       if (error != ERROR_SHARING_VIOLATION)
+               return INVALID_FILE_ATTRIBUTES;
+
+       MONO_ENTER_GC_SAFE;
+       find_handle = FindFirstFile (name, &find_data);
+       MONO_EXIT_GC_SAFE;
+
+       if (find_handle == INVALID_HANDLE_VALUE)
+               return INVALID_FILE_ATTRIBUTES;
+
+       MONO_ENTER_GC_SAFE;
+       FindClose (find_handle);
+       MONO_EXIT_GC_SAFE;
+
+       return find_data.dwFileAttributes;
+}
+
+static gint64
+convert_filetime (const FILETIME *filetime)
+{
+       return (gint64) ((((guint64) filetime->dwHighDateTime) << 32) + filetime->dwLowDateTime);
 }
 
 gboolean
 mono_w32file_get_attributes_ex (const gunichar2 *name, MonoIOStat *stat)
 {
-       gboolean result;
-       WIN32_FILE_ATTRIBUTE_DATA data;
+       gboolean res;
+       guint32 error;
+       HANDLE find_handle;
+       WIN32_FIND_DATA find_data;
+       WIN32_FILE_ATTRIBUTE_DATA file_attribute_data;
 
        MONO_ENTER_GC_SAFE;
-       result = GetFileAttributesEx (name, GetFileExInfoStandard, &data);
+       res = GetFileAttributesEx (name, GetFileExInfoStandard, &file_attribute_data);
        MONO_EXIT_GC_SAFE;
-       if (result) {
-               stat->attributes = data.dwFileAttributes;
-               stat->creation_time = (gint64) ((((guint64) data.ftCreationTime.dwHighDateTime) << 32) + data.ftCreationTime.dwLowDateTime);
-               stat->last_access_time = (gint64) ((((guint64) data.ftLastAccessTime.dwHighDateTime) << 32) + data.ftLastAccessTime.dwLowDateTime);
-               stat->last_write_time = (gint64) ((((guint64) data.ftLastWriteTime.dwHighDateTime) << 32) + data.ftLastWriteTime.dwLowDateTime);
-               stat->length = ((gint64)data.nFileSizeHigh << 32) | data.nFileSizeLow;
+       if (res) {
+               stat->attributes = file_attribute_data.dwFileAttributes;
+               stat->creation_time = convert_filetime (&file_attribute_data.ftCreationTime);
+               stat->last_access_time = convert_filetime (&file_attribute_data.ftLastAccessTime);
+               stat->last_write_time = convert_filetime (&file_attribute_data.ftLastWriteTime);
+               stat->length = ((gint64)file_attribute_data.nFileSizeHigh << 32) | file_attribute_data.nFileSizeLow;
+               return TRUE;
        }
 
-       return result;
+       error = GetLastError ();
+       if (error != ERROR_SHARING_VIOLATION)
+               return FALSE;
+
+       MONO_ENTER_GC_SAFE;
+       find_handle = FindFirstFile (name, &find_data);
+       MONO_EXIT_GC_SAFE;
+
+       if (find_handle == INVALID_HANDLE_VALUE)
+               return FALSE;
+
+       MONO_ENTER_GC_SAFE;
+       FindClose (find_handle);
+       MONO_EXIT_GC_SAFE;
+
+       stat->attributes = find_data.dwFileAttributes;
+       stat->creation_time = convert_filetime (&find_data.ftCreationTime);
+       stat->last_access_time = convert_filetime (&find_data.ftLastAccessTime);
+       stat->last_write_time = convert_filetime (&find_data.ftLastWriteTime);
+       stat->length = ((gint64)find_data.nFileSizeHigh << 32) | find_data.nFileSizeLow;
+       return TRUE;
 }
 
 gboolean
index 325767f52434e9fbcb91aa60963c18d518354651..03cac78ac1c8e71d6ca5076b44fe5767a24eeaff 100644 (file)
@@ -172,11 +172,6 @@ static guint32 convert_seekorigin(MonoSeekOrigin origin)
        return(w32origin);
 }
 
-static gint64 convert_filetime (const FILETIME *filetime)
-{
-       return (gint64) ((((guint64) filetime->dwHighDateTime) << 32) + filetime->dwLowDateTime);
-}
-
 /* Managed file attributes have nearly but not quite the same values
  * as the w32 equivalents.
  */
@@ -189,70 +184,6 @@ static guint32 convert_attrs(MonoFileAttributes attrs)
        return(attrs);
 }
 
-/*
- * On Win32, mono_w32file_get_attributes|_ex () seems to try opening the file,
- * which might lead to sharing violation errors, whereas mono_w32file_find_first
- * always succeeds. These 2 wrappers resort to mono_w32file_find_first if
- * mono_w32file_get_attributes|_ex () has failed.
- */
-static guint32
-get_file_attributes (const gunichar2 *path)
-{
-       guint32 res;
-       WIN32_FIND_DATA find_data;
-       HANDLE find_handle;
-       gint32 error;
-
-       res = mono_w32file_get_attributes (path);
-       if (res != -1)
-               return res;
-
-       error = mono_w32error_get_last ();
-
-       if (error != ERROR_SHARING_VIOLATION)
-               return res;
-
-       find_handle = mono_w32file_find_first (path, &find_data);
-
-       if (find_handle == INVALID_HANDLE_VALUE)
-               return res;
-
-       mono_w32file_find_close (find_handle);
-
-       return find_data.dwFileAttributes;
-}
-
-static gboolean
-get_file_attributes_ex (const gunichar2 *path, MonoIOStat *stat)
-{
-       gboolean res;
-       WIN32_FIND_DATA find_data;
-       HANDLE find_handle;
-       gint32 error;
-
-       res = mono_w32file_get_attributes_ex (path, stat);
-       if (res)
-               return TRUE;
-
-       error = mono_w32error_get_last ();
-       if (error != ERROR_SHARING_VIOLATION)
-               return FALSE;
-
-       find_handle = mono_w32file_find_first (path, &find_data);
-
-       if (find_handle == INVALID_HANDLE_VALUE)
-               return FALSE;
-
-       mono_w32file_find_close (find_handle);
-       
-       stat->attributes = find_data.dwFileAttributes;
-       stat->creation_time = convert_filetime (&find_data.ftCreationTime);
-       stat->last_access_time = convert_filetime (&find_data.ftLastAccessTime);
-       stat->last_write_time = convert_filetime (&find_data.ftLastWriteTime);
-       stat->length = ((gint64)find_data.nFileSizeHigh << 32) | find_data.nFileSizeLow;
-       return TRUE;
-}
-
 /* System.IO.MonoIO internal calls */
 
 MonoBoolean
@@ -285,167 +216,6 @@ ves_icall_System_IO_MonoIO_RemoveDirectory (MonoString *path, gint32 *error)
        return(ret);
 }
 
-static gchar *
-get_search_dir (const gunichar2 *pattern)
-{
-       gchar *p;
-       gchar *result;
-
-       p = g_utf16_to_utf8 (pattern, -1, NULL, NULL, NULL);
-       result = g_path_get_dirname (p);
-       g_free (p);
-       return result;
-}
-
-static GPtrArray *
-get_filesystem_entries (const gunichar2 *path,
-                                                const gunichar2 *path_with_pattern,
-                                                gint attrs, gint mask,
-                                                gint32 *error)
-{
-       int i;
-       WIN32_FIND_DATA data;
-       HANDLE find_handle;
-       GPtrArray *names = NULL;
-       gchar *utf8_path = NULL, *utf8_result, *full_name;
-       gint32 attributes;
-
-       mask = convert_attrs ((MonoFileAttributes)mask);
-       attributes = get_file_attributes (path);
-       if (attributes != -1) {
-               if ((attributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
-                       *error = ERROR_INVALID_NAME;
-                       goto fail;
-               }
-       } else {
-               *error = mono_w32error_get_last ();
-               goto fail;
-       }
-       
-       find_handle = mono_w32file_find_first (path_with_pattern, &data);
-       if (find_handle == INVALID_HANDLE_VALUE) {
-               gint32 find_error = mono_w32error_get_last ();
-               
-               if (find_error == ERROR_FILE_NOT_FOUND || find_error == ERROR_NO_MORE_FILES) {
-                       /* No files, so just return an empty array */
-                       goto fail;
-               }
-               
-               *error = find_error;
-               goto fail;
-       }
-
-       utf8_path = get_search_dir (path_with_pattern);
-       names = g_ptr_array_new ();
-
-       do {
-               if ((data.cFileName[0] == '.' && data.cFileName[1] == 0) ||
-                   (data.cFileName[0] == '.' && data.cFileName[1] == '.' && data.cFileName[2] == 0)) {
-                       continue;
-               }
-               
-               if ((data.dwFileAttributes & mask) == attrs) {
-                       utf8_result = g_utf16_to_utf8 (data.cFileName, -1, NULL, NULL, NULL);
-                       if (utf8_result == NULL) {
-                               continue;
-                       }
-                       
-                       full_name = g_build_filename (utf8_path, utf8_result, NULL);
-                       g_ptr_array_add (names, full_name);
-
-                       g_free (utf8_result);
-               }
-       } while(mono_w32file_find_next (find_handle, &data));
-
-       if (mono_w32file_find_close (find_handle) == FALSE) {
-               *error = mono_w32error_get_last ();
-               goto fail;
-       }
-
-       g_free (utf8_path);
-       return names;
-fail:
-       if (names) {
-               for (i = 0; i < names->len; i++)
-                       g_free (g_ptr_array_index (names, i));
-               g_ptr_array_free (names, TRUE);
-       }
-       g_free (utf8_path);
-       return FALSE;
-}
-
-
-MonoArray *
-ves_icall_System_IO_MonoIO_GetFileSystemEntries (MonoString *path,
-                                                MonoString *path_with_pattern,
-                                                gint attrs, gint mask,
-                                                gint32 *ioerror)
-{
-       MonoError error;
-       MonoDomain *domain = mono_domain_get ();
-       MonoArray *result;
-       int i;
-       GPtrArray *names;
-       
-       *ioerror = ERROR_SUCCESS;
-
-       names = get_filesystem_entries (mono_string_chars (path), mono_string_chars (path_with_pattern), attrs, mask, ioerror);
-
-       if (!names) {
-               // If there's no array and no error, then return an empty array.
-               if (*ioerror == ERROR_SUCCESS) {
-                       MonoArray *arr = mono_array_new_checked (domain, mono_defaults.string_class, 0, &error);
-                       mono_error_set_pending_exception (&error);
-                       return arr;
-               }
-               return NULL;
-       }
-
-       result = mono_array_new_checked (domain, mono_defaults.string_class, names->len, &error);
-       if (mono_error_set_pending_exception (&error))
-               goto leave;
-       for (i = 0; i < names->len; i++) {
-               MonoString *name = mono_string_new_checked (domain, (const char *)g_ptr_array_index (names, i), &error);
-               if (mono_error_set_pending_exception (&error))
-                       goto leave;
-               mono_array_setref (result, i, name);
-               g_free (g_ptr_array_index (names, i));
-       }
-leave:
-       g_ptr_array_free (names, TRUE);
-       return result;
-}
-
-typedef struct {
-       MonoDomain *domain;
-       gchar *utf8_path;
-       HANDLE find_handle;
-} IncrementalFind;
-       
-static gboolean
-incremental_find_check_match (IncrementalFind *handle, WIN32_FIND_DATA *data, MonoString **result, MonoError *error)
-{
-       error_init (error);
-       gchar *utf8_result;
-       gchar *full_name;
-       
-       if ((data->cFileName[0] == '.' && data->cFileName[1] == 0) || (data->cFileName[0] == '.' && data->cFileName[1] == '.' && data->cFileName[2] == 0))
-               return FALSE;
-
-       utf8_result = g_utf16_to_utf8 (data->cFileName, -1, NULL, NULL, NULL);
-       if (utf8_result == NULL) 
-               return FALSE;
-       
-       full_name = g_build_filename (handle->utf8_path, utf8_result, NULL);
-       g_free (utf8_result);
-       *result = mono_string_new_checked (mono_domain_get (), full_name, error);
-       g_free (full_name);
-       if (!is_ok (error))
-               return FALSE;
-       
-       return TRUE;
-}
-
 HANDLE
 ves_icall_System_IO_MonoIO_FindFirstFile (MonoString *path_with_pattern, MonoString **file_name, gint32 *file_attr, gint32 *ioerror)
 {
@@ -502,106 +272,6 @@ ves_icall_System_IO_MonoIO_FindCloseFile (HANDLE hnd)
        return mono_w32file_find_close (hnd);
 }
 
-/* FIXME make gc suspendable */
-MonoString *
-ves_icall_System_IO_MonoIO_FindFirst (MonoString *path,
-                                     MonoString *path_with_pattern,
-                                     gint32 *result_attr, gint32 *ioerror,
-                                     gpointer *handle)
-{
-       MonoError error;
-       WIN32_FIND_DATA data;
-       HANDLE find_handle;
-       IncrementalFind *ifh;
-       MonoString *result;
-       
-       *ioerror = ERROR_SUCCESS;
-       
-       find_handle = mono_w32file_find_first (mono_string_chars (path_with_pattern), &data);
-       
-       if (find_handle == INVALID_HANDLE_VALUE) {
-               gint32 find_error = mono_w32error_get_last ();
-               *handle = NULL;
-               
-               if (find_error == ERROR_FILE_NOT_FOUND) 
-                       return NULL;
-               
-               *ioerror = find_error;
-               return NULL;
-       }
-
-       ifh = g_new (IncrementalFind, 1);
-       ifh->find_handle = find_handle;
-       ifh->utf8_path = mono_string_to_utf8_checked (path, &error);
-       if (mono_error_set_pending_exception (&error)) {
-               mono_w32file_find_close (find_handle);
-               g_free (ifh);
-               return NULL;
-       }
-       ifh->domain = mono_domain_get ();
-       *handle = ifh;
-
-       while (incremental_find_check_match (ifh, &data, &result, &error) == 0){
-               if (!is_ok (&error)) {
-                       mono_error_set_pending_exception (&error);
-                       return NULL;
-               }
-               if (mono_w32file_find_next (find_handle, &data) == FALSE){
-                       int e = mono_w32error_get_last ();
-                       if (e != ERROR_NO_MORE_FILES)
-                               *ioerror = e;
-                       return NULL;
-               }
-       }
-       *result_attr = data.dwFileAttributes;
-
-       return result;
-}
-
-/* FIXME make gc suspendable */
-MonoString *
-ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_attr, gint32 *ioerror)
-{
-       MonoError error;
-       IncrementalFind *ifh = (IncrementalFind *)handle;
-       WIN32_FIND_DATA data;
-       MonoString *result;
-
-       error_init (&error);
-       *ioerror = ERROR_SUCCESS;
-       do {
-               if (!is_ok (&error)) {
-                       mono_error_set_pending_exception (&error);
-                       return NULL;
-               }
-               if (mono_w32file_find_next (ifh->find_handle, &data) == FALSE){
-                       int e = mono_w32error_get_last ();
-                       if (e != ERROR_NO_MORE_FILES)
-                               *ioerror = e;
-                       return NULL;
-               }
-       } while (incremental_find_check_match (ifh, &data, &result, &error) == 0);
-
-       *result_attr = data.dwFileAttributes;
-       return result;
-}
-
-int
-ves_icall_System_IO_MonoIO_FindClose (gpointer handle)
-{
-       IncrementalFind *ifh = (IncrementalFind *)handle;
-       gint32 error;
-
-       if (mono_w32file_find_close (ifh->find_handle) == FALSE){
-               error = mono_w32error_get_last ();
-       } else
-               error = ERROR_SUCCESS;
-       g_free (ifh->utf8_path);
-       g_free (ifh);
-
-       return error;
-}
-
 MonoString *
 ves_icall_System_IO_MonoIO_GetCurrentDirectory (gint32 *io_error)
 {
@@ -716,7 +386,7 @@ ves_icall_System_IO_MonoIO_GetFileAttributes (MonoString *path, gint32 *error)
        gint32 ret;
        *error=ERROR_SUCCESS;
        
-       ret=get_file_attributes (mono_string_chars (path));
+       ret = mono_w32file_get_attributes (mono_string_chars (path));
 
        /* 
         * The definition of INVALID_FILE_ATTRIBUTES in the cygwin win32
@@ -771,7 +441,7 @@ ves_icall_System_IO_MonoIO_GetFileStat (MonoString *path, MonoIOStat *stat, gint
 
        *error=ERROR_SUCCESS;
        
-       result = get_file_attributes_ex (mono_string_chars (path), stat);
+       result = mono_w32file_get_attributes_ex (mono_string_chars (path), stat);
 
        if (!result) {
                *error=mono_w32error_get_last ();
@@ -815,7 +485,7 @@ ves_icall_System_IO_MonoIO_Open (MonoString *filename, gint32 mode,
 
        /* If we're opening a directory we need to set the extra flag
         */
-       attrs = get_file_attributes (chars);
+       attrs = mono_w32file_get_attributes (chars);
        if (attrs != INVALID_FILE_ATTRIBUTES) {
                if (attrs & FILE_ATTRIBUTE_DIRECTORY) {
                        attributes |= FILE_FLAG_BACKUP_SEMANTICS;
index 65afdb31d786f01475530e1d15ed21ff2c069feb..54f79a39927e093a6d42e13e913513f8b6bd70b6 100644 (file)
@@ -120,12 +120,6 @@ ves_icall_System_IO_MonoIO_CreateDirectory (MonoString *path, gint32 *error);
 extern MonoBoolean
 ves_icall_System_IO_MonoIO_RemoveDirectory (MonoString *path, gint32 *error);
 
-MonoArray *
-ves_icall_System_IO_MonoIO_GetFileSystemEntries (MonoString *path,
-                                                MonoString *path_with_pattern,
-                                                gint mask, gint attrs,
-                                                gint32 *error);
-
 extern gpointer
 ves_icall_System_IO_MonoIO_FindFirstFile (MonoString *path_with_pattern,
                                                MonoString **file_name,
@@ -141,18 +135,6 @@ ves_icall_System_IO_MonoIO_FindNextFile (gpointer hnd,
 extern MonoBoolean
 ves_icall_System_IO_MonoIO_FindCloseFile (gpointer hnd);
 
-extern MonoString *
-ves_icall_System_IO_MonoIO_FindFirst (MonoString *path,
-                                     MonoString *path_with_pattern,
-                                     gint32 *result_mask,
-                                     gint32 *error,
-                                     gpointer *handle);
-extern MonoString *
-ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_mask, gint32 *error);
-
-extern int
-ves_icall_System_IO_MonoIO_FindClose (gpointer handle);
-
 extern MonoString *
 ves_icall_System_IO_MonoIO_GetCurrentDirectory (gint32 *error);
 
index 98d4ace6d62593b62e3b0e1be6ace694f8333ff6..654b215538d800de195db57afeca5ccaaa9176e9 100644 (file)
@@ -1218,8 +1218,13 @@ mono_w32handle_wait_multiple (gpointer *handles, gsize nhandles, gboolean waital
                signalled = (waitall && count == nhandles) || (!waitall && count > 0);
 
                if (signalled) {
-                       for (i = 0; i < nhandles; i++)
-                               own_if_signalled (handles [i], &abandoned [i]);
+                       for (i = 0; i < nhandles; i++) {
+                               if (own_if_signalled (handles [i], &abandoned [i]) && !waitall) {
+                                       /* if we are calling WaitHandle.WaitAny, .NET only owns the first one; it matters for Mutex which
+                                        * throw AbandonedMutexException in case we owned it but didn't release it */
+                                       break;
+                               }
+                       }
                }
 
                mono_w32handle_unlock_handles (handles, nhandles);
index 8a55844b6e08884068d95bb62ce3a0037eed9578..f71dc34bdb758365d5b4d928476d27255c164a97 100644 (file)
@@ -2580,8 +2580,8 @@ ves_icall_Microsoft_Win32_NativeMethods_GetProcessTimes (gpointer handle, gint64
                        &start_ticks, &user_ticks, &kernel_ticks);
 
                ticks_to_processtime (start_ticks, creation_processtime);
-               ticks_to_processtime (user_ticks, kernel_processtime);
-               ticks_to_processtime (kernel_ticks, user_processtime);
+               ticks_to_processtime (kernel_ticks, kernel_processtime);
+               ticks_to_processtime (user_ticks, user_processtime);
                return TRUE;
        }
 
index 4f7cc8cdcf555f28ffbf37a6a7c6807192bdeaf6..076500687baeea45d32e1f247532c8a83b43e684 100644 (file)
@@ -23,6 +23,7 @@
 #include "w32socket-internals.h"
 
 #include "utils/w32api.h"
+#include "utils/mono-os-wait.h"
 
 #define LOGDEBUG(...)  
 
@@ -76,10 +77,10 @@ static gboolean alertable_socket_wait (SOCKET sock, int event_bit)
        WSAEVENT event = WSACreateEvent ();
        if (event != WSA_INVALID_EVENT) {
                if (WSAEventSelect (sock, event, (1 << event_bit) | FD_CLOSE) != SOCKET_ERROR) {
-                       LOGDEBUG (g_message ("%06d - Calling WSAWaitForMultipleEvents () on socket %d", GetCurrentThreadId (), sock));
-                       DWORD ret = WSAWaitForMultipleEvents (1, &event, TRUE, timeout, TRUE);
+                       LOGDEBUG (g_message ("%06d - Calling mono_win32_wsa_wait_for_multiple_events () on socket %d", GetCurrentThreadId (), sock));
+                       DWORD ret = mono_win32_wsa_wait_for_multiple_events (1, &event, TRUE, timeout, TRUE);
                        if (ret == WSA_WAIT_IO_COMPLETION) {
-                               LOGDEBUG (g_message ("%06d - WSAWaitForMultipleEvents () returned WSA_WAIT_IO_COMPLETION for socket %d", GetCurrentThreadId (), sock));
+                               LOGDEBUG (g_message ("%06d - mono_win32_wsa_wait_for_multiple_events () returned WSA_WAIT_IO_COMPLETION for socket %d", GetCurrentThreadId (), sock));
                                error = WSAEINTR;
                        } else if (ret == WSA_WAIT_TIMEOUT) {
                                error = WSAETIMEDOUT;
@@ -229,9 +230,9 @@ BOOL mono_w32socket_transmit_file (SOCKET hSocket, gpointer hFile, TRANSMIT_FILE
                        if (error == WSA_IO_PENDING) {
                                error = 0;
                                // NOTE: .NET's Socket.SendFile() doesn't honor the Socket's SendTimeout so we shouldn't either
-                               DWORD ret = WaitForSingleObjectEx (overlapped.hEvent, INFINITE, TRUE);
+                               DWORD ret = mono_win32_wait_for_single_object_ex (overlapped.hEvent, INFINITE, TRUE);
                                if (ret == WAIT_IO_COMPLETION) {
-                                       LOGDEBUG (g_message ("%06d - WaitForSingleObjectEx () returned WSA_WAIT_IO_COMPLETION for socket %d", GetCurrentThreadId (), hSocket));
+                                       LOGDEBUG (g_message ("%06d - mono_win32_wait_for_single_object_ex () returned WSA_WAIT_IO_COMPLETION for socket %d", GetCurrentThreadId (), hSocket));
                                        error = WSAEINTR;
                                } else if (ret == WAIT_TIMEOUT) {
                                        error = WSAETIMEDOUT;
index 43df41bfdc717181022977d5bbc39853e43bdb87..bf789f1d00da93972c6b897f42d51c2f75a73071 100644 (file)
@@ -208,7 +208,7 @@ mono_w32socket_close (SOCKET sock)
 {
        gboolean ret;
        MONO_ENTER_GC_SAFE;
-       ret = CloseHandle (sock);
+       ret = closesocket (sock);
        MONO_EXIT_GC_SAFE;
        return ret;
 }
index 5d5aa4adc53b472f35e448cf21e01bacc80e1829..b03ac936738b3a38ed3d8a0d430e1c160baa1ffd 100644 (file)
 
 #include <mono/metadata/object-internals.h>
 
+#ifndef HOST_WIN32
 #define INVALID_SOCKET ((SOCKET)(guint32)(~0))
 #define SOCKET_ERROR (-1)
 
-#ifndef HOST_WIN32
 typedef gint SOCKET;
 
 typedef struct {
index 125110303adc583d0bf57c0457bfd357e021114b..6b91543a56b6bbfd9e7f6a4c32f6bdb29911f289 100644 (file)
@@ -2897,7 +2897,7 @@ encode_klass_ref_inner (MonoAotCompile *acfg, MonoClass *klass, guint8 *buf, gui
                if (par->gshared_constraint) {
                        MonoGSharedGenericParam *gpar = (MonoGSharedGenericParam*)par;
                        encode_type (acfg, par->gshared_constraint, p, &p);
-                       encode_klass_ref (acfg, mono_class_from_generic_parameter (gpar->parent, NULL, klass->byval_arg.type == MONO_TYPE_MVAR), p, &p);
+                       encode_klass_ref (acfg, mono_class_from_generic_parameter_internal (gpar->parent), p, &p);
                } else {
                        encode_value (klass->byval_arg.type, p, &p);
                        encode_value (mono_type_get_generic_param_num (&klass->byval_arg), p, &p);
index 4fb8906941cb2debcb65916bc9beb051db1101a0..f50c59da1426efac09e863dd2c7655575b2b9c7b 100644 (file)
@@ -196,6 +196,15 @@ wasm_invoke_iiiiii (void *target_func, InterpMethodArguments *margs)
        *(int*)margs->retval = res;
 }
 
+static void
+wasm_invoke_iiiiiiiii (void *target_func, InterpMethodArguments *margs)
+{
+       int (*func)(gpointer a, gpointer b, gpointer c, gpointer d, gpointer e, gpointer f, gpointer g, gpointer h) = target_func;
+       int res = func (margs->iargs [0], margs->iargs [1], margs->iargs [2], margs->iargs [3], margs->iargs [4], margs->iargs [5], margs->iargs [6], margs->iargs [7]);
+       *(int*)margs->retval = res;
+}
+
+
 typedef union {
        gint64 l;
        struct {
@@ -204,6 +213,15 @@ typedef union {
        } pair;
 } interp_pair;
 
+static void
+wasm_invoke_l (void *target_func, InterpMethodArguments *margs)
+{
+       gint64 (*func)(void) = target_func;
+
+       gint64 res = func ();
+       *(gint64*)margs->retval = res;
+}
+
 static void
 wasm_invoke_ll (void *target_func, InterpMethodArguments *margs)
 {
@@ -303,6 +321,15 @@ wasm_invoke_vifffffi (void *target_func, InterpMethodArguments *margs)
                *(float*)&margs->iargs [1]);
 }
 
+static void
+wasm_invoke_ff (void *target_func, InterpMethodArguments *margs)
+{
+       float (*func)(float a) = target_func;
+
+       float res = func (*(float*)&margs->fargs [FIDX (0)]);
+       *(float*)margs->retval = res;
+}
+
 static void
 wasm_enter_icall_trampoline (void *target_func, InterpMethodArguments *margs)
 {
@@ -345,6 +372,10 @@ wasm_enter_icall_trampoline (void *target_func, InterpMethodArguments *margs)
                wasm_invoke_iiiii (target_func, margs);
        else if (!strcmp ("IIIIII", cookie))
                wasm_invoke_iiiiii (target_func, margs);
+       else if (!strcmp ("IIIIIIIII", cookie))
+               wasm_invoke_iiiiiiiii (target_func, margs);
+       else if (!strcmp ("L", cookie))
+               wasm_invoke_l (target_func, margs);
        else if (!strcmp ("LL", cookie))
                wasm_invoke_ll (target_func, margs);
        else if (!strcmp ("LI", cookie))
@@ -363,6 +394,8 @@ wasm_enter_icall_trampoline (void *target_func, InterpMethodArguments *margs)
                wasm_invoke_viffff (target_func, margs);
        else if (!strcmp ("VIFFFFFI", cookie))
                wasm_invoke_vifffffi (target_func, margs);
+       else if (!strcmp ("FF", cookie))
+               wasm_invoke_ff (target_func, margs);
        else {
                printf ("CANNOT HANDLE COOKIE %s\n", cookie);
                g_assert (0);
@@ -405,4 +438,8 @@ mono_aot_get_trampoline_full (const char *name, MonoTrampInfo **out_tinfo)
 
        return code;
 }
-#endif
+#else /* TARGET_WASM */
+
+MONO_EMPTY_SOURCE_FILE (aot_runtime_wasm);
+
+#endif /* TARGET_WASM */
index 7f3dafea5c602ab31d1db9590fca9253b7f2a265..82fb3ae674dfe4030e7ff8b9fe35be8cb2c56d12 100644 (file)
@@ -26,6 +26,7 @@ class Tests
 
        public delegate void ArrayDelegate (int[,] arr);
 
+       [Category ("!WASM")] //Requires a working threadpool
        static int test_0_array_delegate_full_aot () {
                ArrayDelegate d = delegate (int[,] arr) {
                };
@@ -260,6 +261,7 @@ class Tests
 
        [Category ("DYNCALL")]
        [Category ("!FULLAOT-AMD64")]
+       [Category ("!INTERPRETER")] //known bug in the interpreter
        public static int test_0_dyncall_nullable () {
                int? v;
 
@@ -410,6 +412,7 @@ class Tests
 
        [Category ("DYNCALL")]
        [Category ("!FULLAOT-AMD64")]
+       [Category ("!INTERPRETER")] //known bug in the interpreter
        public static int test_0_large_nullable_invoke () {
                var s = new LargeStruct () { a = 1, b = 2, c = 3, d = 4 };
 
index ff4f689290d9c57474d3848c39959e94096333d3..de06a0dc579cdc79bdf2ff481ec06379cb09834d 100644 (file)
@@ -792,9 +792,11 @@ public class BuiltinTests {
                return 0;
        }
 
+#if !__MOBILE__
        public static int Main (String[] args) {
                return TestDriver.RunTests (typeof (BuiltinTests), args);
        }
+#endif
 }
 
 
index 230a975dbe348bc43711c24276613744530c5e0f..8b1cf4118cc32f1f5a222e71fa92832c1523fec7 100644 (file)
@@ -360,7 +360,7 @@ long_conv_to_ovf_i4_2: dest:i src1:i src2:i len:36
 vcall2: len:40 clob:c
 vcall2_reg: src1:i len:40 clob:c
 vcall2_membase: src1:b len:40 clob:c
-dyn_call: src1:i src2:i len:192 clob:c
+dyn_call: src1:i src2:i len:216 clob:c
 
 # This is different from the original JIT opcodes
 float_beq: len:32
index 65cdc9b149dd3c28f06edd9b80af305577919846..0baa0fe3c993261b2366ed0c5b15e6c864c556de 100644 (file)
@@ -198,6 +198,9 @@ float_cgt_un: dest:i src1:f src2:f len:20
 float_clt: dest:i src1:f src2:f len:16
 float_clt_un: dest:i src1:f src2:f len:20
 float_conv_to_u: dest:i src1:f len:36
+float_cneq: dest:i src1:f src2:f len:16
+float_cge: dest:i src1:f src2:f len:16
+float_cle: dest:i src1:f src2:f len:16
 call_handler: len:12 clob:c
 endfilter: src1:i len:32
 aot_const: dest:i len:8
@@ -289,6 +292,12 @@ int_cgt_un: dest:i len:12
 int_clt: dest:i len:12
 int_clt_un: dest:i len:12
 
+int_cneq: dest:i len:12
+int_cge: dest:i len:12
+int_cle: dest:i len:12
+int_cge_un: dest:i len:12
+int_cle_un: dest:i len:12
+
 cond_exc_ieq: len:8
 cond_exc_ine_un: len:8
 cond_exc_ilt: len:8
index 31119afdafc47395de492839c77c5a16efd0ab9e..2c28e7dca7cd78c0d539da4e1b08306beee76472 100644 (file)
@@ -201,6 +201,9 @@ float_cgt_un: dest:i src1:f src2:f len:20
 float_clt: dest:i src1:f src2:f len:16
 float_clt_un: dest:i src1:f src2:f len:20
 float_conv_to_u: dest:i src1:f len:36
+float_cneq: dest:i src1:f src2:f len:16
+float_cge: dest:i src1:f src2:f len:16
+float_cle: dest:i src1:f src2:f len:16
 call_handler: len:12 clob:c
 endfilter: src1:i len:20
 aot_const: dest:i len:8
@@ -293,6 +296,12 @@ int_cgt_un: dest:i len:12
 int_clt: dest:i len:12
 int_clt_un: dest:i len:12
 
+int_cneq: dest:i len:12
+int_cge: dest:i len:12
+int_cle: dest:i len:12
+int_cge_un: dest:i len:12
+int_cle_un: dest:i len:12
+
 cond_exc_ieq: len:8
 cond_exc_ine_un: len:8
 cond_exc_ilt: len:8
index cb0600828e9c4116eccd38a44843358bd263666c..29f94ba1e06e0b4870e9d4bda438e4ab39a9718d 100644 (file)
@@ -7691,7 +7691,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                tls->abort_requested = TRUE;
 
-               mono_thread_internal_abort (THREAD_TO_INTERNAL (thread));
+               mono_thread_internal_abort (THREAD_TO_INTERNAL (thread), FALSE);
                mono_loader_unlock ();
                break;
        }
index bf1134be6bb765cbed3bab6e178cd595a00106d3..20ca3bdb70adf1891e8f2d96ca483deafda141c1 100644 (file)
@@ -86,11 +86,13 @@ sealed public class SealedFinal : Middle {
 }
 
 
-class Tests {
+class DevirtualizationTests {
 
+#if !__MOBILE__
        static int Main  (string[] args) {
-               return TestDriver.RunTests (typeof (Tests), args);
+               return TestDriver.RunTests (typeof (DevirtualizationTests), args);
        }
+#endif
        
        static public int test_0_sealed_class_devirt_right_method () {
                SealedFinal x = new SealedFinal ();
index a364415e2575b91e95966579e838fdb30c633f2f..dbbb646297d7850c260d5732a98a05be25753627 100644 (file)
@@ -52,6 +52,7 @@
 #include "mono/utils/mono-hwcap.h"
 #include "mono/utils/mono-logger-internals.h"
 #include "mono/metadata/w32handle.h"
+#include "mono/metadata/callspec.h"
 
 #include "mini.h"
 #include "jit.h"
@@ -1454,7 +1455,7 @@ mono_jit_parse_options (int argc, char * argv[])
                 * Need to call this before mini_init () so we can trace methods 
                 * compiled there too.
                 */
-               mono_jit_trace_calls = mono_trace_parse_options (trace_options);
+               mono_jit_trace_calls = mono_trace_set_options (trace_options);
                if (mono_jit_trace_calls == NULL)
                        exit (1);
        }
@@ -2019,7 +2020,7 @@ mono_main (int argc, char* argv[])
                 * Need to call this before mini_init () so we can trace methods 
                 * compiled there too.
                 */
-               mono_jit_trace_calls = mono_trace_parse_options (trace_options);
+               mono_jit_trace_calls = mono_trace_set_options (trace_options);
                if (mono_jit_trace_calls == NULL)
                        exit (1);
        }
@@ -2140,8 +2141,7 @@ mono_main (int argc, char* argv[])
                return 2;
        }
 
-       if (trace_options != NULL)
-               mono_trace_set_assembly (assembly);
+       mono_callspec_set_assembly (assembly);
 
        if (mono_compile_aot || action == DO_EXEC) {
                const char *error;
@@ -2400,7 +2400,7 @@ mono_jit_aot_compiling (void)
 gboolean
 mono_jit_set_trace_options (const char* options)
 {
-       MonoTraceSpec *trace_opt = mono_trace_parse_options (options);
+       MonoCallSpec *trace_opt = mono_trace_set_options (options);
        if (trace_opt == NULL)
                return FALSE;
        mono_jit_trace_calls = trace_opt;
index aa5ca277ac544e5e57bdeffbbfd454a0c95de9ab..1e3ded9587a7d63ff7bdf25ad5024fc446fe7cb4 100644 (file)
@@ -1427,6 +1427,7 @@ class Tests
                return 0;
        }
 
+       [Category ("!WASM")] // reported as https://github.com/kripken/emscripten/issues/5603
        public static int test_0_simple_double_casts () {
 
                double d = 0xffffffff;
index 023a56d716507bda15dc1dc604531d94b82090eb..91234b6eec8da38a58334dc3a7f04e00c5ea9864 100644 (file)
@@ -7,12 +7,17 @@ using System.Threading;
 /*
  * Regression tests for the GC support in the JIT
  */
-
-class Tests {
-
-       static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
-       }
+#if __MOBILE__
+class GcTests
+#else
+class Tests
+#endif
+{
+#if !__MOBILE__
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
+       }
+#endif
 
        public static int test_36_simple () {
                // Overflow the registers
@@ -525,9 +530,16 @@ class Tests {
                return 0;
        }
 
+       class ObjWithShiftOp {
+               public static ObjWithShiftOp operator >> (ObjWithShiftOp bi1, int shiftVal) {
+                       clobber_regs_and_gc ();
+                       return bi1;
+               }
+       }
+
        // Liveness for spill slots holding managed pointers
        public static int test_0_liveness_11 () {
-               Tests[] arr = new Tests [10];
+               ObjWithShiftOp[] arr = new ObjWithShiftOp [10];
                // This uses an ldelema internally
                // FIXME: This doesn't crash if mp-s are not correctly tracked, just writes to
                // an old object.
@@ -536,10 +548,6 @@ class Tests {
                return 0;
        }
 
-       public static Tests operator >> (Tests bi1, int shiftVal) {
-               clobber_regs_and_gc ();
-               return bi1;
-       }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void liveness_12_inner (int a, int b, int c, int d, int e, int f, object o, ref string s) {
index 6b5bc95f134ca449ac6306ed403d3ee321c920ef..75ea14aad6a91463ecc7f3ba0eb2769e97f7be1d 100644 (file)
@@ -1823,6 +1823,19 @@ public class Tests
                }
        }
 
+       struct StructTest : IFaceTest {
+
+               int i;
+
+               public StructTest (int arg) {
+                       i = arg;
+               }
+
+               public int iface_method () {
+                       return i;
+               }
+       }
+
        // Test constrained calls on an interface made from gsharedvt methods
        public static int test_42_gsharedvt_constrained_iface () {
                IFaceConstrainedIFace obj = new ConstrainedIFace ();
@@ -1830,6 +1843,12 @@ public class Tests
                return obj.foo<IFaceTest, int> (ref t);
        }
 
+       public static int test_42_gsharedvt_constrained_iface_vtype () {
+               IFaceConstrainedIFace obj = new ConstrainedIFace ();
+               IFaceTest t = new StructTest (42);
+               return obj.foo<IFaceTest, int> (ref t);
+       }
+
        // Sign extension tests
        // 0x55   == 85    == 01010101
        // 0xAA   == 170   == 10101010
index b2d92af2cc6213805c3944fc37174168b125aa99..1bc5a2cf720e6ea557da34f5fc621c3d13875b96 100644 (file)
@@ -3023,4 +3023,83 @@ L_3:
                ldc.i4.0
                ret
     }
+
+       .method public static bool llvm_regress_59436 () {
+               // Code size       41 (0x29)
+               .maxstack  3
+               .locals init (float64 V_0,
+                                         float64 V_1,
+                                         valuetype [mscorlib]System.Decimal V_2)
+               IL_0000:  ldc.r8         1
+               IL_0009:  stloc.0
+               IL_000a:  ldc.r8         2
+               IL_0013:  stloc.1
+               IL_0014:  ldloc.0
+               IL_0015:  newobj         instance void [mscorlib]System.Decimal::.ctor(float64)
+               IL_001a:  ldloca.s   V_2
+               IL_001c:  ldloc.1
+               IL_001d:  call     instance void [mscorlib]System.Decimal::.ctor(float64)
+               IL_0022:  ldloc.2
+               IL_0023:  call     bool [mscorlib]System.Decimal::op_LessThanOrEqual(valuetype [mscorlib]System.Decimal,
+                                                                                                                                                          valuetype [mscorlib]System.Decimal)
+               IL_0028:  ret
+       }
+
+  .method private hidebysig static void  fail_inline() cil managed
+  {
+    // Code size       9 (0x9)
+    .maxstack  8
+    IL_0000:  ldc.i4.s   16
+    IL_0002:  conv.u
+    IL_0003:  ldc.i4.1
+    IL_0004:  mul.ovf.un
+    IL_0005:  localloc
+    IL_0007:  pop
+    IL_0008:  ret
+  }
+
+  .method private hidebysig static int32
+          always_inline(int32 op) cil managed aggressiveinlining
+  {
+    // Code size       24 (0x18)
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  brfalse.s  IL_0009
+
+    IL_0003:  ldarg.0
+    IL_0004:  ldc.i4.2
+    IL_0005:  beq.s      IL_000b
+
+    IL_0007:  br.s       IL_000d
+
+    IL_0009:  ldc.i4.0
+    IL_000a:  ret
+
+    IL_000b:  ldc.i4.3
+    IL_000c:  ret
+
+    IL_000d:  call       void Tests::fail_inline()
+    IL_0012:  newobj     instance void [mscorlib]System.Exception::.ctor()
+    IL_0017:  throw
+  }
+
+  .method public hidebysig static int32 test_3_regress_59608() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldc.i4.2
+    IL_0001:  call       int32 Tests::always_inline(int32)
+    IL_000c:  ret
+  }
+
+  .method public hidebysig static int32 test_104_conv_u_and_string() cil managed
+  {
+    .maxstack  8
+       ldstr "hello"
+       conv.u
+       call int32 [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData()
+       add
+       ldind.u2
+       ret
+  }
+
 }
index 42b91954fcf2c223e6c66a23fd404544ff3cb88b..412145683039727b6c053676cf346110372960a3 100644 (file)
@@ -3442,6 +3442,9 @@ ves_exec_method_with_context (InterpFrame *frame, ThreadContext *context, unsign
                        /* needed on arm64 */
                        if (isinf (sp [-1].data.f))
                                sp [-1].data.i = 0;
+                       /* needed by wasm */
+                       else if (isnan (sp [-1].data.f))
+                               sp [-1].data.i = 0;
                        else
                                sp [-1].data.i = (guint32)sp [-1].data.f;
                        ++ip;
index 6faca6d5b93e0fe7e50928fd7553011c74347d55..0bdb158053412048eeb49db2387fdf86f22fbfb1 100644 (file)
@@ -1155,7 +1155,11 @@ no_intrinsic:
                        return;
                } else {
                        /* mheader might not exist if this is a delegate invoc, etc */
-                       if (mheader && *mheader->code == CEE_RET && called_inited) {
+                       gboolean has_vt_arg = FALSE;
+                       for (i = 0; i < csignature->param_count; i++)
+                               has_vt_arg |= !mini_type_is_reference (csignature->params [i]);
+
+                       if (mheader && *mheader->code == CEE_RET && called_inited && !has_vt_arg) {
                                if (td->verbose_level)
                                        g_print ("Inline (empty) call of %s.%s\n", target_method->klass->name, target_method->name);
                                for (i = 0; i < csignature->param_count; i++) {
@@ -2499,6 +2503,7 @@ generate (MonoMethod *method, InterpMethod *rtm, unsigned char *is_bb_start, Mon
 #endif
                                break;
                        case STACK_TYPE_MP:
+                       case STACK_TYPE_O:
                                break;
                        default:
                                g_assert_not_reached ();
@@ -4258,6 +4263,7 @@ mono_interp_transform_init (void)
 MonoException *
 mono_interp_transform_method (InterpMethod *imethod, ThreadContext *context)
 {
+       MonoError error;
        int i, align, size, offset;
        MonoMethod *method = imethod->method;
        MonoImage *image = method->klass->image;
@@ -4275,9 +4281,11 @@ mono_interp_transform_method (InterpMethod *imethod, ThreadContext *context)
        MonoDomain *domain = imethod->domain;
 
        // g_printerr ("TRANSFORM(0x%016lx): begin %s::%s\n", mono_thread_current (), method->klass->name, method->name);
-       method_class_vt = mono_class_vtable (domain, imethod->method->klass);
+       method_class_vt = mono_class_vtable_full (domain, imethod->method->klass, &error);
+       if (!is_ok (&error))
+               return mono_error_convert_to_exception (&error);
+
        if (!method_class_vt->initialized) {
-               MonoError error;
                jmp_buf env;
                InterpFrame *last_env_frame = context->env_frame;
                jmp_buf *old_env = context->current_env;
@@ -4415,12 +4423,10 @@ mono_interp_transform_method (InterpMethod *imethod, ThreadContext *context)
                        break;
                case MonoInlineMethod:
                        if (method->wrapper_type == MONO_WRAPPER_NONE && *ip != CEE_CALLI) {
-                               m = mono_get_method_full (image, read32 (ip + 1), NULL, generic_context);
-                               if (m == NULL) {
+                               m = mono_get_method_checked (image, read32 (ip + 1), NULL, generic_context, &error);
+                               if (!is_ok (&error)) {
                                        g_free (is_bb_start);
-                                       g_error ("FIXME: where to get method and class string?"); 
-                                       return NULL;
-                                       // return mono_get_exception_missing_method ();
+                                       return mono_error_convert_to_exception (&error);
                                }
                                mono_class_init (m->klass);
                                if (!mono_class_is_interface (m->klass))
index 56c7bc8169f76b54e7f1f01caa0e23471a01a259..fa3d7a4681971e74fafa19d297ab476de42c470d 100644 (file)
@@ -1328,12 +1328,15 @@ constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *k
 {
        MonoMethod *m;
        int vt_slot, iface_offset;
+       gboolean is_iface = FALSE;
 
        error_init (error);
 
        if (mono_class_is_interface (klass)) {
                MonoObject *this_obj;
 
+               is_iface = TRUE;
+
                /* Have to use the receiver's type instead of klass, the receiver is a ref type */
                this_obj = *(MonoObject**)mp;
                g_assert (this_obj);
@@ -1359,21 +1362,33 @@ constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *k
                        m = mono_class_inflate_generic_method (m, mono_method_get_context (cmethod));
        }
 
-       if (klass->valuetype && (m->klass == mono_defaults.object_class || m->klass == mono_defaults.enum_class->parent || m->klass == mono_defaults.enum_class))
+       if (klass->valuetype && (m->klass == mono_defaults.object_class || m->klass == mono_defaults.enum_class->parent || m->klass == mono_defaults.enum_class)) {
                /*
                 * Calling a non-vtype method with a vtype receiver, has to box.
                 */
                *this_arg = mono_value_box_checked (mono_domain_get (), klass, mp, error);
-       else if (klass->valuetype)
-               /*
-                * Calling a vtype method with a vtype receiver
-                */
-               *this_arg = mp;
-       else
+       } else if (klass->valuetype) {
+               if (is_iface) {
+                       /*
+                        * The original type is an interface, so the receiver is a ref,
+                          the called method is a vtype method, need to unbox.
+                       */
+                       MonoObject *this_obj = *(MonoObject**)mp;
+
+                       *this_arg = mono_object_unbox (this_obj);
+               } else {
+                       /*
+                        * Calling a vtype method with a vtype receiver
+                        */
+                       *this_arg = mp;
+               }
+       } else {
                /*
                 * Calling a non-vtype method
                 */
                *this_arg = *(gpointer*)mp;
+       }
+
        return m;
 }
 
index 442ec3c0a5c9005eab5da957140d8c8851189215..54e8c3580bf1ac6270c750908ad59a82b1165102 100644 (file)
@@ -1070,6 +1070,7 @@ type_from_op (MonoCompile *cfg, MonoInst *ins, MonoInst *src1, MonoInst *src2)
                        break;
                case STACK_PTR:
                case STACK_MP:
+               case STACK_OBJ:
 #if SIZEOF_VOID_P == 8
                        ins->opcode = OP_LCONV_TO_U;
 #else
@@ -6134,9 +6135,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        prev_args = cfg->args;
        prev_arg_types = cfg->arg_types;
        prev_inlined_method = cfg->inlined_method;
-       cfg->inlined_method = cmethod;
-       cfg->ret_var_set = FALSE;
-       cfg->inline_depth ++;
+       prev_ret_var_set = cfg->ret_var_set;
        prev_real_offset = cfg->real_offset;
        prev_cbb_hash = cfg->cbb_hash;
        prev_cil_offset_to_bb = cfg->cil_offset_to_bb;
@@ -6146,9 +6145,12 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        prev_cbb = cfg->cbb;
        prev_current_method = cfg->current_method;
        prev_generic_context = cfg->generic_context;
-       prev_ret_var_set = cfg->ret_var_set;
        prev_disable_inline = cfg->disable_inline;
 
+       cfg->inlined_method = cmethod;
+       cfg->ret_var_set = FALSE;
+       cfg->inline_depth ++;
+
        if (ip && *ip == CEE_CALLVIRT && !(cmethod->flags & METHOD_ATTRIBUTE_STATIC))
                virtual_ = TRUE;
 
@@ -11838,7 +11840,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        cfg->dyn_call_var->flags |= MONO_INST_VOLATILE;
                                }
 
-                               /* Has to use a call inst since it local regalloc expects it */
+                               /* Has to use a call inst since local regalloc expects it */
                                MONO_INST_NEW_CALL (cfg, call, OP_DYN_CALL);
                                ins = (MonoInst*)call;
                                sp -= 2;
@@ -11847,6 +11849,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MONO_ADD_INS (cfg->cbb, ins);
 
                                cfg->param_area = MAX (cfg->param_area, cfg->backend->dyn_call_param_area);
+                               /* OP_DYN_CALL might need to allocate a dynamically sized param area */
+                               cfg->flags |= MONO_CFG_HAS_ALLOCA;
 
                                ip += 2;
                                inline_costs += 10 * num_calls++;
index 949f8946ddd1c73cf2a3d56a303448eff7115656..43d0e17babbd6c4d5fa6509eac2eb389aade1999 100644 (file)
@@ -2374,6 +2374,7 @@ mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
 typedef struct {
        MonoMethodSignature *sig;
        CallInfo *cinfo;
+       int nstack_args;
 } ArchDynCallInfo;
 
 static gboolean
@@ -2400,10 +2401,7 @@ dyn_call_supported (MonoMethodSignature *sig, CallInfo *cinfo)
                case ArgInFloatSSEReg:
                case ArgInDoubleSSEReg:
                case ArgValuetypeInReg:
-                       break;
                case ArgOnStack:
-                       if (!(ainfo->offset + (ainfo->arg_size / 8) <= DYN_CALL_STACK_ARGS))
-                               return FALSE;
                        break;
                default:
                        return FALSE;
@@ -2426,6 +2424,7 @@ mono_arch_dyn_call_prepare (MonoMethodSignature *sig)
 {
        ArchDynCallInfo *info;
        CallInfo *cinfo;
+       int i;
 
        cinfo = get_call_info (NULL, sig);
 
@@ -2438,6 +2437,21 @@ mono_arch_dyn_call_prepare (MonoMethodSignature *sig)
        // FIXME: Preprocess the info to speed up get_dyn_call_args ().
        info->sig = sig;
        info->cinfo = cinfo;
+       info->nstack_args = 0;
+
+       for (i = 0; i < cinfo->nargs; ++i) {
+               ArgInfo *ainfo = &cinfo->args [i];
+               switch (ainfo->storage) {
+               case ArgOnStack:
+                       info->nstack_args = MAX (info->nstack_args, ainfo->offset + (ainfo->arg_size / 8));
+                       break;
+               default:
+                       break;
+               }
+       }
+       /* Align to 16 bytes */
+       if (info->nstack_args & 1)
+               info->nstack_args ++;
        
        return (MonoDynCallInfo*)info;
 }
@@ -2456,6 +2470,15 @@ mono_arch_dyn_call_free (MonoDynCallInfo *info)
        g_free (ainfo);
 }
 
+int
+mono_arch_dyn_call_get_buf_size (MonoDynCallInfo *info)
+{
+       ArchDynCallInfo *ainfo = (ArchDynCallInfo*)info;
+
+       /* Extend the 'regs' field dynamically */
+       return sizeof (DynCallArgs) + (ainfo->nstack_args * sizeof (mgreg_t));
+}
+
 #define PTR_TO_GREG(ptr) (mgreg_t)(ptr)
 #define GREG_TO_PTR(greg) (gpointer)(greg)
 
@@ -2474,7 +2497,7 @@ mono_arch_dyn_call_free (MonoDynCallInfo *info)
  * libffi.
  */
 void
-mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf, int buf_len)
+mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf)
 {
        ArchDynCallInfo *dinfo = (ArchDynCallInfo*)info;
        DynCallArgs *p = (DynCallArgs*)buf;
@@ -2491,10 +2514,9 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
                param_reg_to_index_inited = 1;
        }
 
-       g_assert (buf_len >= sizeof (DynCallArgs));
-
        p->res = 0;
        p->ret = ret;
+       p->nstack_args = dinfo->nstack_args;
 
        arg_index = 0;
        greg = 0;
@@ -4649,9 +4671,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        code = emit_move_return_value (cfg, ins, code);
                        break;
                case OP_DYN_CALL: {
-                       int i;
+                       int i, limit_reg, index_reg, src_reg, dst_reg;
                        MonoInst *var = cfg->dyn_call_var;
                        guint8 *label;
+                       guint8 *buf [16];
 
                        g_assert (var->opcode == OP_REGOFFSET);
 
@@ -4672,15 +4695,38 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                amd64_sse_movsd_reg_membase (code, i, AMD64_R11, MONO_STRUCT_OFFSET (DynCallArgs, fregs) + (i * sizeof (double)));
                        amd64_patch (label, code);
 
+                       /* Allocate param area */
+                       /* This doesn't need to be freed since OP_DYN_CALL is never called in a loop */
+                       amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, MONO_STRUCT_OFFSET (DynCallArgs, nstack_args), 8);
+                       amd64_shift_reg_imm (code, X86_SHL, AMD64_RAX, 3);
+                       amd64_alu_reg_reg (code, X86_SUB, AMD64_RSP, AMD64_RAX);
                        /* Set stack args */
-                       for (i = 0; i < DYN_CALL_STACK_ARGS; ++i) {
-                               amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, MONO_STRUCT_OFFSET (DynCallArgs, regs) + ((PARAM_REGS + i) * sizeof(mgreg_t)), sizeof(mgreg_t));
-                               amd64_mov_membase_reg (code, AMD64_RSP, i * sizeof (mgreg_t), AMD64_RAX, sizeof (mgreg_t));
-                       }
+                       /* rax/rcx/rdx/r8/r9 is scratch */
+                       limit_reg = AMD64_RAX;
+                       index_reg = AMD64_RCX;
+                       src_reg = AMD64_R8;
+                       dst_reg = AMD64_R9;
+                       amd64_mov_reg_membase (code, limit_reg, AMD64_R11, MONO_STRUCT_OFFSET (DynCallArgs, nstack_args), 8);
+                       amd64_mov_reg_imm (code, index_reg, 0);
+                       amd64_lea_membase (code, src_reg, AMD64_R11, MONO_STRUCT_OFFSET (DynCallArgs, regs) + ((PARAM_REGS) * sizeof(mgreg_t)));
+                       amd64_mov_reg_reg (code, dst_reg, AMD64_RSP, 8);
+                       buf [0] = code;
+                       x86_jump8 (code, 0);
+                       buf [1] = code;
+                       amd64_mov_reg_membase (code, AMD64_RDX, src_reg, 0, 8);
+                       amd64_mov_membase_reg (code, dst_reg, 0, AMD64_RDX, 8);
+                       amd64_alu_reg_imm (code, X86_ADD, index_reg, 1);
+                       amd64_alu_reg_imm (code, X86_ADD, src_reg, 8);
+                       amd64_alu_reg_imm (code, X86_ADD, dst_reg, 8);
+                       amd64_patch (buf [0], code);
+                       amd64_alu_reg_reg (code, X86_CMP, index_reg, limit_reg);
+                       buf [2] = code;
+                       x86_branch8 (code, X86_CC_LT, 0, FALSE);
+                       amd64_patch (buf [2], buf [1]);
 
                        /* Set argument registers */
                        for (i = 0; i < PARAM_REGS; ++i)
-                               amd64_mov_reg_membase (code, param_regs [i], AMD64_R11, i * sizeof(mgreg_t), sizeof(mgreg_t));
+                               amd64_mov_reg_membase (code, param_regs [i], AMD64_R11, MONO_STRUCT_OFFSET (DynCallArgs, regs) + (i * sizeof(mgreg_t)), sizeof(mgreg_t));
                        
                        /* Make the call */
                        amd64_call_reg (code, AMD64_R10);
index f09f285a17bb26b132a9e30ff6710db8b37ad020..ba8466dfebeaa1d47b59d994c7b2995cb48e3929 100644 (file)
@@ -270,15 +270,15 @@ typedef struct {
        gpointer bp_addrs [MONO_ZERO_LEN_ARRAY];
 } SeqPointInfo;
 
-#define DYN_CALL_STACK_ARGS 6
-
 typedef struct {
-       mgreg_t regs [PARAM_REGS + DYN_CALL_STACK_ARGS];
        mgreg_t res;
        guint8 *ret;
        double fregs [8];
        mgreg_t has_fp;
+       mgreg_t nstack_args;
        guint8 buffer [256];
+       /* This should come last as the structure is dynamically extended */
+       mgreg_t regs [PARAM_REGS];
 } DynCallArgs;
 
 typedef enum {
@@ -429,7 +429,7 @@ typedef struct {
 
 #define MONO_ARCH_GSHARED_SUPPORTED 1
 #define MONO_ARCH_DYN_CALL_SUPPORTED 1
-#define MONO_ARCH_DYN_CALL_PARAM_AREA (DYN_CALL_STACK_ARGS * 8)
+#define MONO_ARCH_DYN_CALL_PARAM_AREA 0
 
 #define MONO_ARCH_LLVM_SUPPORTED 1
 #define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER 1
index 1e56345f03d271d03e69ab814e3cfef87f2f2243..44626141830fe9f5ff2c42f28ae54de1c668f0ee 100644 (file)
@@ -2753,16 +2753,20 @@ mono_arch_dyn_call_free (MonoDynCallInfo *info)
        g_free (ainfo);
 }
 
+int
+mono_arch_dyn_call_get_buf_size (MonoDynCallInfo *info)
+{
+       return sizeof (DynCallArgs);
+}
+
 void
-mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf, int buf_len)
+mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf)
 {
        ArchDynCallInfo *dinfo = (ArchDynCallInfo*)info;
        DynCallArgs *p = (DynCallArgs*)buf;
        int arg_index, greg, i, j, pindex;
        MonoMethodSignature *sig = dinfo->sig;
 
-       g_assert (buf_len >= sizeof (DynCallArgs));
-
        p->res = 0;
        p->ret = ret;
        p->has_fpregs = 0;
index 9edb57aa9ef87da6594dea1b82e87867f7ee5dfe..6192f26b9cf042e653ad287c859bb881aafebca0 100644 (file)
@@ -1381,9 +1381,6 @@ dyn_call_supported (CallInfo *cinfo, MonoMethodSignature *sig)
 {
        int i;
 
-       if (sig->hasthis + sig->param_count > PARAM_REGS + DYN_CALL_STACK_ARGS)
-               return FALSE;
-
        // FIXME: Add more cases
        switch (cinfo->ret.storage) {
        case ArgNone:
@@ -1412,10 +1409,7 @@ dyn_call_supported (CallInfo *cinfo, MonoMethodSignature *sig)
                case ArgInFRegR4:
                case ArgHFA:
                case ArgVtypeByRef:
-                       break;
                case ArgOnStack:
-                       if (ainfo->offset >= DYN_CALL_STACK_ARGS * sizeof (mgreg_t))
-                               return FALSE;
                        break;
                default:
                        return FALSE;
@@ -1473,6 +1467,15 @@ mono_arch_dyn_call_free (MonoDynCallInfo *info)
        g_free (ainfo);
 }
 
+int
+mono_arch_dyn_call_get_buf_size (MonoDynCallInfo *info)
+{
+       ArchDynCallInfo *ainfo = (ArchDynCallInfo*)info;
+
+       g_assert (ainfo->cinfo->stack_usage % MONO_ARCH_FRAME_ALIGNMENT == 0);
+       return sizeof (DynCallArgs) + ainfo->cinfo->stack_usage;
+}
+
 static double
 bitcast_r4_to_r8 (float f)
 {
@@ -1490,7 +1493,7 @@ bitcast_r8_to_r4 (double f)
 }
 
 void
-mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf, int buf_len)
+mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf)
 {
        ArchDynCallInfo *dinfo = (ArchDynCallInfo*)info;
        DynCallArgs *p = (DynCallArgs*)buf;
@@ -1499,12 +1502,11 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
        CallInfo *cinfo = dinfo->cinfo;
        int buffer_offset = 0;
 
-       g_assert (buf_len >= sizeof (DynCallArgs));
-
        p->res = 0;
        p->ret = ret;
        p->n_fpargs = dinfo->n_fpargs;
        p->n_fpret = dinfo->n_fpret;
+       p->n_stackargs = cinfo->stack_usage / sizeof (mgreg_t);
 
        arg_index = 0;
        greg = 0;
@@ -4175,14 +4177,35 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                code = emit_ldrfpx (code, ARMREG_D0 + i, ARMREG_LR, MONO_STRUCT_OFFSET (DynCallArgs, fpregs) + (i * 8));
                        arm_patch_rel (labels [0], code, MONO_R_ARM64_BCC);
 
+                       /* Allocate callee area */
+                       code = emit_ldrx (code, ARMREG_R0, ARMREG_LR, MONO_STRUCT_OFFSET (DynCallArgs, n_stackargs));
+                       arm_lslw (code, ARMREG_R0, ARMREG_R0, 3);
+                       arm_movspx (code, ARMREG_R1, ARMREG_SP);
+                       arm_subx (code, ARMREG_R1, ARMREG_R1, ARMREG_R0);
+                       arm_movspx (code, ARMREG_SP, ARMREG_R1);
+
                        /* Set stack args */
-                       for (i = 0; i < DYN_CALL_STACK_ARGS; ++i) {
-                               code = emit_ldrx (code, ARMREG_R0, ARMREG_LR, MONO_STRUCT_OFFSET (DynCallArgs, regs) + ((PARAM_REGS + 1 + i) * sizeof (mgreg_t)));
-                               code = emit_strx (code, ARMREG_R0, ARMREG_SP, i * sizeof (mgreg_t));
-                       }
+                       /* R1 = limit */
+                       code = emit_ldrx (code, ARMREG_R1, ARMREG_LR, MONO_STRUCT_OFFSET (DynCallArgs, n_stackargs));
+                       /* R2 = pointer into 'regs' */
+                       code = emit_imm (code, ARMREG_R2, MONO_STRUCT_OFFSET (DynCallArgs, regs) + ((PARAM_REGS + 1) * sizeof (mgreg_t)));
+                       arm_addx (code, ARMREG_R2, ARMREG_LR, ARMREG_R2);
+                       /* R3 = pointer to stack */
+                       arm_movspx (code, ARMREG_R3, ARMREG_SP);
+                       labels [0] = code;
+                       arm_b (code, code);
+                       labels [1] = code;
+                       code = emit_ldrx (code, ARMREG_R5, ARMREG_R2, 0);
+                       code = emit_strx (code, ARMREG_R5, ARMREG_R3, 0);
+                       code = emit_addx_imm (code, ARMREG_R2, ARMREG_R2, sizeof (mgreg_t));
+                       code = emit_addx_imm (code, ARMREG_R3, ARMREG_R3, sizeof (mgreg_t));
+                       code = emit_subx_imm (code, ARMREG_R1, ARMREG_R1, 1);
+                       arm_patch_rel (labels [0], code, MONO_R_ARM64_B);
+                       arm_cmpw (code, ARMREG_R1, ARMREG_RZR);
+                       arm_bcc (code, ARMCOND_GT, labels [1]);
 
                        /* Set argument registers + r8 */
-                       code = mono_arm_emit_load_regarray (code, 0x1ff, ARMREG_LR, 0);
+                       code = mono_arm_emit_load_regarray (code, 0x1ff, ARMREG_LR, MONO_STRUCT_OFFSET (DynCallArgs, regs));
 
                        /* Make the call */
                        arm_blrx (code, ARMREG_IP1);
index 6268a1064de9266f034eaa7b72f1a3b34a722560..d14301ace80d56e480a728f919b7d198351d05af 100644 (file)
@@ -89,16 +89,15 @@ typedef struct {
 #define PARAM_REGS 8
 #define FP_PARAM_REGS 8
 
-#define DYN_CALL_STACK_ARGS 6
-
 typedef struct {
-       /* The +1 is for r8 */
-       mgreg_t regs [PARAM_REGS + 1 + DYN_CALL_STACK_ARGS];
        mgreg_t res, res2;
        guint8 *ret;
        double fpregs [FP_PARAM_REGS];
-       int n_fpargs, n_fpret;
+       int n_fpargs, n_fpret, n_stackargs;
        guint8 buffer [256];
+       /* This should come last as the structure is dynamically extended */
+       /* The +1 is for r8 */
+       mgreg_t regs [PARAM_REGS + 1];
 } DynCallArgs;
 
 typedef struct {
@@ -141,7 +140,7 @@ typedef struct {
 #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
 #define MONO_ARCH_HAVE_GET_TRAMPOLINES 1
 #define MONO_ARCH_DYN_CALL_SUPPORTED 1
-#define MONO_ARCH_DYN_CALL_PARAM_AREA (DYN_CALL_STACK_ARGS * 8)
+#define MONO_ARCH_DYN_CALL_PARAM_AREA 0
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
 #define MONO_ARCH_GSHAREDVT_SUPPORTED 1
 #define MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX 1
index 10cf1b75cb194d9051761962546b5ffba8b9f8f8..707951af02e15c807e7eccced069307a22af527b 100644 (file)
@@ -1415,6 +1415,11 @@ wrap_non_exception_throws (MonoMethod *m)
        int i;
        gboolean val = FALSE;
 
+       if (m->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD) {
+               MonoDynamicMethod *dm = (MonoDynamicMethod *)m;
+               if (dm->assembly)
+                       ass = dm->assembly;
+       }
        g_assert (ass);
        if (ass->wrap_non_exception_throws_inited)
                return ass->wrap_non_exception_throws;
@@ -3263,7 +3268,7 @@ mono_llvm_load_exception (void)
 
        if (mono_ex->trace_ips) {
                GList *trace_ips = NULL;
-               gpointer ip = RETURN_ADDRESS ();
+               gpointer ip = MONO_RETURN_ADDRESS ();
 
                size_t upper = mono_array_length (mono_ex->trace_ips);
 
index 8a0b622da281a5d7917e799a7f247b72fc70c0b3..0b996be7f1838ee8a684725105b03d1d60afe7b5 100644 (file)
@@ -467,6 +467,9 @@ create_llvm_type_for_type (MonoLLVMModule *module, MonoClass *klass)
 static LLVMTypeRef
 type_to_llvm_type (EmitContext *ctx, MonoType *t)
 {
+       if (t->byref)
+               return ThisType ();
+
        t = mini_get_underlying_type (t);
 
        switch (t->type) {
@@ -1226,10 +1229,10 @@ sig_to_llvm_sig_no_cinfo (EmitContext *ctx, MonoMethodSignature *sig)
        int i, pindex;
        MonoType *rtype;
 
-       rtype = mini_get_underlying_type (sig->ret);
-       ret_type = type_to_llvm_type (ctx, rtype);
+       ret_type = type_to_llvm_type (ctx, sig->ret);
        if (!ctx_ok (ctx))
                return NULL;
+       rtype = mini_get_underlying_type (sig->ret);
 
        param_types = g_new0 (LLVMTypeRef, (sig->param_count * 8) + 3);
        pindex = 0;
@@ -1269,10 +1272,10 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
        if (!cinfo)
                return sig_to_llvm_sig_no_cinfo (ctx, sig);
 
-       rtype = mini_get_underlying_type (sig->ret);
-       ret_type = type_to_llvm_type (ctx, rtype);
+       ret_type = type_to_llvm_type (ctx, sig->ret);
        if (!ctx_ok (ctx))
                return NULL;
+       rtype = mini_get_underlying_type (sig->ret);
 
        switch (cinfo->ret.storage) {
        case LLVMArgVtypeInReg:
index 88efb61d67b9a587edd702b6c4f0741a10bc048c..3f0540ff5fe527eeb7de9fe776ef5554110f5ae1 100644 (file)
@@ -352,6 +352,8 @@ mono_class_is_magic_assembly (MonoClass *klass)
        /* regression test suite */
        if (!strcmp ("builtin-types", klass->image->assembly_name))
                return TRUE;
+       if (!strcmp ("mini_tests", klass->image->assembly_name))
+               return TRUE;
        return FALSE;
 }
 
index 1a947639a241d3692584586ae0a099a69ecc9856..4ba20cc2257e31ff9ad4e154ca7267b2b939d124 100644 (file)
@@ -1005,8 +1005,7 @@ get_call_info (MonoMethodSignature *sig)
        fr = PPC_FIRST_FPARG_REG;
        gr = PPC_FIRST_ARG_REG;
 
-       /* FIXME: handle returning a struct */
-       if (MONO_TYPE_ISSTRUCT (sig->ret)) {
+       if (mini_type_is_vtype (sig->ret)) {
                cinfo->vtype_retaddr = TRUE;
        }
 
@@ -4126,6 +4125,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_mtctr (code, ins->sreg1);
                        ppc_bcctr (code, PPC_BR_ALWAYS, 0);
                        break;
+               case OP_ICNEQ:
+                       ppc_li (code, ins->dreg, 0);
+                       ppc_bc (code, PPC_BR_TRUE, PPC_BR_EQ, 2);
+                       ppc_li (code, ins->dreg, 1);
+                       break;
                case OP_CEQ:
                case OP_ICEQ:
                CASE_PPC64 (OP_LCEQ)
@@ -4143,6 +4147,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_bc (code, PPC_BR_TRUE, PPC_BR_LT, 2);
                        ppc_li (code, ins->dreg, 0);
                        break;
+               case OP_ICGE:
+               case OP_ICGE_UN:
+                       ppc_li (code, ins->dreg, 1);
+                       ppc_bc (code, PPC_BR_FALSE, PPC_BR_LT, 2);
+                       ppc_li (code, ins->dreg, 0);
+                       break;
                case OP_CGT:
                case OP_CGT_UN:
                case OP_ICGT:
@@ -4153,6 +4163,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_bc (code, PPC_BR_TRUE, PPC_BR_GT, 2);
                        ppc_li (code, ins->dreg, 0);
                        break;
+               case OP_ICLE:
+               case OP_ICLE_UN:
+                       ppc_li (code, ins->dreg, 1);
+                       ppc_bc (code, PPC_BR_FALSE, PPC_BR_GT, 2);
+                       ppc_li (code, ins->dreg, 0);
+                       break;
                case OP_COND_EXC_EQ:
                case OP_COND_EXC_NE_UN:
                case OP_COND_EXC_LT:
@@ -4355,15 +4371,17 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_fcmpu (code, 0, ins->sreg1, ins->sreg2);
                        break;
                case OP_FCEQ:
+               case OP_FCNEQ:
                        ppc_fcmpo (code, 0, ins->sreg1, ins->sreg2);
-                       ppc_li (code, ins->dreg, 0);
-                       ppc_bc (code, PPC_BR_FALSE, PPC_BR_EQ, 2);
                        ppc_li (code, ins->dreg, 1);
+                       ppc_bc (code, ins->opcode == OP_FCEQ ? PPC_BR_TRUE : PPC_BR_FALSE, PPC_BR_EQ, 2);
+                       ppc_li (code, ins->dreg, 0);
                        break;
                case OP_FCLT:
+               case OP_FCGE:
                        ppc_fcmpo (code, 0, ins->sreg1, ins->sreg2);
                        ppc_li (code, ins->dreg, 1);
-                       ppc_bc (code, PPC_BR_TRUE, PPC_BR_LT, 2);
+                       ppc_bc (code, ins->opcode == OP_FCLT ? PPC_BR_TRUE : PPC_BR_FALSE, PPC_BR_LT, 2);
                        ppc_li (code, ins->dreg, 0);
                        break;
                case OP_FCLT_UN:
@@ -4374,9 +4392,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_li (code, ins->dreg, 0);
                        break;
                case OP_FCGT:
+               case OP_FCLE:
                        ppc_fcmpo (code, 0, ins->sreg1, ins->sreg2);
                        ppc_li (code, ins->dreg, 1);
-                       ppc_bc (code, PPC_BR_TRUE, PPC_BR_GT, 2);
+                       ppc_bc (code, ins->opcode == OP_FCGT ? PPC_BR_TRUE : PPC_BR_FALSE, PPC_BR_GT, 2);
                        ppc_li (code, ins->dreg, 0);
                        break;
                case OP_FCGT_UN:
index 5e6e3cd9cad8ea865617bc9fcc4e078b1ce46db2..2eeb5f34d6e3de1fb09db5496e922816efd868ad 100644 (file)
@@ -890,7 +890,9 @@ mono_thread_abort (MonoObject *obj)
        g_free (jit_tls);*/
 
        if ((mono_runtime_unhandled_exception_policy_get () == MONO_UNHANDLED_POLICY_LEGACY) ||
-                       (obj->vtable->klass == mono_defaults.threadabortexception_class)) {
+                       (obj->vtable->klass == mono_defaults.threadabortexception_class) ||
+                       ((obj->vtable->klass) == mono_class_get_appdomain_unloaded_exception_class () &&
+                       mono_thread_info_current ()->runtime_thread)) {
                mono_thread_exit ();
        } else {
                mono_invoke_unhandled_exception_hook (obj);
@@ -2429,8 +2431,11 @@ create_runtime_invoke_info (MonoDomain *domain, MonoMethod *method, gpointer com
                if (mono_class_is_contextbound (method->klass) || !info->compiled_method)
                        supported = FALSE;
 
-               if (supported)
+               if (supported) {
                        info->dyn_call_info = mono_arch_dyn_call_prepare (sig);
+                       if (debug_options.dyn_runtime_invoke)
+                               g_assert (info->dyn_call_info);
+               }
        }
 #endif
 
@@ -2732,8 +2737,8 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                MonoMethodSignature *sig = mono_method_signature (method);
                gpointer *args;
                static RuntimeInvokeDynamicFunction dyn_runtime_invoke;
-               int i, pindex;
-               guint8 buf [512];
+               int i, pindex, buf_size;
+               guint8 *buf;
                guint8 retval [256];
 
                if (!dyn_runtime_invoke) {
@@ -2762,7 +2767,11 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
 
                //printf ("M: %s\n", mono_method_full_name (method, TRUE));
 
-               mono_arch_start_dyn_call (info->dyn_call_info, (gpointer**)args, retval, buf, sizeof (buf));
+               buf_size = mono_arch_dyn_call_get_buf_size (info->dyn_call_info);
+               buf = g_alloca (buf_size);
+               g_assert (buf);
+
+               mono_arch_start_dyn_call (info->dyn_call_info, (gpointer**)args, retval, buf);
 
                dyn_runtime_invoke (buf, exc, info->compiled_method);
                mono_arch_finish_dyn_call (info->dyn_call_info, buf);
@@ -3302,12 +3311,13 @@ mini_get_delegate_arg (MonoMethod *method, gpointer method_ptr)
 void
 mini_init_delegate (MonoDelegate *del)
 {
-       if (mono_llvm_only)
-               del->extra_arg = mini_get_delegate_arg (del->method, del->method_ptr);
 #ifdef ENABLE_INTERPRETER
        if (mono_use_interpreter)
                mono_interp_init_delegate (del);
+       else
 #endif
+       if (mono_llvm_only)
+               del->extra_arg = mini_get_delegate_arg (del->method, del->method_ptr);
 }
 
 char*
index a11911e5c47985a582e0fe4eee35ec362d44fe04..e0402664a964f9fcf5b675446e92841c7642b2e4 100644 (file)
@@ -17,6 +17,7 @@
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-threads-coop.h>
+#include <mono/utils/unlocked.h>
 
 #include "mini.h"
 #include "lldb.h"
@@ -33,7 +34,13 @@ guint8* mono_trampoline_code [MONO_TRAMPOLINE_NUM];
 
 static GHashTable *rgctx_lazy_fetch_trampoline_hash;
 static GHashTable *rgctx_lazy_fetch_trampoline_hash_addr;
-static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgctx_trampolines;
+
+static gint32 trampoline_calls;
+static gint32 jit_trampolines;
+static gint32 unbox_trampolines;
+static gint32 static_rgctx_trampolines;
+static gint32 rgctx_unmanaged_lookups;
+static gint32 rgctx_num_lazy_fetch_trampolines;
 
 #define mono_trampolines_lock() mono_os_mutex_lock (&trampolines_mutex)
 #define mono_trampolines_unlock() mono_os_mutex_unlock (&trampolines_mutex)
@@ -128,9 +135,9 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr)
        info->m = m;
        info->addr = addr;
        g_hash_table_insert (domain_jit_info (domain)->static_rgctx_trampoline_hash, info, res);
-       mono_domain_unlock (domain);
 
-       static_rgctx_trampolines ++;
+       UnlockedIncrement (&static_rgctx_trampolines);
+       mono_domain_unlock (domain);
 
        return res;
 }
@@ -834,7 +841,7 @@ mono_magic_trampoline (mgreg_t *regs, guint8 *code, gpointer arg, guint8* tramp)
 
        g_assert (mono_thread_is_gc_unsafe_mode ());
 
-       trampoline_calls ++;
+       UnlockedIncrement (&trampoline_calls);
 
        res = common_call_trampoline (regs, code, (MonoMethod *)arg, NULL, NULL, &error);
        if (!is_ok (&error)) {
@@ -862,7 +869,7 @@ mono_vcall_trampoline (mgreg_t *regs, guint8 *code, int slot, guint8 *tramp)
        MonoError error;
        gpointer addr, res = NULL;
 
-       trampoline_calls ++;
+       UnlockedIncrement (&trampoline_calls);
 
        /*
         * We need to obtain the following pieces of information:
@@ -936,7 +943,7 @@ mono_generic_virtual_remoting_trampoline (mgreg_t *regs, guint8 *code, MonoMetho
        MonoMethod *imt_method, *declaring;
        gpointer addr;
 
-       trampoline_calls ++;
+       UnlockedIncrement (&trampoline_calls);
 
        g_assert (m->is_generic);
 
@@ -988,7 +995,7 @@ mono_aot_trampoline (mgreg_t *regs, guint8 *code, guint8 *token_info,
        guint8 *plt_entry;
        MonoError error;
 
-       trampoline_calls ++;
+       UnlockedIncrement (&trampoline_calls);
 
        image = (MonoImage *)*(gpointer*)(gpointer)token_info;
        token_info += sizeof (gpointer);
@@ -1032,7 +1039,7 @@ mono_aot_plt_trampoline (mgreg_t *regs, guint8 *code, guint8 *aot_module,
        gpointer res;
        MonoError error;
 
-       trampoline_calls ++;
+       UnlockedIncrement (&trampoline_calls);
 
        res = mono_aot_plt_resolve (aot_module, plt_info_offset, code, &error);
        if (!res) {
@@ -1053,8 +1060,6 @@ mono_rgctx_lazy_fetch_trampoline (mgreg_t *regs, guint8 *code, gpointer data, gu
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       static gboolean inited = FALSE;
-       static int num_lookups = 0;
        guint32 slot = GPOINTER_TO_UINT (data);
        mgreg_t *r = (mgreg_t*)regs;
        gpointer arg = (gpointer)(gssize)r [MONO_ARCH_VTABLE_REG];
@@ -1063,14 +1068,8 @@ mono_rgctx_lazy_fetch_trampoline (mgreg_t *regs, guint8 *code, gpointer data, gu
        MonoError error;
        gpointer res;
 
-       trampoline_calls ++;
-
-       if (!inited) {
-               mono_counters_register ("RGCTX unmanaged lookups", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_lookups);
-               inited = TRUE;
-       }
-
-       num_lookups++;
+       UnlockedIncrement (&trampoline_calls);
+       UnlockedIncrement (&rgctx_unmanaged_lookups);
 
        if (mrgctx)
                res = mono_method_fill_runtime_generic_context ((MonoMethodRuntimeGenericContext *)arg, index, &error);
@@ -1113,7 +1112,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        gpointer addr, compiled_method;
        gboolean is_remote = FALSE;
 
-       trampoline_calls ++;
+       UnlockedIncrement (&trampoline_calls);
 
        /* Obtain the delegate object according to the calling convention */
        delegate = (MonoDelegate *)mono_arch_get_this_arg_from_call (regs, code);
@@ -1352,6 +1351,8 @@ mono_trampolines_init (void)
        mono_counters_register ("JIT trampolines", MONO_COUNTER_JIT | MONO_COUNTER_INT, &jit_trampolines);
        mono_counters_register ("Unbox trampolines", MONO_COUNTER_JIT | MONO_COUNTER_INT, &unbox_trampolines);
        mono_counters_register ("Static rgctx trampolines", MONO_COUNTER_JIT | MONO_COUNTER_INT, &static_rgctx_trampolines);
+       mono_counters_register ("RGCTX unmanaged lookups", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &rgctx_unmanaged_lookups);
+       mono_counters_register ("RGCTX num lazy fetch trampolines", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &rgctx_num_lazy_fetch_trampolines);
 }
 
 void
@@ -1496,10 +1497,9 @@ mono_create_jit_trampoline (MonoDomain *domain, MonoMethod *method, MonoError *e
        
        mono_domain_lock (domain);
        g_hash_table_insert (domain_jit_info (domain)->jit_trampoline_hash, method, tramp);
+       UnlockedIncrement (&jit_trampolines);
        mono_domain_unlock (domain);
 
-       jit_trampolines++;
-
        return tramp;
 }      
 
@@ -1519,7 +1519,7 @@ mono_create_jit_trampoline_from_token (MonoImage *image, guint32 token)
 
        tramp = mono_create_specific_trampoline (start, MONO_TRAMPOLINE_AOT, domain, NULL);
 
-       jit_trampolines++;
+       UnlockedIncrement (&jit_trampolines);
 
        return tramp;
 }      
@@ -1602,10 +1602,7 @@ mono_create_delegate_virtual_trampoline (MonoDomain *domain, MonoClass *klass, M
 gpointer
 mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
 {
-       static gboolean inited = FALSE;
-       static int num_trampolines = 0;
        MonoTrampInfo *info;
-
        gpointer tramp, ptr;
 
        mono_trampolines_lock ();
@@ -1633,15 +1630,9 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
        g_hash_table_insert (rgctx_lazy_fetch_trampoline_hash, GUINT_TO_POINTER (offset), ptr);
        g_assert (offset != -1);
        g_hash_table_insert (rgctx_lazy_fetch_trampoline_hash_addr, ptr, GUINT_TO_POINTER (offset + 1));
+       rgctx_num_lazy_fetch_trampolines ++;
        mono_trampolines_unlock ();
 
-       if (!inited) {
-               mono_counters_register ("RGCTX num lazy fetch trampolines",
-                               MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_trampolines);
-               inited = TRUE;
-       }
-       num_trampolines++;
-
        return ptr;
 }
 
index af04f0bb7966ac94eb40a7e290d3ca0d2b072549..dd2e12aa9512080c4494af31cf29b4c537535ce4 100644 (file)
@@ -79,7 +79,7 @@
 #include "mini-llvm.h"
 #include "lldb.h"
 
-MonoTraceSpec *mono_jit_trace_calls;
+MonoCallSpec *mono_jit_trace_calls;
 MonoMethodDesc *mono_inject_async_exc_method;
 int mono_inject_async_exc_pos;
 MonoMethodDesc *mono_break_at_bb_method;
index ec102c86c282f47547e5d1cbcfd749b2ddae3208..1ce7a63264a5790cfeeef1afa271db606f938bc6 100644 (file)
 #include "mono/metadata/marshal.h"
 #include "mono/metadata/security-manager.h"
 #include "mono/metadata/exception.h"
+#include "mono/metadata/callspec.h"
 
 /*
  * The mini code should not have any compile time dependencies on the GC being used, so the same object file from mini/
  * can be linked into both mono and mono-sgen.
  */
+#if !defined(MONO_DLL_EXPORT) || !defined(_MSC_VER)
 #if defined(HAVE_BOEHM_GC) || defined(HAVE_SGEN_GC)
 #error "The code in mini/ should not depend on these defines."
 #endif
+#endif
 
 #ifndef __GNUC__
 /*#define __alignof__(a) sizeof(a)*/
@@ -537,9 +540,8 @@ typedef struct MonoMethodVar MonoMethodVar;
 typedef struct MonoBasicBlock MonoBasicBlock;
 typedef struct MonoLMF MonoLMF;
 typedef struct MonoSpillInfo MonoSpillInfo;
-typedef struct MonoTraceSpec MonoTraceSpec;
 
-extern MonoTraceSpec *mono_jit_trace_calls;
+extern MonoCallSpec *mono_jit_trace_calls;
 extern gboolean mono_break_on_exc;
 extern int mono_exc_esp_offset;
 extern gboolean mono_compile_aot;
@@ -552,7 +554,7 @@ extern MonoMethodDesc *mono_break_at_bb_method;
 extern int mono_break_at_bb_bb_num;
 extern gboolean mono_verify_all;
 extern gboolean mono_do_x86_stack_align;
-extern const char *mono_build_date;
+extern MONO_API const char *mono_build_date;
 extern gboolean mono_do_signal_chaining;
 extern gboolean mono_do_crash_chaining;
 extern MONO_API gboolean mono_use_llvm;
@@ -2783,7 +2785,8 @@ void      mono_arch_emit_outarg_vt              (MonoCompile *cfg, MonoInst *ins
 void      mono_arch_emit_setret                 (MonoCompile *cfg, MonoMethod *method, MonoInst *val);
 MonoDynCallInfo *mono_arch_dyn_call_prepare     (MonoMethodSignature *sig);
 void      mono_arch_dyn_call_free               (MonoDynCallInfo *info);
-void      mono_arch_start_dyn_call              (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf, int buf_len);
+int       mono_arch_dyn_call_get_buf_size       (MonoDynCallInfo *info);
+void      mono_arch_start_dyn_call              (MonoDynCallInfo *info, gpointer **args, guint8 *ret, guint8 *buf);
 void      mono_arch_finish_dyn_call             (MonoDynCallInfo *info, guint8 *buf);
 MonoInst *mono_arch_emit_inst_for_method        (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args);
 void      mono_arch_decompose_opts              (MonoCompile *cfg, MonoInst *ins);
@@ -2991,8 +2994,7 @@ MONO_API void      mono_debugger_run_finally             (MonoContext *start_ctx
 MONO_API gboolean mono_breakpoint_clean_code (guint8 *method_start, guint8 *code, int offset, guint8 *buf, int size);
 
 /* Tracing */
-MonoTraceSpec *mono_trace_parse_options         (const char *options);
-void           mono_trace_set_assembly          (MonoAssembly *assembly);
+MonoCallSpec *mono_trace_set_options           (const char *options);
 gboolean       mono_trace_eval                  (MonoMethod *method);
 
 extern void
@@ -3273,22 +3275,22 @@ void mono_interruption_checkpoint_from_trampoline (void);
 
 #if defined (HOST_WASM)
 
-#define RETURN_ADDRESS_N(N) NULL
-#define RETURN_ADDRESS() RETURN_ADDRESS_N(0)
+#define MONO_RETURN_ADDRESS_N(N) NULL
+#define MONO_RETURN_ADDRESS() MONO_RETURN_ADDRESS_N(0)
 
 
 #elif defined (__GNUC__)
 
-#define RETURN_ADDRESS_N(N) (__builtin_extract_return_addr (__builtin_return_address (N)))
-#define RETURN_ADDRESS() RETURN_ADDRESS_N(0)
+#define MONO_RETURN_ADDRESS_N(N) (__builtin_extract_return_addr (__builtin_return_address (N)))
+#define MONO_RETURN_ADDRESS() MONO_RETURN_ADDRESS_N(0)
 
 #elif defined(_MSC_VER)
 
 #include <intrin.h>
 #pragma intrinsic(_ReturnAddress)
 
-#define RETURN_ADDRESS() _ReturnAddress()
-#define RETURN_ADDRESS_N(N) NULL
+#define MONO_RETURN_ADDRESS() _ReturnAddress()
+#define MONO_RETURN_ADDRESS_N(N) NULL
 
 #else
 
index 568589ebe2758600e2b68e95d7b813c3903bafa1..940c19345e16e174ead8e7a28996fc89a858b3a4 100644 (file)
@@ -244,6 +244,7 @@ class Tests
                return 1;
        }
 
+       [Category ("!WASM")] //Stack traces / EH are super broken on WASM + Interpreter
        public static int test_0_stack_traces () {
                //
                // Get a stacktrace for an interp->jit->interp call stack
index 49e17ad14dd3ff89e2be6ecec526b15e041dcd6a..956a6310169bbee2492c869577ad25c580ba7a99 100644 (file)
@@ -338,11 +338,17 @@ namespace SSA {
                        return a;
                }
 
+#if __MOBILE__
+               public static test_2_old_test_suite () {
+                       return test1 (1);
+               }
+#else
                static int Main() {
                        if (test1 (1) != 2)
                                return 1;
                        return 0;
                }
+#endif
        }
 }
 
index b81fe604ed3aef345b7eef2ca52c01e4630172d7..0d6b19e857eb2c75b717b1d90e0ca8126c19a81f 100644 (file)
 #include <string.h>
 #include "mini.h"
 #include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/assembly.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-memory-model.h>
 #include "trace.h"
+#include <mono/metadata/callspec.h>
 
 #if defined (HOST_ANDROID) || (defined (TARGET_IOS) && defined (TARGET_IOS))
 #  undef printf
 #  define fprintf(__ignore, ...) g_log ("mono-gc", G_LOG_LEVEL_MESSAGE, __VA_ARGS__)
 #endif
 
-static MonoTraceSpec trace_spec;
+static MonoCallSpec trace_spec;
 
 static volatile gint32 output_lock = 0;
 
-gboolean
-mono_trace_eval_exception (MonoClass *klass)
-{
-       int include = 0;
-       int i;
-
-       if (!klass)
-               return FALSE;
-
-       for (i = 0; i < trace_spec.len; i++) {
-               MonoTraceOperation *op = &trace_spec.ops [i];
-               int inc = 0;
-               
-               switch (op->op){
-               case MONO_TRACEOP_EXCEPTION:
-                       if (strcmp ("", op->data) == 0 && strcmp ("all", op->data2) == 0)
-                               inc = 1;
-                       else if (strcmp ("", op->data) == 0 || strcmp (klass->name_space, op->data) == 0)
-                               if (strcmp (klass->name, op->data2) == 0)
-                                       inc = 1;
-                       break;
-               default:
-                       break;
-               }
-               if (op->exclude){
-                       if (inc)
-                               include = 0;
-               } else if (inc)
-                       include = 1;
-       }
-
-       return include;
-}
-
-gboolean
-mono_trace_eval (MonoMethod *method)
-{
-       int include = 0;
-       int i;
-
-       for (i = 0; i < trace_spec.len; i++){
-               MonoTraceOperation *op = &trace_spec.ops [i];
-               int inc = 0;
-               
-               switch (op->op){
-               case MONO_TRACEOP_ALL:
-                       inc = 1;
-                       break;
-               case MONO_TRACEOP_PROGRAM:
-                       if (trace_spec.assembly && (method->klass->image == mono_assembly_get_image (trace_spec.assembly)))
-                               inc = 1;
-                       break;
-               case MONO_TRACEOP_WRAPPER:
-                       if ((method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) ||
-                               (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE))
-                               inc = 1;
-                       break;
-               case MONO_TRACEOP_METHOD:
-                       if (mono_method_desc_full_match ((MonoMethodDesc *) op->data, method))
-                               inc = 1;
-                       break;
-               case MONO_TRACEOP_CLASS:
-                       if (strcmp (method->klass->name_space, op->data) == 0)
-                               if (strcmp (method->klass->name, op->data2) == 0)
-                                       inc = 1;
-                       break;
-               case MONO_TRACEOP_ASSEMBLY:
-                       if (strcmp (mono_image_get_name (method->klass->image), op->data) == 0)
-                               inc = 1;
-                       break;
-               case MONO_TRACEOP_NAMESPACE:
-                       if (strcmp (method->klass->name_space, op->data) == 0)
-                               inc = 1;
-                       break;
-               case MONO_TRACEOP_EXCEPTION:
-                       break;
-               }
-               if (op->exclude) {
-                       if (inc)
-                               include = 0;
-               } else if (inc) {
-                       include = 1;
-               }
-       }
-       return include;
-}
-
-static int is_filenamechar (char p)
-{
-       if (p >= 'A' && p <= 'Z')
-               return TRUE;
-       if (p >= 'a' && p <= 'z')
-               return TRUE;
-       if (p >= '0' && p <= '9')
-               return TRUE;
-       if (p == '.' || p == ':' || p == '_' || p == '-' || p == '`')
-               return TRUE;
-       return FALSE;
-}
-
-static char *input;
-static char *value;
-
-static void get_string (void)
+gboolean mono_trace_eval_exception (MonoClass *klass)
 {
-       char *start = input;
-       while (is_filenamechar (*input)){
-               input++;
-       }
-       if (value != NULL)
-               g_free (value);
-       size_t len = input - start;
-       value = (char *)g_malloc (len + 1);
-       memcpy (value, start, len);
-       value [len] = 0;
+       return mono_callspec_eval_exception (klass, &trace_spec);
 }
 
-enum Token {
-       TOKEN_METHOD,
-       TOKEN_CLASS,
-       TOKEN_ALL,
-       TOKEN_PROGRAM,
-       TOKEN_EXCEPTION,
-       TOKEN_NAMESPACE,
-       TOKEN_WRAPPER,
-       TOKEN_STRING,
-       TOKEN_EXCLUDE,
-       TOKEN_DISABLED,
-       TOKEN_SEPARATOR,
-       TOKEN_END,
-       TOKEN_ERROR
-};
-
-static int
-get_token (void)
+gboolean mono_trace_eval (MonoMethod *method)
 {
-       while (input [0] == '+')
-               input++;
-
-       if (input [0] == '\0') {
-               return TOKEN_END;
-       }
-       if (input [0] == 'M' && input [1] == ':'){
-               input += 2;
-               get_string ();
-               return TOKEN_METHOD;
-       }
-       if (input [0] == 'N' && input [1] == ':'){
-               input += 2;
-               get_string ();
-               return TOKEN_NAMESPACE;
-       }
-       if (input [0] == 'T' && input [1] == ':'){
-               input += 2;
-               get_string ();
-               return TOKEN_CLASS;
-       }
-       if (input [0] == 'E' && input [1] == ':'){
-               input += 2;
-               get_string ();
-               return TOKEN_EXCEPTION;
-       }
-       if (*input == '-'){
-               input++;
-               return TOKEN_EXCLUDE;
-       }
-       if (is_filenamechar (*input)){
-               get_string ();
-               if (strcmp (value, "all") == 0)
-                       return TOKEN_ALL;
-               if (strcmp (value, "program") == 0)
-                       return TOKEN_PROGRAM;
-               if (strcmp (value, "wrapper") == 0)
-                       return TOKEN_WRAPPER;
-               if (strcmp (value, "disabled") == 0)
-                       return TOKEN_DISABLED;
-               return TOKEN_STRING;
-       }
-       if (*input == ','){
-               input++;
-               return TOKEN_SEPARATOR;
-       }
-
-       fprintf (stderr, "Syntax error at or around '%s'\n", input);    
-       return TOKEN_ERROR;
+       return mono_callspec_eval (method, &trace_spec);
 }
 
-static void
-cleanup (void)
+MonoCallSpec *mono_trace_set_options (const char *options)
 {
-       if (value != NULL)
-               g_free (value);
-}
-
-static int
-get_spec (int *last)
-{
-       int token = get_token ();
-       if (token == TOKEN_EXCLUDE){
-               token = get_spec (last);
-               if (token == TOKEN_EXCLUDE){
-                       fprintf (stderr, "Expecting an expression");
-                       return TOKEN_ERROR;
-               }
-               if (token == TOKEN_ERROR)
-                       return token;
-               trace_spec.ops [(*last)-1].exclude = 1;
-               return TOKEN_SEPARATOR;
-       }
-       if (token == TOKEN_END || token == TOKEN_SEPARATOR || token == TOKEN_ERROR)
-               return token;
-       
-       if (token == TOKEN_METHOD){
-               MonoMethodDesc *desc = mono_method_desc_new (value, TRUE);
-               if (desc == NULL){
-                       fprintf (stderr, "Invalid method name: %s\n", value);
-                       return TOKEN_ERROR;
-               }
-               trace_spec.ops [*last].op = MONO_TRACEOP_METHOD;
-               trace_spec.ops [*last].data = desc;
-       } else if (token == TOKEN_ALL)
-               trace_spec.ops [*last].op = MONO_TRACEOP_ALL;
-       else if (token == TOKEN_PROGRAM)
-               trace_spec.ops [*last].op = MONO_TRACEOP_PROGRAM;
-       else if (token == TOKEN_WRAPPER)
-               trace_spec.ops [*last].op = MONO_TRACEOP_WRAPPER;
-       else if (token == TOKEN_NAMESPACE){
-               trace_spec.ops [*last].op = MONO_TRACEOP_NAMESPACE;
-               trace_spec.ops [*last].data = g_strdup (value);
-       } else if (token == TOKEN_CLASS || token == TOKEN_EXCEPTION){
-               char *p = strrchr (value, '.');
-               if (p) {
-                       *p++ = 0;
-                       trace_spec.ops [*last].data = g_strdup (value);
-                       trace_spec.ops [*last].data2 = g_strdup (p);
-               }
-               else {
-                       trace_spec.ops [*last].data = g_strdup ("");
-                       trace_spec.ops [*last].data2 = g_strdup (value);
-               }
-               trace_spec.ops [*last].op = token == TOKEN_CLASS ? MONO_TRACEOP_CLASS : MONO_TRACEOP_EXCEPTION;
-       } else if (token == TOKEN_STRING){
-               trace_spec.ops [*last].op = MONO_TRACEOP_ASSEMBLY;
-               trace_spec.ops [*last].data = g_strdup (value);
-       } else if (token == TOKEN_DISABLED) {
-               trace_spec.enabled = FALSE;
-       } else {
-               fprintf (stderr, "Syntax error in trace option specification\n");
-               return TOKEN_ERROR;
+       char *errstr;
+       if (!mono_callspec_parse (options, &trace_spec, &errstr)) {
+               fprintf (stderr, "%s\n", errstr);
+               g_free (errstr);
+               return NULL;
        }
-       (*last)++;
-       return TOKEN_SEPARATOR;
-}
 
-MonoTraceSpec *
-mono_trace_parse_options (const char *options)
-{
-       char *p = (char*)options;
-       int size = 1;
-       int last_used;
-       int token;
-
-       trace_spec.enabled = TRUE;
-       if (*p == 0){
-               trace_spec.len = 1;
-               trace_spec.ops = g_new0 (MonoTraceOperation, 1);
-               trace_spec.ops [0].op = MONO_TRACEOP_ALL;
-               return &trace_spec;
-       }
-               
-       for (p = (char*)options; *p != 0; p++)
-               if (*p == ',')
-                       size++;
-       
-       trace_spec.ops = g_new0 (MonoTraceOperation, size);
-
-       input = (char*)options;
-       last_used = 0;
-       
-       while ((token = (get_spec (&last_used))) != TOKEN_END){
-               if (token == TOKEN_ERROR)
-                       return NULL;
-               if (token == TOKEN_SEPARATOR)
-                       continue;
-       }
-       trace_spec.len = last_used;
-       cleanup ();
        return &trace_spec;
 }
 
-void
-mono_trace_set_assembly (MonoAssembly *assembly)
-{
-       trace_spec.assembly = assembly;
-}
-
 static
 #ifdef HAVE_KW_THREAD
 __thread 
@@ -416,7 +142,7 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
        g_free (fname);
 
        if (!ebp) {
-               printf (") ip: %p\n", RETURN_ADDRESS_N (1));
+               printf (") ip: %p\n", MONO_RETURN_ADDRESS_N (1));
                goto unlock;
        }
 
@@ -426,7 +152,7 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
 
        if (method->is_inflated) {
                /* FIXME: Might be better to pass the ji itself */
-               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)RETURN_ADDRESS (), NULL);
+               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)MONO_RETURN_ADDRESS (), NULL);
                if (ji) {
                        gsctx = mono_jit_info_get_generic_sharing_context (ji);
                        if (gsctx && gsctx->is_gsharedvt) {
@@ -590,7 +316,7 @@ mono_trace_leave_method (MonoMethod *method, ...)
 
        if (method->is_inflated) {
                /* FIXME: Might be better to pass the ji itself */
-               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)RETURN_ADDRESS (), NULL);
+               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)MONO_RETURN_ADDRESS (), NULL);
                if (ji) {
                        gsctx = mono_jit_info_get_generic_sharing_context (ji);
                        if (gsctx && gsctx->is_gsharedvt) {
@@ -698,7 +424,7 @@ mono_trace_leave_method (MonoMethod *method, ...)
                printf ("(unknown return type %x)", mono_method_signature (method)->ret->type);
        }
 
-       //printf (" ip: %p\n", RETURN_ADDRESS_N (1));
+       //printf (" ip: %p\n", MONO_RETURN_ADDRESS_N (1));
        printf ("\n");
        fflush (stdout);
 
index 7f6d4562f7d4a1cbcddd01128fa5981618ff1fae..516fd8c60f712170ec1808f32239231107dd1f84 100644 (file)
@@ -7,31 +7,6 @@
 #include <glib.h>
 #include "mono/utils/mono-compiler.h"
 
-typedef enum {
-       MONO_TRACEOP_ALL,
-       MONO_TRACEOP_PROGRAM,
-       MONO_TRACEOP_METHOD,
-       MONO_TRACEOP_ASSEMBLY,
-       MONO_TRACEOP_CLASS,
-       MONO_TRACEOP_NAMESPACE,
-       MONO_TRACEOP_EXCEPTION,
-       MONO_TRACEOP_WRAPPER,
-} MonoTraceOpcode;
-
-typedef struct {
-       MonoTraceOpcode op;
-       int   exclude;
-       void *data, *data2;
-} MonoTraceOperation;
-
-struct MonoTraceSpec {
-       int len;
-       gboolean enabled;
-       MonoTraceOperation *ops;
-
-       MonoAssembly *assembly;
-};
-
 G_BEGIN_DECLS
 
 void
index 88cd9d37a1a2851aa5944c04a5feb265f5651767..212278b57e407b178b84e22766c55e864084e043 100644 (file)
@@ -25,6 +25,8 @@ lib_LTLIBRARIES = \
        libmono-profiler-iomap-static.la \
        libmono-profiler-log.la \
        libmono-profiler-log-static.la \
+       libmono-profiler-coverage.la \
+       libmono-profiler-coverage-static.la \
        $(vtune_libs)
 
 suppressiondir = $(datadir)/mono-$(API_VER)/mono/profiler
@@ -83,6 +85,12 @@ libmono_profiler_log_la_LDFLAGS = $(prof_ldflags)
 libmono_profiler_log_static_la_SOURCES = log.c log-args.c
 libmono_profiler_log_static_la_LDFLAGS = -static
 
+libmono_profiler_coverage_la_SOURCES = coverage.c
+libmono_profiler_coverage_la_LIBADD = $(libmono_dep) $(GLIB_LIBS) $(Z_LIBS)
+libmono_profiler_coverage_la_LDFLAGS = $(prof_ldflags)
+libmono_profiler_coverage_static_la_SOURCES = coverage.c
+libmono_profiler_coverage_static_la_LDFLAGS = -static
+
 if HAVE_VTUNE
 libmono_profiler_vtune_la_SOURCES = vtune.c
 libmono_profiler_vtune_la_CFLAGS = $(VTUNE_CFLAGS)
diff --git a/mono/profiler/coverage.c b/mono/profiler/coverage.c
new file mode 100644 (file)
index 0000000..5a9d5b6
--- /dev/null
@@ -0,0 +1,923 @@
+/*
+ * coverage.c: mono coverage profiler
+ *
+ * Authors:
+ *   Paolo Molaro (lupus@ximian.com)
+ *   Alex Rønne Petersen (alexrp@xamarin.com)
+ *   Ludovic Henry (ludovic@xamarin.com)
+ *
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
+ */
+
+/*
+ * The Coverage XML output schema
+ * <coverage>
+ *   <assembly/>
+ *   <class/>
+ *   <method>
+ *     <statement/>
+ *   </method>
+ * </coverage>
+ *
+ * Elements:
+ *   <coverage> - The root element of the documentation. It can contain any number of
+ *                <assembly>, <class> or <method> elements.
+ *                Attributes:
+ *                   - version: The version number for the file format - (eg: "0.3")
+ *   <assembly> - Contains data about assemblies. Has no child elements
+ *                Attributes:
+ *                   - name: The name of the assembly - (eg: "System.Xml")
+ *                   - guid: The GUID of the assembly
+ *                   - filename: The filename of the assembly
+ *                   - method-count: The number of methods in the assembly
+ *                   - full: The number of fully covered methods
+ *                   - partial: The number of partially covered methods
+ *   <class> - Contains data about classes. Has no child elements
+ *             Attributes:
+ *                - name: The name of the class
+ *                - method-count: The number of methods in the class
+ *                - full: The number of fully covered methods
+ *                - partial: The number of partially covered methods
+ *   <method> - Contains data about methods. Can contain any number of <statement> elements
+ *              Attributes:
+ *                 - assembly: The name of the parent assembly
+ *                 - class: The name of the parent class
+ *                 - name: The name of the method, with all it's parameters
+ *                 - filename: The name of the source file containing this method
+ *                 - token
+ *   <statement> - Contains data about IL statements. Has no child elements
+ *                 Attributes:
+ *                    - offset: The offset of the statement in the IL code after the previous
+ *                              statement's offset
+ *                    - counter: 1 if the line was covered, 0 if it was not
+ *                    - line: The line number in the parent method's file
+ *                    - column: The column on the line
+ */
+
+#include <config.h>
+#include <glib.h>
+
+#include <stdio.h>
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+#include <fcntl.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#if defined (HAVE_SYS_ZLIB)
+#include <zlib.h>
+#endif
+
+#include <mono/metadata/assembly.h>
+#include <mono/metadata/debug-helpers.h>
+#include <mono/metadata/profiler.h>
+#include <mono/metadata/tabledefs.h>
+#include <mono/metadata/metadata-internals.h>
+
+#include <mono/utils/atomic.h>
+#include <mono/utils/hazard-pointer.h>
+#include <mono/utils/lock-free-queue.h>
+#include <mono/utils/mono-conc-hashtable.h>
+#include <mono/utils/mono-os-mutex.h>
+#include <mono/utils/mono-logger-internals.h>
+#include <mono/utils/mono-counters.h>
+
+// Statistics for profiler events.
+static gint32 coverage_methods_ctr,
+              coverage_statements_ctr,
+              coverage_classes_ctr,
+              coverage_assemblies_ctr;
+
+struct _MonoProfiler {
+       MonoProfilerHandle handle;
+
+       FILE* file;
+
+       char *args;
+
+       mono_mutex_t mutex;
+       GPtrArray *data;
+
+       GPtrArray *filters;
+       MonoConcurrentHashTable *filtered_classes;
+       MonoConcurrentHashTable *suppressed_assemblies;
+
+       MonoConcurrentHashTable *methods;
+       MonoConcurrentHashTable *assemblies;
+       MonoConcurrentHashTable *classes;
+
+       MonoConcurrentHashTable *image_to_methods;
+
+       guint32 previous_offset;
+};
+
+typedef struct {
+       //Where to compress the output file
+       gboolean use_zip;
+
+       //Name of the generated xml file
+       const char *output_filename;
+
+       //Filter files used by the code coverage mode
+       GPtrArray *cov_filter_files;
+} ProfilerConfig;
+
+static ProfilerConfig coverage_config;
+static struct _MonoProfiler coverage_profiler;
+
+/* This is a very basic escape function that escapes < > and &
+   Ideally we'd use g_markup_escape_string but that function isn't
+        available in Mono's eglib. This was written without looking at the
+        source of that function in glib. */
+static char *
+escape_string_for_xml (const char *string)
+{
+       GString *string_builder = g_string_new (NULL);
+       const char *start, *p;
+
+       start = p = string;
+       while (*p) {
+               while (*p && *p != '&' && *p != '<' && *p != '>')
+                       p++;
+
+               g_string_append_len (string_builder, start, p - start);
+
+               if (*p == '\0')
+                       break;
+
+               switch (*p) {
+               case '<':
+                       g_string_append (string_builder, "&lt;");
+                       break;
+
+               case '>':
+                       g_string_append (string_builder, "&gt;");
+                       break;
+
+               case '&':
+                       g_string_append (string_builder, "&amp;");
+                       break;
+
+               default:
+                       break;
+               }
+
+               p++;
+               start = p;
+       }
+
+       return g_string_free (string_builder, FALSE);
+}
+
+typedef struct {
+       MonoLockFreeQueueNode node;
+       MonoMethod *method;
+} MethodNode;
+
+typedef struct {
+       int offset;
+       int counter;
+       char *filename;
+       int line;
+       int column;
+} CoverageEntry;
+
+static void
+free_coverage_entry (gpointer data, gpointer userdata)
+{
+       CoverageEntry *entry = (CoverageEntry *)data;
+       g_free (entry->filename);
+       g_free (entry);
+}
+
+static void
+obtain_coverage_for_method (MonoProfiler *prof, const MonoProfilerCoverageData *entry)
+{
+       g_assert (prof == &coverage_profiler);
+
+       int offset = entry->il_offset - coverage_profiler.previous_offset;
+       CoverageEntry *e = g_new (CoverageEntry, 1);
+
+       coverage_profiler.previous_offset = entry->il_offset;
+
+       e->offset = offset;
+       e->counter = entry->counter;
+       e->filename = g_strdup(entry->file_name ? entry->file_name : "");
+       e->line = entry->line;
+       e->column = entry->column;
+
+       g_ptr_array_add (coverage_profiler.data, e);
+}
+
+static char *
+parse_generic_type_names(char *name)
+{
+       char *new_name, *ret;
+       int within_generic_declaration = 0, generic_members = 1;
+
+       if (name == NULL || *name == '\0')
+               return g_strdup ("");
+
+       if (!(ret = new_name = (char *) g_calloc (strlen (name) * 4 + 1, sizeof (char))))
+               return NULL;
+
+       do {
+               switch (*name) {
+                       case '<':
+                               within_generic_declaration = 1;
+                               break;
+
+                       case '>':
+                               within_generic_declaration = 0;
+
+                               if (*(name - 1) != '<') {
+                                       *new_name++ = '`';
+                                       *new_name++ = '0' + generic_members;
+                               } else {
+                                       memcpy (new_name, "&lt;&gt;", 8);
+                                       new_name += 8;
+                               }
+
+                               generic_members = 0;
+                               break;
+
+                       case ',':
+                               generic_members++;
+                               break;
+
+                       default:
+                               if (!within_generic_declaration)
+                                       *new_name++ = *name;
+
+                               break;
+               }
+       } while (*name++);
+
+       return ret;
+}
+
+static void
+dump_method (gpointer key, gpointer value, gpointer userdata)
+{
+       MonoMethod *method = (MonoMethod *)value;
+       MonoClass *klass;
+       MonoImage *image;
+       char *class_name, *escaped_image_name, *escaped_class_name, *escaped_method_name, *escaped_method_signature, *escaped_method_filename;
+       const char *image_name, *method_name, *method_signature, *method_filename;
+       guint i;
+
+       coverage_profiler.previous_offset = 0;
+       coverage_profiler.data = g_ptr_array_new ();
+
+       mono_profiler_get_coverage_data (coverage_profiler.handle, method, obtain_coverage_for_method);
+
+       klass = mono_method_get_class (method);
+       image = mono_class_get_image (klass);
+       image_name = mono_image_get_name (image);
+
+       method_signature = mono_signature_get_desc (mono_method_signature (method), TRUE);
+       class_name = parse_generic_type_names (mono_type_get_name (mono_class_get_type (klass)));
+       method_name = mono_method_get_name (method);
+
+       if (coverage_profiler.data->len != 0) {
+               CoverageEntry *entry = (CoverageEntry *)coverage_profiler.data->pdata[0];
+               method_filename = entry->filename ? entry->filename : "";
+       } else
+               method_filename = "";
+
+       image_name = image_name ? image_name : "";
+       method_signature = method_signature ? method_signature : "";
+       method_name = method_name ? method_name : "";
+
+       escaped_image_name = escape_string_for_xml (image_name);
+       escaped_class_name = escape_string_for_xml (class_name);
+       escaped_method_name = escape_string_for_xml (method_name);
+       escaped_method_signature = escape_string_for_xml (method_signature);
+       escaped_method_filename = escape_string_for_xml (method_filename);
+
+       fprintf (coverage_profiler.file, "\t<method assembly=\"%s\" class=\"%s\" name=\"%s (%s)\" filename=\"%s\" token=\"%d\">\n",
+               escaped_image_name, escaped_class_name, escaped_method_name, escaped_method_signature, escaped_method_filename, mono_method_get_token (method));
+
+       g_free (escaped_image_name);
+       g_free (escaped_class_name);
+       g_free (escaped_method_name);
+       g_free (escaped_method_signature);
+       g_free (escaped_method_filename);
+
+       for (i = 0; i < coverage_profiler.data->len; i++) {
+               CoverageEntry *entry = (CoverageEntry *)coverage_profiler.data->pdata[i];
+
+               fprintf (coverage_profiler.file, "\t\t<statement offset=\"%d\" counter=\"%d\" line=\"%d\" column=\"%d\"/>\n",
+                       entry->offset, entry->counter, entry->line, entry->column);
+       }
+
+       fprintf (coverage_profiler.file, "\t</method>\n");
+
+       g_free (class_name);
+
+       g_ptr_array_foreach (coverage_profiler.data, free_coverage_entry, NULL);
+       g_ptr_array_free (coverage_profiler.data, TRUE);
+}
+
+/* This empties the queue */
+static guint
+count_queue (MonoLockFreeQueue *queue)
+{
+       MonoLockFreeQueueNode *node;
+       guint count = 0;
+
+       while ((node = mono_lock_free_queue_dequeue (queue))) {
+               count++;
+               mono_thread_hazardous_try_free (node, g_free);
+       }
+
+       return count;
+}
+
+static void
+dump_classes_for_image (gpointer key, gpointer value, gpointer userdata)
+{
+       MonoClass *klass = (MonoClass *)key;
+       MonoLockFreeQueue *class_methods = (MonoLockFreeQueue *)value;
+       MonoImage *image;
+       char *class_name, *escaped_class_name;
+       const char *image_name;
+       int number_of_methods, partially_covered;
+       guint fully_covered;
+
+       image = mono_class_get_image (klass);
+       image_name = mono_image_get_name (image);
+
+       if (!image_name || strcmp (image_name, mono_image_get_name (((MonoImage*) userdata))) != 0)
+               return;
+
+       class_name = mono_type_get_name (mono_class_get_type (klass));
+
+       number_of_methods = mono_class_num_methods (klass);
+       fully_covered = count_queue (class_methods);
+       /* We don't handle partial covered yet */
+       partially_covered = 0;
+
+       escaped_class_name = escape_string_for_xml (class_name);
+
+       fprintf (coverage_profiler.file, "\t<class name=\"%s\" method-count=\"%d\" full=\"%d\" partial=\"%d\"/>\n",
+               escaped_class_name, number_of_methods, fully_covered, partially_covered);
+
+       g_free (escaped_class_name);
+
+       g_free (class_name);
+
+}
+
+static void
+get_coverage_for_image (MonoImage *image, int *number_of_methods, guint *fully_covered, int *partially_covered)
+{
+       MonoLockFreeQueue *image_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (coverage_profiler.image_to_methods, image);
+
+       *number_of_methods = mono_image_get_table_rows (image, MONO_TABLE_METHOD);
+       if (image_methods)
+               *fully_covered = count_queue (image_methods);
+       else
+               *fully_covered = 0;
+
+       // FIXME: We don't handle partially covered yet.
+       *partially_covered = 0;
+}
+
+static void
+dump_assembly (gpointer key, gpointer value, gpointer userdata)
+{
+       MonoAssembly *assembly = (MonoAssembly *)value;
+       MonoImage *image = mono_assembly_get_image (assembly);
+       const char *image_name, *image_guid, *image_filename;
+       char *escaped_image_name, *escaped_image_filename;
+       int number_of_methods = 0, partially_covered = 0;
+       guint fully_covered = 0;
+
+       image_name = mono_image_get_name (image);
+       image_guid = mono_image_get_guid (image);
+       image_filename = mono_image_get_filename (image);
+
+       image_name = image_name ? image_name : "";
+       image_guid = image_guid ? image_guid : "";
+       image_filename = image_filename ? image_filename : "";
+
+       get_coverage_for_image (image, &number_of_methods, &fully_covered, &partially_covered);
+
+       escaped_image_name = escape_string_for_xml (image_name);
+       escaped_image_filename = escape_string_for_xml (image_filename);
+
+       fprintf (coverage_profiler.file, "\t<assembly name=\"%s\" guid=\"%s\" filename=\"%s\" method-count=\"%d\" full=\"%d\" partial=\"%d\"/>\n",
+               escaped_image_name, image_guid, escaped_image_filename, number_of_methods, fully_covered, partially_covered);
+
+       g_free (escaped_image_name);
+       g_free (escaped_image_filename);
+
+       mono_conc_hashtable_foreach (coverage_profiler.classes, dump_classes_for_image, image);
+}
+
+static void
+dump_coverage (void)
+{
+       fprintf (coverage_profiler.file, "<?xml version=\"1.0\"?>\n");
+       fprintf (coverage_profiler.file, "<coverage version=\"0.3\">\n");
+
+       mono_os_mutex_lock (&coverage_profiler.mutex);
+       mono_conc_hashtable_foreach (coverage_profiler.assemblies, dump_assembly, NULL);
+       mono_conc_hashtable_foreach (coverage_profiler.methods, dump_method, NULL);
+       mono_os_mutex_unlock (&coverage_profiler.mutex);
+
+       fprintf (coverage_profiler.file, "</coverage>\n");
+}
+
+static MonoLockFreeQueueNode *
+create_method_node (MonoMethod *method)
+{
+       MethodNode *node = (MethodNode *) g_malloc (sizeof (MethodNode));
+       mono_lock_free_queue_node_init ((MonoLockFreeQueueNode *) node, FALSE);
+       node->method = method;
+
+       return (MonoLockFreeQueueNode *) node;
+}
+
+static gboolean
+coverage_filter (MonoProfiler *prof, MonoMethod *method)
+{
+       MonoError error;
+       MonoClass *klass;
+       MonoImage *image;
+       MonoAssembly *assembly;
+       MonoMethodHeader *header;
+       guint32 iflags, flags, code_size;
+       char *fqn, *classname;
+       gboolean has_positive, found;
+       MonoLockFreeQueue *image_methods, *class_methods;
+       MonoLockFreeQueueNode *node;
+
+       g_assert (prof == &coverage_profiler);
+
+       flags = mono_method_get_flags (method, &iflags);
+       if ((iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) ||
+           (flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
+               return FALSE;
+
+       // Don't need to do anything else if we're already tracking this method
+       if (mono_conc_hashtable_lookup (coverage_profiler.methods, method))
+               return TRUE;
+
+       klass = mono_method_get_class (method);
+       image = mono_class_get_image (klass);
+
+       // Don't handle coverage for the core assemblies
+       if (mono_conc_hashtable_lookup (coverage_profiler.suppressed_assemblies, (gpointer) mono_image_get_name (image)) != NULL)
+               return FALSE;
+
+       if (coverage_profiler.filters) {
+               /* Check already filtered classes first */
+               if (mono_conc_hashtable_lookup (coverage_profiler.filtered_classes, klass))
+                       return FALSE;
+
+               classname = mono_type_get_name (mono_class_get_type (klass));
+
+               fqn = g_strdup_printf ("[%s]%s", mono_image_get_name (image), classname);
+
+               // Check positive filters first
+               has_positive = FALSE;
+               found = FALSE;
+               for (guint i = 0; i < coverage_profiler.filters->len; ++i) {
+                       char *filter = (char *)g_ptr_array_index (coverage_profiler.filters, i);
+
+                       if (filter [0] == '+') {
+                               filter = &filter [1];
+
+                               if (strstr (fqn, filter) != NULL)
+                                       found = TRUE;
+
+                               has_positive = TRUE;
+                       }
+               }
+
+               if (has_positive && !found) {
+                       mono_os_mutex_lock (&coverage_profiler.mutex);
+                       mono_conc_hashtable_insert (coverage_profiler.filtered_classes, klass, klass);
+                       mono_os_mutex_unlock (&coverage_profiler.mutex);
+                       g_free (fqn);
+                       g_free (classname);
+
+                       return FALSE;
+               }
+
+               for (guint i = 0; i < coverage_profiler.filters->len; ++i) {
+                       // FIXME: Is substring search sufficient?
+                       char *filter = (char *)g_ptr_array_index (coverage_profiler.filters, i);
+                       if (filter [0] == '+')
+                               continue;
+
+                       // Skip '-'
+                       filter = &filter [1];
+
+                       if (strstr (fqn, filter) != NULL) {
+                               mono_os_mutex_lock (&coverage_profiler.mutex);
+                               mono_conc_hashtable_insert (coverage_profiler.filtered_classes, klass, klass);
+                               mono_os_mutex_unlock (&coverage_profiler.mutex);
+                               g_free (fqn);
+                               g_free (classname);
+
+                               return FALSE;
+                       }
+               }
+
+               g_free (fqn);
+               g_free (classname);
+       }
+
+       header = mono_method_get_header_checked (method, &error);
+       mono_error_cleanup (&error);
+
+       mono_method_header_get_code (header, &code_size, NULL);
+
+       assembly = mono_image_get_assembly (image);
+
+       // Need to keep the assemblies around for as long as they are kept in the hashtable
+       // Nunit, for example, has a habit of unloading them before the coverage statistics are
+       // generated causing a crash. See https://bugzilla.xamarin.com/show_bug.cgi?id=39325
+       mono_assembly_addref (assembly);
+
+       mono_os_mutex_lock (&coverage_profiler.mutex);
+       mono_conc_hashtable_insert (coverage_profiler.methods, method, method);
+       mono_conc_hashtable_insert (coverage_profiler.assemblies, assembly, assembly);
+       mono_os_mutex_unlock (&coverage_profiler.mutex);
+
+       image_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (coverage_profiler.image_to_methods, image);
+
+       if (image_methods == NULL) {
+               image_methods = (MonoLockFreeQueue *) g_malloc (sizeof (MonoLockFreeQueue));
+               mono_lock_free_queue_init (image_methods);
+               mono_os_mutex_lock (&coverage_profiler.mutex);
+               mono_conc_hashtable_insert (coverage_profiler.image_to_methods, image, image_methods);
+               mono_os_mutex_unlock (&coverage_profiler.mutex);
+       }
+
+       node = create_method_node (method);
+       mono_lock_free_queue_enqueue (image_methods, node);
+
+       class_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (coverage_profiler.classes, klass);
+
+       if (class_methods == NULL) {
+               class_methods = (MonoLockFreeQueue *) g_malloc (sizeof (MonoLockFreeQueue));
+               mono_lock_free_queue_init (class_methods);
+               mono_os_mutex_lock (&coverage_profiler.mutex);
+               mono_conc_hashtable_insert (coverage_profiler.classes, klass, class_methods);
+               mono_os_mutex_unlock (&coverage_profiler.mutex);
+       }
+
+       node = create_method_node (method);
+       mono_lock_free_queue_enqueue (class_methods, node);
+
+       return TRUE;
+}
+
+#define LINE_BUFFER_SIZE 4096
+/* Max file limit of 128KB */
+#define MAX_FILE_SIZE 128 * 1024
+static char *
+get_file_content (const gchar *filename)
+{
+       char *buffer;
+       ssize_t bytes_read;
+       long filesize;
+       int res, offset = 0;
+       FILE *stream;
+
+       stream = fopen (filename, "r");
+       if (stream == NULL)
+               return NULL;
+
+       res = fseek (stream, 0, SEEK_END);
+       if (res < 0) {
+               fclose (stream);
+               return NULL;
+       }
+
+       filesize = ftell (stream);
+       if (filesize < 0) {
+               fclose (stream);
+               return NULL;
+       }
+
+       res = fseek (stream, 0, SEEK_SET);
+       if (res < 0) {
+               fclose (stream);
+               return NULL;
+       }
+
+       if (filesize > MAX_FILE_SIZE) {
+               fclose (stream);
+               return NULL;
+       }
+
+       buffer = (char *) g_malloc ((filesize + 1) * sizeof (char));
+       while ((bytes_read = fread (buffer + offset, 1, LINE_BUFFER_SIZE, stream)) > 0)
+               offset += bytes_read;
+
+       /* NULL terminate our buffer */
+       buffer[filesize] = '\0';
+
+       fclose (stream);
+       return buffer;
+}
+
+static char *
+get_next_line (char *contents, char **next_start)
+{
+       char *p = contents;
+
+       if (p == NULL || *p == '\0') {
+               *next_start = NULL;
+               return NULL;
+       }
+
+       while (*p != '\n' && *p != '\0')
+               p++;
+
+       if (*p == '\n') {
+               *p = '\0';
+               *next_start = p + 1;
+       } else
+               *next_start = NULL;
+
+       return contents;
+}
+
+static void
+init_suppressed_assemblies (void)
+{
+       char *content;
+       char *line;
+
+       coverage_profiler.suppressed_assemblies = mono_conc_hashtable_new (g_str_hash, g_str_equal);
+
+       /* Don't need to free content as it is referred to by the lines stored in @filters */
+       content = get_file_content (SUPPRESSION_DIR "/mono-profiler-coverage.suppression");
+       if (content == NULL)
+               content = get_file_content (SUPPRESSION_DIR "/mono-profiler-log.suppression");
+       if (content == NULL)
+               return;
+
+       while ((line = get_next_line (content, &content))) {
+               line = g_strchomp (g_strchug (line));
+               /* No locking needed as we're doing initialization */
+               mono_conc_hashtable_insert (coverage_profiler.suppressed_assemblies, line, line);
+       }
+}
+
+static void
+parse_cov_filter_file (GPtrArray *filters, const char *file)
+{
+       char *content;
+       char *line;
+
+       /* Don't need to free content as it is referred to by the lines stored in @filters */
+       content = get_file_content (file);
+       if (content == NULL) {
+               mono_profiler_printf_err ("Could not open coverage filter file '%s'.", file);
+               return;
+       }
+
+       while ((line = get_next_line (content, &content)))
+               g_ptr_array_add (filters, g_strchug (g_strchomp (line)));
+}
+
+static void
+unref_coverage_assemblies (gpointer key, gpointer value, gpointer userdata)
+{
+       MonoAssembly *assembly = (MonoAssembly *)value;
+       mono_assembly_close (assembly);
+}
+
+static void
+log_shutdown (MonoProfiler *prof)
+{
+       g_assert (prof == &coverage_profiler);
+
+       dump_coverage ();
+
+       mono_os_mutex_lock (&coverage_profiler.mutex);
+       mono_conc_hashtable_foreach (coverage_profiler.assemblies, unref_coverage_assemblies, NULL);
+       mono_os_mutex_unlock (&coverage_profiler.mutex);
+
+       mono_conc_hashtable_destroy (coverage_profiler.methods);
+       mono_conc_hashtable_destroy (coverage_profiler.assemblies);
+       mono_conc_hashtable_destroy (coverage_profiler.classes);
+       mono_conc_hashtable_destroy (coverage_profiler.filtered_classes);
+
+       mono_conc_hashtable_destroy (coverage_profiler.image_to_methods);
+       mono_conc_hashtable_destroy (coverage_profiler.suppressed_assemblies);
+       mono_os_mutex_destroy (&coverage_profiler.mutex);
+
+       if (*coverage_config.output_filename == '|') {
+               pclose (coverage_profiler.file);
+       } else if (*coverage_config.output_filename == '#') {
+               // do nothing
+       } else {
+               fclose (coverage_profiler.file);
+       }
+
+       g_free (coverage_profiler.args);
+}
+
+static void
+runtime_initialized (MonoProfiler *profiler)
+{
+       mono_counters_register ("Event: Coverage methods", MONO_COUNTER_UINT | MONO_COUNTER_PROFILER | MONO_COUNTER_MONOTONIC, &coverage_methods_ctr);
+       mono_counters_register ("Event: Coverage statements", MONO_COUNTER_UINT | MONO_COUNTER_PROFILER | MONO_COUNTER_MONOTONIC, &coverage_statements_ctr);
+       mono_counters_register ("Event: Coverage classes", MONO_COUNTER_UINT | MONO_COUNTER_PROFILER | MONO_COUNTER_MONOTONIC, &coverage_classes_ctr);
+       mono_counters_register ("Event: Coverage assemblies", MONO_COUNTER_UINT | MONO_COUNTER_PROFILER | MONO_COUNTER_MONOTONIC, &coverage_assemblies_ctr);
+}
+
+static void usage (void);
+
+static gboolean
+match_option (const char *arg, const char *opt_name, const char **rval)
+{
+       if (rval) {
+               const char *end = strchr (arg, '=');
+
+               *rval = NULL;
+               if (!end)
+                       return !strcmp (arg, opt_name);
+
+               if (strncmp (arg, opt_name, strlen (opt_name)) || (end - arg) > strlen (opt_name) + 1)
+                       return FALSE;
+               *rval = end + 1;
+               return TRUE;
+       } else {
+               //FIXME how should we handle passing a value to an arg that doesn't expect it?
+               return !strcmp (arg, opt_name);
+       }
+}
+
+static void
+parse_arg (const char *arg)
+{
+       const char *val;
+
+       if (match_option (arg, "help", NULL)) {
+               usage ();
+       // } else if (match_option (arg, "zip", NULL)) {
+       //      coverage_config.use_zip = TRUE;
+       } else if (match_option (arg, "output", &val)) {
+               coverage_config.output_filename = g_strdup (val);
+       // } else if (match_option (arg, "covfilter", &val)) {
+       //      g_error ("not supported");
+       } else if (match_option (arg, "covfilter-file", &val)) {
+               if (coverage_config.cov_filter_files == NULL)
+                       coverage_config.cov_filter_files = g_ptr_array_new ();
+               g_ptr_array_add (coverage_config.cov_filter_files, g_strdup (val));
+       } else {
+               mono_profiler_printf_err ("Could not parse argument: %s", arg);
+       }
+}
+
+static void
+parse_args (const char *desc)
+{
+       const char *p;
+       gboolean in_quotes = FALSE;
+       char quote_char = '\0';
+       char *buffer = malloc (strlen (desc));
+       int buffer_pos = 0;
+
+       for (p = desc; *p; p++){
+               switch (*p){
+               case ',':
+                       if (!in_quotes) {
+                               if (buffer_pos != 0){
+                                       buffer [buffer_pos] = 0;
+                                       parse_arg (buffer);
+                                       buffer_pos = 0;
+                               }
+                       } else {
+                               buffer [buffer_pos++] = *p;
+                       }
+                       break;
+
+               case '\\':
+                       if (p [1]) {
+                               buffer [buffer_pos++] = p[1];
+                               p++;
+                       }
+                       break;
+               case '\'':
+               case '"':
+                       if (in_quotes) {
+                               if (quote_char == *p)
+                                       in_quotes = FALSE;
+                               else
+                                       buffer [buffer_pos++] = *p;
+                       } else {
+                               in_quotes = TRUE;
+                               quote_char = *p;
+                       }
+                       break;
+               default:
+                       buffer [buffer_pos++] = *p;
+                       break;
+               }
+       }
+
+       if (buffer_pos != 0) {
+               buffer [buffer_pos] = 0;
+               parse_arg (buffer);
+       }
+
+       g_free (buffer);
+}
+
+static void
+usage (void)
+{
+       mono_profiler_printf ("Mono coverage profiler");
+       mono_profiler_printf ("Usage: mono --profile=coverage[:OPTION1[,OPTION2...]] program.exe\n");
+       mono_profiler_printf ("Options:");
+       mono_profiler_printf ("\thelp                 show this usage info");
+
+       // mono_profiler_printf ("\tcovfilter=ASSEMBLY   add ASSEMBLY to the code coverage filters");
+       // mono_profiler_printf ("\t                     prefix a + to include the assembly or a - to exclude it");
+       // mono_profiler_printf ("\t                     e.g. covfilter=-mscorlib");
+       mono_profiler_printf ("\tcovfilter-file=FILE  use FILE to generate the list of assemblies to be filtered");
+       mono_profiler_printf ("\toutput=FILENAME      write the data to file FILENAME (the file is always overwritten)");
+       mono_profiler_printf ("\toutput=+FILENAME     write the data to file FILENAME.pid (the file is always overwritten)");
+       mono_profiler_printf ("\toutput=|PROGRAM      write the data to the stdin of PROGRAM");
+       mono_profiler_printf ("\toutput=|PROGRAM      write the data to the stdin of PROGRAM");
+       // mono_profiler_printf ("\tzip                  compress the output data");
+}
+
+MONO_API void
+mono_profiler_init_coverage (const char *desc);
+
+void
+mono_profiler_init_coverage (const char *desc)
+{
+       GPtrArray *filters = NULL;
+
+       parse_args (desc [strlen("coverage")] == ':' ? desc + strlen ("coverage") + 1 : "");
+
+       if (coverage_config.cov_filter_files) {
+               filters = g_ptr_array_new ();
+               int i;
+               for (i = 0; i < coverage_config.cov_filter_files->len; ++i) {
+                       const char *name = coverage_config.cov_filter_files->pdata [i];
+                       parse_cov_filter_file (filters, name);
+               }
+       }
+
+       coverage_profiler.args = g_strdup (desc);
+
+       //If coverage_config.output_filename begin with +, append the pid at the end
+       if (!coverage_config.output_filename)
+               coverage_config.output_filename = "coverage.xml";
+       else if (*coverage_config.output_filename == '+')
+               coverage_config.output_filename = g_strdup_printf ("%s.%d", coverage_config.output_filename + 1, getpid ());
+
+       if (*coverage_config.output_filename == '|')
+               coverage_profiler.file = popen (coverage_config.output_filename + 1, "w");
+       else if (*coverage_config.output_filename == '#')
+               coverage_profiler.file = fdopen (strtol (coverage_config.output_filename + 1, NULL, 10), "a");
+       else
+               coverage_profiler.file = fopen (coverage_config.output_filename, "w");
+
+       if (!coverage_profiler.file) {
+               mono_profiler_printf_err ("Could not create coverage profiler output file '%s'.", coverage_config.output_filename);
+               exit (1);
+       }
+
+       mono_os_mutex_init (&coverage_profiler.mutex);
+       coverage_profiler.methods = mono_conc_hashtable_new (NULL, NULL);
+       coverage_profiler.assemblies = mono_conc_hashtable_new (NULL, NULL);
+       coverage_profiler.classes = mono_conc_hashtable_new (NULL, NULL);
+       coverage_profiler.filtered_classes = mono_conc_hashtable_new (NULL, NULL);
+       coverage_profiler.image_to_methods = mono_conc_hashtable_new (NULL, NULL);
+       init_suppressed_assemblies ();
+
+       coverage_profiler.filters = filters;
+
+       MonoProfilerHandle handle = coverage_profiler.handle = mono_profiler_create (&coverage_profiler);
+
+       /*
+        * Required callbacks. These are either necessary for the profiler itself
+        * to function, or provide metadata that's needed if other events (e.g.
+        * allocations, exceptions) are dynamically enabled/disabled.
+        */
+
+       mono_profiler_set_runtime_shutdown_end_callback (handle, log_shutdown);
+       mono_profiler_set_runtime_initialized_callback (handle, runtime_initialized);
+
+       mono_profiler_enable_coverage ();
+       mono_profiler_set_coverage_filter_callback (handle, coverage_filter);
+}
index 1b9c83586944fd6d007bec4655810afa0edf91bf..b20444f31db4fc324d731d8c6a3d15301627bca8 100644 (file)
@@ -81,6 +81,7 @@ parse_arg (const char *arg, ProfilerConfig *config)
        } else if (match_option (arg, "calls", NULL)) {
                config->enter_leave = TRUE;
        } else if (match_option (arg, "coverage", NULL)) {
+               g_warning ("the log profiler support for code coverage is obsolete, use the \"coverage\" profiler");
                config->collect_coverage = TRUE;
        } else if (match_option (arg, "zip", NULL)) {
                config->use_zip = TRUE;
@@ -103,6 +104,24 @@ parse_arg (const char *arg, ProfilerConfig *config)
        } else if (match_option (arg, "calldepth", &val)) {
                char *end;
                config->max_call_depth = strtoul (val, &end, 10);
+       } else if (match_option (arg, "callspec", &val)) {
+               if (!val)
+                       val = "";
+               if (val[0] == '\"')
+                       ++val;
+               char *spec = g_strdup (val);
+               size_t speclen = strlen (val);
+               if (speclen > 0 && spec[speclen - 1] == '\"')
+                       spec[speclen - 1] = '\0';
+               char *errstr;
+               if (!mono_callspec_parse (spec, &config->callspec, &errstr)) {
+                       mono_profiler_printf_err (
+                           "Could not parse callspec: '%s': %s", spec,
+                           errstr);
+                       g_free (errstr);
+                       mono_callspec_cleanup (&config->callspec);
+               }
+               g_free (spec);
        } else if (match_option (arg, "covfilter-file", &val)) {
                if (config->cov_filter_files == NULL)
                        config->cov_filter_files = g_ptr_array_new ();
index 274e1a50fa6fa8a32fd6a2e186d3722e3295574d..8a677c2720d48bba530592351a5f6283d87f970b 100644 (file)
@@ -1142,7 +1142,7 @@ sync_point_mark (MonoProfilerSyncPointType type)
 
        ENTER_LOG (&sync_points_ctr, logbuffer,
                EVENT_SIZE /* event */ +
-               LEB128_SIZE /* type */
+               BYTE_SIZE /* type */
        );
 
        emit_event (logbuffer, TYPE_META | TYPE_SYNC_POINT);
@@ -1816,6 +1816,10 @@ method_exc_leave (MonoProfiler *prof, MonoMethod *method, MonoObject *exc)
 static MonoProfilerCallInstrumentationFlags
 method_filter (MonoProfiler *prof, MonoMethod *method)
 {
+       if (log_config.callspec.len > 0 &&
+           !mono_callspec_eval (method, &log_config.callspec))
+               return MONO_PROFILER_CALL_INSTRUMENTATION_NONE;
+
        return MONO_PROFILER_CALL_INSTRUMENTATION_ENTER |
               MONO_PROFILER_CALL_INSTRUMENTATION_LEAVE |
               MONO_PROFILER_CALL_INSTRUMENTATION_TAIL_CALL |
@@ -1905,7 +1909,8 @@ clause_exc (MonoProfiler *prof, MonoMethod *method, uint32_t clause_num, MonoExc
                EVENT_SIZE /* event */ +
                BYTE_SIZE /* clause type */ +
                LEB128_SIZE /* clause num */ +
-               LEB128_SIZE /* method */
+               LEB128_SIZE /* method */ +
+               LEB128_SIZE /* exc */
        );
 
        emit_event (logbuffer, TYPE_EXCEPTION | TYPE_CLAUSE);
@@ -2268,7 +2273,7 @@ dump_ubin (const char *filename, uintptr_t load_addr, uint64_t offset, uintptr_t
                LEB128_SIZE /* load address */ +
                LEB128_SIZE /* offset */ +
                LEB128_SIZE /* size */ +
-               nlen /* file name */
+               len /* file name */
        );
 
        emit_event (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_UBIN);
@@ -2671,6 +2676,12 @@ counters_sample (uint64_t timestamp)
        ;
 
        for (agent = log_profiler.counters; agent; agent = agent->next) {
+               /*
+                * FIXME: This calculation is incorrect for string counters since
+                * mono_counter_get_size () just returns 0 in that case. We should
+                * address this if we ever actually add any string counters to Mono.
+                */
+
                size +=
                        LEB128_SIZE /* index */ +
                        BYTE_SIZE /* type */ +
index f0503e4a4e423f7c9bc43c131d9ba5a3d3537642..e381d8975471a34d1895b98bb0f05b07a54db502 100644 (file)
@@ -4,6 +4,7 @@
 #include <glib.h>
 #define MONO_PROFILER_UNSTABLE_GC_ROOTS
 #include <mono/metadata/profiler.h>
+#include <mono/metadata/callspec.h>
 
 #define BUF_ID 0x4D504C01
 #define LOG_HEADER_ID 0x4D505A01
@@ -537,6 +538,9 @@ typedef struct {
 
        // Sample mode. Only used at startup.
        MonoProfilerSampleMode sampling_mode;
+
+       // Callspec config - which methods are to be instrumented
+       MonoCallSpec callspec;
 } ProfilerConfig;
 
 void proflog_parse_args (ProfilerConfig *config, const char *desc);
index 5e8866ffff869d2123ece47d39040009b0a95118..47173bc29c959a8bd3ed8f1fc52c2d256959092f 100644 (file)
@@ -104,7 +104,7 @@ typedef mword SgenDescriptor;
 #endif
 #endif
 
-#if defined (TARGET_WASM)
+#if defined (HOST_WASM)
 #define DEFAULT_MAJOR SGEN_MAJOR_SERIAL
 #define DEFAULT_SWEEP_MODE SGEN_SWEEP_SERIAL
 #elif defined(HAVE_CONC_GC_AS_DEFAULT)
index d5416f0df3630ee6a6bc5b4781bc0e9c5442873c..4c3454823fdd42c2f5e0073a87f650601d6b84bf 100644 (file)
@@ -2503,7 +2503,7 @@ sgen_ensure_free_space (size_t size, int generation)
  * LOCKING: Assumes the GC lock is held.
  */
 void
-sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish, gboolean stw)
+sgen_perform_collection_inner (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish, gboolean stw)
 {
        TV_DECLARE (gc_total_start);
        TV_DECLARE (gc_total_end);
@@ -2582,6 +2582,52 @@ sgen_perform_collection (size_t requested_size, int generation_to_collect, const
                sgen_restart_world (oldest_generation_collected);
 }
 
+#ifdef HOST_WASM
+
+typedef struct {
+       size_t requested_size;
+       int generation_to_collect;
+       const char *reason;
+} SgenGcRequest;
+
+static SgenGcRequest gc_request;
+static gboolean pending_request;
+
+extern void request_gc_cycle (void);
+
+#include <emscripten.h>
+
+EMSCRIPTEN_KEEPALIVE void
+mono_gc_pump_callback (void)
+{
+       if (!pending_request)
+               return;
+       pending_request = FALSE;
+       sgen_perform_collection_inner (gc_request.requested_size, gc_request.generation_to_collect, gc_request.reason, TRUE, TRUE);     
+}
+#endif
+
+void
+sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish, gboolean stw)
+{
+#ifdef HOST_WASM
+       g_assert (stw); //can't handle non-stw mode (IE, domain unload)
+       //we ignore wait_to_finish
+       if (!pending_request || gc_request.generation_to_collect <= generation_to_collect) { //no active request or request was for a smaller part of the heap
+               gc_request.requested_size = requested_size;
+               gc_request.generation_to_collect = generation_to_collect;
+               gc_request.reason = reason;
+               if (!pending_request) {
+                       request_gc_cycle ();
+                       pending_request = TRUE;
+               }
+       }
+
+       degraded_mode = 1; //enable degraded mode so allocation can continue
+#else
+       sgen_perform_collection_inner (requested_size, generation_to_collect, reason, wait_to_finish, stw);
+#endif
+}
 /*
  * ######################################################################
  * ########  Memory allocation from the OS
index e06ac6d3f83f22177fa54f48f5dc96fa23870e98..3f14d5ee7acab33c1d35ccb0b84b3640bc9eb7e8 100644 (file)
@@ -2167,7 +2167,7 @@ major_free_swept_blocks (size_t section_reserve)
 {
        SGEN_ASSERT (0, sweep_state == SWEEP_STATE_SWEPT, "Sweeping must have finished before freeing blocks");
 
-#if defined(HOST_WIN32) || defined(HOST_ORBIS)
+#if defined(HOST_WIN32) || defined(HOST_ORBIS) || defined (HOST_WASM)
                /*
                 * sgen_free_os_memory () asserts in mono_vfree () because windows doesn't like freeing the middle of
                 * a VirtualAlloc ()-ed block.
index 6088c5220d352a5cc132c96c52d9f84493360b71..77f06635dde8017a61e1b2cdf018e915e63a44d7 100755 (executable)
@@ -469,6 +469,7 @@ TESTS_CS_SRC=               \
        appdomain-unload-callback.cs    \
        appdomain-unload-doesnot-raise-pending-events.cs        \
        appdomain-unload-asmload.cs     \
+       appdomain-unload-exception.cs   \
        unload-appdomain-on-shutdown.cs \
        bug-47295.cs    \
        loader.cs       \
@@ -517,7 +518,9 @@ TESTS_CS_SRC=               \
        runtime-invoke.gen.cs \
        imt_big_iface_test.cs \
        bug-58782-plain-throw.cs \
-       bug-58782-capture-and-throw.cs
+       bug-58782-capture-and-throw.cs \
+       recursive-struct-arrays.cs \
+       bug-59281.cs
 
 if AMD64
 TESTS_CS_SRC += async-exc-compilation.cs finally_guard.cs finally_block_ending_in_dead_bb.cs
@@ -958,6 +961,7 @@ INTERP_DISABLED_TESTS = \
        array_load_exception.exe \
        assembly_append_ordering.exe \
        assemblyresolve_event4.exe \
+       assemblyresolve_event6.exe \
        async-exc-compilation.exe \
        async-with-cb-throws.exe \
        async_read.exe \
@@ -1905,7 +1909,8 @@ test-process-exit:
 
 # tests that expect a 1 exit code
 TESTS_UNHANDLED_EXCEPTION_1_SRC =      \
-       unhandled-exception-1.cs
+       unhandled-exception-1.cs        \
+       unhandled-exception-9.cs
 
 # tests that expect a 255 exit code
 TESTS_UNHANDLED_EXCEPTION_255_SRC =    \
diff --git a/mono/tests/appdomain-unload-exception.cs b/mono/tests/appdomain-unload-exception.cs
new file mode 100644 (file)
index 0000000..dc6bd38
--- /dev/null
@@ -0,0 +1,35 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class Driver
+{
+       static void ThrowTP ()
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               ThreadPool.QueueUserWorkItem (_ => { try { throw new AppDomainUnloadedException (); } finally { mre.Set (); } });
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (1);
+
+               /* Wait for exception unwinding */
+               Thread.Sleep (500);
+       }
+
+       static void ThrowThread ()
+       {
+               Thread thread = new Thread (_ => { throw new AppDomainUnloadedException (); });
+               thread.Start ();
+               thread.Join ();
+       }
+
+       static int Main (string[] args)
+       {
+               ThrowTP ();
+               ThrowThread ();
+
+               return 0;
+       }
+}
index e5ce63689219231bba99f26ef95eb35baafc8c1f..07cdf833e8cfafba1993b6111038c77c0da84ba8 100644 (file)
@@ -83,6 +83,40 @@ public class BThread : MarshalByRefObject {
        }
 }
 
+public interface IRunnable {
+       void Run ();
+}
+
+public class MBRObject : MarshalByRefObject, IRunnable {
+       /* XDomain wrappers for invocation */
+       public void Run () {
+               while (true) {
+                       try {
+                               while (true)
+                                       Thread.Sleep (100);
+                       }
+                       catch (ThreadAbortException ex) {
+                               Thread.ResetAbort ();
+                       }
+               }
+       }
+}
+
+public class CBObject : ContextBoundObject, IRunnable {
+       /* Slow corlib path for invocation */
+       public void Run () {
+               while (true) {
+                       try {
+                               while (true)
+                                       Thread.Sleep (100);
+                       }
+                       catch (ThreadAbortException ex) {
+                               Thread.ResetAbort ();
+                       }
+               }
+       }
+}
+
 public class UnloadThread {
 
        AppDomain domain;
@@ -191,6 +225,32 @@ public class Tests
        }
        */
 
+       public static void ThreadStart (object obj)
+       {
+               IRunnable runnable = (IRunnable)obj;
+
+               try {
+                       runnable.Run ();
+               } catch (AppDomainUnloadedException) {
+                       Console.WriteLine ("OK");
+               } catch (ThreadAbortException) {
+                       throw new Exception ();
+               }
+       }
+
+       public static int test_0_unload_reset_abort () {
+               AppDomain domain = AppDomain.CreateDomain ("test_0_unload_reset_abort");
+               MBRObject mbro = (MBRObject) domain.CreateInstanceFromAndUnwrap (typeof (Tests).Assembly.Location, "MBRObject");
+               CBObject cbo = (CBObject) domain.CreateInstanceFromAndUnwrap (typeof (Tests).Assembly.Location, "CBObject");
+
+               new Thread (ThreadStart).Start (mbro);
+               new Thread (ThreadStart).Start (cbo);
+               Thread.Sleep (100);
+
+               AppDomain.Unload (domain);
+               return 0;
+       }
+
        static void Worker (object x) {
                Thread.Sleep (100000);
        }
@@ -240,15 +300,18 @@ public class Tests
 
        public static int test_0_unload_inside_appdomain_sync () {
                AppDomain domain = AppDomain.CreateDomain ("Test3");
+               bool caught = false;
 
                try {
                        domain.DoCallBack (new CrossAppDomainDelegate (SyncCallback));
                }
-               catch (Exception ex) {
-                       /* Should throw a ThreadAbortException */
-                       Thread.ResetAbort ();
+               catch (AppDomainUnloadedException ex) {
+                       caught = true;
                }
 
+               if (!caught)
+                       return 1;
+
                return 0;
        }
 
index b0e9d47ff1e778425504e95dfd9e0c8307341fd6..7b3a68247a8f16df2176a2622b2b58b6a91615af 100644 (file)
@@ -1,14 +1,10 @@
 using System;
+using System.Collections.Generic;
 using System.Runtime.InteropServices;
 
 public class Test {
 
-       static void puts (string s)
-       {
-               Console.WriteLine (s);
-       }
-
-       public static int jagged ()
+       public static int test_0_jagged ()
        {
                int[][] j2 = new int [3][];
 
@@ -32,7 +28,7 @@ public class Test {
                return 0;
        }
 
-       public static int stest ()
+       public static int test_0_stest ()
        {
                string[] sa = new string[32];
 
@@ -44,13 +40,13 @@ public class Test {
 
                for (int i = 0; i < sa.Length; i++){
                        if (sa [i] != null)
-                               puts (sa [i]);
+                               Console.WriteLine (sa [i]);
                }
                
                return 0;
        }
        
-       public static int atest2 ()
+       public static int test_0_atest2 ()
        {
                int[,] ia = new int[32,32];
 
@@ -71,7 +67,7 @@ public class Test {
                return 0;
        }
        
-       public static int atest ()
+       public static int test_0_atest ()
        {
                int[] ia = new int[32];
 
@@ -93,35 +89,51 @@ public class Test {
 
                for (int i = 0; i <ia.Length; i++)
                        if ((int)ia.GetValue (i) != i*i*i){
-                               puts ("Crap: " + i + " " + (int) ia.GetValue (i) );
+                               Console.WriteLine ("Crap: " + i + " " + (int) ia.GetValue (i) );
 
                                return 4;
                        }
                
                return 0;
        }
-       
 
-       public static int Main () {
-               puts ("a");
-               if (atest () != 0)
-                       return atest ();
-               puts ("b");     
-               if (atest2 () != 0)
-                       return 1;
-               puts ("c");
-               if (atest2 () != 0)
-                       return 1;
-               puts ("d");     
-               if (stest () != 0)
+       enum Foo { a, b };
+       public static int test_0_enum_array_casting () {
+        var x = new Foo[10];
+               try {
+                       var y = (IReadOnlyList<int>)(object)x;
+               } catch (Exception e) {
                        return 1;
-               puts ("e");     
-               if (jagged () != 0)
-                       return 1;
-               
-               
+               }
+               try {
+                       var y = (IList<int>)(object)x;
+               } catch (Exception e) {
+                       return 2;
+               }
+
+               try {
+                       var y = (ICollection<int>)(object)x;
+               } catch (Exception e) {
+                       return 3;
+               }
+
+               try {
+                       var y = (IEnumerable<int>)(object)x;
+               } catch (Exception e) {
+                       return 4;
+               }
+
+               try {
+                       var y = (IReadOnlyCollection<int>)(object)x;
+               } catch (Exception e) {
+                       return 5;
+               }
                return 0;
        }
+
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Test), args);
+       }
 }
 
 
diff --git a/mono/tests/bug-59281.cs b/mono/tests/bug-59281.cs
new file mode 100644 (file)
index 0000000..94250c2
--- /dev/null
@@ -0,0 +1,51 @@
+using System;
+using System.Threading;
+
+class Driver
+{
+
+       static readonly Mutex[] mutexes = new Mutex[2];
+
+       public static void Main(string[] args)
+       {
+               for (int i = 0; i < mutexes.Length; i++) {
+                       mutexes [i] = new Mutex();
+               }
+
+               Thread thread1 = new Thread(() => {
+                       for (int i = 0; i < 1; i++) {
+                               int idx = -1;
+                               try {
+                                       idx = WaitHandle.WaitAny (mutexes);
+                                       Console.WriteLine($"Thread 1 iter: {i} with mutex: {idx}");
+                               } finally {
+                                       if (idx != -1)
+                                               mutexes [idx].ReleaseMutex();
+                               }
+                       }
+
+                       Console.WriteLine("Thread 1 ended");
+               });
+
+               thread1.Start();
+               thread1.Join();
+
+               Thread thread2 = new Thread(() => {
+                       for (int i = 0; i < 1000; i++) {
+                               int idx = -1;
+                               try {
+                                       idx = WaitHandle.WaitAny (mutexes);
+                                       Console.WriteLine($"Thread 2 iter: {i} with mutex: {idx}");
+                               } finally {
+                                       if (idx != -1)
+                                               mutexes [idx].ReleaseMutex();
+                               }
+                       }
+
+                       Console.WriteLine("Thread 2 ended");
+               });
+
+               thread2.Start();
+               thread2.Join();
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/recursive-struct-arrays.cs b/mono/tests/recursive-struct-arrays.cs
new file mode 100644 (file)
index 0000000..dd1c8b2
--- /dev/null
@@ -0,0 +1,65 @@
+using System;
+
+/* Test that the runtime can represent value types that have array fields that
+ * recursively refer to the same value type */
+
+struct S1 {
+       static S1[][] foo;
+}
+
+struct S2 {
+       static S2[] foo;
+}
+
+struct S3a {
+       static S3b[] foo;
+}
+
+struct S3b {
+       static S3a[][] foo;
+}
+
+struct P<X> where X : struct {
+       static P<X>[][] foo;
+}
+
+public struct S4
+{
+       private static S4[][] foo;
+
+       public static readonly S4 West = new S4(-1, 0);
+       public static readonly S4 East = new S4(1, 0);
+       public static readonly S4 North = new S4(0, 1);
+       public static readonly S4 South = new S4(0, -1);
+       public static readonly S4[] Directions = { North, South, East, West };
+
+       public readonly int x;
+       public readonly int z;
+
+       public S4(int x, int z)
+       {
+               this.x = x;
+               this.z = z;
+       }
+
+       public override string ToString()
+       {
+               return string.Format("[{0}, {1}]", x, z);
+       }
+}
+
+
+class Program {
+       static int Main() {
+               Console.WriteLine (typeof (S1).Name);
+               Console.WriteLine (typeof (S2).Name);
+               Console.WriteLine (typeof (S3a).Name);
+               Console.WriteLine (typeof (S3b).Name);
+               foreach (var s4 in S4.Directions) {
+                       Console.WriteLine (s4);
+               }
+               Console.WriteLine (typeof (P<S1>).Name);
+               Console.WriteLine (typeof (P<int>).Name);
+               return 0;
+       }
+}
index 23fec490693ff134df0462fe9125fc60160bbd86..2c34478f83d63d1931908c51f24d1384fbc2f1db 100644 (file)
@@ -29,6 +29,11 @@ enum Enum2
        D
 }
 
+struct AStruct {
+       public int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
+       public int a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
+}
+
 class Tests
 {
        public static Enum1 return_enum1 () {
@@ -47,6 +52,10 @@ class Tests
                return UInt64.MaxValue - 5;
        }
 
+       public static object return_t<T> (T t) {
+               return (object)t;
+       }
+
        static int Main (string[] args)
        {
                return TestDriver.RunTests (typeof (Tests), args);
@@ -279,4 +288,19 @@ class Tests
         else
             return 1;
     }
+
+       public static int test_0_large_arg ()
+       {
+               var arg = new AStruct ();
+               arg.a1 = 1;
+               arg.a2 = 2;
+               arg.a3 = 3;
+               arg.a20 = 20;
+               var res = typeof (Tests).GetMethod ("return_t").MakeGenericMethod (new Type [] { typeof (AStruct) }).Invoke (null, new object [] { arg });
+               var arg2 = (AStruct)res;
+               if (arg2.a20 == 20)
+                       return 0;
+               else
+                       return 1;
+       }
 }
diff --git a/mono/tests/unhandled-exception-9.cs b/mono/tests/unhandled-exception-9.cs
new file mode 100644 (file)
index 0000000..7016b5d
--- /dev/null
@@ -0,0 +1,16 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class Driver
+{
+       /* expected exit code: 1 */
+       static void Main (string[] args)
+       {
+               if (Environment.GetEnvironmentVariable ("TEST_UNHANDLED_EXCEPTION_HANDLER") != null)
+                       AppDomain.CurrentDomain.UnhandledException += (s, e) => {};
+
+               throw new AppDomainUnloadedException ();
+       }
+}
index 118ab953d0e8bcc172995e3e797a268899737113..119d7c94c2cce1c8e2427211a53467708fc0eeb4 100644 (file)
@@ -13,7 +13,8 @@ endif
 
 if HOST_WIN32
 win32_sources = \
-       os-event-win32.c
+       os-event-win32.c \
+       mono-os-wait-win32.c
 
 platform_sources = $(win32_sources)
 else
@@ -61,6 +62,7 @@ monoutils_sources = \
        mono-mmap-windows-internals.h   \
        mono-os-mutex.h         \
        mono-os-mutex.c         \
+       mono-os-wait.h \
        mono-coop-mutex.h               \
        mono-once.h             \
        mono-lazy-init.h                \
index f766529201e3426bf1349b2f3020ad39d9a54932..0f8984ef9d9d2ef19f7a371feeb0726799351f0f 100644 (file)
@@ -31,8 +31,7 @@
 #elif !defined(HOST_WIN32) && defined(HAVE_SEMAPHORE_H)
 #include <semaphore.h>
 #else
-#include <winsock2.h>
-#include <windows.h>
+#include <mono/utils/mono-os-wait.h>
 #endif
 
 #define MONO_HAS_SEMAPHORES 1
@@ -318,9 +317,9 @@ mono_os_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, MonoSemFlags flags)
        BOOL res;
 
 retry:
-       res = WaitForSingleObjectEx (*sem, timeout_ms, flags & MONO_SEM_FLAGS_ALERTABLE);
+       res = mono_win32_wait_for_single_object_ex (*sem, timeout_ms, flags & MONO_SEM_FLAGS_ALERTABLE);
        if (G_UNLIKELY (res != WAIT_OBJECT_0 && res != WAIT_IO_COMPLETION && res != WAIT_TIMEOUT))
-               g_error ("%s: WaitForSingleObjectEx failed with error %d", __func__, GetLastError ());
+               g_error ("%s: mono_win32_wait_for_single_object_ex failed with error %d", __func__, GetLastError ());
 
        if (res == WAIT_IO_COMPLETION && !(flags & MONO_SEM_FLAGS_ALERTABLE))
                goto retry;
diff --git a/mono/utils/mono-os-wait-win32.c b/mono/utils/mono-os-wait-win32.c
new file mode 100644 (file)
index 0000000..a302d97
--- /dev/null
@@ -0,0 +1,217 @@
+/**
+* \file
+* Win32 OS wait wrappers and interrupt/abort APC handling.
+*
+* Author:
+*   Johan Lorensson (lateralusx.github@gmail.com)
+*
+* Licensed under the MIT license. See LICENSE file in the project root for full license information.
+*/
+
+#include <mono/utils/mono-os-wait.h>
+#include <mono/utils/mono-threads.h>
+#include <mono/utils/mono-threads-debug.h>
+
+enum ThreadWaitInfo {
+       THREAD_WAIT_INFO_CLEARED = 0,
+       THREAD_WAIT_INFO_ALERTABLE_WAIT_SLOT = 1 << 0,
+       THREAD_WAIT_INFO_PENDING_INTERRUPT_APC_SLOT = 1 << 1,
+       THREAD_WAIT_INFO_PENDING_ABORT_APC_SLOT = 1 << 2
+};
+
+static inline void
+request_interrupt (gpointer thread_info, HANDLE native_thread_handle, gint32 pending_apc_slot, PAPCFUNC apc_callback, DWORD tid)
+{
+       /*
+       * On Windows platforms, an async interrupt/abort request queues an APC
+       * that needs to be processed by target thread before it can return from an
+       * alertable OS wait call and complete the mono interrupt/abort request.
+       * Uncontrolled queuing of APC's could flood the APC queue preventing the target thread
+       * to return from its alertable OS wait call, blocking the interrupt/abort requests to complete
+       * This check makes sure that only one APC per type gets queued, preventing potential flooding
+       * of the APC queue. NOTE, this code will execute regardless if targeted thread is currently in
+       * an alertable wait or not. This is done to prevent races between interrupt/abort requests and
+       * alertable wait calls. Threads already in an alertable wait should handle WAIT_IO_COMPLETION
+       * return scenarios and restart the alertable wait operation if needed or take other actions
+       * (like service the interrupt/abort request).
+       */
+       MonoThreadInfo *info = (MonoThreadInfo *)thread_info;
+       gint32 old_wait_info, new_wait_info;
+
+       do {
+               old_wait_info = InterlockedRead (&info->thread_wait_info);
+               if (old_wait_info & pending_apc_slot)
+                       return;
+
+               new_wait_info = old_wait_info | pending_apc_slot;
+       } while (InterlockedCompareExchange (&info->thread_wait_info, new_wait_info, old_wait_info) != old_wait_info);
+
+       THREADS_INTERRUPT_DEBUG ("%06d - Interrupting/Aborting syscall in thread %06d", GetCurrentThreadId (), tid);
+       QueueUserAPC (apc_callback, native_thread_handle, (ULONG_PTR)NULL);
+}
+
+static void CALLBACK
+interrupt_apc (ULONG_PTR param)
+{
+       THREADS_INTERRUPT_DEBUG ("%06d - interrupt_apc () called", GetCurrentThreadId ());
+}
+
+void
+mono_win32_interrupt_wait (PVOID thread_info, HANDLE native_thread_handle, DWORD tid)
+{
+       request_interrupt (thread_info, native_thread_handle, THREAD_WAIT_INFO_PENDING_INTERRUPT_APC_SLOT, interrupt_apc, tid);
+}
+
+static void CALLBACK
+abort_apc (ULONG_PTR param)
+{
+       THREADS_INTERRUPT_DEBUG ("%06d - abort_apc () called", GetCurrentThreadId ());
+}
+
+void
+mono_win32_abort_wait (PVOID thread_info, HANDLE native_thread_handle, DWORD tid)
+{
+       request_interrupt (thread_info, native_thread_handle, THREAD_WAIT_INFO_PENDING_ABORT_APC_SLOT, abort_apc, tid);
+}
+
+static inline void
+enter_alertable_wait (MonoThreadInfo *info)
+{
+       // Clear any previous flags. Set alertable wait flag.
+       InterlockedExchange (&info->thread_wait_info, THREAD_WAIT_INFO_ALERTABLE_WAIT_SLOT);
+}
+
+static inline void
+leave_alertable_wait (MonoThreadInfo *info)
+{
+       // Clear any previous flags. Thread is exiting alertable wait state, and info around pending interrupt/abort APC's
+       // can now be discarded as well, thread is out of wait operation and can proceed it's execution.
+       InterlockedExchange (&info->thread_wait_info, THREAD_WAIT_INFO_CLEARED);
+}
+
+DWORD
+mono_win32_sleep_ex (DWORD timeout, BOOL alertable)
+{
+       DWORD result = WAIT_FAILED;
+       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+
+       if (alertable && info) {
+               enter_alertable_wait (info);
+       }
+
+       result = SleepEx (timeout, alertable);
+
+       // NOTE, leave_alertable_wait should not affect GetLastError but
+       // if changed, GetLastError needs to be preserved and reset before returning.
+       if (alertable && info) {
+               leave_alertable_wait (info);
+       }
+
+       return result;
+}
+
+DWORD
+mono_win32_wait_for_single_object_ex (HANDLE handle, DWORD timeout, BOOL alertable)
+{
+       DWORD result = WAIT_FAILED;
+       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+
+       if (alertable && info) {
+               enter_alertable_wait (info);
+       }
+
+       result = WaitForSingleObjectEx (handle, timeout, alertable);
+
+       // NOTE, leave_alertable_wait should not affect GetLastError but
+       // if changed, GetLastError needs to be preserved and reset before returning.
+       if (alertable && info) {
+               leave_alertable_wait (info);
+       }
+
+       return result;
+}
+
+DWORD
+mono_win32_wait_for_multiple_objects_ex (DWORD count, CONST HANDLE *handles, BOOL waitAll, DWORD timeout, BOOL alertable)
+{
+       DWORD result = WAIT_FAILED;
+       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+
+       if (alertable && info) {
+               enter_alertable_wait (info);
+       }
+
+       result = WaitForMultipleObjectsEx (count, handles, waitAll, timeout, alertable);
+
+       // NOTE, leave_alertable_wait should not affect GetLastError but
+       // if changed, GetLastError needs to be preserved and reset before returning.
+       if (alertable && info) {
+               leave_alertable_wait (info);
+       }
+
+       return result;
+}
+
+DWORD
+mono_win32_signal_object_and_wait (HANDLE toSignal, HANDLE toWait, DWORD timeout, BOOL alertable)
+{
+       DWORD result = WAIT_FAILED;
+       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+
+       if (alertable && info) {
+               enter_alertable_wait (info);
+       }
+
+       result = SignalObjectAndWait (toSignal, toWait, timeout, alertable);
+
+       // NOTE, leave_alertable_wait should not affect GetLastError but
+       // if changed, GetLastError needs to be preserved and reset before returning.
+       if (alertable && info) {
+               leave_alertable_wait (info);
+       }
+
+       return result;
+}
+
+DWORD
+mono_win32_msg_wait_for_multiple_objects_ex (DWORD count, CONST HANDLE *handles, DWORD timeout, DWORD wakeMask, DWORD flags)
+{
+       DWORD result = WAIT_FAILED;
+       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+       BOOL alertable = flags & MWMO_ALERTABLE;
+
+       if (alertable && info) {
+               enter_alertable_wait (info);
+       }
+
+       result = MsgWaitForMultipleObjectsEx (count, handles, timeout, wakeMask, flags);
+
+       // NOTE, leave_alertable_wait should not affect GetLastError but
+       // if changed, GetLastError needs to be preserved and reset before returning.
+       if (alertable && info) {
+               leave_alertable_wait (info);
+       }
+
+       return result;
+}
+
+DWORD
+mono_win32_wsa_wait_for_multiple_events (DWORD count, const WSAEVENT FAR *handles, BOOL waitAll, DWORD timeout, BOOL alertable)
+{
+       DWORD result = WAIT_FAILED;
+       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+
+       if (alertable && info) {
+               enter_alertable_wait (info);
+       }
+
+       result = WSAWaitForMultipleEvents (count, handles, waitAll, timeout, alertable);
+
+       // NOTE, leave_alertable_wait should not affect GetLastError but
+       // if changed, GetLastError needs to be preserved and reset before returning.
+       if (alertable && info) {
+               leave_alertable_wait (info);
+       }
+
+       return result;
+}
diff --git a/mono/utils/mono-os-wait.h b/mono/utils/mono-os-wait.h
new file mode 100644 (file)
index 0000000..566ed97
--- /dev/null
@@ -0,0 +1,40 @@
+/**
+* \file
+*/
+
+#ifndef _MONO_UTILS_OS_WAIT_H_
+#define _MONO_UTILS_OS_WAIT_H_
+
+#include <config.h>
+#ifdef HOST_WIN32
+
+#include <winsock2.h>
+#include <windows.h>
+
+DWORD
+mono_win32_sleep_ex (DWORD timeout, BOOL alertable);
+
+DWORD
+mono_win32_wait_for_single_object_ex (HANDLE handle, DWORD timeout, BOOL alertable);
+
+DWORD
+mono_win32_wait_for_multiple_objects_ex (DWORD count, CONST HANDLE *handles, BOOL waitAll, DWORD timeout, BOOL alertable);
+
+DWORD
+mono_win32_signal_object_and_wait (HANDLE toSignal, HANDLE toWait, DWORD timeout, BOOL alertable);
+
+DWORD
+mono_win32_msg_wait_for_multiple_objects_ex (DWORD count, CONST HANDLE *handles, DWORD timeout, DWORD wakeMask, DWORD flags);
+
+DWORD
+mono_win32_wsa_wait_for_multiple_events (DWORD count, const WSAEVENT FAR *handles, BOOL waitAll, DWORD timeout, BOOL alertable);
+
+void
+mono_win32_interrupt_wait (PVOID thread_info, HANDLE native_thread_handle, DWORD tid);
+
+void
+mono_win32_abort_wait (PVOID thread_info, HANDLE native_thread_handle, DWORD tid);
+
+#endif
+
+#endif /* _MONO_UTILS_OS_WAIT_H_ */
index 9ef565ddf9107934b6c77054a3ecc44f5ad2dcb2..563d210e8ed5cfe9ef657e7aba24d77d0f0429cf 100644 (file)
 
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-threads-debug.h>
+#include <mono/utils/mono-os-wait.h>
 #include <limits.h>
 
-
 void
 mono_threads_suspend_init (void)
 {
 }
 
-static void CALLBACK
-interrupt_apc (ULONG_PTR param)
-{
-}
-
 gboolean
 mono_threads_suspend_begin_async_suspend (MonoThreadInfo *info, gboolean interrupt_kernel)
 {
@@ -57,9 +52,8 @@ mono_threads_suspend_begin_async_suspend (MonoThreadInfo *info, gboolean interru
        info->suspend_can_continue = mono_threads_get_runtime_callbacks ()->thread_state_init_from_handle (&info->thread_saved_state [ASYNC_SUSPEND_STATE_INDEX], info);
        THREADS_SUSPEND_DEBUG ("thread state %p -> %d\n", (void*)id, res);
        if (info->suspend_can_continue) {
-               //FIXME do we need to QueueUserAPC on this case?
                if (interrupt_kernel)
-                       QueueUserAPC ((PAPCFUNC)interrupt_apc, handle, (ULONG_PTR)NULL);
+                       mono_win32_interrupt_wait (info, handle, id);
        } else {
                THREADS_SUSPEND_DEBUG ("FAILSAFE RESUME/2 %p -> %d\n", (void*)info->native_handle, 0);
        }
@@ -74,11 +68,7 @@ mono_threads_suspend_check_suspend_result (MonoThreadInfo *info)
        return info->suspend_can_continue;
 }
 
-static void CALLBACK
-abort_apc (ULONG_PTR param)
-{
-       THREADS_INTERRUPT_DEBUG ("%06d - abort_apc () called", GetCurrentThreadId ());
-}
+
 
 void
 mono_threads_suspend_abort_syscall (MonoThreadInfo *info)
@@ -89,8 +79,7 @@ mono_threads_suspend_abort_syscall (MonoThreadInfo *info)
        handle = OpenThread (THREAD_ALL_ACCESS, FALSE, id);
        g_assert (handle);
 
-       THREADS_INTERRUPT_DEBUG ("%06d - Aborting syscall in thread %06d", GetCurrentThreadId (), id);
-       QueueUserAPC ((PAPCFUNC)abort_apc, handle, (ULONG_PTR)NULL);
+       mono_win32_abort_wait (info, handle, id);
 
        CloseHandle (handle);
 }
@@ -229,19 +218,26 @@ mono_native_thread_create (MonoNativeThreadId *tid, gpointer func, gpointer arg)
        return CreateThread (NULL, 0, (func), (arg), 0, (tid)) != NULL;
 }
 
+gboolean
+mono_native_thread_join_handle (HANDLE thread_handle, gboolean close_handle)
+{
+       DWORD res = WaitForSingleObject (thread_handle, INFINITE);
+
+       if (close_handle)
+               CloseHandle (thread_handle);
+
+       return res != WAIT_FAILED;
+}
+
 gboolean
 mono_native_thread_join (MonoNativeThreadId tid)
 {
        HANDLE handle;
 
-       if (!(handle = OpenThread (THREAD_ALL_ACCESS, TRUE, tid)))
+       if (!(handle = OpenThread (SYNCHRONIZE, TRUE, tid)))
                return FALSE;
 
-       DWORD res = WaitForSingleObject (handle, INFINITE);
-
-       CloseHandle (handle);
-
-       return res != WAIT_FAILED;
+       return mono_native_thread_join_handle (handle, TRUE);
 }
 
 #if HAVE_DECL___READFSDWORD==0
index b95784fa6fd9ebeb5d69a5f94eba78e658ad4809..9a67fb863316e44896f975ef4d8f4e9c5e333367 100644 (file)
@@ -230,6 +230,13 @@ typedef struct {
         * handled a sampling signal before sending another one.
         */
        gint32 profiler_signal_ack;
+
+       gint32 thread_pending_native_join;
+
+#ifdef USE_WINDOWS_BACKEND
+       gint32 thread_wait_info;
+#endif
+
 } MonoThreadInfo;
 
 typedef struct {
index b63ec21a28f1a424f21ac6f1a8525a17395041ba..095669a0e4aebea91650beee4833ef795d97c8ca 100644 (file)
@@ -14,6 +14,7 @@
 #include <winbase.h>
 
 #include "atomic.h"
+#include "mono-os-wait.h"
 
 void
 mono_os_event_init (MonoOSEvent *event, gboolean initial)
@@ -72,7 +73,7 @@ mono_os_event_wait_one (MonoOSEvent *event, guint32 timeout, gboolean alertable)
        g_assert (event);
        g_assert (event->handle);
 
-       res = WaitForSingleObjectEx (event->handle, timeout, alertable);
+       res = mono_win32_wait_for_single_object_ex (event->handle, timeout, alertable);
        if (res == WAIT_OBJECT_0)
                return MONO_OS_EVENT_WAIT_RET_SUCCESS_0;
        else if (res == WAIT_IO_COMPLETION)
@@ -80,7 +81,7 @@ mono_os_event_wait_one (MonoOSEvent *event, guint32 timeout, gboolean alertable)
        else if (res == WAIT_TIMEOUT)
                return MONO_OS_EVENT_WAIT_RET_TIMEOUT;
        else if (res == WAIT_FAILED)
-               g_error ("%s: WaitForSingleObjectEx failed with error %d", __func__, GetLastError ());
+               g_error ("%s: mono_thread_win32_wait_one_handle failed with error %d", __func__, GetLastError ());
        else
                g_error ("%s: unknown res value %d", __func__, res);
 }
@@ -105,7 +106,7 @@ mono_os_event_wait_multiple (MonoOSEvent **events, gsize nevents, gboolean waita
                handles [i] = events [i]->handle;
        }
 
-       res = WaitForMultipleObjectsEx (nevents, handles, waitall, timeout, alertable);
+       res = mono_win32_wait_for_multiple_objects_ex ((DWORD)nevents, handles, waitall, timeout, alertable);
        if (res >= WAIT_OBJECT_0 && res < WAIT_OBJECT_0 + MONO_OS_EVENT_WAIT_MAXIMUM_OBJECTS)
                return MONO_OS_EVENT_WAIT_RET_SUCCESS_0 + (res - WAIT_OBJECT_0);
        else if (res == WAIT_IO_COMPLETION)
@@ -113,7 +114,7 @@ mono_os_event_wait_multiple (MonoOSEvent **events, gsize nevents, gboolean waita
        else if (res == WAIT_TIMEOUT)
                return MONO_OS_EVENT_WAIT_RET_TIMEOUT;
        else if (res == WAIT_FAILED)
-               g_error ("%s: WaitForSingleObjectEx failed with error %d", __func__, GetLastError ());
+               g_error ("%s: mono_thread_win32_wait_multiple_handle failed with error %d", __func__, GetLastError ());
        else
                g_error ("%s: unknown res value %d", __func__, res);
 }
index dedcc4e73cf066ad777e8bc0510f978b65c619a4..8a1e98bb2ee7068e6246e130b186c16abcca09d3 100644 (file)
@@ -20,6 +20,8 @@
 
 #if MONO_HAS_CLANG_THREAD_SANITIZER
 #define MONO_UNLOCKED_ATTRS MONO_NO_SANITIZE_THREAD MONO_NEVER_INLINE static
+#elif defined(_MSC_VER)
+#define MONO_UNLOCKED_ATTRS MONO_ALWAYS_INLINE static
 #else
 #define MONO_UNLOCKED_ATTRS MONO_ALWAYS_INLINE static inline
 #endif
@@ -122,4 +124,11 @@ UnlockedReadBool (gboolean *src)
        return *src;
 }
 
+MONO_UNLOCKED_ATTRS
+gpointer
+UnlockedReadPointer (volatile gpointer *src)
+{
+       return *src;
+}
+
 #endif /* _UNLOCKED_H_ */
index e54aeff8d7e5a6415207d5a307bd2abb9f28b756..115e40709aae51ca8c5df9aa1dc4e4241490e57b 100644 (file)
@@ -4,14 +4,8 @@ VCXPROJS = $(wildcard *.vcxproj)
 EXTRA_DIST = \
             $(VCXPROJS) \
             README \
-            create-windef.pl \
-            mono.def \
             mono.props \
             mono.sln \
             monoposixhelper.def \
             runmdesc.bat \
             winsetup.bat
-
-update-def:
-       perl create-windef.pl mono.def ../mono/mini/.libs/libmonoboehm-2.0.so mono-2.0.dll
-       perl create-windef.pl monosgen.def ../mono/mini/.libs/libmonosgen-2.0.so monosgen-2.0.dll
index 1537d91921218dcae7d406e5bfcfb3aece212ec8..375febbdbb20e611fade4d0027c98ea77dcfd2c4 100755 (executable)
@@ -11,19 +11,28 @@ BUILDING
 
        From this directory type:
 
-            msbuild.exe mono.sln /p:Configuration=Debug_eglib
+            msbuild.exe mono.sln /p:Configuration=Debug /p:Platform=x64
 
        msbuild must be in your path, it comes with the .NET Framework.
 
 MAINTENANCE
 
-       When new exported API calls are added to the runtime, issue the
-       command:
+       Source files added to the different project .target files matches project makefile structure.
+       NOTE, all sources added to makefiles should also be added to corresponding targets files for consistency.
+       Files that should not be build on Windows should be excluded  using this configuration:
 
-               make update-def
+       <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-wasm.c">
+               <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+       </ClCompile>
 
-       in this directory and commit the resulting mono.def file.
+       and at the begning of the target file have a property set when to exclude files. This example will always
+       exclude the file, but could be condtional if needed:
 
-       This must happen on a Linux system, because we get the list of
-       the exported symbols from the generated shared library.
+       <PropertyGroup>
+               <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+       </PropertyGroup>
 
+       All header files added to makefiles should be included in the different targets files for consistency.
+
+       Each target file has a corresponding filter file, files added to target files should also be added to the corresponding
+       filter file.
diff --git a/msvc/create-windef.pl b/msvc/create-windef.pl
deleted file mode 100755 (executable)
index 7d588b9..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my $outfile = shift || usage ();
-my $soname = shift || usage ();
-my $dllname = shift || usage ();
-my @symbols = ();
-my %excludes = ();
-my $cmd = "nm -D $soname";
-
-@excludes {qw(
-       mono_class_setup_vtable_general_new mono_debugger_init mono_debugger_main
-       mono_once mono_pthread_key_for_tls
-       mono_gc_pthread_create mono_gc_pthread_detach mono_gc_pthread_join
-       mono_gc_pthread_exit
-       mono_file_map_fileio mono_file_unmap_fileio
-       mono_file_map_set_allocator 
-)} = ();
-
-open (SYMS, "$cmd |") || die "Cannot run \$cmd': $!\n";
-while (<SYMS>) {
-       next unless / T (mono_.*)/;
-       next if exists $excludes {$1};
-       push @symbols, $1;
-}
-close (SYMS);
-push @symbols, "MonoFixupCorEE";
-@symbols = sort @symbols;
-
-open (OUT, ">$outfile") || die "Cannot open '$outfile': $!\n";
-print OUT "; file generated by create-windef.pl\n";
-print OUT "EXPORTS\n";
-print OUT join ("\n", @symbols);
-print OUT "\n";
-
-close (OUT);
-
-sub usage {
-       print "Usage: create-windef.pl output_file soname dllname\n";
-       exit (1);
-}
-
index fa56697667214d900e7cb4ebbd6df749a82bef7d..c847597bde1a3bf4399bb2795ac8d8d32428463d 100644 (file)
@@ -1,31 +1,36 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
+  <ItemGroup Label="common_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\eglib-remap.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\sort.frag.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\glib.h" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\garray.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gbytearray.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gerror.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\ghashtable.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\giconv.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\glist.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmarkup.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmem.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule.h" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\goutput.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpattern.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gptrarray.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gqsort.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstr.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gslist.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstring.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gptrarray.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\glist.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gqueue.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpath.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gshell.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gslist.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gspawn.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstr.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstring.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gunicode.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-posix.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpattern.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmarkup.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gutf8.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gunicode.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\unicode-data.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\glib.h" />
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule.h" />
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\sort.frag.h" />
+    <None Include="$(MonoSourceLocation)\mono\eglib\Makefile.am" />
   </ItemGroup>
 </Project>
index dcd4a5942fbed87ea4bc5076f660e25e340737f0..636adbe3e1f4e9032c13eddbe0abab22bfe4a5e0 100644 (file)
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
+  <ItemGroup Label="common_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\eglib-remap.h">
+      <Filter>Header Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\sort.frag.h">
+      <Filter>Header Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\glib.h">
+      <Filter>Header Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClInclude>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\garray.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gbytearray.c">
-      <Filter>Source Files\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gerror.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\ghashtable.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\giconv.c">
-      <Filter>Source Files\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\glist.c">
-      <Filter>Source Files\Common</Filter>
-    </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmarkup.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmem.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule.h">
+      <Filter>Header Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClInclude>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\goutput.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpattern.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gqsort.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstr.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gslist.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstring.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gptrarray.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gqsort.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\glist.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gqueue.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gshell.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpath.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gslist.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gshell.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gspawn.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstr.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gstring.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-posix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gunicode.c">
-      <Filter>Source Files\Common</Filter>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpattern.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmarkup.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gutf8.c">
-      <Filter>Source Files\Common</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
     </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gunicode.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\unicode-data.h">
+      <Filter>Header Files$(EGLibFilterSubFolder)\common</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\glib.h">
-      <Filter>Header Files\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule.h">
-      <Filter>Header Files\Common</Filter>
-    </ClInclude>
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\sort.frag.h">
-      <Filter>Header Files\Common</Filter>
-    </ClInclude>
+    <None Include="$(MonoSourceLocation)\mono\eglib\Makefile.am">
+      <Filter>Resource Files$(EGLibFilterSubFolder)\common</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(EGLibFilterSubFolder)\common">
+      <UniqueIdentifier>{04853f35-873a-4b07-990a-61dc8ebd5105}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(EGLibFilterSubFolder)\common">
+      <UniqueIdentifier>{453FE226-0B9E-4A07-B2F8-BB2955098E9E}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(EGLibFilterSubFolder)\common">
+      <UniqueIdentifier>{7a01f670-6a6a-4837-b3ac-cd6c08075b4e}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
 </Project>
index 8e5d3fa59253b34b07a3e4f1831477f1c5ed5058..4c1217eb1f33e3cb5e19bb2a64723c2e445e0979 100644 (file)
@@ -1,6 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-posix.c" />
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdate-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdir-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmisc-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmodule-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gtimer-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
   </ItemGroup>
 </Project>
index 76265435b1491750d6476ceb9042ffa96e218527..49224ee4eef80c4b7dd7eba2fa3716b34cd15fa3 100644 (file)
@@ -1,8 +1,28 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-posix.c">
-      <Filter>Source Files\Posix</Filter>
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdate-unix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdir-unix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-unix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmisc-unix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\posix</Filter>
     </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmodule-unix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gtimer-unix.c">
+      <Filter>Source Files$(EGLibFilterSubFolder)\posix</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(EGLibFilterSubFolder)\posix">
+      <UniqueIdentifier>{3c958a68-b6a1-40d3-834c-b50be09cb819}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
 </Project>
index 572c50626f944b0c1300bd7e5da748466f0bcade..fbe78bc87f5027db31770c30bea26b54ed1774a4 100644 (file)
@@ -1,16 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
+  <ItemGroup Label="win32_sources">
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdate-win32.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdir-win32.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-win32.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmisc-win32.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmodule-win32.c" />
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpath.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule-win32-internals.h" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gtimer-win32.c" />
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gunicode-win32.c" />
-   </ItemGroup>
-   <ItemGroup>
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule-win32-internals.h" />
   </ItemGroup>
 </Project>
index a1ed81ba268983510fd9ac15eb2fdc39194e4d8d..c8483310937a8f2f17160e1a6e66f0c6204ec1b7 100644 (file)
@@ -1,34 +1,37 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
+  <ItemGroup Label="win32_sources">
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdate-win32.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gdir-win32.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gfile-win32.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmisc-win32.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gmodule-win32.c">
-      <Filter>Source Files\Win32</Filter>
-    </ClCompile>
-    <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gpath.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule-win32-internals.h">
+      <Filter>Header Files$(EGLibFilterSubFolder)\win32</Filter>
+    </ClInclude>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gtimer-win32.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
     <ClCompile Include="$(MonoSourceLocation)\mono\eglib\gunicode-win32.c">
-      <Filter>Source Files\Win32</Filter>
+      <Filter>Source Files$(EGLibFilterSubFolder)\win32</Filter>
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="$(MonoSourceLocation)\mono\eglib\gmodule-win32-internals.h">
-      <Filter>Header Files\Win32</Filter>
-    </ClInclude>
+    <Filter Include="Header Files$(EGLibFilterSubFolder)\win32">
+      <UniqueIdentifier>{80953075-5d05-41b9-be90-82497081b11c}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(EGLibFilterSubFolder)\win32">
+      <UniqueIdentifier>{c6e3ed6c-6b52-4823-bc4f-2dc9f84e3f5d}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
 </Project>
diff --git a/msvc/eglib.targets b/msvc/eglib.targets
new file mode 100644 (file)
index 0000000..5f9d4cd
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="eglib-common.targets" />
+  <Import Project="eglib-win32.targets" />
+  <Import Project="eglib-posix.targets" />
+</Project>
\ No newline at end of file
diff --git a/msvc/eglib.targets.filters b/msvc/eglib.targets.filters
new file mode 100644 (file)
index 0000000..5727d3c
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="eglib-common.targets.filters" />
+  <Import Project="eglib-win32.targets.filters" />
+  <Import Project="eglib-posix.targets.filters" />
+  <ItemGroup Condition="'$(EGLibFilterSubFolder)'!=''">
+    <Filter Include="Source Files$(EGLibFilterSubFolder)">
+      <UniqueIdentifier>{8B3E0DAF-48EA-4B5F-B573-4E8ED8525134}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files$(EGLibFilterSubFolder)">
+      <UniqueIdentifier>{1277B2DB-F7E8-44C0-9F8B-5933EB5BD879}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(EGLibFilterSubFolder)">
+      <UniqueIdentifier>{9B2D78CC-201F-48DF-8710-839BCDB0AEE9}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
index e4f706775c39d1c433398a4614696231f22fbb15..c4845c36745fad673f2f4b1ac7b09f6eeb0ace96 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?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
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_EGLIB_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
       </Command>\r
     </PreBuildEvent>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_EGLIB_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_EGLIB_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_EGLIB_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
   </ItemDefinitionGroup>\r
-  <Import Project="eglib-common.targets" />\r
-  <Import Project="eglib-win32.targets" />\r
-  <Import Project="eglib-posix.targets" />\r
+  <Import Project="eglib.targets" />\r
   <ItemGroup>\r
     <ProjectReference Include="build-init.vcxproj">\r
       <Project>{92ae7622-5f58-4234-9a26-9ec71876b3f4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\eglib\src\Makefile.am" />\r
-  </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
index 3805150c83aa69aa8905f6b7ed230f483bffce8b..8836550d6cd1c3f0213af940e924ff1632458979 100644 (file)
@@ -1,8 +1,6 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <Import Project="eglib-common.targets.filters" />\r
-  <Import Project="eglib-win32.targets.filters" />\r
-  <Import Project="eglib-posix.targets.filters" />\r
+  <Import Project="eglib.targets.filters" />\r
   <ItemGroup>\r
     <Filter Include="Source Files">\r
       <UniqueIdentifier>{d16b81e3-5093-424e-a5d4-e7dd8da49dce}</UniqueIdentifier>\r
     <Filter Include="Resource Files">\r
       <UniqueIdentifier>{38a39ff1-842b-431b-b54b-24094e8283eb}</UniqueIdentifier>\r
     </Filter>\r
-    <Filter Include="Header Files\Common">\r
-      <UniqueIdentifier>{04853f35-873a-4b07-990a-61dc8ebd5105}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Header Files\Win32">\r
-      <UniqueIdentifier>{80953075-5d05-41b9-be90-82497081b11c}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Source Files\Common">\r
-      <UniqueIdentifier>{7a01f670-6a6a-4837-b3ac-cd6c08075b4e}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Source Files\Win32">\r
-      <UniqueIdentifier>{c6e3ed6c-6b52-4823-bc4f-2dc9f84e3f5d}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Source Files\Posix">\r
-      <UniqueIdentifier>{3c958a68-b6a1-40d3-834c-b50be09cb819}</UniqueIdentifier>\r
-    </Filter>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\eglib\src\Makefile.am">\r
-      <Filter>Resource Files</Filter>\r
-    </None>\r
   </ItemGroup>\r
 </Project>\r
index b6a4a81c1357b523855f2c0290c6febb61513de3..e89ff36571dd2252c2b7469cb77fdc2c12507e24 100644 (file)
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
     <PostBuildEvent />\r
     <CustomBuildStep>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
     <PostBuildEvent />\r
     <CustomBuildStep>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
     <PostBuildEvent />\r
     <CustomBuildStep>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-      <CompileAs>CompileAsC</CompileAs>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <SuppressStartupBanner>true</SuppressStartupBanner>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
     <PostBuildEvent />\r
     <CustomBuildStep>\r
diff --git a/msvc/libgc.targets b/msvc/libgc.targets
new file mode 100644 (file)
index 0000000..2dfb0bb
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+    <ExcludeBoehmGCFromBuild>true</ExcludeBoehmGCFromBuild>
+    <ExcludeBoehmGCFromBuild Condition="'$(MONO_TARGET_GC)'=='boehm' And '$(Platform)'=='Win32'">false</ExcludeBoehmGCFromBuild>
+  </PropertyGroup>
+  <ItemGroup Label="libmonogc_la_sources">
+    <ClCompile Include="$(MonoSourceLocation)\libgc\allchblk.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\alloc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\blacklst.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\checksums.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\dbg_mlc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\dyn_load.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\finalize.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\gc_dlopen.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\gcj_mlc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\headers.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\malloc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mallocx.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mark.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mark_rts.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\misc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\new_hblk.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\obj_map.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\os_dep.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\pcr_interface.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\ptr_chck.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\real_malloc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\reclaim.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\solaris_pthreads.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\solaris_threads.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\specific.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\stubborn.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\typd_mlc.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\backgraph.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\win32_threads.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\pthread_support.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\pthread_stop_world.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\darwin_stop_world.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\openbsd_stop_world.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mach_dep.c">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gcconfig.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gc_priv.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gc_hdrs.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\gc.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\gc_gcj.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\gc_mark.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gc_locks.h">
+      <ExcludedFromBuild>$(ExcludeBoehmGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\libgc\Makefile.am" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libgc.targets.filters b/msvc/libgc.targets.filters
new file mode 100644 (file)
index 0000000..8f1ec7d
--- /dev/null
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="libmonogc_la_sources">
+    <ClCompile Include="$(MonoSourceLocation)\libgc\allchblk.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\alloc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\blacklst.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\checksums.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\dbg_mlc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\dyn_load.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\finalize.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\gc_dlopen.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\gcj_mlc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\headers.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\malloc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mallocx.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mark.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mark_rts.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\misc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\new_hblk.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\obj_map.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\os_dep.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\pcr_interface.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\ptr_chck.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\real_malloc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\reclaim.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\solaris_pthreads.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\solaris_threads.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\specific.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\stubborn.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\typd_mlc.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\backgraph.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\win32_threads.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\pthread_support.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\pthread_stop_world.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\darwin_stop_world.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\openbsd_stop_world.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\libgc\mach_dep.c">
+      <Filter>Source Files$(GCboehmFilterSubFolder)</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gcconfig.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gc_priv.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gc_hdrs.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\gc.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\gc_gcj.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\gc_mark.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\libgc\include\private\gc_locks.h">
+      <Filter>Header Files$(GCboehmFilterSubFolder)</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\libgc\Makefile.am">
+      <Filter>Resource Files$(GCboehmFilterSubFolder)</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup Condition="'$(GCboehmFilterSubFolder)'!=''">
+    <Filter Include="Header Files$(GCboehmFilterSubFolder)">
+      <UniqueIdentifier>{9671D54B-CA64-4CFA-89BD-D90D90D38F6B}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(GCboehmFilterSubFolder)">
+      <UniqueIdentifier>{AA2FEF48-1466-481B-AA60-BF0DA57967BC}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(GCboehmFilterSubFolder)">
+      <UniqueIdentifier>{67EC6108-4A9F-4B19-B019-734A71CDFE30}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index 6999c3536b42fcaa8c956e6483363e141e7a794a..5f9fe4a265ce1ad4ad3fa11d82291452aad1ffc9 100644 (file)
       <AdditionalIncludeDirectories>$(MONO_LIBGC_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-      <WarningLevel>Level1</WarningLevel>\r
+      <WarningLevel>Level3</WarningLevel>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
     </ClCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_LIBGC_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
     <Midl>\r
       <AdditionalIncludeDirectories>$(MONO_LIBGC_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
     </ClCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
     <Midl>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_LIBGC_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-    </Lib>\r
+    <Lib />\r
   </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\libgc\allchblk.c" />\r
-    <ClCompile Include="..\libgc\alloc.c" />\r
-    <ClCompile Include="..\libgc\blacklst.c" />\r
-    <ClCompile Include="..\libgc\dbg_mlc.c" />\r
-    <ClCompile Include="..\libgc\dyn_load.c" />\r
-    <ClCompile Include="..\libgc\finalize.c" />\r
-    <ClCompile Include="..\libgc\gcj_mlc.c" />\r
-    <ClCompile Include="..\libgc\headers.c" />\r
-    <ClCompile Include="..\libgc\mach_dep.c" />\r
-    <ClCompile Include="..\libgc\malloc.c" />\r
-    <ClCompile Include="..\libgc\mallocx.c" />\r
-    <ClCompile Include="..\libgc\mark.c" />\r
-    <ClCompile Include="..\libgc\mark_rts.c" />\r
-    <ClCompile Include="..\libgc\misc.c" />\r
-    <ClCompile Include="..\libgc\new_hblk.c" />\r
-    <ClCompile Include="..\libgc\obj_map.c" />\r
-    <ClCompile Include="..\libgc\os_dep.c" />\r
-    <ClCompile Include="..\libgc\ptr_chck.c" />\r
-    <ClCompile Include="..\libgc\reclaim.c" />\r
-    <ClCompile Include="..\libgc\stubborn.c" />\r
-    <ClCompile Include="..\libgc\typd_mlc.c" />\r
-    <ClCompile Include="..\libgc\win32_threads.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\libgc\include\gc.h" />\r
-    <ClInclude Include="..\libgc\include\private\gc_hdrs.h" />\r
-    <ClInclude Include="..\libgc\include\private\gc_locks.h" />\r
-    <ClInclude Include="..\libgc\include\gc_mark.h" />\r
-    <ClInclude Include="..\libgc\include\private\gc_pmark.h" />\r
-    <ClInclude Include="..\libgc\include\private\gc_priv.h" />\r
-    <ClInclude Include="..\libgc\include\private\gcconfig.h" />\r
-  </ItemGroup>\r
+  <Import Project="libgc.targets" />\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
index 6453cc0645f102e0acf7714f35b9983207933625..6b0061f7ff6d447f8f4343ff26975fc4a5872d61 100644 (file)
@@ -1,96 +1,6 @@
 ï»¿<?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="..\libgc\allchblk.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\alloc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\blacklst.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\dbg_mlc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\dyn_load.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\finalize.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\gcj_mlc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\headers.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\mach_dep.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\malloc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\mallocx.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\mark.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\mark_rts.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\misc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\new_hblk.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\obj_map.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\os_dep.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\ptr_chck.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\reclaim.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\stubborn.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\typd_mlc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\libgc\win32_threads.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\libgc\include\gc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\libgc\include\private\gc_hdrs.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\libgc\include\private\gc_locks.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\libgc\include\gc_mark.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\libgc\include\private\gc_pmark.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\libgc\include\private\gc_priv.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\libgc\include\private\gcconfig.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
+  <Import Project="libgc.targets.filters" />\r
   <ItemGroup>\r
     <Filter Include="Header Files">\r
       <UniqueIdentifier>{699a2844-7533-4292-9d33-c8f0ff83fc43}</UniqueIdentifier>\r
diff --git a/msvc/libgcmonosgen.targets b/msvc/libgcmonosgen.targets
new file mode 100644 (file)
index 0000000..75e62cb
--- /dev/null
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeSGenGCFromBuild>true</ExcludeSGenGCFromBuild>
+    <ExcludeSGenGCFromBuild Condition="'$(MONO_TARGET_GC)'=='sgen'">false</ExcludeSGenGCFromBuild>
+  </PropertyGroup>
+  <ItemGroup Label="monosgen_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\gc-internal-agnostic.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-alloc.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-archdep.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-cardtable.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-cardtable.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-client.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-conf.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-copy-object.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-debug.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-descriptor.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-descriptor.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-fin-weak-hash.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-gc.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-gc.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-gchandles.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-gray.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-gray.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-hash-table.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-hash-table.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-internal.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-layout-stats.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-layout-stats.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-los.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-major-copy-object.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-marksweep-drain-gray-stack.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-marksweep.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-memory-governor.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-memory-governor.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-minor-copy-object.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-minor-scan-object.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-nursery-allocator.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-pinning-stats.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-pinning.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-pinning.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-pointer-queue.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-pointer-queue.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-array-list.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-array-list.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-protocol-def.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-protocol.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-protocol.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-qsort.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-qsort.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-scan-object.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-simple-nursery.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-split-nursery.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-tagged-pointer.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-thread-pool.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-thread-pool.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-workers.c">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-workers.h">
+      <ExcludedFromBuild>$(ExcludeSGenGCFromBuild)</ExcludedFromBuild>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\sgen\Makefile.am" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libgcmonosgen.targets.filters b/msvc/libgcmonosgen.targets.filters
new file mode 100644 (file)
index 0000000..14c1299
--- /dev/null
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="monosgen_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\gc-internal-agnostic.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-alloc.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-archdep.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-cardtable.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-cardtable.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-client.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-conf.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-copy-object.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-debug.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-descriptor.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-descriptor.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-fin-weak-hash.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-gc.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-gc.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-gchandles.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-gray.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-gray.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-hash-table.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-hash-table.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-internal.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-layout-stats.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-layout-stats.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-los.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-major-copy-object.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-marksweep-drain-gray-stack.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-marksweep.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-memory-governor.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-memory-governor.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-minor-copy-object.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-minor-scan-object.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-nursery-allocator.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-pinning-stats.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-pinning.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-pinning.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-pointer-queue.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-pointer-queue.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-array-list.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-array-list.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-protocol-def.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-protocol.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-protocol.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-qsort.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-qsort.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-scan-object.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-simple-nursery.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-split-nursery.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-tagged-pointer.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-thread-pool.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-thread-pool.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\sgen\sgen-workers.c">
+      <Filter>Source Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\sgen\sgen-workers.h">
+      <Filter>Header Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\sgen\Makefile.am">
+      <Filter>Resource Files$(MonoGCsgenFilterSubFolder)</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup Condition="'$(MonoGCsgenFilterSubFolder)'!=''">
+    <Filter Include="Header Files$(MonoGCsgenFilterSubFolder)">
+      <UniqueIdentifier>{09852EE2-29A8-4C5A-9DE0-748F4113132B}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoGCsgenFilterSubFolder)">
+      <UniqueIdentifier>{D551BA3A-A20D-4FB2-BFF4-0174A3CB19E1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoGCsgenFilterSubFolder)">
+      <UniqueIdentifier>{37293C0E-9158-42C3-BE90-8FE4B63CDFF5}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index e0979dbbee07d46d915e1984a3d051cd16c388da..f27c6652da10816e976b532aa4e980b329bce126 100644 (file)
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\sgen\sgen-alloc.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-array-list.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-cardtable.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-debug.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-descriptor.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-gc.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-gchandles.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-gray.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-hash-table.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-internal.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-los.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-marksweep.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-memory-governor.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-nursery-allocator.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-pinning-stats.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-pinning.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-pointer-queue.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-protocol.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-qsort.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-simple-nursery.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-split-nursery.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-thread-pool.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-workers.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-fin-weak-hash.c" />\r
-    <ClCompile Include="..\mono\sgen\sgen-layout-stats.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-archdep.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-array-list.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-cardtable.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-client.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-conf.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-copy-object.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-descriptor.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-gc.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-gray.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-hash-table.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-layout-stats.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-major-copy-object.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-marksweep-drain-gray-stack.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-marksweep-scan-object-concurrent.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-memory-governor.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-minor-copy-object.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-minor-scan-object.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-pinning.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-pointer-queue.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-protocol-def.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-protocol.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-qsort.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-scan-object.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-tagged-pointer.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-thread-pool.h" />\r
-    <ClInclude Include="..\mono\sgen\sgen-workers.h" />\r
-  </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{C36612BD-22D3-4B95-85E2-7FDC4FC5D740}</ProjectGuid>\r
     <Keyword>Win32Proj</Keyword>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(SGEN_DEFINES);_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <OmitFramePointers>false</OmitFramePointers>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(SGEN_DEFINES);_LIB;_DEBUG;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <WarningLevel>Level3</WarningLevel>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(SGEN_DEFINES);_LIB;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <WarningLevel>Level3</WarningLevel>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(SGEN_DEFINES);_LIB;NDEBUG;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <OptimizeReferences>true</OptimizeReferences>\r
     </Link>\r
   </ItemDefinitionGroup>\r
+  <Import Project="libgcmonosgen.targets" />\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
index b1c22545a6c7bdff143e26a4f54bf490bd33d539..f4982279c4279c44cd0394b4f042989eb7d0a0a1 100644 (file)
@@ -1,165 +1,6 @@
 ï»¿<?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\sgen\sgen-alloc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-cardtable.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-debug.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-descriptor.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-fin-weak-hash.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-gc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-gchandles.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-gray.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-hash-table.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-internal.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-layout-stats.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-los.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-marksweep.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-memory-governor.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-nursery-allocator.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-pinning.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-pinning-stats.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-pointer-queue.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-protocol.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-qsort.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-simple-nursery.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-split-nursery.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-thread-pool.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-workers.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\sgen\sgen-array-list.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-archdep.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-cardtable.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-client.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-conf.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-copy-object.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-descriptor.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-gc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-gray.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-hash-table.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-layout-stats.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-major-copy-object.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-marksweep-drain-gray-stack.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-marksweep-scan-object-concurrent.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-memory-governor.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-minor-copy-object.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-minor-scan-object.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-pinning.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-pointer-queue.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-protocol.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-protocol-def.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-qsort.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-scan-object.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-tagged-pointer.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-thread-pool.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-workers.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\sgen-array-list.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
+  <Import Project="libgcmonosgen.targets.filters" />\r
   <ItemGroup>\r
     <Filter Include="Resource Files">\r
       <UniqueIdentifier>{62eb1a19-26dd-4c17-8bd0-0a734673637d}</UniqueIdentifier>\r
diff --git a/msvc/libmini-arch.targets b/msvc/libmini-arch.targets
new file mode 100644 (file)
index 0000000..c02878f
--- /dev/null
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+    <ExcludeFromWindows32Build>false</ExcludeFromWindows32Build>
+    <ExcludeFromWindows64Build>false</ExcludeFromWindows64Build>
+    <ExcludeFromWindows32Build Condition="'$(Platform)'=='Win32'">true</ExcludeFromWindows32Build>
+    <ExcludeFromWindows64Build Condition="'$(Platform)'=='x64'">true</ExcludeFromWindows64Build>
+  </PropertyGroup>
+  <ItemGroup Label="arch_wasm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-wasm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-wasm.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-wasm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-wasm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_x86_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-x86.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows64Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-x86.h"/>
+    <CustomBuildStep Include="$(MonoSourceLocation)\mono\mini\mini-x86.h">
+      <ExcludedFromBuild>$(ExcludeFromWindows64Build)</ExcludedFromBuild>
+    </CustomBuildStep>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-x86.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows64Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-x86.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows64Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-x86-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows64Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-x86-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows64Build)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_amd64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-amd64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-amd64.h"/>
+    <CustomBuildStep Include="$(MonoSourceLocation)\mono\mini\mini-amd64.h">
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+    </CustomBuildStep>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-amd64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-amd64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-amd64-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-amd64-gsharedvt.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-amd64-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_ppc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-ppc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-ppc.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-ppc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-ppc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arm.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-arm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arm64.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-arm64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm64-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arm64-gsharedvt.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm64-gsharedvt.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_mips_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-mips.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-mips.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-mips.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-mips.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_sparc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-sparc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-sparc.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-sparc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-sparc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_s390x_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-s390x.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-s390x.h"/>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\support-s390x.h"/>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-s390x.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-s390x.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-arch.targets.filters b/msvc/libmini-arch.targets.filters
new file mode 100644 (file)
index 0000000..901fb3c
--- /dev/null
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="arch_wasm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-wasm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\wasm</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-wasm.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\wasm</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-wasm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\wasm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-wasm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\wasm</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_x86_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-x86.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-x86.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\x86</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-x86.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-x86.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-x86-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-x86-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_amd64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-amd64.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-amd64.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-amd64.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-amd64.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-amd64-gsharedvt.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-amd64-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-amd64-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\amd64</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_ppc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-ppc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\ppc</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-ppc.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\ppc</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-ppc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\ppc</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-ppc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\ppc</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arm.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\arm</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-arm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm64.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arm64.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-arm64.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm64.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arm64-gsharedvt.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-arm64-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-arm64-gsharedvt.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_mips_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-mips.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\mips</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-mips.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\mips</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-mips.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\mips</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-mips.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\mips</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_sparc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-sparc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\sparc</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-sparc.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\sparc</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-sparc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\sparc</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-sparc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\sparc</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_s390x_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-s390x.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\s390x</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-s390x.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\s390x</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\support-s390x.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\arch\s390x</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\exceptions-s390x.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\s390x</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tramp-s390x.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\arch\s390x</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch">
+      <UniqueIdentifier>{819510FE-1354-40D8-93CA-2FF5EB410FED}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch">
+      <UniqueIdentifier>{9FD04D2D-B4F4-4EC6-82FF-26A2333D4467}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\wasm">
+      <UniqueIdentifier>{B6D0ED07-1561-4C73-97E6-3E0688E3FDB3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\wasm">
+      <UniqueIdentifier>{1EBAD4C5-455D-425F-B036-9D31C3A1D5B5}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\x86">
+      <UniqueIdentifier>{4F64FA1A-0E4D-46ED-97DE-6913D02E6210}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\x86">
+      <UniqueIdentifier>{195D3978-2A6F-4319-8E1C-D0DB1210F6B2}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\amd64">
+      <UniqueIdentifier>{257C0357-BA3E-4E1C-9C35-466AB8436E8C}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\amd64">
+      <UniqueIdentifier>{54DD5925-EFC1-4795-A72F-567572A55127}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\ppc">
+      <UniqueIdentifier>{93654968-5AC2-47D6-B75A-2B2B389E755F}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\ppc">
+      <UniqueIdentifier>{BC2E6DB6-BE05-4CA1-8B7A-C6E479CF18B8}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\arm">
+      <UniqueIdentifier>{AD618FB9-5A86-4FB0-8954-D521472E4ABA}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\arm">
+      <UniqueIdentifier>{BEB75A74-7D5B-46FF-A3C8-54CD43CB3169}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\arm64">
+      <UniqueIdentifier>{215EE8BC-34C7-443B-913D-6C66A12D5423}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\arm64">
+      <UniqueIdentifier>{62141C1C-2506-47B6-87FC-A5BEC57E25C4}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\mips">
+      <UniqueIdentifier>{EAD92105-5ECB-4307-B7B1-E46505F8F663}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\mips">
+      <UniqueIdentifier>{36B76A9F-133A-4A05-BB24-8AF688194DF2}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\sparc">
+      <UniqueIdentifier>{9388C690-91E7-4FA1-86EE-FF8D2B146B23}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\sparc">
+      <UniqueIdentifier>{271C5D45-30DD-490B-B8F1-00BB955EAF71}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\arch\s390x">
+      <UniqueIdentifier>{E241E01E-29A9-4029-AD16-7A9E33B3153C}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\arch\s390x">
+      <UniqueIdentifier>{906B3D7C-D6B7-4EA6-A2B5-2B385C9C2A6C}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-common.targets b/msvc/libmini-common.targets
new file mode 100644 (file)
index 0000000..b201a6a
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="common_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-runtime.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\seq-points.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\seq-points.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\ir-emit.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\method-to-ir.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\cfgdump.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\cfgdump.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\decompose.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\version.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\optflags-def.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\jit-icalls.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\jit-icalls.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\trace.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\trace.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\patch-info.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-ops.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arch.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\dominators.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\cfold.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\regalloc.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\helpers.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\liveness.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\ssa.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\abcremoval.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\abcremoval.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\local-propagation.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\driver.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\debug-mini.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\linear-scan.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\aot-compiler.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\aot-compiler.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\aot-runtime.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\aot-runtime-wasm.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\graph.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-codegen.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-exceptions.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-trampolines.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\branch-opts.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-generic-sharing.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\simd-methods.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tasklets.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\tasklets.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-native-types.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\simd-intrinsics.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-unwind.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\unwind.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\image-writer.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\image-writer.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\dwarfwriter.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\dwarfwriter.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-gc.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-gc.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\debugger-agent.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\debugger-agent.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\xdebug.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-llvm.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-llvm-cpp.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\llvm-jit.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\alias-analysis.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-cross-helpers.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\arch-stubs.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\llvm-runtime.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\type-checking.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\lldb.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\lldb.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\memory-access.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-profiler.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\mini\Makefile.am.in" />
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-common.targets.filters b/msvc/libmini-common.targets.filters
new file mode 100644 (file)
index 0000000..3d27a24
--- /dev/null
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="common_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-runtime.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\seq-points.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\seq-points.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\ir-emit.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\method-to-ir.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\cfgdump.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\cfgdump.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\decompose.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\version.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\optflags-def.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\jit-icalls.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\jit-icalls.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\trace.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\trace.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\patch-info.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-ops.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-arch.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\dominators.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\cfold.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\regalloc.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\helpers.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\liveness.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\ssa.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\abcremoval.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\abcremoval.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\local-propagation.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\driver.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\debug-mini.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\linear-scan.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\aot-compiler.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\aot-compiler.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\aot-runtime.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\aot-runtime-wasm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\graph.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-codegen.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-exceptions.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-trampolines.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\branch-opts.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-generic-sharing.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\simd-methods.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\tasklets.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\tasklets.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-native-types.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\simd-intrinsics.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-unwind.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\unwind.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\image-writer.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\image-writer.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\dwarfwriter.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\dwarfwriter.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-gc.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-gc.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\debugger-agent.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\debugger-agent.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\xdebug.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-llvm.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-llvm-cpp.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\llvm-jit.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\alias-analysis.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-cross-helpers.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\arch-stubs.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\llvm-runtime.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\type-checking.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\lldb.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\lldb.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\memory-access.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-profiler.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\mini\Makefile.am.in">
+      <Filter>Resource Files$(MonoMiniFilterSubFolder)\common</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\common">
+      <UniqueIdentifier>{5E1443AF-3832-4C37-AD99-0D264DE68344}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoMiniFilterSubFolder)\common">
+      <UniqueIdentifier>{D09DBA53-D0BA-4E90-B207-4B23A9E7709B}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\common">
+      <UniqueIdentifier>{C0C82F0C-77A6-447F-BED2-39FD6ACDDC3A}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-interp.targets b/msvc/libmini-interp.targets
new file mode 100644 (file)
index 0000000..350b8a6
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="interp_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\hacks.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\interp.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\interp-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\interp.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\interp-stubs.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\mintops.h" />
+    <None Include="$(MonoSourceLocation)\mono\mini\interp\mintops.def" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\mintops.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\transform.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-interp.targets.filters b/msvc/libmini-interp.targets.filters
new file mode 100644 (file)
index 0000000..afe32ef
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="interp_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\hacks.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\interp.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\interp-internals.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\interp.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\interp-stubs.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\interp\mintops.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClInclude>
+    <None Include="$(MonoSourceLocation)\mono\mini\interp\mintops.def">
+      <Filter>Resource Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </None>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\mintops.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\interp\transform.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\interp</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\interp">
+      <UniqueIdentifier>{9E07C63F-9DE3-45EC-AEF6-D55AE5E7B644}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoMiniFilterSubFolder)\interp">
+      <UniqueIdentifier>{1064DAD3-1B4C-4803-BD5F-D046F98052E4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\interp">
+      <UniqueIdentifier>{5D14595A-15DA-44C8-AC7D-3B296DBC324D}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-llvm.targets b/msvc/libmini-llvm.targets
new file mode 100644 (file)
index 0000000..f4b6737
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="llvm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-llvm-loaded.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-llvm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\llvm-runtime.cpp">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-llvm-cpp.cpp">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\llvm-jit.cpp">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-llvm.targets.filters b/msvc/libmini-llvm.targets.filters
new file mode 100644 (file)
index 0000000..8bbf121
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="llvm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-llvm-loaded.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\llvm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-llvm.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\llvm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\llvm-runtime.cpp">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\llvm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-llvm-cpp.cpp">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\llvm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\llvm-jit.cpp">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\llvm</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\llvm">
+      <UniqueIdentifier>{6FF52301-18F4-41A3-AF3B-6D129E50D8AB}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-posix.targets b/msvc/libmini-posix.targets
new file mode 100644 (file)
index 0000000..1213202
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="darwin_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-darwin.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-posix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-posix.targets.filters b/msvc/libmini-posix.targets.filters
new file mode 100644 (file)
index 0000000..02db2ec
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="darwin_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-darwin.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\darwin</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-posix.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\posix</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\darwin">
+      <UniqueIdentifier>{E3BEC2F7-4DE6-43BC-A38D-67414D6CAB8B}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\posix">
+      <UniqueIdentifier>{B80745E3-E5F0-47A7-BE31-CBEC8615EDFE}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-win32.targets b/msvc/libmini-win32.targets
new file mode 100644 (file)
index 0000000..33639ac
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="windows_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-windows.h" />
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini-win32.targets.filters b/msvc/libmini-win32.targets.filters
new file mode 100644 (file)
index 0000000..d7b6f8f
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="windows_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-windows.c">
+      <Filter>Source Files$(MonoMiniFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\mini\mini-windows.h">
+      <Filter>Header Files$(MonoMiniFilterSubFolder)\win32</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)\win32">
+      <UniqueIdentifier>{B67D965A-45EE-4B01-AE98-CC6470F6DC9E}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)\win32">
+      <UniqueIdentifier>{2F0E3758-B8D9-4009-8B48-47F48303D00E}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini.targets b/msvc/libmini.targets
new file mode 100644 (file)
index 0000000..999a576
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="libmini-common.targets" />
+  <Import Project="libmini-win32.targets" />
+  <Import Project="libmini-posix.targets" />
+  <Import Project="libmini-arch.targets" />
+  <Import Project="libmini-interp.targets" />
+  <Import Project="libmini-llvm.targets" />
+</Project>
diff --git a/msvc/libmini.targets.filters b/msvc/libmini.targets.filters
new file mode 100644 (file)
index 0000000..467de8a
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="libmini-common.targets.filters" />
+  <Import Project="libmini-win32.targets.filters" />
+  <Import Project="libmini-posix.targets.filters" />
+  <Import Project="libmini-arch.targets.filters" />
+  <Import Project="libmini-interp.targets.filters" />
+  <Import Project="libmini-llvm.targets.filters" />
+  <ItemGroup Condition="'$(MonoMiniFilterSubFolder)'!=''">
+    <Filter Include="Header Files$(MonoMiniFilterSubFolder)">
+      <UniqueIdentifier>{b64924de-7e02-416b-9779-4cc7fe0270e6}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoMiniFilterSubFolder)">
+      <UniqueIdentifier>{95531242-a8da-43ec-9ddb-6da7551d9c2d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoMiniFilterSubFolder)">
+      <UniqueIdentifier>{f66c7e0f-6887-449d-81a5-49168ddfc4db}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmini.vcxproj b/msvc/libmini.vcxproj
new file mode 100644 (file)
index 0000000..63f573a
--- /dev/null
@@ -0,0 +1,201 @@
+<?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
+    <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
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{88D2EB79-592D-45F8-B849-AE021C1D983A}</ProjectGuid>\r
+    <RootNamespace>libmini</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);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+    </Link>\r
+    <PostBuildEvent />\r
+    <Lib>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Lib>\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);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+    </Link>\r
+    <PostBuildEvent />\r
+    <Lib>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Lib>\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
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <StringPooling>true</StringPooling>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+    </Link>\r
+    <PostBuildEvent />\r
+    <Lib>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Lib>\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
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <StringPooling>true</StringPooling>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+      <OptimizeReferences>true</OptimizeReferences>\r
+    </Link>\r
+    <PostBuildEvent />\r
+    <Lib>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <Import Project="libmini.targets" />\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/libmini.vcxproj.filters b/msvc/libmini.vcxproj.filters
new file mode 100644 (file)
index 0000000..c66a747
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <Import Project="libmini.targets.filters" />\r
+  <ItemGroup>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{30FB3E7A-9BC7-47A9-BABB-D34F7CD6F466}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{A4810F67-8B76-40A9-9A43-6048BC8A65F1}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{3E49E932-95E1-4900-89D8-0ABFD8094726}</UniqueIdentifier>\r
+    </Filter>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/msvc/libmono-dynamic.vcxproj b/msvc/libmono-dynamic.vcxproj
new file mode 100644 (file)
index 0000000..186bd7f
--- /dev/null
@@ -0,0 +1,257 @@
+<?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
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{675F4175-FFB1-480D-AD36-F397578844D4}</ProjectGuid>\r
+    <RootNamespace>libmono-dynamic</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>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\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
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(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);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);MONO_DLL_EXPORT;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+    </ProjectReference>\r
+    <Link>\r
+      <AdditionalDependencies Condition="'$(MONO_TARGET_GC)'=='boehm'">$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ModuleDefinitionFile>\r
+      </ModuleDefinitionFile>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\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
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);MONO_DLL_EXPORT;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+    </ProjectReference>\r
+    <Link>\r
+      <AdditionalDependencies Condition="'$(MONO_TARGET_GC)'=='boehm'">$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ModuleDefinitionFile>\r
+      </ModuleDefinitionFile>\r
+      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\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
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);MONO_DLL_EXPORT;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <ProjectReference />\r
+    <Link>\r
+      <AdditionalDependencies Condition="'$(MONO_TARGET_GC)'=='boehm'">$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ModuleDefinitionFile>\r
+      </ModuleDefinitionFile>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
+    </Link>\r
+    <PostBuildEvent>\r
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>\r
+    </PostBuildEvent>\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+    </ProjectReference>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <PreBuildEvent>\r
+      <Command>\r
+      </Command>\r
+    </PreBuildEvent>\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);MONO_DLL_EXPORT;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <WarningLevel>Level3</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <ProjectReference />\r
+    <Link>\r
+      <AdditionalDependencies Condition="'$(MONO_TARGET_GC)'=='boehm'">$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ModuleDefinitionFile>\r
+      </ModuleDefinitionFile>\r
+      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
+    </Link>\r
+    <PostBuildEvent>\r
+      <Command>.\libmono.bat "$(MONO_INCLUDE_DIR)" "$(SolutionDir)include\mono" -q</Command>\r
+    </PostBuildEvent>\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+    </ProjectReference>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\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
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-windows-dllmain.c" />\r
+  </ItemGroup>\r
+  <Import Project="eglib.targets" />\r
+  <Import Project="libmonoutils.targets" />\r
+  <Import Project="libmonoruntime.targets" />\r
+  <Import Project="libmini.targets" />\r
+  <Import Project="libgcmonosgen.targets" />\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-dynamic.vcxproj.filters b/msvc/libmono-dynamic.vcxproj.filters
new file mode 100644 (file)
index 0000000..dcdb261
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <MonoUtilsFilterSubFolder>\libmonoutils</MonoUtilsFilterSubFolder>\r
+    <MonoRuntimeFilterSubFolder>\libmonoruntime</MonoRuntimeFilterSubFolder>\r
+    <MonoMiniFilterSubFolder>\libmini</MonoMiniFilterSubFolder>\r
+    <MonoGCsgenFilterSubFolder>\libgcmonosgen</MonoGCsgenFilterSubFolder>\r
+    <EGLibFilterSubFolder>\eglib</EGLibFilterSubFolder>\r
+  </PropertyGroup>\r
+  <Import Project="eglib.targets.filters" />\r
+  <Import Project="libmonoutils.targets.filters" />\r
+  <Import Project="libmonoruntime.targets.filters" />\r
+  <Import Project="libmini.targets.filters" />\r
+  <Import Project="libgcmonosgen.targets.filters" />\r
+  <ItemGroup>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{09693EC3-6099-43FF-A22D-D0651643B146}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{851A7AF5-8521-4F03-9527-D162FB53D9E7}</UniqueIdentifier>\r
+    </Filter>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{58EC90AB-A91B-433C-AE1E-6B09A6D43A3E}</UniqueIdentifier>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="$(MonoSourceLocation)\mono\mini\mini-windows-dllmain.c">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
index b23daec250520a61e23c30e04a16991f9cb7426b..0c606ddb6af19cb1b76d0fbcffcb493efe7d7740 100644 (file)
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
   </ItemGroup>\r
-  <ItemGroup>\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
-    <ClCompile Include="..\mono\mini\memory-access.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-windows.h" />\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-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
-    <ClCompile Include="..\mono\mini\type-checking.c" />\r
-    <ClCompile Include="..\mono\mini\lldb.c" />\r
-    <ClCompile Include="..\mono\mini\interp\interp-stubs.c" />\r
-    <ClCompile Include="..\mono\mini\mini-profiler.c" />\r
-  </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0772}</ProjectGuid>\r
     <RootNamespace>libmono-static</RootNamespace>\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
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\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
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
     </Link>\r
     <PostBuildEvent />\r
+    <Lib />\r
+    <ProjectReference />\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+    </ProjectReference>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\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
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\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
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
     </Link>\r
     <PostBuildEvent />\r
+    <Lib />\r
+    <ProjectReference />\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+    </ProjectReference>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <PreBuildEvent>\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
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <OptimizeReferences>true</OptimizeReferences>\r
     </Link>\r
     <PostBuildEvent />\r
+    <Lib />\r
+    <ProjectReference />\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+    </ProjectReference>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
     <PreBuildEvent>\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
+      <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <OptimizeReferences>true</OptimizeReferences>\r
     </Link>\r
     <PostBuildEvent />\r
+    <Lib />\r
+    <ProjectReference />\r
+    <ProjectReference>\r
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+    </ProjectReference>\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
+    <ProjectReference Condition="'$(MONO_TARGET_GC)'=='boehm'" Include="libgc.vcxproj">\r
       <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>\r
     </ProjectReference>\r
-    <ProjectReference Include="libgcmonosgen.vcxproj">\r
+    <ProjectReference Condition="'$(MONO_TARGET_GC)'=='sgen'" Include="libgcmonosgen.vcxproj">\r
       <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d740}</Project>\r
     </ProjectReference>\r
+    <ProjectReference Include="libmini.vcxproj">\r
+      <Project>{88d2eb79-592d-45f8-b849-ae021c1d983a}</Project>\r
+    </ProjectReference>\r
     <ProjectReference Include="libmonoruntime.vcxproj">\r
       <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>\r
     </ProjectReference>\r
       <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\mono\mini\Makefile.am.in" />\r
-  </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
index 672e6052f41a69606d0d2f407964fa33ee1a5dd1..0d407ea4f940edc25a0d364ff323a36f41c96cb9 100644 (file)
@@ -1,252 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?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\memory-access.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\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-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
-    <ClCompile Include="..\mono\mini\type-checking.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\lldb.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\interp\interp-stubs.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\mini\mini-profiler.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
-    <ClInclude Include="..\mono\mini\mini-windows.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
       <UniqueIdentifier>{5370c3c4-b6ec-4f8a-8b21-ce4e782720a6}</UniqueIdentifier>\r
     </Filter>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\mono\mini\Makefile.am.in">\r
-      <Filter>Resource Files</Filter>\r
-    </None>\r
-  </ItemGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
diff --git a/msvc/libmono.vcxproj b/msvc/libmono.vcxproj
deleted file mode 100644 (file)
index 82eff33..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-<?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
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}</ProjectGuid>\r
-    <RootNamespace>libmono</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>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v140</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\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
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-2.0$(MONO_TARGET_SUFFIX)</TargetName>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(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
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\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
-      <PrecompiledHeaderOutputFile>\r
-      </PrecompiledHeaderOutputFile>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>\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
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>Disabled</Optimization>\r
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\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
-      <PrecompiledHeaderOutputFile>\r
-      </PrecompiledHeaderOutputFile>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\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>MinSpace</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>\r
-      </PrecompiledHeaderOutputFile>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ModuleDefinitionFile>$(MONO_DEF)</ModuleDefinitionFile>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\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
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>MinSpace</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <PrecompiledHeaderOutputFile>\r
-      </PrecompiledHeaderOutputFile>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_STATIC_LIBMONO_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
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\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="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
-    <ProjectReference Include="libmonoutils.vcxproj">\r
-      <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\mini\mini-windows-dllmain.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="mono.def" />\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.vcxproj.filters b/msvc/libmono.vcxproj.filters
deleted file mode 100644 (file)
index 91861b6..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\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
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\mini\mini-windows-dllmain.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="mono.def">\r
-      <Filter>Resource Files</Filter>\r
-    </None>\r
-  </ItemGroup>\r
-</Project>
\ No newline at end of file
index b8d2520fd58a58ef2e84e05d71fd52e0ea5f74a3..b016f7b90077bab71ca3d5f55be02ba97e5f3d78 100644 (file)
     <ClCompile>\r
       <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\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
       <PrecompiledHeaderOutputFile>\r
       </PrecompiledHeaderOutputFile>\r
-      <BrowseInformation>true</BrowseInformation>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <Culture>0x0409</Culture>\r
     </ResourceCompile>\r
     <ProjectReference>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>\r
       </ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
     <PostBuildEvent>\r
       <Command>\r
     </Midl>\r
     <ClCompile>\r
       <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
-      <Optimization>MinSpace</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <PrecompiledHeaderOutputFile>\r
       </PrecompiledHeaderOutputFile>\r
-      <CompileAs>CompileAsC</CompileAs>\r
+      <WarningLevel>Level3</WarningLevel>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <Culture>0x0409</Culture>\r
     </ResourceCompile>\r
     <ProjectReference>\r
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>\r
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>\r
       </ModuleDefinitionFile>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
     <PostBuildEvent>\r
       <Command>\r
       </Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\mono\mini\mini-windows-dlldac.c" />\r
   </ItemGroup>\r
diff --git a/msvc/libmonoruntime-common.targets b/msvc/libmonoruntime-common.targets
new file mode 100644 (file)
index 0000000..2a18201
--- /dev/null
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="common_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\appdomain.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\domain.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\appdomain-icalls.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\assembly.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\assembly-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\attach.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\attach.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\cil-coff.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\class.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\class-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\class-inlines.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\class-accessors.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\cominterop.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\cominterop.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\console-io.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\coree.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\coree.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\coree-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\culture-info.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\culture-info-tables.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\debug-helpers.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\debug-mono-symfile.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-mono-ppdb.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\debug-mono-ppdb.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\decimal-ms.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\decimal-ms.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\domain-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\environment.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\exception.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\exception-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\filewatcher.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\filewatcher.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\gc-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\icall.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\icall-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\icall-def.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\image.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\image-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\jit-info.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\loader.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\locales.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\locales.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\lock-tracer.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\lock-tracer.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\marshal.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\marshal.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\marshal-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mempool.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mempool.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mempool-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\metadata.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\metadata-verify.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\metadata-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\method-builder.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\method-builder.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-basic-block.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-basic-block.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-config.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-debug.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-endian.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-endian.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-hash.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-conc-hash.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-mlist.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-mlist.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-perfcounters.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-perfcounters.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-perfcounters-def.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-ptr-array.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-route.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-route.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\monitor.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\normalization-tables.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\number-formatter.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\number-ms.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\number-ms.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\object.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\object-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\opcodes.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\property-bag.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\property-bag.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32socket.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32socket.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32socket-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\profiler.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\profiler-private.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\rand.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\rand.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\remoting.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\remoting.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\runtime.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-security.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\security.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\security-core-clr.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\security-core-clr.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\security-manager.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\security-manager.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\string-icalls.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\string-icalls.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sysmath.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sysmath.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\tabledefs.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threads.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threads-types.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threadpool.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threadpool.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threadpool-worker-default.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threadpool-worker.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threadpool-io.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threadpool-io.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\verify.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\verify-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\wrapper-types.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\dynamic-image-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\dynamic-stream.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\dynamic-stream-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\reflection-cache.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\custom-attrs-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sre-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\reflection-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\file-mmap-posix.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\file-mmap-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\file-mmap.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\object-offsets.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\abi-details.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\metadata-cross-helpers.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\seq-points-data.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\seq-points-data.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\handle.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\handle.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32mutex.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32semaphore.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32event.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32handle-namespace.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32handle-namespace.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32handle.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32handle.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32error.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\reflection.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\dynamic-image.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sre.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sre-encode.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sre-save.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\custom-attrs.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\fdhandle.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\fdhandle.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\callspec.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\callspec.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\runtime.h" />
+  </ItemGroup>
+  <ItemGroup Label="config_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-config-dirs.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-config-dirs.c" />
+  </ItemGroup>
+  <ItemGroup Label="null_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\console-null.c">
+      <ExcludedFromBuild>true</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="null_gc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\null-gc.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\null-gc-handles.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\null-gc-handles.c" />
+  </ItemGroup>
+  <ItemGroup Label="gc_dependent_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\gc-stats.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\gc.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\monitor.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-hash.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-conc-hash.c" />
+  </ItemGroup>
+  <ItemGroup Label="boehm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\boehm-gc.c" />
+  </ItemGroup>
+  <ItemGroup Label="sgen_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-bridge.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-bridge-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-old-bridge.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-new-bridge.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-tarjan-bridge.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-toggleref.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-toggleref.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-stw.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-mono.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-client-mono.h" />
+  </ItemGroup>
+  <ItemGroup Label="libmonoruntimeinclude_headers">
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\assembly.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\attrdefs.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\appdomain.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\blob.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\class.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-helpers.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-mono-symfile.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threads.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\environment.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\exception.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\image.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\loader.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\metadata.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-config.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-debug.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-gc.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-bridge.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\object.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\opcodes.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\profiler.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\profiler-events.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\reflection.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\row-indexes.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\tokentype.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\verify.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\metadata\Makefile.am" />
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoruntime-common.targets.filters b/msvc/libmonoruntime-common.targets.filters
new file mode 100644 (file)
index 0000000..ed6eb91
--- /dev/null
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="common_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\appdomain.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\domain.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\appdomain-icalls.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\assembly.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\assembly-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\attach.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\attach.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\cil-coff.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\class.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\class-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\class-inlines.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\class-accessors.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\cominterop.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\cominterop.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\console-io.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\coree.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\coree.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\coree-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\culture-info.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\culture-info-tables.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\debug-helpers.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\debug-mono-symfile.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-mono-ppdb.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\debug-mono-ppdb.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\decimal-ms.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\decimal-ms.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\domain-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\environment.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\exception.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\exception-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\filewatcher.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\filewatcher.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\gc-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\icall.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\icall-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\icall-def.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\image.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\image-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\jit-info.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\loader.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\locales.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\locales.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\lock-tracer.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\lock-tracer.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\marshal.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\marshal.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\marshal-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mempool.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mempool.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mempool-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\metadata.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\metadata-verify.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\metadata-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\method-builder.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\method-builder.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-basic-block.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-basic-block.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-config.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-debug.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-endian.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-endian.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-hash.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-conc-hash.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-mlist.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-mlist.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-perfcounters.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-perfcounters.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-perfcounters-def.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-ptr-array.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-route.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-route.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\monitor.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\normalization-tables.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\number-formatter.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\number-ms.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\number-ms.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\object.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\object-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\opcodes.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\property-bag.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\property-bag.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32socket.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32socket.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32socket-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\profiler.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\profiler-private.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\rand.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\rand.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\remoting.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\remoting.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\runtime.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-security.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\security.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\security-core-clr.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\security-core-clr.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\security-manager.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\security-manager.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\string-icalls.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\string-icalls.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sysmath.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sysmath.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\tabledefs.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threads.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threads-types.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threadpool.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threadpool.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threadpool-worker-default.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threadpool-worker.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\threadpool-io.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threadpool-io.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\verify.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\verify-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\wrapper-types.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\dynamic-image-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\dynamic-stream.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\dynamic-stream-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\reflection-cache.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\custom-attrs-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sre-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\reflection-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\file-mmap-posix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\file-mmap-windows.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\file-mmap.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\object-offsets.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\abi-details.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\metadata-cross-helpers.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\seq-points-data.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\seq-points-data.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\handle.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\handle.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32mutex.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32semaphore.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32event.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32handle-namespace.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32handle-namespace.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32handle.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32handle.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32error.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\reflection.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\dynamic-image.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sre.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sre-encode.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sre-save.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\custom-attrs.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\fdhandle.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\fdhandle.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\callspec.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\callspec.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\runtime.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup Label="config_sources">
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-config-dirs.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\config</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-config-dirs.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\config</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="null_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\console-null.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\null</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="null_gc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\null-gc.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\null</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\null-gc-handles.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\null</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\null-gc-handles.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\null</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="gc_dependent_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\gc-stats.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\gc</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\gc.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\gc</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\monitor.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\gc</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-hash.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\gc</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-conc-hash.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\gc</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="boehm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\boehm-gc.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\boehm</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="sgen_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-bridge.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-bridge-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-old-bridge.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-new-bridge.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-tarjan-bridge.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-toggleref.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-toggleref.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-stw.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\sgen-mono.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-client-mono.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\sgen</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup Label="libmonoruntimeinclude_headers">
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\assembly.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\attrdefs.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\appdomain.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\blob.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\class.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-helpers.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\debug-mono-symfile.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\threads.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\environment.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\exception.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\image.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\loader.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\metadata.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-config.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-debug.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-gc.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\sgen-bridge.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\object.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\opcodes.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\profiler.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\profiler-events.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\reflection.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\row-indexes.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\tokentype.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\verify.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\metadata\Makefile.am">
+      <Filter>Resource Files$(MonoRuntimeFilterSubFolder)\common</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\common">
+      <UniqueIdentifier>{843B5CD9-EDFA-4AAC-991D-61DFA21371BC}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoRuntimeFilterSubFolder)\common">
+      <UniqueIdentifier>{A02993B9-96B7-4706-8DBC-C308D8E73728}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\common">
+      <UniqueIdentifier>{7DF7F41B-D8FA-4360-97E0-B489AF16A4A1}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\common\config">
+      <UniqueIdentifier>{315FC157-3666-4A1D-9B57-E7109B4DB660}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\common\config">
+      <UniqueIdentifier>{07DDD063-86C3-4F17-AC99-EBB8FBC893A8}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\common\null">
+      <UniqueIdentifier>{99F530B5-33A8-4BB4-ADEE-728D8E12DABD}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\common\null">
+      <UniqueIdentifier>{8257808E-1E66-4361-9389-7C37D89FEE87}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\common\gc">
+      <UniqueIdentifier>{410dd556-6715-4c4e-beff-c5dd7a6b78a1}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\common\boehm">
+      <UniqueIdentifier>{728e57f8-14d3-42f4-b92a-be03cd2acdfa}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\common\sgen">
+      <UniqueIdentifier>{5fede250-d478-466b-aa2a-36d2222de065}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\common\sgen">
+      <UniqueIdentifier>{d5996ea0-8b43-4267-a46c-715270aaee2b}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\common\public">
+      <UniqueIdentifier>{D27FE656-8C2C-4D3B-8F25-4BAEAEAB7C6D}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libmonoruntime-posix.targets b/msvc/libmonoruntime-posix.targets
new file mode 100644 (file)
index 0000000..ff25348
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\console-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32mutex-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32semaphore-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32event-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-osx.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-bsd.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-haiku.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-default.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32socket-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file-unix-glob.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file-unix-glob.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32error-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoruntime-posix.targets.filters b/msvc/libmonoruntime-posix.targets.filters
new file mode 100644 (file)
index 0000000..5718e6a
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\console-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32mutex-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32semaphore-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32event-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-osx.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-bsd.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-haiku.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-unix-default.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32socket-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file-unix-glob.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file-unix-glob.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32error-unix.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\posix</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\posix">
+      <UniqueIdentifier>{A7AC4663-8099-40E7-8527-BB3E157E4724}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\posix">
+      <UniqueIdentifier>{C3BF4A1D-8504-4891-9682-8DA7F355F8A3}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoruntime-win32.targets b/msvc/libmonoruntime-win32.targets
new file mode 100644 (file)
index 0000000..93830b0
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="win32_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\console-win32.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\console-win32-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\cominterop-win32-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file-win32.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file-win32-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\icall-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\icall-windows-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\marshal-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\marshal-windows-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-security-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-security-windows-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32mutex-win32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32semaphore-win32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32event-win32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-win32.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process-win32-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32socket-win32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32error-win32.c" />
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoruntime-win32.targets.filters b/msvc/libmonoruntime-win32.targets.filters
new file mode 100644 (file)
index 0000000..3b360da
--- /dev/null
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="win32_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\console-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\console-win32-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\cominterop-win32-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32file-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32file-win32-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\icall-windows.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\icall-windows-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\marshal-windows.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\marshal-windows-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\mono-security-windows.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\mono-security-windows-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32mutex-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32semaphore-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32event-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32process-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\metadata\w32process-win32-internals.h">
+      <Filter>Header Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32socket-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\metadata\w32error-win32.c">
+      <Filter>Source Files$(MonoRuntimeFilterSubFolder)\win32</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)\win32">
+      <UniqueIdentifier>{C6938EF2-A57F-4941-90EB-FCD7CF1E035D}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)\win32">
+      <UniqueIdentifier>{56DCE5E4-A83E-487B-BFED-577E1F784C14}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoruntime.targets b/msvc/libmonoruntime.targets
new file mode 100644 (file)
index 0000000..2db90bd
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="libmonoruntime-common.targets" />
+  <Import Project="libmonoruntime-win32.targets" />
+  <Import Project="libmonoruntime-posix.targets" />
+</Project>
diff --git a/msvc/libmonoruntime.targets.filters b/msvc/libmonoruntime.targets.filters
new file mode 100644 (file)
index 0000000..cad037a
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="libmonoruntime-common.targets.filters" />
+  <Import Project="libmonoruntime-win32.targets.filters" />
+  <Import Project="libmonoruntime-posix.targets.filters" />
+  <ItemGroup Condition="'$(MonoRuntimeFilterSubFolder)'!=''">
+    <Filter Include="Header Files$(MonoRuntimeFilterSubFolder)">
+      <UniqueIdentifier>{992766FD-0584-4B49-A4F7-B59947CD8488}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoRuntimeFilterSubFolder)">
+      <UniqueIdentifier>{12D2E658-65D0-48E9-8F7A-6355482F17DA}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoRuntimeFilterSubFolder)">
+      <UniqueIdentifier>{DC656245-EE35-4C36-AA40-A109905666F3}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index d2e5ad512cd78a353af0e1e05eb4308b9bd287b6..b9b512dddb3c8e78358483bf31e09a4e015de98b 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?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
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\metadata\appdomain.c" />\r
-    <ClCompile Include="..\mono\metadata\assembly.c" />\r
-    <ClCompile Include="..\mono\metadata\attach.c" />\r
-    <ClCompile Include="..\mono\metadata\boehm-gc.c" />\r
-    <ClCompile Include="..\mono\metadata\class-accessors.c" />\r
-    <ClCompile Include="..\mono\metadata\class.c" />\r
-    <ClCompile Include="..\mono\metadata\cominterop.c" />\r
-    <ClCompile Include="..\mono\metadata\console-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\property-bag.c" />\r
-    <ClCompile Include="..\mono\metadata\w32socket-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\w32file-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\w32error-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\icall-windows.c" />\r
-    <ClCompile Include="..\mono\metadata\marshal-windows.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-security-windows.c" />\r
-    <ClCompile Include="..\mono\metadata\w32mutex-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\w32semaphore-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\w32event-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\w32process.c" />\r
-    <ClCompile Include="..\mono\metadata\w32process-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\coree.c" />\r
-    <ClCompile Include="..\mono\metadata\custom-attrs.c" />\r
-    <ClCompile Include="..\mono\metadata\debug-helpers.c" />\r
-    <ClCompile Include="..\mono\metadata\debug-mono-ppdb.c" />\r
-    <ClCompile Include="..\mono\metadata\debug-mono-symfile.c" />\r
-    <ClCompile Include="..\mono\metadata\decimal-ms.c" />\r
-    <ClCompile Include="..\mono\metadata\dynamic-image.c" />\r
-    <ClCompile Include="..\mono\metadata\dynamic-stream.c" />\r
-    <ClCompile Include="..\mono\metadata\domain.c" />\r
-    <ClCompile Include="..\mono\metadata\environment.c" />\r
-    <ClCompile Include="..\mono\metadata\exception.c" />\r
-    <ClCompile Include="..\mono\metadata\w32file.c" />\r
-    <ClCompile Include="..\mono\metadata\file-mmap-windows.c" />\r
-    <ClCompile Include="..\mono\metadata\filewatcher.c" />\r
-    <ClCompile Include="..\mono\metadata\gc-stats.c" />\r
-    <ClCompile Include="..\mono\metadata\gc.c" />\r
-    <ClCompile Include="..\mono\metadata\handle.c" />\r
-    <ClCompile Include="..\mono\metadata\icall.c" />\r
-    <ClCompile Include="..\mono\metadata\image.c" />\r
-    <ClCompile Include="..\mono\metadata\jit-info.c" />\r
-    <ClCompile Include="..\mono\metadata\loader.c" />\r
-    <ClCompile Include="..\mono\metadata\locales.c" />\r
-    <ClCompile Include="..\mono\metadata\lock-tracer.c" />\r
-    <ClCompile Include="..\mono\metadata\marshal.c" />\r
-    <ClCompile Include="..\mono\metadata\mempool.c" />\r
-    <ClCompile Include="..\mono\metadata\metadata-verify.c" />\r
-    <ClCompile Include="..\mono\metadata\metadata.c" />\r
-    <ClCompile Include="..\mono\metadata\metadata-cross-helpers.c" />\r
-    <ClCompile Include="..\mono\metadata\method-builder.c" />\r
-    <ClCompile Include="..\mono\metadata\monitor.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-basic-block.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-config.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-config-dirs.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-debug.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-endian.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-hash.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-conc-hash.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-mlist.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-perfcounters.c" />\r
-    <ClCompile Include="..\mono\metadata\null-gc.c" />\r
-    <ClCompile Include="..\mono\metadata\number-ms.c" />\r
-    <ClCompile Include="..\mono\metadata\object.c" />\r
-    <ClCompile Include="..\mono\metadata\opcodes.c" />\r
-    <ClCompile Include="..\mono\metadata\profiler.c" />\r
-    <ClCompile Include="..\mono\metadata\rand.c" />\r
-    <ClCompile Include="..\mono\metadata\reflection.c" />\r
-    <ClCompile Include="..\mono\metadata\remoting.c" />\r
-    <ClCompile Include="..\mono\metadata\runtime.c" />\r
-    <ClCompile Include="..\mono\metadata\security-core-clr.c" />\r
-    <ClCompile Include="..\mono\metadata\security-manager.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-security.c" />\r
-    <ClCompile Include="..\mono\metadata\seq-points-data.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-mono.c" />\r
-    <ClCompile Include="..\mono\metadata\threadpool-io.c" />\r
-    <ClCompile Include="..\mono\metadata\threadpool.c" />\r
-    <ClCompile Include="..\mono\metadata\threadpool-worker-default.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-bridge.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-new-bridge.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-old-bridge.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-tarjan-bridge.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-stw.c" />\r
-    <ClCompile Include="..\mono\metadata\w32socket.c" />\r
-    <ClCompile Include="..\mono\metadata\sre.c" />\r
-    <ClCompile Include="..\mono\metadata\sre-encode.c" />\r
-    <ClCompile Include="..\mono\metadata\sre-save.c" />\r
-    <ClCompile Include="..\mono\metadata\string-icalls.c" />\r
-    <ClCompile Include="..\mono\metadata\sysmath.c" />\r
-    <ClCompile Include="..\mono\metadata\threads.c" />\r
-    <ClCompile Include="..\mono\metadata\verify.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\metadata\appdomain.h" />\r
-    <ClInclude Include="..\mono\metadata\appdomain-icalls.h" />\r
-    <ClInclude Include="..\mono\metadata\assembly.h" />\r
-    <ClInclude Include="..\mono\metadata\attach.h" />\r
-    <ClInclude Include="..\mono\metadata\cil-coff.h" />\r
-    <ClInclude Include="..\mono\metadata\class-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\class.h" />\r
-    <ClInclude Include="..\mono\metadata\cominterop-win32-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\cominterop.h" />\r
-    <ClInclude Include="..\mono\metadata\console-io.h" />\r
-    <ClInclude Include="..\mono\metadata\console-win32-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\coree-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\coree.h" />\r
-    <ClInclude Include="..\mono\metadata\culture-info-tables.h" />\r
-    <ClInclude Include="..\mono\metadata\culture-info.h" />\r
-    <ClInclude Include="..\mono\metadata\custom-attrs-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\debug-helpers.h" />\r
-    <ClInclude Include="..\mono\metadata\debug-mono-ppdb.h" />\r
-    <ClInclude Include="..\mono\metadata\debug-mono-symfile.h" />\r
-    <ClInclude Include="..\mono\metadata\domain-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\dynamic-image-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\dynamic-stream-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\environment.h" />\r
-    <ClInclude Include="..\mono\metadata\exception.h" />\r
-    <ClInclude Include="..\mono\metadata\w32file-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\w32file-win32-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\w32file.h" />\r
-    <ClInclude Include="..\mono\metadata\w32error.h" />\r
-    <ClInclude Include="..\mono\utils\w32api.h" />\r
-    <ClInclude Include="..\mono\metadata\filewatcher.h" />\r
-    <ClInclude Include="..\mono\metadata\gc-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\handle.h" />\r
-    <ClInclude Include="..\mono\metadata\icall-windows-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\icall-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\marshal-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\marshal-windows-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-security-windows-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\number-ms.h" />\r
-    <ClInclude Include="..\mono\metadata\property-bag.h" />\r
-    <ClInclude Include="..\mono\metadata\w32process.h" />\r
-    <ClInclude Include="..\mono\metadata\w32process-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\w32process-win32-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\remoting.h" />\r
-    <ClInclude Include="..\mono\metadata\seq-points-data.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-bridge-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-client-mono.h" />\r
-    <ClInclude Include="..\mono\metadata\w32socket-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\threadpool-io.h" />\r
-    <ClInclude Include="..\mono\metadata\threadpool.h" />\r
-    <ClInclude Include="..\mono\metadata\threadpool-worker.h" />\r
-    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h" />\r
-    <ClInclude Include="..\mono\metadata\icall-def.h" />\r
-    <ClInclude Include="..\mono\metadata\image.h" />\r
-    <ClInclude Include="..\mono\metadata\loader.h" />\r
-    <ClInclude Include="..\mono\metadata\locales.h" />\r
-    <ClInclude Include="..\mono\metadata\lock-tracer.h" />\r
-    <ClInclude Include="..\mono\metadata\marshal.h" />\r
-    <ClInclude Include="..\mono\metadata\mempool-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\mempool.h" />\r
-    <ClInclude Include="..\mono\metadata\metadata-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\metadata.h" />\r
-    <ClInclude Include="..\mono\metadata\method-builder.h" />\r
-    <ClInclude Include="..\mono\metadata\monitor.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-basic-block.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-config.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-config-dirs.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-debug-debugger.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-debug.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-endian.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-hash.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-conc-hash.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-mlist.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-perfcounters-def.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-perfcounters.h" />\r
-    <ClInclude Include="..\mono\metadata\mono-ptr-array.h" />\r
-    <ClInclude Include="..\mono\metadata\normalization-tables.h" />\r
-    <ClInclude Include="..\mono\metadata\number-formatter.h" />\r
-    <ClInclude Include="..\mono\metadata\object-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\object.h" />\r
-    <ClInclude Include="..\mono\metadata\opcodes.h" />\r
-    <ClInclude Include="..\mono\metadata\profiler-events.h" />\r
-    <ClInclude Include="..\mono\metadata\profiler-private.h" />\r
-    <ClInclude Include="..\mono\metadata\profiler.h" />\r
-    <ClInclude Include="..\mono\metadata\rand.h" />\r
-    <ClInclude Include="..\mono\metadata\reflection.h" />\r
-    <ClInclude Include="..\mono\metadata\reflection-cache.h" />\r
-    <ClInclude Include="..\mono\metadata\reflection-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\runtime.h" />\r
-    <ClInclude Include="..\mono\metadata\security-core-clr.h" />\r
-    <ClInclude Include="..\mono\metadata\security-manager.h" />\r
-    <ClInclude Include="..\mono\metadata\security.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-bridge.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-toggleref.h" />\r
-    <ClInclude Include="..\mono\metadata\w32socket.h" />\r
-    <ClInclude Include="..\mono\metadata\sre-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\string-icalls.h" />\r
-    <ClInclude Include="..\mono\metadata\sysmath.h" />\r
-    <ClInclude Include="..\mono\metadata\tabledefs.h" />\r
-    <ClInclude Include="..\mono\metadata\threads-types.h" />\r
-    <ClInclude Include="..\mono\metadata\verify-internals.h" />\r
-    <ClInclude Include="..\mono\metadata\verify.h" />\r
-    <ClInclude Include="..\mono\metadata\wrapper-types.h" />\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\mono\metadata\Makefile.am" />\r
-  </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}</ProjectGuid>\r
     <Keyword>Win32Proj</Keyword>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
-      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_LIB;$(GC_DEFINES);_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
-      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_LIB;$(GC_DEFINES);WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <WarningLevel>Level3</WarningLevel>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_LIB;$(GC_DEFINES);NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <WarningLevel>Level3</WarningLevel>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;$(GC_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_LIB;$(GC_DEFINES);WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
     </Link>\r
     <Lib />\r
   </ItemDefinitionGroup>\r
+  <Import Project="libmonoruntime.targets" />\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
index 554e61985bdb1745ac9df6d44d0c7d1423bdd6f3..3ac14af44719ffc479813d8359ab076ea7cc1cec 100644 (file)
@@ -1,582 +1,6 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?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\metadata\assembly.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\attach.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\class.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\cominterop.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\console-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32mutex-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32semaphore-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32event-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\coree.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\debug-helpers.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\debug-mono-ppdb.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\debug-mono-symfile.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\decimal-ms.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\environment.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\exception.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32file.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\file-mmap-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\filewatcher.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\handle.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\icall.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\image.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\jit-info.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\loader.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\locales.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\lock-tracer.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\marshal.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mempool.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\metadata.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\metadata-verify.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\method-builder.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-basic-block.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-config.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-config-dirs.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-debug.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-endian.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-mlist.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-perfcounters.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-security.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\null-gc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\number-ms.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\opcodes.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32process.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32process-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\profiler.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\rand.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\metadata\runtime.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\security-core-clr.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\security-manager.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\seq-points-data.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32socket.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\string-icalls.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sysmath.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\threadpool.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\threadpool-worker-default.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\threadpool-io.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\threads.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\verify.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\boehm-gc.c">\r
-      <Filter>Source Files\boehm</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\appdomain.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\domain.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\gc-stats.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\gc.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\monitor.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-hash.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-conc-hash.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\object.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\reflection.c">\r
-      <Filter>Source Files\gc</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-bridge.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-old-bridge.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-new-bridge.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-tarjan-bridge.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-toggleref.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-stw.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sgen-mono.c">\r
-      <Filter>Source Files\sgen</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\metadata-cross-helpers.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\custom-attrs.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\dynamic-image.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\dynamic-stream.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sre.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sre-encode.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sre-save.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32socket-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32file-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32error-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\icall-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\marshal-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-security-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\class-accessors.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\property-bag.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\metadata\appdomain.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\assembly.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\attach.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\cil-coff.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\class.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\class-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\cominterop.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\console-io.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\coree.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\culture-info.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\culture-info-tables.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\debug-helpers.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\debug-mono-ppdb.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\debug-mono-symfile.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\domain-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\environment.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\exception.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32file.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32error.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\w32api.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\filewatcher.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\handle.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\icall-def.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\image.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\loader.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\locales.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\lock-tracer.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\marshal.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mempool.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mempool-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\metadata.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\metadata-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\method-builder.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\monitor.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-basic-block.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-config.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-config-dirs.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-debug.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-debug-debugger.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-endian.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-hash.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-conc-hash.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-mlist.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-perfcounters.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-perfcounters-def.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-ptr-array.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\normalization-tables.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\number-formatter.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\number-ms.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\object.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\object-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\opcodes.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32process.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32process-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32process-win32-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\profiler-events.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\profiler-private.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\profiler.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\rand.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\reflection.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\metadata\runtime.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\security.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\security-core-clr.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\security-manager.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\seq-points-data.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32socket.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\string-icalls.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\sysmath.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\tabledefs.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\threadpool.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\threadpool-worker.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\wrapper-types.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\threadpool-io.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\threads-types.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\verify.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\verify-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\sgen-bridge.h">\r
-      <Filter>Header Files\sgen</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\sgen-bridge-internals.h">\r
-      <Filter>Header Files\sgen</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\sgen-toggleref.h">\r
-      <Filter>Header Files\sgen</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\sgen-client-mono.h">\r
-      <Filter>Header Files\sgen</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h">\r
-      <Filter>Header Files\gc</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\gc-internals.h">\r
-      <Filter>Header Files\gc</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\custom-attrs-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\dynamic-image-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\dynamic-stream-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\reflection-cache.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\reflection-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\sre-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32socket-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\coree-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\console-win32-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32file-win32-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\w32file-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\icall-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\icall-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\marshal-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\marshal-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\mono-security-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\property-bag.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\metadata\cominterop-win32-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
+  <Import Project="libmonoruntime.targets.filters" />\r
   <ItemGroup>\r
     <Filter Include="Header Files">\r
       <UniqueIdentifier>{eb8a6a4d-924c-494d-99c1-663e4c09a806}</UniqueIdentifier>\r
     <Filter Include="Source Files">\r
       <UniqueIdentifier>{3f4ff222-41cc-4bbc-b36b-cac0c21266ad}</UniqueIdentifier>\r
     </Filter>\r
-    <Filter Include="Source Files\boehm">\r
-      <UniqueIdentifier>{728e57f8-14d3-42f4-b92a-be03cd2acdfa}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Source Files\sgen">\r
-      <UniqueIdentifier>{d5996ea0-8b43-4267-a46c-715270aaee2b}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Header Files\boehm">\r
-      <UniqueIdentifier>{2446a0bf-5f8b-4789-91ab-6107f72b8539}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Header Files\sgen">\r
-      <UniqueIdentifier>{5fede250-d478-466b-aa2a-36d2222de065}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Source Files\gc">\r
-      <UniqueIdentifier>{410dd556-6715-4c4e-beff-c5dd7a6b78a1}</UniqueIdentifier>\r
-    </Filter>\r
-    <Filter Include="Header Files\gc">\r
-      <UniqueIdentifier>{e37c9a88-bfb3-47dd-948c-a74dea25b3ad}</UniqueIdentifier>\r
-    </Filter>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\mono\metadata\Makefile.am">\r
-      <Filter>Resource Files</Filter>\r
-    </None>\r
   </ItemGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
diff --git a/msvc/libmonoutils-arch.targets b/msvc/libmonoutils-arch.targets
new file mode 100644 (file)
index 0000000..041daa7
--- /dev/null
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+    <ExcludeFromWindows32Build>false</ExcludeFromWindows32Build>
+    <ExcludeFromWindows64Build>false</ExcludeFromWindows64Build>
+    <ExcludeFromWindows32Build Condition="'$(Platform)'=='Win32'">true</ExcludeFromWindows32Build>
+    <ExcludeFromWindows64Build Condition="'$(Platform)'=='x64'">true</ExcludeFromWindows64Build>
+  </PropertyGroup>
+  <ItemGroup Label="arch_x86_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-x86.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-x86.c" />
+  </ItemGroup>
+  <ItemGroup Label="arch_amd64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-amd64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <MASM Include="$(MonoSourceLocation)\mono\utils\win64.asm">
+      <FileType>Document</FileType>
+      <ExcludedFromBuild>$(ExcludeFromWindows32Build)</ExcludedFromBuild>
+      <PreprocessorDefinitions>X64</PreprocessorDefinitions>
+    </MASM>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-arm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-arm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-arm64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-arm64.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_mips_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-mips.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_ppc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-ppc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_sparc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-sparc.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_s390x_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-os390x.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_wasm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-wasm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_unknown_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-unknown.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_cross_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-cross.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ImportGroup Label="ExtensionSettings">
+    <Import Project="$(MonoSourceLocation)\msvc\masm.fixed.props" />
+    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+  </ImportGroup>
+</Project>
diff --git a/msvc/libmonoutils-arch.targets.filters b/msvc/libmonoutils-arch.targets.filters
new file mode 100644 (file)
index 0000000..836b30f
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="arch_x86_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-x86.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-x86.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\x86</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_amd64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-amd64.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\amd64</Filter>
+    </ClCompile>
+    <MASM Include="$(MonoSourceLocation)\mono\utils\win64.asm">
+      <Filter>Resource Files$(MonoUtilsFilterSubFolder)\arch\amd64</Filter>
+    </MASM>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-arm.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-arm.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\arm</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_arm64_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-arm64.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-arm64.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\arm64</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_mips_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-mips.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\mips</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_ppc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-ppc.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\ppc</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_sparc_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-sparc.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\sparc</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_s390x_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-os390x.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\s390x</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_wasm_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-wasm.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\wasm</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_unknown_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support-unknown.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\unknown</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup Label="arch_cross_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-cross.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\arch\cross</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Resource Files$(MonoUtilsFilterSubFolder)\arch">
+      <UniqueIdentifier>{CF1B494F-7FC7-4B1F-9356-1E6F4C3AA151}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch">
+      <UniqueIdentifier>{6603FB44-3F5A-490C-A2FB-3FCD4818EA6A}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\x86">
+      <UniqueIdentifier>{9931E7C8-6C44-48E6-8752-AD0E3CB99A40}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Resource Files$(MonoUtilsFilterSubFolder)\arch\amd64">
+      <UniqueIdentifier>{6F39D983-0414-4906-A8B4-F3EE6D66ADB2}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\amd64">
+      <UniqueIdentifier>{711787B7-91B8-4FDF-937B-35C28B17F264}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\arm">
+      <UniqueIdentifier>{BF9E07DE-1E58-485B-8A1D-E98B51AA3335}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\arm64">
+      <UniqueIdentifier>{7F0740FA-7CF3-4281-B044-76AA9D603173}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\mips">
+      <UniqueIdentifier>{C994366B-5CDF-4221-9F02-0889EE48AE84}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\ppc">
+      <UniqueIdentifier>{350298FD-D211-4A13-9FDD-5CFFE2693D3E}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\sparc">
+      <UniqueIdentifier>{58B688AA-3E02-4D79-A17F-FC287BC36BD4}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\s390x">
+      <UniqueIdentifier>{D0DAB5B3-50DB-4122-81A2-FB82F6569DC7}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\wasm">
+      <UniqueIdentifier>{CCF0AA6D-4EC2-4D0B-80DE-3D304D3F1B06}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\unknown">
+      <UniqueIdentifier>{1241F641-C6B5-4139-87D9-9981D309FFBA}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\arch\cross">
+      <UniqueIdentifier>{23738EAA-81C9-4974-B742-6054F15292A4}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils-common.targets b/msvc/libmonoutils-common.targets
new file mode 100644 (file)
index 0000000..d9da645
--- /dev/null
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="monoutils_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-md5.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-sha1.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-logger.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-logger-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-codeman.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\dlmalloc.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\dlmalloc.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-counters.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-compiler.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-complex.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-windows.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-darwin.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-posix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-wasm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-dl.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-dl-windows-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-windows.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-common.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-posix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-android.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-darwin.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-internal-hash.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-internal-hash.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-io-portability.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-io-portability.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\monobitset.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-filemap.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-math.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-mmap.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-mmap-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-mmap.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-mmap-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-mmap-windows-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-os-mutex.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-os-mutex.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-os-wait.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-coop-mutex.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-once.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-lazy-init.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-networkinterfaces.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-networkinterfaces.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-proclib.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-proclib-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-proclib.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-proclib-windows-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-publib.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-string.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-time.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-time.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\strenc.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\strenc.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-uri.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-poll.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-path.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-os-semaphore.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-coop-semaphore.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-sigcontext.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-stdlib.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-property-hash.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-property-hash.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-value-hash.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-value-hash.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-elf_common.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-elf32.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-elf64.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-dwarf.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\dtrace.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\gc_wrapper.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-error.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-error-internals.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\monobitset.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-codeman.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-digest.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-machine.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-math.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-membar.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-path.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-poll.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-uri.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-stdlib.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\valgrind.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mach-support.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\memcheck.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-context.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-context.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-stack-unwinding.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\hazard-pointer.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\hazard-pointer.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\lock-free-queue.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\lock-free-queue.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\lock-free-alloc.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\lock-free-alloc.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\lock-free-array-queue.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\lock-free-array-queue.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-linked-list-set.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-linked-list-set.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-state-machine.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-posix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-posix-signals.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-mach.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-mach-helper.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-windows.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-linux.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-freebsd.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-netbsd.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-openbsd.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-android.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-haiku.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-wasm.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads-debug.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads-api.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-coop.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads-coop.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-tls.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-tls.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\linux_magic.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-memory-model.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\atomic.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\atomic.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-hwcap.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-vars.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\bsearch.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\bsearch.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-signal-handler.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-conc-hashtable.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-conc-hashtable.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\json.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\json.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-posix.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-fallback.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-missing.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\networking.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-rand.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-rand-windows.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-rand.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-rand-windows-internals.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\memfuncs.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\memfuncs.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\parse.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\parse.h" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\checked-build.c" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\checked-build.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\os-event.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\refcount.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\w32api.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\unlocked.h" />
+  </ItemGroup>
+  <ItemGroup Label="libmonoutilsinclude_headers">
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-logger.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-error.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-publib.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-dl-fallback.h" />
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-counters.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\utils\Makefile.am" />
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils-common.targets.filters b/msvc/libmonoutils-common.targets.filters
new file mode 100644 (file)
index 0000000..3852bf9
--- /dev/null
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="monoutils_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-md5.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-sha1.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-logger.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-logger-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-codeman.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\dlmalloc.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\dlmalloc.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-counters.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-compiler.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-complex.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-darwin.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-posix.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-dl-wasm.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-dl.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-dl-windows-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-common.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-posix.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-android.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-log-darwin.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-internal-hash.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-internal-hash.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-io-portability.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-io-portability.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\monobitset.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-filemap.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-math.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-mmap.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-mmap-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-mmap.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-mmap-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-mmap-windows-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-os-mutex.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-os-mutex.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-os-wait.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-coop-mutex.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-once.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-lazy-init.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-networkinterfaces.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-networkinterfaces.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-proclib.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-proclib-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-proclib.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-proclib-windows-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-publib.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-string.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-time.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-time.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\strenc.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\strenc.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-uri.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-poll.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-path.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-os-semaphore.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-coop-semaphore.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-sigcontext.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-stdlib.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-property-hash.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-property-hash.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-value-hash.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-value-hash.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-elf_common.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-elf32.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-elf64.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\freebsd-dwarf.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\dtrace.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\gc_wrapper.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-error.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-error-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\monobitset.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-codeman.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-digest.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-machine.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-math.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-membar.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-path.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-poll.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-uri.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-stdlib.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\valgrind.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mach-support.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mach-support.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\memcheck.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-context.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-context.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-stack-unwinding.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\hazard-pointer.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\hazard-pointer.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\lock-free-queue.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\lock-free-queue.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\lock-free-alloc.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\lock-free-alloc.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\lock-free-array-queue.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\lock-free-array-queue.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-linked-list-set.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-linked-list-set.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-state-machine.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-posix.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-posix-signals.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-mach.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-mach-helper.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-linux.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-freebsd.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-netbsd.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-openbsd.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-android.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-haiku.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-wasm.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads-debug.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads-api.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-threads-coop.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-threads-coop.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-tls.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-tls.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\linux_magic.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-memory-model.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\atomic.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\atomic.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-hwcap.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-hwcap.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-hwcap-vars.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\bsearch.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\bsearch.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-signal-handler.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-conc-hashtable.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-conc-hashtable.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\json.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\json.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-posix.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-fallback.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-missing.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\networking-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\networking.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-rand.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-rand-windows.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-rand.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-rand-windows-internals.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\memfuncs.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\memfuncs.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\parse.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\parse.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\checked-build.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClCompile>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\checked-build.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\os-event.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\refcount.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\w32api.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\unlocked.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup Label="libmonoutilsinclude_headers">
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-logger.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-error.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-publib.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-dl-fallback.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\mono\utils\mono-counters.h">
+      <Filter>Header Files$(MonoUtilsFilterSubFolder)\common\public</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(MonoSourceLocation)\mono\utils\Makefile.am">
+      <Filter>Resource Files$(MonoUtilsFilterSubFolder)\common</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoUtilsFilterSubFolder)\common">
+      <UniqueIdentifier>{467B47D6-631B-4DFD-83B7-70CD1E314F7F}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoUtilsFilterSubFolder)\common">
+      <UniqueIdentifier>{E4760A93-A38F-48E5-B89D-78487FA2805D}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\common">
+      <UniqueIdentifier>{0CB40928-2D3E-46B9-A8DF-D7F63A35A6CD}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Header Files$(MonoUtilsFilterSubFolder)\common\public">
+      <UniqueIdentifier>{23D97CF3-2DE0-42A1-8AF7-40D6981EB259}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils-posix.targets b/msvc/libmonoutils-posix.targets
new file mode 100644 (file)
index 0000000..16da381
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ExcludeFromWindowsBuild>true</ExcludeFromWindowsBuild>
+  </PropertyGroup>
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\os-event-unix.c">
+      <ExcludedFromBuild>$(ExcludeFromWindowsBuild)</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils-posix.targets.filters b/msvc/libmonoutils-posix.targets.filters
new file mode 100644 (file)
index 0000000..956b3ac
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="posix_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\os-event-unix.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\posix</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\posix">
+      <UniqueIdentifier>{CFAFABB9-9646-402C-BD4E-A0E1EF4F3595}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils-win32.targets b/msvc/libmonoutils-win32.targets
new file mode 100644 (file)
index 0000000..c1484ed
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="win32_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\os-event-win32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-os-wait-win32.c" />
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils-win32.targets.filters b/msvc/libmonoutils-win32.targets.filters
new file mode 100644 (file)
index 0000000..122e39e
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="win32_sources">
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\os-event-win32.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\win32</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\mono\utils\mono-os-wait-win32.c">
+      <Filter>Source Files$(MonoUtilsFilterSubFolder)\win32</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)\win32">
+      <UniqueIdentifier>{56DCE5E4-A83E-487B-BFED-577E1F784C14}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
diff --git a/msvc/libmonoutils.targets b/msvc/libmonoutils.targets
new file mode 100644 (file)
index 0000000..a9a9582
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="libmonoutils-common.targets" />
+  <Import Project="libmonoutils-win32.targets" />
+  <Import Project="libmonoutils-posix.targets" />
+  <Import Project="libmonoutils-arch.targets" />
+</Project>
diff --git a/msvc/libmonoutils.targets.filters b/msvc/libmonoutils.targets.filters
new file mode 100644 (file)
index 0000000..9a23e04
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="libmonoutils-common.targets.filters" />
+  <Import Project="libmonoutils-win32.targets.filters" />
+  <Import Project="libmonoutils-posix.targets.filters" />
+  <Import Project="libmonoutils-arch.targets.filters" />
+  <ItemGroup Condition="'$(MonoUtilsFilterSubFolder)'!=''">
+    <Filter Include="Header Files$(MonoUtilsFilterSubFolder)">
+      <UniqueIdentifier>{1ACFEA26-DBB0-44B9-8297-414DD74D7E22}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoUtilsFilterSubFolder)">
+      <UniqueIdentifier>{A52D473E-5928-4BD9-AA2D-284C4A04D9D4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoUtilsFilterSubFolder)">
+      <UniqueIdentifier>{69B9EC3D-597F-46CE-8F9F-55B732E95CCC}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
index 350a54654e475e39aa163f1c125cbaff0c19b47b..fd727132bc650fcb5ef9b7e2ed56fd66bf1a7903 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?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
       <Platform>x64</Platform>\r
     </ProjectConfiguration>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\utils\dlmalloc.c" />\r
-    <ClCompile Include="..\mono\utils\hazard-pointer.c" />\r
-    <ClCompile Include="..\mono\utils\json.c" />\r
-    <ClCompile Include="..\mono\utils\lock-free-alloc.c" />\r
-    <ClCompile Include="..\mono\utils\lock-free-array-queue.c" />\r
-    <ClCompile Include="..\mono\utils\lock-free-queue.c" />\r
-    <ClCompile Include="..\mono\utils\mach-support-amd64.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support-arm.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support-x86.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-codeman.c" />\r
-    <ClCompile Include="..\mono\utils\mono-conc-hashtable.c" />\r
-    <ClCompile Include="..\mono\utils\mono-context.c" />\r
-    <ClCompile Include="..\mono\utils\mono-counters.c" />\r
-    <ClCompile Include="..\mono\utils\mono-dl-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-dl.c" />\r
-    <ClCompile Include="..\mono\utils\mono-error.c" />\r
-    <ClCompile Include="..\mono\utils\mono-filemap.c" />\r
-    <ClCompile Include="..\mono\utils\mono-internal-hash.c" />\r
-    <ClCompile Include="..\mono\utils\mono-io-portability.c" />\r
-    <ClCompile Include="..\mono\utils\mono-linked-list-set.c" />\r
-    <ClCompile Include="..\mono\utils\mono-logger.c" />\r
-    <ClCompile Include="..\mono\utils\mono-log-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-log-common.c" />\r
-    <ClCompile Include="..\mono\utils\mono-math.c" />\r
-    <ClCompile Include="..\mono\utils\mono-md5.c" />\r
-    <ClCompile Include="..\mono\utils\mono-mmap-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-mmap.c" />\r
-    <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />\r
-    <ClCompile Include="..\mono\utils\mono-proclib-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-rand-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-rand.c" />\r
-    <ClCompile Include="..\mono\utils\mono-threads-state-machine.c" />\r
-    <ClCompile Include="..\mono\utils\networking.c" />\r
-    <ClCompile Include="..\mono\utils\networking-posix.c" />\r
-    <ClCompile Include="..\mono\utils\networking-missing.c" />\r
-    <ClCompile Include="..\mono\utils\networking-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-path.c" />\r
-    <ClCompile Include="..\mono\utils\mono-poll.c" />\r
-    <ClCompile Include="..\mono\utils\mono-proclib.c" />\r
-    <ClCompile Include="..\mono\utils\mono-property-hash.c" />\r
-    <ClCompile Include="..\mono\utils\mono-publib.c" />\r
-    <ClCompile Include="..\mono\utils\mono-sha1.c" />\r
-    <ClCompile Include="..\mono\utils\mono-stdlib.c" />\r
-    <ClCompile Include="..\mono\utils\mono-threads-mach.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-posix.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-posix-signals.c">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-windows.c" />\r
-    <ClCompile Include="..\mono\utils\mono-threads.c" />\r
-    <ClCompile Include="..\mono\utils\mono-threads-coop.c" />\r
-    <ClCompile Include="..\mono\utils\mono-time.c" />\r
-    <ClCompile Include="..\mono\utils\mono-tls.c" />\r
-    <ClCompile Include="..\mono\utils\mono-uri.c" />\r
-    <ClCompile Include="..\mono\utils\mono-value-hash.c" />\r
-    <ClCompile Include="..\mono\utils\monobitset.c" />\r
-    <ClCompile Include="..\mono\utils\mono-os-mutex.c" />\r
-    <ClCompile Include="..\mono\utils\os-event-win32.c" />\r
-    <ClCompile Include="..\mono\utils\strenc.c" />\r
-    <ClCompile Include="..\mono\utils\atomic.c" />\r
-    <ClCompile Include="..\mono\utils\mono-hwcap.c" />\r
-    <ClCompile Include="..\mono\utils\mono-hwcap-x86.c" />\r
-    <ClCompile Include="..\mono\utils\bsearch.c" />\r
-    <ClCompile Include="..\mono\utils\memfuncs.c" />\r
-    <ClCompile Include="..\mono\utils\parse.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\utils\dlmalloc.h" />\r
-    <ClInclude Include="..\mono\utils\dtrace.h" />\r
-    <ClInclude Include="..\mono\utils\freebsd-dwarf.h" />\r
-    <ClInclude Include="..\mono\utils\freebsd-elf32.h" />\r
-    <ClInclude Include="..\mono\utils\freebsd-elf64.h" />\r
-    <ClInclude Include="..\mono\utils\freebsd-elf_common.h" />\r
-    <ClInclude Include="..\mono\utils\gc_wrapper.h" />\r
-    <ClInclude Include="..\mono\utils\hazard-pointer.h" />\r
-    <ClInclude Include="..\mono\utils\json.h" />\r
-    <ClInclude Include="..\mono\utils\linux_magic.h" />\r
-    <ClInclude Include="..\mono\utils\lock-free-alloc.h" />\r
-    <ClInclude Include="..\mono\utils\lock-free-array-queue.h" />\r
-    <ClInclude Include="..\mono\utils\lock-free-queue.h" />\r
-    <ClInclude Include="..\mono\utils\mach-support.h" />\r
-    <ClInclude Include="..\mono\utils\memcheck.h" />\r
-    <ClInclude Include="..\mono\utils\mono-codeman.h" />\r
-    <ClInclude Include="..\mono\utils\mono-compiler.h" />\r
-    <ClInclude Include="..\mono\utils\mono-complex.h" />\r
-    <ClInclude Include="..\mono\utils\mono-conc-hashtable.h" />\r
-    <ClInclude Include="..\mono\utils\mono-context.h" />\r
-    <ClInclude Include="..\mono\utils\mono-coop-mutex.h" />\r
-    <ClInclude Include="..\mono\utils\mono-coop-semaphore.h" />\r
-    <ClInclude Include="..\mono\utils\mono-counters.h" />\r
-    <ClInclude Include="..\mono\utils\mono-digest.h" />\r
-    <ClInclude Include="..\mono\utils\mono-dl-fallback.h" />\r
-    <ClInclude Include="..\mono\utils\mono-dl-windows-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-dl.h" />\r
-    <ClInclude Include="..\mono\utils\mono-error-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-error.h" />\r
-    <ClInclude Include="..\mono\utils\mono-internal-hash.h" />\r
-    <ClInclude Include="..\mono\utils\mono-io-portability.h" />\r
-    <ClInclude Include="..\mono\utils\mono-linked-list-set.h" />\r
-    <ClInclude Include="..\mono\utils\mono-logger-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-logger.h" />\r
-    <ClInclude Include="..\mono\utils\mono-machine.h" />\r
-    <ClInclude Include="..\mono\utils\mono-math.h" />\r
-    <ClInclude Include="..\mono\utils\mono-membar.h" />\r
-    <ClInclude Include="..\mono\utils\mono-memory-model.h" />\r
-    <ClInclude Include="..\mono\utils\mono-mmap-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-mmap-windows-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-mmap.h" />\r
-    <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />\r
-    <ClInclude Include="..\mono\utils\mono-once.h" />\r
-    <ClInclude Include="..\mono\utils\mono-os-mutex.h" />\r
-    <ClInclude Include="..\mono\utils\mono-os-semaphore.h" />\r
-    <ClInclude Include="..\mono\utils\mono-path.h" />\r
-    <ClInclude Include="..\mono\utils\mono-poll.h" />\r
-    <ClInclude Include="..\mono\utils\mono-proclib-windows-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-proclib.h" />\r
-    <ClInclude Include="..\mono\utils\mono-property-hash.h" />\r
-    <ClInclude Include="..\mono\utils\mono-publib.h" />\r
-    <ClInclude Include="..\mono\utils\mono-rand-windows-internals.h" />\r
-    <ClInclude Include="..\mono\utils\mono-rand.h" />\r
-    <ClInclude Include="..\mono\utils\mono-sigcontext.h" />\r
-    <ClInclude Include="..\mono\utils\mono-stack-unwinding.h" />\r
-    <ClInclude Include="..\mono\utils\mono-stdlib.h" />\r
-    <ClInclude Include="..\mono\utils\mono-string.h" />\r
-    <ClInclude Include="..\mono\utils\mono-threads.h" />\r
-    <ClInclude Include="..\mono\utils\mono-threads-api.h" />\r
-    <ClInclude Include="..\mono\utils\mono-threads-coop.h" />\r
-    <ClInclude Include="..\mono\utils\mono-time.h" />\r
-    <ClInclude Include="..\mono\utils\mono-tls.h" />\r
-    <ClInclude Include="..\mono\utils\mono-uri.h" />\r
-    <ClInclude Include="..\mono\utils\mono-value-hash.h" />\r
-    <ClInclude Include="..\mono\utils\monobitset.h" />\r
-    <ClInclude Include="..\mono\utils\os-event.h" />\r
-    <ClInclude Include="..\mono\utils\strenc.h" />\r
-    <ClInclude Include="..\mono\utils\valgrind.h" />\r
-    <ClInclude Include="..\mono\utils\atomic.h" />\r
-    <ClInclude Include="..\mono\utils\unlocked.h" />
-    <ClInclude Include="..\mono\utils\mono-hwcap.h" />\r
-    <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />\r
-    <ClInclude Include="..\mono\utils\bsearch.h" />\r
-    <ClInclude Include="..\mono\utils\memfuncs.h" />\r
-    <ClInclude Include="..\mono\utils\parse.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <MASM Include="..\mono\utils\win64.asm">\r
-      <FileType>Document</FileType>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </MASM>\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\mono\utils\Makefile.am" />\r
-  </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}</ProjectGuid>\r
     <Keyword>Win32Proj</Keyword>\r
     <PlatformToolset>v140</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-    <Import Project=".\masm.fixed.props" />\r
-  </ImportGroup>\r
   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\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
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
       <Optimization>Disabled</Optimization>\r
-      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <Command>\r
       </Command>\r
     </PreBuildEvent>\r
-    <MASM>\r
-      <PreprocessorDefinitions>X64</PreprocessorDefinitions>\r
-    </MASM>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
       <WarningLevel>Level3</WarningLevel>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <WarningLevel>Level3</WarningLevel>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <SubSystem>Windows</SubSystem>\r
       <Command>\r
       </Command>\r
     </PreBuildEvent>\r
-    <MASM>\r
-      <PreprocessorDefinitions>X64</PreprocessorDefinitions>\r
-    </MASM>\r
   </ItemDefinitionGroup>\r
+  <Import Project="libmonoutils.targets" />\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />\r
-  </ImportGroup>\r
 </Project>
\ No newline at end of file
index 30badee3648d03e88c2a0eec33f164a87902f672..def4467d313bf2965f480584892a1582c5134f0c 100644 (file)
@@ -1,435 +1,6 @@
 ï»¿<?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\utils\atomic.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\bsearch.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\dlmalloc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\hazard-pointer.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\json.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\lock-free-alloc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\lock-free-array-queue.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\lock-free-queue.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support-amd64.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support-arm.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mach-support-x86.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\memfuncs.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\monobitset.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-codeman.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-conc-hashtable.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-context.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-counters.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-dl.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-dl-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-error.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-filemap.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-hwcap.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-hwcap-x86.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-internal-hash.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-io-portability.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-linked-list-set.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-logger.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-math.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-md5.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-mmap.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-networkinterfaces.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-path.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-poll.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-proclib.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-property-hash.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-publib.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-rand.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-sha1.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-stdlib.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-coop.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-mach.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-mach-abort-syscall.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-posix.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-posix-abort-syscall.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-posix-signals.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-state-machine.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-threads-windows-abort-syscall.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-time.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-tls.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-uri.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-value-hash.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\networking.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\networking-missing.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\networking-posix.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\networking-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\parse.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\strenc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-log-common.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-log-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-rand-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-proclib-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-mmap-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\os-event-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\mono\utils\atomic.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\bsearch.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\dlmalloc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\dtrace.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\freebsd-dwarf.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\freebsd-elf_common.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\freebsd-elf32.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\freebsd-elf64.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\gc_wrapper.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\hazard-pointer.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\json.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\linux_magic.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\lock-free-alloc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\lock-free-array-queue.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\lock-free-queue.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mach-support.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\memcheck.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\memfuncs.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\monobitset.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-codeman.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-compiler.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-complex.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-conc-hashtable.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-context.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-coop-mutex.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-coop-semaphore.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-counters.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-digest.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-dl.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-dl-fallback.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-error.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-error-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-hwcap.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-hwcap-x86.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-internal-hash.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-io-portability.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-linked-list-set.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-logger.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-logger-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-machine.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-math.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-membar.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-memory-model.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-mmap.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-networkinterfaces.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-once.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-os-mutex.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-os-semaphore.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-path.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-poll.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-proclib.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-property-hash.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-publib.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-rand.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-sigcontext.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-stack-unwinding.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-stdlib.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-string.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-threads.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-threads-api.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-threads-coop.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-threads-posix-signals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-time.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-tls.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-uri.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-value-hash.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\parse.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\strenc.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\valgrind.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-mmap-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-mmap-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-proclib-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-rand-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\mono-dl-windows-internals.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\os-event.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\mono\utils\unlocked.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>\r
+  <Import Project="libmonoutils.targets.filters" />\r
   <ItemGroup>\r
     <Filter Include="Header Files">\r
       <UniqueIdentifier>{7d1240fd-7e95-4e21-ab1a-365dd69355de}</UniqueIdentifier>\r
       <UniqueIdentifier>{82f9c5a2-bc7b-4424-ae85-a203027fd038}</UniqueIdentifier>\r
     </Filter>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <MASM Include="..\mono\utils\win64.asm">\r
-      <Filter>Resource Files</Filter>\r
-    </MASM>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="..\mono\utils\Makefile.am">\r
-      <Filter>Resource Files</Filter>\r
-    </None>\r
-  </ItemGroup>\r
 </Project>
\ No newline at end of file
index 27a44e3ae8cb8675b56bba9e4659ab9f6ff20c84..a6d25fbb2b1a95a76e3c918324199a8125e3e272 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <ClCompile>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
-    </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
diff --git a/msvc/mono.def b/msvc/mono.def
deleted file mode 100644 (file)
index a07e7c7..0000000
+++ /dev/null
@@ -1,985 +0,0 @@
-; file generated by create-windef.pl
-EXPORTS
-MonoFixupCorEE
-mono_add_internal_call
-mono_aot_register_module
-mono_array_addr_with_size
-mono_array_class_get
-mono_array_clone
-mono_array_element_size
-mono_array_length
-mono_array_new
-mono_array_new_full
-mono_array_new_specific
-mono_assemblies_cleanup
-mono_assemblies_init
-mono_assembly_addref
-mono_assembly_close
-mono_assembly_fill_assembly_name
-mono_assembly_foreach
-mono_assembly_get_assemblyref
-mono_assembly_get_image
-mono_assembly_get_main
-mono_assembly_get_name
-mono_assembly_get_object
-mono_assembly_getrootdir
-mono_assembly_invoke_load_hook
-mono_assembly_invoke_search_hook
-mono_assembly_load
-mono_assembly_load_from
-mono_assembly_load_from_full
-mono_assembly_load_full
-mono_assembly_load_module
-mono_assembly_load_module_checked
-mono_assembly_load_reference
-mono_assembly_load_references
-mono_assembly_load_with_partial_name
-mono_assembly_loaded
-mono_assembly_loaded_full
-mono_assembly_name_free
-mono_assembly_name_get_culture
-mono_assembly_name_get_name
-mono_assembly_name_get_pubkeytoken
-mono_assembly_name_get_version
-mono_assembly_name_new
-mono_assembly_names_equal
-mono_assembly_open
-mono_assembly_open_full
-mono_assembly_set_main
-mono_assembly_setrootdir
-mono_bitset_alloc_size
-mono_bitset_clear
-mono_bitset_clear_all
-mono_bitset_clone
-mono_bitset_copyto
-mono_bitset_count
-mono_bitset_equal
-mono_bitset_find_first
-mono_bitset_find_first_unset
-mono_bitset_find_last
-mono_bitset_find_start
-mono_bitset_foreach
-mono_bitset_free
-mono_bitset_intersection
-mono_bitset_intersection_2
-mono_bitset_invert
-mono_bitset_mem_new
-mono_bitset_new
-mono_bitset_set
-mono_bitset_set_all
-mono_bitset_size
-mono_bitset_sub
-mono_bitset_test
-mono_bitset_test_bulk
-mono_bitset_union
-mono_bounded_array_class_get
-mono_breakpoint_clean_code
-mono_check_corlib_version
-mono_class_array_element_size
-mono_class_data_size
-mono_class_describe_statics
-mono_class_enum_basetype
-mono_class_from_generic_parameter
-mono_class_from_mono_type
-mono_class_from_name
-mono_class_from_name_case
-mono_class_from_typeref
-mono_class_from_typeref_checked
-mono_class_get
-mono_class_get_byref_type
-mono_class_get_context
-mono_class_get_element_class
-mono_class_get_event_token
-mono_class_get_events
-mono_class_get_field
-mono_class_get_field_from_name
-mono_class_get_field_token
-mono_class_get_fields
-mono_class_get_flags
-mono_class_get_full
-mono_class_get_image
-mono_class_get_interfaces
-mono_class_get_method_from_name
-mono_class_get_method_from_name_flags
-mono_class_get_methods
-mono_class_get_name
-mono_class_get_namespace
-mono_class_get_nested_types
-mono_class_get_nesting_type
-mono_class_get_parent
-mono_class_get_properties
-mono_class_get_property_from_name
-mono_class_get_property_token
-mono_class_get_rank
-mono_class_get_type
-mono_class_get_type_token
-mono_class_implements_interface
-mono_class_inflate_generic_method
-mono_class_inflate_generic_type
-mono_class_init
-mono_class_instance_size
-mono_class_interface_offset
-mono_class_is_assignable_from
-mono_class_is_delegate
-mono_class_is_enum
-mono_class_is_subclass_of
-mono_class_is_valid_enum
-mono_class_is_valuetype
-mono_class_min_align
-mono_class_name_from_token
-mono_class_num_events
-mono_class_num_fields
-mono_class_num_methods
-mono_class_num_properties
-mono_class_value_size
-mono_class_vtable
-mono_cli_rva_image_map
-mono_code_manager_cleanup
-mono_code_manager_commit
-mono_code_manager_destroy
-mono_code_manager_init
-mono_code_manager_install_callbacks
-mono_code_manager_invalidate
-mono_code_manager_new
-mono_code_manager_new_dynamic
-mono_code_manager_reserve
-mono_code_manager_reserve_align
-mono_code_manager_set_read_only
-mono_code_manager_size
-mono_compile_method
-mono_conc_hashtable_destroy
-mono_conc_hashtable_foreach
-mono_conc_hashtable_foreach_steal
-mono_conc_hashtable_insert
-mono_conc_hashtable_lookup
-mono_conc_hashtable_new
-mono_conc_hashtable_new_full
-mono_conc_hashtable_remove
-mono_config_cleanup
-mono_config_for_assembly
-mono_config_get_cpu
-mono_config_get_os
-mono_config_get_wordsize
-mono_config_is_server_mode
-mono_config_parse
-mono_config_parse_memory
-mono_config_set_server_mode
-mono_config_string_for_assembly_file
-mono_context_get
-mono_context_get_desc
-mono_context_get_domain_id
-mono_context_get_id
-mono_context_init
-mono_context_set
-mono_counter_get_name
-mono_counter_get_section
-mono_counter_get_size
-mono_counter_get_type
-mono_counter_get_unit
-mono_counter_get_variance
-mono_counters_cleanup
-mono_counters_dump
-mono_counters_enable
-mono_counters_foreach
-mono_counters_init
-mono_counters_on_register
-mono_counters_register
-mono_counters_register_with_size
-mono_counters_sample
-mono_cpu_count
-mono_custom_attrs_construct
-mono_custom_attrs_free
-mono_custom_attrs_from_assembly
-mono_custom_attrs_from_class
-mono_custom_attrs_from_event
-mono_custom_attrs_from_field
-mono_custom_attrs_from_index
-mono_custom_attrs_from_method
-mono_custom_attrs_from_param
-mono_custom_attrs_from_property
-mono_custom_attrs_get_attr
-mono_custom_attrs_has_attr
-mono_debug_add_delegate_trampoline
-mono_debug_add_method
-mono_debug_cleanup
-mono_debug_close_image
-mono_debug_close_mono_symbol_file
-mono_debug_domain_create
-mono_debug_domain_unload
-mono_debug_enabled
-mono_debug_find_method
-mono_debug_free_locals
-mono_debug_free_method_jit_info
-mono_debug_free_source_location
-mono_debug_il_offset_from_address
-mono_debug_init
-mono_debug_lookup_locals
-mono_debug_lookup_method
-mono_debug_lookup_method_addresses
-mono_debug_lookup_source_location
-mono_debug_open_image_from_memory
-mono_debug_open_mono_symbols
-mono_debug_print_stack_frame
-mono_debug_print_vars
-mono_debug_remove_method
-mono_debug_symfile_free_location
-mono_debug_symfile_is_loaded
-mono_debug_symfile_lookup_locals
-mono_debug_symfile_lookup_location
-mono_debug_symfile_lookup_method
-mono_debugger_agent_parse_options
-mono_debugger_agent_register_transport
-mono_debugger_agent_transport_handshake
-mono_debugger_insert_breakpoint
-mono_debugger_method_has_breakpoint
-mono_debugger_run_finally
-mono_declsec_flags_from_assembly
-mono_declsec_flags_from_class
-mono_declsec_flags_from_method
-mono_declsec_get_assembly_action
-mono_declsec_get_class_action
-mono_declsec_get_demands
-mono_declsec_get_inheritdemands_class
-mono_declsec_get_inheritdemands_method
-mono_declsec_get_linkdemands
-mono_declsec_get_method_action
-mono_digest_get_public_token
-mono_disasm_code
-mono_disasm_code_one
-mono_dl_fallback_register
-mono_dl_fallback_unregister
-mono_dl_open
-mono_dllmap_insert
-mono_domain_assembly_open
-mono_domain_create
-mono_domain_create_appdomain
-mono_domain_finalize
-mono_domain_foreach
-mono_domain_free
-mono_domain_from_appdomain
-mono_domain_get
-mono_domain_get_by_id
-mono_domain_get_friendly_name
-mono_domain_get_id
-mono_domain_has_type_resolve
-mono_domain_is_unloading
-mono_domain_owns_vtable_slot
-mono_domain_set
-mono_domain_set_config
-mono_domain_set_internal
-mono_domain_try_type_resolve
-mono_domain_try_unload
-mono_domain_unload
-mono_environment_exitcode_get
-mono_environment_exitcode_set
-mono_error_cleanup
-mono_error_get_error_code
-mono_error_get_message
-mono_error_init
-mono_error_init_flags
-mono_error_ok
-mono_escape_uri_string
-mono_event_get_add_method
-mono_event_get_flags
-mono_event_get_name
-mono_event_get_object
-mono_event_get_parent
-mono_event_get_raise_method
-mono_event_get_remove_method
-mono_exception_from_name
-mono_exception_from_name_domain
-mono_exception_from_name_msg
-mono_exception_from_name_two_strings
-mono_exception_from_token
-mono_exception_from_token_two_strings
-mono_exception_walk_trace
-mono_field_from_token
-mono_field_full_name
-mono_field_get_data
-mono_field_get_flags
-mono_field_get_name
-mono_field_get_object
-mono_field_get_offset
-mono_field_get_parent
-mono_field_get_type
-mono_field_get_value
-mono_field_get_value_object
-mono_field_set_value
-mono_field_static_get_value
-mono_field_static_set_value
-mono_file_map
-mono_file_map_close
-mono_file_map_fd
-mono_file_map_open
-mono_file_map_size
-mono_file_unmap
-mono_free
-mono_free_bstr
-mono_free_method
-mono_free_verify_list
-mono_g_hash_table_destroy
-mono_g_hash_table_find
-mono_g_hash_table_foreach
-mono_g_hash_table_foreach_remove
-mono_g_hash_table_insert
-mono_g_hash_table_lookup
-mono_g_hash_table_lookup_extended
-mono_g_hash_table_new_type
-mono_g_hash_table_print_stats
-mono_g_hash_table_remove
-mono_g_hash_table_replace
-mono_g_hash_table_size
-mono_gc_collect
-mono_gc_collection_count
-mono_gc_finalize_notify
-mono_gc_get_generation
-mono_gc_get_heap_size
-mono_gc_get_used_size
-mono_gc_invoke_finalizers
-mono_gc_max_generation
-mono_gc_pending_finalizers
-mono_gc_reference_queue_add
-mono_gc_reference_queue_free
-mono_gc_reference_queue_new
-mono_gc_register_finalizer_callbacks
-mono_gc_register_root
-mono_gc_toggleref_add
-mono_gc_toggleref_register_callback
-mono_gc_walk_heap
-mono_gc_wbarrier_arrayref_copy
-mono_gc_wbarrier_generic_nostore
-mono_gc_wbarrier_generic_store
-mono_gc_wbarrier_generic_store_atomic
-mono_gc_wbarrier_object_copy
-mono_gc_wbarrier_set_arrayref
-mono_gc_wbarrier_set_field
-mono_gc_wbarrier_value_copy
-mono_gchandle_free
-mono_gchandle_get_target
-mono_gchandle_new
-mono_gchandle_new_weakref
-mono_get_array_class
-mono_get_boolean_class
-mono_get_byte_class
-mono_get_char_class
-mono_get_config_dir
-mono_get_corlib
-mono_get_dbnull_object
-mono_get_delegate_begin_invoke
-mono_get_delegate_end_invoke
-mono_get_delegate_invoke
-mono_get_double_class
-mono_get_enum_class
-mono_get_exception_appdomain_unloaded
-mono_get_exception_argument
-mono_get_exception_argument_null
-mono_get_exception_argument_out_of_range
-mono_get_exception_arithmetic
-mono_get_exception_array_type_mismatch
-mono_get_exception_bad_image_format
-mono_get_exception_bad_image_format2
-mono_get_exception_cannot_unload_appdomain
-mono_get_exception_class
-mono_get_exception_divide_by_zero
-mono_get_exception_execution_engine
-mono_get_exception_field_access
-mono_get_exception_file_not_found
-mono_get_exception_file_not_found2
-mono_get_exception_index_out_of_range
-mono_get_exception_invalid_cast
-mono_get_exception_invalid_operation
-mono_get_exception_io
-mono_get_exception_method_access
-mono_get_exception_missing_field
-mono_get_exception_missing_method
-mono_get_exception_not_implemented
-mono_get_exception_not_supported
-mono_get_exception_null_reference
-mono_get_exception_out_of_memory
-mono_get_exception_overflow
-mono_get_exception_reflection_type_load
-mono_get_exception_runtime_wrapped
-mono_get_exception_security
-mono_get_exception_serialization
-mono_get_exception_stack_overflow
-mono_get_exception_synchronization_lock
-mono_get_exception_thread_abort
-mono_get_exception_thread_interrupted
-mono_get_exception_thread_state
-mono_get_exception_type_initialization
-mono_get_exception_type_load
-mono_get_inflated_method
-mono_get_int16_class
-mono_get_int32_class
-mono_get_int64_class
-mono_get_intptr_class
-mono_get_machine_config
-mono_get_method
-mono_get_method_constrained
-mono_get_method_full
-mono_get_object_class
-mono_get_root_domain
-mono_get_runtime_build_info
-mono_get_sbyte_class
-mono_get_single_class
-mono_get_string_class
-mono_get_thread_class
-mono_get_uint16_class
-mono_get_uint32_class
-mono_get_uint64_class
-mono_get_uintptr_class
-mono_get_void_class
-mono_guid_to_string
-mono_guid_to_string_minimal
-mono_hazard_pointer_get
-mono_image_add_to_name_cache
-mono_image_addref
-mono_image_close
-mono_image_ensure_section
-mono_image_ensure_section_idx
-mono_image_fixup_vtable
-mono_image_get_assembly
-mono_image_get_entry_point
-mono_image_get_filename
-mono_image_get_guid
-mono_image_get_name
-mono_image_get_public_key
-mono_image_get_resource
-mono_image_get_strong_name
-mono_image_get_table_info
-mono_image_get_table_rows
-mono_image_has_authenticode_entry
-mono_image_init
-mono_image_init_name_cache
-mono_image_is_dynamic
-mono_image_load_file_for_image
-mono_image_load_module
-mono_image_loaded
-mono_image_loaded_by_guid
-mono_image_loaded_by_guid_full
-mono_image_loaded_full
-mono_image_lookup_resource
-mono_image_open
-mono_image_open_from_data
-mono_image_open_from_data_full
-mono_image_open_from_data_with_name
-mono_image_open_full
-mono_image_rva_map
-mono_image_strerror
-mono_image_strong_name_position
-mono_images_cleanup
-mono_images_init
-mono_init
-mono_init_from_assembly
-mono_init_version
-mono_install_assembly_load_hook
-mono_install_assembly_postload_refonly_search_hook
-mono_install_assembly_postload_search_hook
-mono_install_assembly_preload_hook
-mono_install_assembly_refonly_preload_hook
-mono_install_assembly_refonly_search_hook
-mono_install_assembly_search_hook
-mono_install_ftnptr_eh_callback
-mono_install_load_aot_data_hook
-mono_install_runtime_cleanup
-mono_install_unhandled_exception_hook
-mono_is_debugger_attached
-mono_jit_cleanup
-mono_jit_exec
-mono_jit_info_get_code_size
-mono_jit_info_get_code_start
-mono_jit_info_get_method
-mono_jit_info_table_find
-mono_jit_init
-mono_jit_init_version
-mono_jit_parse_options
-mono_jit_set_aot_mode
-mono_jit_set_aot_only
-mono_jit_set_domain
-mono_jit_set_trace_options
-mono_jit_thread_attach
-mono_ldstr
-mono_ldtoken
-mono_lls_find
-mono_lls_get_hazardous_pointer_with_mask
-mono_lls_init
-mono_lls_insert
-mono_lls_remove
-mono_load_remote_field
-mono_load_remote_field_new
-mono_loader_register_module
-mono_lock_free_alloc
-mono_lock_free_allocator_check_consistency
-mono_lock_free_allocator_init_allocator
-mono_lock_free_allocator_init_size_class
-mono_lock_free_free
-mono_lock_free_queue_dequeue
-mono_lock_free_queue_enqueue
-mono_lock_free_queue_init
-mono_lock_free_queue_node_init
-mono_lock_free_queue_node_unpoison
-mono_locks_dump
-mono_lookup_icall_symbol
-mono_lookup_internal_call
-mono_lookup_pinvoke_call
-mono_main
-mono_marshal_string_to_utf16
-mono_md5_final
-mono_md5_get_digest
-mono_md5_get_digest_from_file
-mono_md5_init
-mono_md5_update
-mono_mem_account_register_counters
-mono_mem_account_type_name
-mono_mempool_alloc
-mono_mempool_alloc0
-mono_mempool_contains_addr
-mono_mempool_destroy
-mono_mempool_get_allocated
-mono_mempool_invalidate
-mono_mempool_new
-mono_mempool_new_size
-mono_mempool_stats
-mono_mempool_strdup
-mono_metadata_blob_heap
-mono_metadata_cleanup
-mono_metadata_compute_size
-mono_metadata_custom_attrs_from_index
-mono_metadata_declsec_from_index
-mono_metadata_decode_blob_size
-mono_metadata_decode_row
-mono_metadata_decode_row_col
-mono_metadata_decode_signed_value
-mono_metadata_decode_table_row
-mono_metadata_decode_table_row_col
-mono_metadata_decode_value
-mono_metadata_encode_value
-mono_metadata_events_from_typedef
-mono_metadata_field_info
-mono_metadata_field_info_with_mempool
-mono_metadata_free_array
-mono_metadata_free_inflated_signature
-mono_metadata_free_marshal_spec
-mono_metadata_free_method_signature
-mono_metadata_free_mh
-mono_metadata_free_type
-mono_metadata_generic_class_is_valuetype
-mono_metadata_get_constant_index
-mono_metadata_get_generic_param_row
-mono_metadata_get_inflated_signature
-mono_metadata_get_marshal_info
-mono_metadata_guid_heap
-mono_metadata_implmap_from_method
-mono_metadata_init
-mono_metadata_interfaces_from_typedef
-mono_metadata_load_generic_param_constraints_checked
-mono_metadata_load_generic_params
-mono_metadata_locate
-mono_metadata_locate_token
-mono_metadata_methods_from_event
-mono_metadata_methods_from_property
-mono_metadata_nested_in_typedef
-mono_metadata_nesting_typedef
-mono_metadata_packing_from_typedef
-mono_metadata_parse_array
-mono_metadata_parse_custom_mod
-mono_metadata_parse_field_type
-mono_metadata_parse_marshal_spec
-mono_metadata_parse_method_signature
-mono_metadata_parse_method_signature_full
-mono_metadata_parse_mh
-mono_metadata_parse_mh_full
-mono_metadata_parse_param
-mono_metadata_parse_signature
-mono_metadata_parse_type
-mono_metadata_parse_typedef_or_ref
-mono_metadata_properties_from_typedef
-mono_metadata_signature_alloc
-mono_metadata_signature_dup
-mono_metadata_signature_equal
-mono_metadata_string_heap
-mono_metadata_token_from_dor
-mono_metadata_translate_token_index
-mono_metadata_type_equal
-mono_metadata_type_hash
-mono_metadata_typedef_from_field
-mono_metadata_typedef_from_method
-mono_metadata_user_string
-mono_method_body_get_object
-mono_method_can_access_field
-mono_method_can_access_method
-mono_method_desc_free
-mono_method_desc_from_method
-mono_method_desc_full_match
-mono_method_desc_match
-mono_method_desc_new
-mono_method_desc_search_in_class
-mono_method_desc_search_in_image
-mono_method_full_name
-mono_method_get_class
-mono_method_get_context
-mono_method_get_flags
-mono_method_get_generic_container
-mono_method_get_header
-mono_method_get_header_checked
-mono_method_get_index
-mono_method_get_last_managed
-mono_method_get_marshal_info
-mono_method_get_name
-mono_method_get_object
-mono_method_get_param_names
-mono_method_get_param_token
-mono_method_get_signature
-mono_method_get_signature_full
-mono_method_get_token
-mono_method_get_unmanaged_thunk
-mono_method_has_marshal_info
-mono_method_header_get_clauses
-mono_method_header_get_code
-mono_method_header_get_locals
-mono_method_header_get_num_clauses
-mono_method_print_code
-mono_method_signature
-mono_method_signature_checked
-mono_method_verify
-mono_mlist_alloc
-mono_mlist_append
-mono_mlist_get_data
-mono_mlist_last
-mono_mlist_length
-mono_mlist_next
-mono_mlist_prepend
-mono_mlist_remove_item
-mono_mlist_set_data
-mono_mlist_set_next
-mono_module_file_get_object
-mono_module_get_object
-mono_monitor_enter
-mono_monitor_enter_v4
-mono_monitor_exit
-mono_monitor_try_enter
-mono_mprotect
-mono_native_getrootdir
-mono_native_thread_create
-mono_native_thread_id_equals
-mono_native_thread_id_get
-mono_native_thread_join
-mono_native_thread_set_name
-mono_object_castclass_mbyref
-mono_object_clone
-mono_object_describe
-mono_object_describe_fields
-mono_object_get_class
-mono_object_get_domain
-mono_object_get_size
-mono_object_get_virtual_method
-mono_object_hash
-mono_object_isinst
-mono_object_isinst_mbyref
-mono_object_new
-mono_object_new_alloc_specific
-mono_object_new_fast
-mono_object_new_from_token
-mono_object_new_specific
-mono_object_to_string
-mono_object_unbox
-mono_opcode_name
-mono_opcode_value
-mono_pagesize
-mono_param_get_objects
-mono_parse_default_optimizations
-mono_parse_env_options
-mono_parse_options_from
-mono_path_canonicalize
-mono_path_resolve_symlinks
-mono_pe_file_open
-mono_perfcounter_foreach
-mono_perfcounters_init
-mono_personality
-mono_pmip
-mono_poll
-mono_print_method_from_ip
-mono_print_thread_dump
-mono_print_thread_dump_from_ctx
-mono_print_unhandled_exception
-mono_profiler_call_context_free_buffer
-mono_profiler_call_context_get_argument
-mono_profiler_call_context_get_local
-mono_profiler_call_context_get_result
-mono_profiler_call_context_get_this
-mono_profiler_create
-mono_profiler_enable_allocations
-mono_profiler_enable_call_context_introspection
-mono_profiler_enable_sampling
-mono_profiler_get_coverage_data
-mono_profiler_get_sample_mode
-mono_profiler_install
-mono_profiler_install_gc
-mono_profiler_install_jit_end
-mono_profiler_install_thread
-mono_profiler_load
-mono_profiler_set_assembly_loaded_callback
-mono_profiler_set_assembly_loading_callback
-mono_profiler_set_assembly_unloaded_callback
-mono_profiler_set_assembly_unloading_callback
-mono_profiler_set_call_instrumentation_filter_callback
-mono_profiler_set_class_failed_callback
-mono_profiler_set_class_loaded_callback
-mono_profiler_set_class_loading_callback
-mono_profiler_set_context_loaded_callback
-mono_profiler_set_context_unloaded_callback
-mono_profiler_set_coverage_filter_callback
-mono_profiler_set_domain_loaded_callback
-mono_profiler_set_domain_loading_callback
-mono_profiler_set_domain_name_callback
-mono_profiler_set_domain_unloaded_callback
-mono_profiler_set_domain_unloading_callback
-mono_profiler_set_events
-mono_profiler_set_exception_clause_callback
-mono_profiler_set_exception_throw_callback
-mono_profiler_set_gc_allocation_callback
-mono_profiler_set_gc_event_callback
-mono_profiler_set_gc_finalized_callback
-mono_profiler_set_gc_finalized_object_callback
-mono_profiler_set_gc_finalizing_callback
-mono_profiler_set_gc_finalizing_object_callback
-mono_profiler_set_gc_handle_created_callback
-mono_profiler_set_gc_handle_deleted_callback
-mono_profiler_set_gc_moves_callback
-mono_profiler_set_gc_resize_callback
-mono_profiler_set_gc_roots_callback
-mono_profiler_set_image_failed_callback
-mono_profiler_set_image_loaded_callback
-mono_profiler_set_image_loading_callback
-mono_profiler_set_image_unloaded_callback
-mono_profiler_set_image_unloading_callback
-mono_profiler_set_iomap_report_callback
-mono_profiler_set_jit_begin_callback
-mono_profiler_set_jit_chunk_created_callback
-mono_profiler_set_jit_chunk_destroyed_callback
-mono_profiler_set_jit_code_buffer_callback
-mono_profiler_set_jit_done_callback
-mono_profiler_set_jit_failed_callback
-mono_profiler_set_method_begin_invoke_callback
-mono_profiler_set_method_end_invoke_callback
-mono_profiler_set_method_enter_callback
-mono_profiler_set_method_exception_leave_callback
-mono_profiler_set_method_free_callback
-mono_profiler_set_method_leave_callback
-mono_profiler_set_monitor_acquired_callback
-mono_profiler_set_monitor_contention_callback
-mono_profiler_set_monitor_failed_callback
-mono_profiler_set_runtime_initialized_callback
-mono_profiler_set_runtime_shutdown_begin_callback
-mono_profiler_set_runtime_shutdown_end_callback
-mono_profiler_set_sample_hit_callback
-mono_profiler_set_sample_mode
-mono_profiler_set_thread_name_callback
-mono_profiler_set_thread_started_callback
-mono_profiler_set_thread_stopped_callback
-mono_property_get_flags
-mono_property_get_get_method
-mono_property_get_name
-mono_property_get_object
-mono_property_get_parent
-mono_property_get_set_method
-mono_property_get_value
-mono_property_hash_destroy
-mono_property_hash_insert
-mono_property_hash_lookup
-mono_property_hash_new
-mono_property_hash_remove_object
-mono_property_set_value
-mono_ptr_class_get
-mono_raise_exception
-mono_reflection_assembly_get_assembly
-mono_reflection_free_type_info
-mono_reflection_get_custom_attrs
-mono_reflection_get_custom_attrs_blob
-mono_reflection_get_custom_attrs_by_type
-mono_reflection_get_custom_attrs_data
-mono_reflection_get_custom_attrs_info
-mono_reflection_get_token
-mono_reflection_get_type
-mono_reflection_parse_type
-mono_reflection_type_from_name
-mono_reflection_type_get_type
-mono_register_bundled_assemblies
-mono_register_config_for_assembly
-mono_register_machine_config
-mono_register_symfile_for_assembly
-mono_runtime_class_init
-mono_runtime_cleanup
-mono_runtime_delegate_invoke
-mono_runtime_exec_main
-mono_runtime_exec_managed_code
-mono_runtime_get_main_args
-mono_runtime_init
-mono_runtime_invoke
-mono_runtime_invoke_array
-mono_runtime_is_shutting_down
-mono_runtime_object_init
-mono_runtime_quit
-mono_runtime_resource_check_limit
-mono_runtime_resource_limit
-mono_runtime_resource_set_callback
-mono_runtime_run_main
-mono_runtime_set_main_args
-mono_runtime_set_shutting_down
-mono_security_core_clr_get_options
-mono_security_core_clr_require_elevated_permissions
-mono_security_core_clr_set_options
-mono_security_enable_core_clr
-mono_security_set_core_clr_platform_callback
-mono_set_allocator_vtable
-mono_set_assemblies_path
-mono_set_break_policy
-mono_set_config_dir
-mono_set_crash_chaining
-mono_set_defaults
-mono_set_dirs
-mono_set_is_debugger_attached
-mono_set_rootdir
-mono_set_signal_chaining
-mono_sha1_final
-mono_sha1_get_digest
-mono_sha1_get_digest_from_file
-mono_sha1_init
-mono_sha1_update
-mono_shared_area
-mono_shared_area_for_pid
-mono_shared_area_instances
-mono_shared_area_remove
-mono_shared_area_unload
-mono_signature_explicit_this
-mono_signature_full_name
-mono_signature_get_call_conv
-mono_signature_get_desc
-mono_signature_get_param_count
-mono_signature_get_params
-mono_signature_get_return_type
-mono_signature_hash
-mono_signature_is_instance
-mono_signature_param_is_out
-mono_signature_vararg_start
-mono_signbit_double
-mono_signbit_float
-mono_stack_walk
-mono_stack_walk_async_safe
-mono_stack_walk_no_il
-mono_store_remote_field
-mono_store_remote_field_new
-mono_string_chars
-mono_string_empty
-mono_string_empty_wrapper
-mono_string_equal
-mono_string_from_bstr
-mono_string_from_utf16
-mono_string_from_utf32
-mono_string_hash
-mono_string_intern
-mono_string_is_interned
-mono_string_length
-mono_string_new
-mono_string_new_len
-mono_string_new_size
-mono_string_new_utf16
-mono_string_new_utf32
-mono_string_new_wrapper
-mono_string_to_utf16
-mono_string_to_utf32
-mono_string_to_utf8
-mono_string_to_utf8_checked
-mono_stringify_assembly_name
-mono_table_info_get_rows
-mono_thread_attach
-mono_thread_cleanup
-mono_thread_create
-mono_thread_current
-mono_thread_detach
-mono_thread_detach_if_exiting
-mono_thread_exit
-mono_thread_get_main
-mono_thread_get_managed_id
-mono_thread_get_name_utf8
-mono_thread_get_undeniable_exception
-mono_thread_hazardous_queue_free
-mono_thread_hazardous_try_free
-mono_thread_hazardous_try_free_all
-mono_thread_info_detach
-mono_thread_info_get_small_id
-mono_thread_info_register_small_id
-mono_thread_info_yield
-mono_thread_init
-mono_thread_is_foreign
-mono_thread_manage
-mono_thread_new_init
-mono_thread_set_main
-mono_thread_set_manage_callback
-mono_thread_stop
-mono_threads_assert_gc_safe_region
-mono_threads_assert_gc_unsafe_region
-mono_threads_attach_coop
-mono_threads_attach_tools_thread
-mono_threads_detach_coop
-mono_threads_enter_gc_safe_region
-mono_threads_enter_gc_safe_region_unbalanced
-mono_threads_enter_gc_unsafe_region
-mono_threads_enter_gc_unsafe_region_unbalanced
-mono_threads_exit_gc_safe_region
-mono_threads_exit_gc_safe_region_unbalanced
-mono_threads_exit_gc_unsafe_region
-mono_threads_exit_gc_unsafe_region_unbalanced
-mono_threads_get_default_stacksize
-mono_threads_request_thread_dump
-mono_threads_set_default_stacksize
-mono_trace_set_level_string
-mono_trace_set_log_handler
-mono_trace_set_mask_string
-mono_trace_set_print_handler
-mono_trace_set_printerr_handler
-mono_tracev_inner
-mono_type_create_from_typespec
-mono_type_full_name
-mono_type_generic_inst_is_valuetype
-mono_type_get_array_type
-mono_type_get_class
-mono_type_get_desc
-mono_type_get_modifiers
-mono_type_get_name
-mono_type_get_object
-mono_type_get_ptr_type
-mono_type_get_signature
-mono_type_get_type
-mono_type_get_underlying_type
-mono_type_is_byref
-mono_type_is_pointer
-mono_type_is_primitive
-mono_type_is_reference
-mono_type_is_struct
-mono_type_is_valid_enum_basetype
-mono_type_is_void
-mono_type_size
-mono_type_stack_size
-mono_type_to_unmanaged
-mono_unhandled_exception
-mono_unicode_from_external
-mono_unicode_to_external
-mono_upgrade_remote_class_wrapper
-mono_utf8_from_external
-mono_utf8_validate_and_len
-mono_utf8_validate_and_len_with_bounds
-mono_valloc
-mono_valloc_aligned
-mono_valloc_granule
-mono_value_box
-mono_value_copy
-mono_value_copy_array
-mono_value_describe_fields
-mono_verify_corlib
-mono_vfree
-mono_vtable_get_static_field_data
-mono_win32_compat_CopyMemory
-mono_win32_compat_FillMemory
-mono_win32_compat_MoveMemory
-mono_win32_compat_ZeroMemory
index 5b77ed2c27501c4567552db9489985e20a5a6ec7..c67bad9f407c63166e4a540fa443655d00508800 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="UserMacros">
     <!-- Change this to custom build tree location to enable out of source tree builds, example c:/mono-build/ -->
@@ -42,7 +42,6 @@
     <SGEN_DEFINES>HAVE_SGEN_GC;HAVE_MOVING_COLLECTOR;HAVE_WRITE_BARRIERS</SGEN_DEFINES>
     <GC_DEFINES>$(SGEN_DEFINES)</GC_DEFINES>
     <GC_LIB>libgcmonosgen.lib</GC_LIB>
-    <MONO_DEF>monosgen.def</MONO_DEF>
     <MONO_TARGET_SUFFIX Condition="'$(MONO_USE_TARGET_SUFFIX)'=='true'">-sgen</MONO_TARGET_SUFFIX>
     <MONO_BUILD_DIR_PREFIX Condition="'$(MONO_USE_SEPARATE_BUILD_DIR)'=='true'">$(MONO_BUILD_DIR_PREFIX)sgen/</MONO_BUILD_DIR_PREFIX>
   </PropertyGroup>
     <BOEHM_DEFINES>HAVE_BOEHM_GC</BOEHM_DEFINES>
     <GC_DEFINES>$(BOEHM_DEFINES)</GC_DEFINES>
     <GC_LIB>libgc.lib</GC_LIB>
-    <MONO_DEF>mono.def</MONO_DEF>
     <MONO_TARGET_SUFFIX Condition="'$(MONO_USE_TARGET_SUFFIX)'=='true'">-boehm</MONO_TARGET_SUFFIX>
     <MONO_BUILD_DIR_PREFIX Condition="'$(MONO_USE_SEPARATE_BUILD_DIR)'=='true'">$(MONO_BUILD_DIR_PREFIX)boehm/</MONO_BUILD_DIR_PREFIX>
   </PropertyGroup>
   <PropertyGroup Label="Static-Mono-Libraries">
-    <MONO_RUNTIME_LIBS>libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;$(GC_LIB)</MONO_RUNTIME_LIBS>
-    <MONO_STATIC_LIBMONO_LIB>libmono-static$(MONO_TARGET_SUFFIX).lib;$(MONO_RUNTIME_LIBS)</MONO_STATIC_LIBMONO_LIB>
+    <MONO_RUNTIME_LIBS>libmonoutils.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmini$(MONO_TARGET_SUFFIX).lib;$(GC_LIB)</MONO_RUNTIME_LIBS>
+    <MONO_STATIC_LIBMONO_LIB>libmono-static$(MONO_TARGET_SUFFIX).lib</MONO_STATIC_LIBMONO_LIB>
     <MONO_DYNAMIC_LIBMONO_LIB>mono-2.0$(MONO_TARGET_SUFFIX).lib</MONO_DYNAMIC_LIBMONO_LIB>
   </PropertyGroup>
   <PropertyGroup Label="Static-libmono-Library" Condition="$(MONO_USE_STATIC_LIBMONO)=='true'">
     <MONO_LIBMONO_LIB>$(MONO_STATIC_LIBMONO_LIB)</MONO_LIBMONO_LIB>
   </PropertyGroup>
   <PropertyGroup Label="Dynamic-libmono-Library" Condition="$(MONO_USE_STATIC_LIBMONO)!='true'">
-    <MONO_LIBMONO_LIB>$(MONO_DYNAMIC_LIBMONO_LIB)</MONO_LIBMONO_LIB>
+    <MONO_LIBMONO_LIB>eglib.lib;$(MONO_DYNAMIC_LIBMONO_LIB)</MONO_LIBMONO_LIB>
   </PropertyGroup>
   <PropertyGroup Label="MonoProfiler">
     <VTUNE_INCLUDE_DIR>$(ProgramFiles)/Intel/VTune Amplifier XE 2013/include</VTUNE_INCLUDE_DIR>
       <AdditionalDependencies>Mswsock.lib;ws2_32.lib;ole32.lib;oleaut32.lib;psapi.lib;version.lib;advapi32.lib;winmm.lib;kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(MONO_BUILD_DIR_PREFIX)$(Platform)/lib/$(Configuration)</AdditionalLibraryDirectories>
     </Link>
+    <Lib>
+      <AdditionalLibraryDirectories>$(MONO_BUILD_DIR_PREFIX)$(Platform)/lib/$(Configuration)</AdditionalLibraryDirectories>
+    </Lib>
   </ItemDefinitionGroup>
-</Project>
+</Project>
\ No newline at end of file
index 4a8ecd3326e2a094e6fad1b47285b8ff37476af3..ac103fb6ea69bd2a7810aac5a8a936fea817e644 100644 (file)
@@ -16,34 +16,21 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcxpro
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcxproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {EB56000B-C80B-4E8B-908D-D84D31B517D3} = {EB56000B-C80B-4E8B-908D-D84D31B517D3}\r
-               {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {C36612BD-22D3-4B95-85E2-7FDC4FC5D739}\r
-               {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}\r
-               {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
-               {B7098DFA-31E6-4006-8A15-1C9A4E925149} = {B7098DFA-31E6-4006-8A15-1C9A4E925149}\r
-       EndProjectSection\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcxproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcxproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcxproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
@@ -55,28 +42,24 @@ EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcxproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcxproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcxproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcxproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
@@ -88,14 +71,12 @@ EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcxproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcxproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
@@ -115,7 +96,6 @@ EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-vtune", "profiler-vtune.vcxproj", "{F51017F9-B7FB-4F87-B7B5-12799D965783}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {92AE7622-5F58-4234-9A26-9EC71876B3F4} = {92AE7622-5F58-4234-9A26-9EC71876B3F4}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
        EndProjectSection\r
 EndProject\r
@@ -147,7 +127,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "build-all", "build-all.vcxp
                {37F50E5A-4818-46CF-81FE-4BB06DE5D42E} = {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}\r
                {6FDE4E5E-57D0-432F-A987-6C226A7827E4} = {6FDE4E5E-57D0-432F-A987-6C226A7827E4}\r
                {C2EB666E-9146-4B7A-85F6-25F9EA313770} = {C2EB666E-9146-4B7A-85F6-25F9EA313770}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
                {C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {C36612BD-22D3-4B95-85E2-7FDC4FC5D739}\r
                {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}\r
                {CA2A69D6-3B9D-45A5-8BF7-4E242E683122} = {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}\r
@@ -212,6 +191,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono-nunit-test", "mono-nun
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmonodac", "libmonodac.vcxproj", "{DC50997D-8A0D-4EB6-849B-9D7FBC39CE53}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmini", "libmini.vcxproj", "{88D2EB79-592D-45F8-B849-AE021C1D983A}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono-dynamic", "libmono-dynamic.vcxproj", "{675F4175-FFB1-480D-AD36-F397578844D4}"\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Debug|Win32 = Debug|Win32\r
@@ -228,14 +211,6 @@ Global
                {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.Build.0 = Release|Win32\r
                {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|x64\r
                {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.Build.0 = Release|x64\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.Build.0 = Debug|Win32\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|x64\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.Build.0 = Debug|x64\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.ActiveCfg = Release|Win32\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.Build.0 = Release|Win32\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|x64\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.Build.0 = Release|x64\r
                {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|Win32.Build.0 = Debug|Win32\r
                {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|x64\r
@@ -420,13 +395,28 @@ Global
                {DC50997D-8A0D-4EB6-849B-9D7FBC39CE53}.Release|Win32.ActiveCfg = Release|x64\r
                {DC50997D-8A0D-4EB6-849B-9D7FBC39CE53}.Release|x64.ActiveCfg = Release|x64\r
                {DC50997D-8A0D-4EB6-849B-9D7FBC39CE53}.Release|x64.Build.0 = Release|x64\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Debug|Win32.Build.0 = Debug|Win32\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Debug|x64.ActiveCfg = Debug|x64\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Debug|x64.Build.0 = Debug|x64\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Release|Win32.ActiveCfg = Release|Win32\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Release|Win32.Build.0 = Release|Win32\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Release|x64.ActiveCfg = Release|x64\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A}.Release|x64.Build.0 = Release|x64\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Debug|Win32.Build.0 = Debug|Win32\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Debug|x64.ActiveCfg = Debug|x64\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Debug|x64.Build.0 = Debug|x64\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Release|Win32.ActiveCfg = Release|Win32\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Release|Win32.Build.0 = Release|Win32\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Release|x64.ActiveCfg = Release|x64\r
+               {675F4175-FFB1-480D-AD36-F397578844D4}.Release|x64.Build.0 = Release|x64\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
        EndGlobalSection\r
        GlobalSection(NestedProjects) = preSolution\r
                {B7098DFA-31E6-4006-8A15-1C9A4E925149} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {DE3617B4-17A8-4E5F-A00F-BA43D956881F}\r
                {C5639B3F-288A-4A4B-A4A5-C0D85834221D} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}\r
                {6FDE4E5E-57D0-432F-A987-6C226A7827E4} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}\r
                {A0EDDCD9-940F-432C-A28F-7EF322437D79} = {DE3617B4-17A8-4E5F-A00F-BA43D956881F}\r
@@ -457,11 +447,13 @@ Global
                {7BECCFA0-28A0-4995-9856-558560F720E6} = {A0068765-334B-414C-8E21-8376CD2EC9F6}\r
                {0046B994-40A8-4C64-AC9D-429DC9177B54} = {A0068765-334B-414C-8E21-8376CD2EC9F6}\r
                {DC50997D-8A0D-4EB6-849B-9D7FBC39CE53} = {DE3617B4-17A8-4E5F-A00F-BA43D956881F}\r
+               {88D2EB79-592D-45F8-B849-AE021C1D983A} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}\r
+               {675F4175-FFB1-480D-AD36-F397578844D4} = {DE3617B4-17A8-4E5F-A00F-BA43D956881F}\r
        EndGlobalSection\r
        GlobalSection(ExtensibilityGlobals) = postSolution\r
-               AMDCaPersistentConfig = Debug|Win32\r
-               AMDCaPersistentStartup = mono\r
                AMDCaProjectFile = C:\Users\Owner\Development\monogit\mono\msvc\CodeAnalyst\mono.caw\r
+               AMDCaPersistentStartup = mono\r
+               AMDCaPersistentConfig = Debug|Win32\r
        EndGlobalSection\r
        GlobalSection(DPCodeReviewSolutionGUID) = preSolution\r
                DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}\r
index f277f33258b4902a3d14f6249a026c24501ee912..0c3eba152b2f103c6e1cb4a9536d71333c4d90c6 100644 (file)
     <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)'=='Release|Win32'">\r
-    <LinkIncremental>false</LinkIncremental>\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <LinkIncremental>false</LinkIncremental>\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_LIBGC_SOURCE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <WarningLevel>Level3</WarningLevel>\r
     </ClCompile>\r
     <ProjectReference />\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_LIBGC_SOURCE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+      <WarningLevel>Level3</WarningLevel>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
       <ShowProgress>\r
       </ShowProgress>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_LIBGC_SOURCE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_LIBGC_SOURCE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-dynamic.vcxproj">\r
+      <Project>{675f4175-ffb1-480d-ad36-f397578844d4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
index 7f14c93115fca10fa728f62d78fb86f5afdaa9de..9f0bb69efb9528ed970e44f11e764277d6b398e2 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_RUNTIME_LIBS);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <StringPooling>true</StringPooling>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_RUNTIME_LIBS);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_RUNTIME_LIBS);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <ShowProgress>NotSet</ShowProgress>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <StringPooling>true</StringPooling>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_RUNTIME_LIBS);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\mono\dis\util.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="eglib.vcxproj">\r
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</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="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-static.vcxproj">\r
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0772}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
index ce3658dd42cb5e0e5e8e514ac538c4dd5e076eca..022665893f8cc7978b55e2682690d005926f6477 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <AdditionalDependencies>eglib.lib;$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-dynamic.vcxproj">\r
+      <Project>{675f4175-ffb1-480d-ad36-f397578844d4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
diff --git a/msvc/monoposixhelper.targets b/msvc/monoposixhelper.targets
new file mode 100644 (file)
index 0000000..6d5d9c1
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(MonoSourceLocation)\support\adler32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\compress.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\crc32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\deflate.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\errno.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\fcntl.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\infback.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\inffast.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\inflate.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\inftrees.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\map.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\ioapi.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\iowin32.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\minizip.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\unzip.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\zip.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\signal.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\stdio.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\stdlib.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\string.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\sys-stat.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\trees.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\uncompr.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\zlib-helper.c" />
+    <ClCompile Include="$(MonoSourceLocation)\support\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="$(MonoSourceLocation)\support\inffast.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\crc32.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\deflate.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\inffixed.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\inflate.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\inftrees.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\map.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\crypt.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\ioapi.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\iowin32.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\unzip.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\zip.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\mph.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\trees.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\zconf.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\zlib.h" />
+    <ClInclude Include="$(MonoSourceLocation)\support\zutil.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="monoposixhelper.def" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/monoposixhelper.targets.filters b/msvc/monoposixhelper.targets.filters
new file mode 100644 (file)
index 0000000..e82ea14
--- /dev/null
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(MonoSourceLocation)\support\adler32.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\compress.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\crc32.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\deflate.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\errno.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\infback.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\inffast.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\inflate.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\inftrees.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\map.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\signal.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\stdio.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\stdlib.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\string.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\trees.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\uncompr.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\zlib-helper.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\zutil.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\iowin32.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\minizip.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\unzip.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\zip.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\minizip\ioapi.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\fcntl.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+    <ClCompile Include="$(MonoSourceLocation)\support\sys-stat.c">
+      <Filter>Source Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="$(MonoSourceLocation)\support\crc32.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\deflate.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\inffast.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\inffixed.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\inflate.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\inftrees.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\map.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\mph.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\trees.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\zconf.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\zutil.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\crypt.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\unzip.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\iowin32.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\zip.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\zlib.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+    <ClInclude Include="$(MonoSourceLocation)\support\minizip\ioapi.h">
+      <Filter>Header Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="monoposixhelper.def">
+      <Filter>Resource Files$(MonoPosixHelperFilterSubFolder)</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup Condition="'$(MonoPosixHelperFilterSubFolder)'!=''">
+    <Filter Include="Header Files$(MonoPosixHelperFilterSubFolder)">
+      <UniqueIdentifier>{BFBB15BB-C843-4A56-8909-B832B33FED9B}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resource Files$(MonoPosixHelperFilterSubFolder)">
+      <UniqueIdentifier>{C024824E-DFC4-4A50-AA57-AA7F1B4B014E}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files$(MonoPosixHelperFilterSubFolder)">
+      <UniqueIdentifier>{E91A4E9A-3F86-4412-BBA5-8C2F3C243845}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index 8ea0b2ddbb4e44ac7e0513920b9921606f4aa7be..9d026fc835be228ac5ef7185e26d39eff0b08faf 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MonoPosixHelper</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MonoPosixHelper</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MonoPosixHelper</TargetName>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_DIR)/support;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
       <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
     </Link>\r
     <ProjectReference>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>_DEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_DIR)/support;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
       <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_DIR)/support;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
       <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
     </Link>\r
     <ProjectReference>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>NDEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(MONO_DIR)/support;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
       <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <ImportLibrary>$(MONO_BUILD_DIR_PREFIX)$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
     </Link>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
   </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\support\adler32.c" />\r
-    <ClCompile Include="..\support\compress.c" />\r
-    <ClCompile Include="..\support\crc32.c" />\r
-    <ClCompile Include="..\support\deflate.c" />\r
-    <ClCompile Include="..\support\errno.c" />\r
-    <ClCompile Include="..\support\fcntl.c" />\r
-    <ClCompile Include="..\support\infback.c" />\r
-    <ClCompile Include="..\support\inffast.c" />\r
-    <ClCompile Include="..\support\inflate.c" />\r
-    <ClCompile Include="..\support\inftrees.c" />\r
-    <ClCompile Include="..\support\map.c" />\r
-    <ClCompile Include="..\support\minizip\ioapi.c" />\r
-    <ClCompile Include="..\support\minizip\iowin32.c" />\r
-    <ClCompile Include="..\support\minizip\minizip.c" />\r
-    <ClCompile Include="..\support\minizip\unzip.c" />\r
-    <ClCompile Include="..\support\minizip\zip.c" />\r
-    <ClCompile Include="..\support\signal.c" />\r
-    <ClCompile Include="..\support\stdio.c" />\r
-    <ClCompile Include="..\support\stdlib.c" />\r
-    <ClCompile Include="..\support\string.c" />\r
-    <ClCompile Include="..\support\sys-stat.c" />\r
-    <ClCompile Include="..\support\trees.c" />\r
-    <ClCompile Include="..\support\uncompr.c" />\r
-    <ClCompile Include="..\support\zlib-helper.c" />\r
-    <ClCompile Include="..\support\zutil.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\support\inffast.h" />\r
-    <ClInclude Include="..\support\crc32.h" />\r
-    <ClInclude Include="..\support\deflate.h" />\r
-    <ClInclude Include="..\support\inffixed.h" />\r
-    <ClInclude Include="..\support\inflate.h" />\r
-    <ClInclude Include="..\support\inftrees.h" />\r
-    <ClInclude Include="..\support\map.h" />\r
-    <ClInclude Include="..\support\minizip\crypt.h" />\r
-    <ClInclude Include="..\support\minizip\ioapi.h" />\r
-    <ClInclude Include="..\support\minizip\iowin32.h" />\r
-    <ClInclude Include="..\support\minizip\unzip.h" />\r
-    <ClInclude Include="..\support\minizip\zip.h" />\r
-    <ClInclude Include="..\support\mph.h" />\r
-    <ClInclude Include="..\support\trees.h" />\r
-    <ClInclude Include="..\support\zconf.h" />\r
-    <ClInclude Include="..\support\zlib.h" />\r
-    <ClInclude Include="..\support\zutil.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="monoposixhelper.def" />\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
+  <Import Project="monoposixhelper.targets" />\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
index 9ca88289700e1c08316cc82c51967137fc1bd48b..9d1aeac6764113d3668fe6d24c6ce0f4c286c9eb 100644 (file)
@@ -1,135 +1,6 @@
 ï»¿<?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="..\support\adler32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\compress.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\crc32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\deflate.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\errno.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\infback.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\inffast.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\inflate.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\inftrees.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\map.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\signal.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\stdio.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\stdlib.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\string.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\trees.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\uncompr.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\zlib-helper.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\zutil.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\minizip\iowin32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\minizip\minizip.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\minizip\unzip.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\minizip\zip.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\minizip\ioapi.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\fcntl.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\support\sys-stat.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\support\crc32.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\deflate.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\inffast.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\inffixed.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\inflate.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\inftrees.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\map.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\mph.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\trees.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\zconf.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\zutil.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\minizip\crypt.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\minizip\unzip.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\minizip\iowin32.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\minizip\zip.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\zlib.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-    <ClInclude Include="..\support\minizip\ioapi.h">\r
-      <Filter>Header Files</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
+  <Import Project="monoposixhelper.targets.filters" />\r
   <ItemGroup>\r
     <Filter Include="Header Files">\r
       <UniqueIdentifier>{45dae598-72bc-4d0e-9cba-004f84c718c0}</UniqueIdentifier>\r
       <UniqueIdentifier>{2835d7d3-cd1c-4f3c-8783-d2413b0b1ae2}</UniqueIdentifier>\r
     </Filter>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="monoposixhelper.def">\r
-      <Filter>Resource Files</Filter>\r
-    </None>\r
-  </ItemGroup>\r
 </Project>
\ No newline at end of file
diff --git a/msvc/monosgen.def b/msvc/monosgen.def
deleted file mode 100644 (file)
index 5e64857..0000000
+++ /dev/null
@@ -1,987 +0,0 @@
-; file generated by create-windef.pl
-EXPORTS
-MonoFixupCorEE
-mono_add_internal_call
-mono_aot_register_module
-mono_array_addr_with_size
-mono_array_class_get
-mono_array_clone
-mono_array_element_size
-mono_array_length
-mono_array_new
-mono_array_new_full
-mono_array_new_specific
-mono_assemblies_cleanup
-mono_assemblies_init
-mono_assembly_addref
-mono_assembly_close
-mono_assembly_fill_assembly_name
-mono_assembly_foreach
-mono_assembly_get_assemblyref
-mono_assembly_get_image
-mono_assembly_get_main
-mono_assembly_get_name
-mono_assembly_get_object
-mono_assembly_getrootdir
-mono_assembly_invoke_load_hook
-mono_assembly_invoke_search_hook
-mono_assembly_load
-mono_assembly_load_from
-mono_assembly_load_from_full
-mono_assembly_load_full
-mono_assembly_load_module
-mono_assembly_load_module_checked
-mono_assembly_load_reference
-mono_assembly_load_references
-mono_assembly_load_with_partial_name
-mono_assembly_loaded
-mono_assembly_loaded_full
-mono_assembly_name_free
-mono_assembly_name_get_culture
-mono_assembly_name_get_name
-mono_assembly_name_get_pubkeytoken
-mono_assembly_name_get_version
-mono_assembly_name_new
-mono_assembly_names_equal
-mono_assembly_open
-mono_assembly_open_full
-mono_assembly_set_main
-mono_assembly_setrootdir
-mono_bitset_alloc_size
-mono_bitset_clear
-mono_bitset_clear_all
-mono_bitset_clone
-mono_bitset_copyto
-mono_bitset_count
-mono_bitset_equal
-mono_bitset_find_first
-mono_bitset_find_first_unset
-mono_bitset_find_last
-mono_bitset_find_start
-mono_bitset_foreach
-mono_bitset_free
-mono_bitset_intersection
-mono_bitset_intersection_2
-mono_bitset_invert
-mono_bitset_mem_new
-mono_bitset_new
-mono_bitset_set
-mono_bitset_set_all
-mono_bitset_size
-mono_bitset_sub
-mono_bitset_test
-mono_bitset_test_bulk
-mono_bitset_union
-mono_bounded_array_class_get
-mono_breakpoint_clean_code
-mono_check_corlib_version
-mono_class_array_element_size
-mono_class_data_size
-mono_class_describe_statics
-mono_class_enum_basetype
-mono_class_from_generic_parameter
-mono_class_from_mono_type
-mono_class_from_name
-mono_class_from_name_case
-mono_class_from_typeref
-mono_class_from_typeref_checked
-mono_class_get
-mono_class_get_byref_type
-mono_class_get_context
-mono_class_get_element_class
-mono_class_get_event_token
-mono_class_get_events
-mono_class_get_field
-mono_class_get_field_from_name
-mono_class_get_field_token
-mono_class_get_fields
-mono_class_get_flags
-mono_class_get_full
-mono_class_get_image
-mono_class_get_interfaces
-mono_class_get_method_from_name
-mono_class_get_method_from_name_flags
-mono_class_get_methods
-mono_class_get_name
-mono_class_get_namespace
-mono_class_get_nested_types
-mono_class_get_nesting_type
-mono_class_get_parent
-mono_class_get_properties
-mono_class_get_property_from_name
-mono_class_get_property_token
-mono_class_get_rank
-mono_class_get_type
-mono_class_get_type_token
-mono_class_implements_interface
-mono_class_inflate_generic_method
-mono_class_inflate_generic_type
-mono_class_init
-mono_class_instance_size
-mono_class_interface_offset
-mono_class_is_assignable_from
-mono_class_is_delegate
-mono_class_is_enum
-mono_class_is_subclass_of
-mono_class_is_valid_enum
-mono_class_is_valuetype
-mono_class_min_align
-mono_class_name_from_token
-mono_class_num_events
-mono_class_num_fields
-mono_class_num_methods
-mono_class_num_properties
-mono_class_value_size
-mono_class_vtable
-mono_cli_rva_image_map
-mono_code_manager_cleanup
-mono_code_manager_commit
-mono_code_manager_destroy
-mono_code_manager_init
-mono_code_manager_install_callbacks
-mono_code_manager_invalidate
-mono_code_manager_new
-mono_code_manager_new_dynamic
-mono_code_manager_reserve
-mono_code_manager_reserve_align
-mono_code_manager_set_read_only
-mono_code_manager_size
-mono_compile_method
-mono_conc_hashtable_destroy
-mono_conc_hashtable_foreach
-mono_conc_hashtable_foreach_steal
-mono_conc_hashtable_insert
-mono_conc_hashtable_lookup
-mono_conc_hashtable_new
-mono_conc_hashtable_new_full
-mono_conc_hashtable_remove
-mono_config_cleanup
-mono_config_for_assembly
-mono_config_get_cpu
-mono_config_get_os
-mono_config_get_wordsize
-mono_config_is_server_mode
-mono_config_parse
-mono_config_parse_memory
-mono_config_set_server_mode
-mono_config_string_for_assembly_file
-mono_context_get
-mono_context_get_desc
-mono_context_get_domain_id
-mono_context_get_id
-mono_context_init
-mono_context_set
-mono_counter_get_name
-mono_counter_get_section
-mono_counter_get_size
-mono_counter_get_type
-mono_counter_get_unit
-mono_counter_get_variance
-mono_counters_cleanup
-mono_counters_dump
-mono_counters_enable
-mono_counters_foreach
-mono_counters_init
-mono_counters_on_register
-mono_counters_register
-mono_counters_register_with_size
-mono_counters_sample
-mono_cpu_count
-mono_custom_attrs_construct
-mono_custom_attrs_free
-mono_custom_attrs_from_assembly
-mono_custom_attrs_from_class
-mono_custom_attrs_from_event
-mono_custom_attrs_from_field
-mono_custom_attrs_from_index
-mono_custom_attrs_from_method
-mono_custom_attrs_from_param
-mono_custom_attrs_from_property
-mono_custom_attrs_get_attr
-mono_custom_attrs_has_attr
-mono_debug_add_delegate_trampoline
-mono_debug_add_method
-mono_debug_cleanup
-mono_debug_close_image
-mono_debug_close_mono_symbol_file
-mono_debug_domain_create
-mono_debug_domain_unload
-mono_debug_enabled
-mono_debug_find_method
-mono_debug_free_locals
-mono_debug_free_method_jit_info
-mono_debug_free_source_location
-mono_debug_il_offset_from_address
-mono_debug_init
-mono_debug_lookup_locals
-mono_debug_lookup_method
-mono_debug_lookup_method_addresses
-mono_debug_lookup_source_location
-mono_debug_open_image_from_memory
-mono_debug_open_mono_symbols
-mono_debug_print_stack_frame
-mono_debug_print_vars
-mono_debug_remove_method
-mono_debug_symfile_free_location
-mono_debug_symfile_is_loaded
-mono_debug_symfile_lookup_locals
-mono_debug_symfile_lookup_location
-mono_debug_symfile_lookup_method
-mono_debugger_agent_parse_options
-mono_debugger_agent_register_transport
-mono_debugger_agent_transport_handshake
-mono_debugger_insert_breakpoint
-mono_debugger_method_has_breakpoint
-mono_debugger_run_finally
-mono_declsec_flags_from_assembly
-mono_declsec_flags_from_class
-mono_declsec_flags_from_method
-mono_declsec_get_assembly_action
-mono_declsec_get_class_action
-mono_declsec_get_demands
-mono_declsec_get_inheritdemands_class
-mono_declsec_get_inheritdemands_method
-mono_declsec_get_linkdemands
-mono_declsec_get_method_action
-mono_digest_get_public_token
-mono_disasm_code
-mono_disasm_code_one
-mono_dl_fallback_register
-mono_dl_fallback_unregister
-mono_dl_open
-mono_dllmap_insert
-mono_domain_assembly_open
-mono_domain_create
-mono_domain_create_appdomain
-mono_domain_finalize
-mono_domain_foreach
-mono_domain_free
-mono_domain_from_appdomain
-mono_domain_get
-mono_domain_get_by_id
-mono_domain_get_friendly_name
-mono_domain_get_id
-mono_domain_has_type_resolve
-mono_domain_is_unloading
-mono_domain_owns_vtable_slot
-mono_domain_set
-mono_domain_set_config
-mono_domain_set_internal
-mono_domain_try_type_resolve
-mono_domain_try_unload
-mono_domain_unload
-mono_environment_exitcode_get
-mono_environment_exitcode_set
-mono_error_cleanup
-mono_error_get_error_code
-mono_error_get_message
-mono_error_init
-mono_error_init_flags
-mono_error_ok
-mono_escape_uri_string
-mono_event_get_add_method
-mono_event_get_flags
-mono_event_get_name
-mono_event_get_object
-mono_event_get_parent
-mono_event_get_raise_method
-mono_event_get_remove_method
-mono_exception_from_name
-mono_exception_from_name_domain
-mono_exception_from_name_msg
-mono_exception_from_name_two_strings
-mono_exception_from_token
-mono_exception_from_token_two_strings
-mono_exception_walk_trace
-mono_field_from_token
-mono_field_full_name
-mono_field_get_data
-mono_field_get_flags
-mono_field_get_name
-mono_field_get_object
-mono_field_get_offset
-mono_field_get_parent
-mono_field_get_type
-mono_field_get_value
-mono_field_get_value_object
-mono_field_set_value
-mono_field_static_get_value
-mono_field_static_set_value
-mono_file_map
-mono_file_map_close
-mono_file_map_fd
-mono_file_map_open
-mono_file_map_size
-mono_file_unmap
-mono_free
-mono_free_bstr
-mono_free_method
-mono_free_verify_list
-mono_g_hash_table_destroy
-mono_g_hash_table_find
-mono_g_hash_table_foreach
-mono_g_hash_table_foreach_remove
-mono_g_hash_table_insert
-mono_g_hash_table_lookup
-mono_g_hash_table_lookup_extended
-mono_g_hash_table_new_type
-mono_g_hash_table_print_stats
-mono_g_hash_table_remove
-mono_g_hash_table_replace
-mono_g_hash_table_size
-mono_gc_collect
-mono_gc_collection_count
-mono_gc_finalize_notify
-mono_gc_get_generation
-mono_gc_get_heap_size
-mono_gc_get_used_size
-mono_gc_invoke_finalizers
-mono_gc_max_generation
-mono_gc_pending_finalizers
-mono_gc_reference_queue_add
-mono_gc_reference_queue_free
-mono_gc_reference_queue_new
-mono_gc_register_bridge_callbacks
-mono_gc_register_finalizer_callbacks
-mono_gc_register_root
-mono_gc_toggleref_add
-mono_gc_toggleref_register_callback
-mono_gc_wait_for_bridge_processing
-mono_gc_walk_heap
-mono_gc_wbarrier_arrayref_copy
-mono_gc_wbarrier_generic_nostore
-mono_gc_wbarrier_generic_store
-mono_gc_wbarrier_generic_store_atomic
-mono_gc_wbarrier_object_copy
-mono_gc_wbarrier_set_arrayref
-mono_gc_wbarrier_set_field
-mono_gc_wbarrier_value_copy
-mono_gchandle_free
-mono_gchandle_get_target
-mono_gchandle_new
-mono_gchandle_new_weakref
-mono_get_array_class
-mono_get_boolean_class
-mono_get_byte_class
-mono_get_char_class
-mono_get_config_dir
-mono_get_corlib
-mono_get_dbnull_object
-mono_get_delegate_begin_invoke
-mono_get_delegate_end_invoke
-mono_get_delegate_invoke
-mono_get_double_class
-mono_get_enum_class
-mono_get_exception_appdomain_unloaded
-mono_get_exception_argument
-mono_get_exception_argument_null
-mono_get_exception_argument_out_of_range
-mono_get_exception_arithmetic
-mono_get_exception_array_type_mismatch
-mono_get_exception_bad_image_format
-mono_get_exception_bad_image_format2
-mono_get_exception_cannot_unload_appdomain
-mono_get_exception_class
-mono_get_exception_divide_by_zero
-mono_get_exception_execution_engine
-mono_get_exception_field_access
-mono_get_exception_file_not_found
-mono_get_exception_file_not_found2
-mono_get_exception_index_out_of_range
-mono_get_exception_invalid_cast
-mono_get_exception_invalid_operation
-mono_get_exception_io
-mono_get_exception_method_access
-mono_get_exception_missing_field
-mono_get_exception_missing_method
-mono_get_exception_not_implemented
-mono_get_exception_not_supported
-mono_get_exception_null_reference
-mono_get_exception_out_of_memory
-mono_get_exception_overflow
-mono_get_exception_reflection_type_load
-mono_get_exception_runtime_wrapped
-mono_get_exception_security
-mono_get_exception_serialization
-mono_get_exception_stack_overflow
-mono_get_exception_synchronization_lock
-mono_get_exception_thread_abort
-mono_get_exception_thread_interrupted
-mono_get_exception_thread_state
-mono_get_exception_type_initialization
-mono_get_exception_type_load
-mono_get_inflated_method
-mono_get_int16_class
-mono_get_int32_class
-mono_get_int64_class
-mono_get_intptr_class
-mono_get_machine_config
-mono_get_method
-mono_get_method_constrained
-mono_get_method_full
-mono_get_object_class
-mono_get_root_domain
-mono_get_runtime_build_info
-mono_get_sbyte_class
-mono_get_single_class
-mono_get_string_class
-mono_get_thread_class
-mono_get_uint16_class
-mono_get_uint32_class
-mono_get_uint64_class
-mono_get_uintptr_class
-mono_get_void_class
-mono_guid_to_string
-mono_guid_to_string_minimal
-mono_hazard_pointer_get
-mono_image_add_to_name_cache
-mono_image_addref
-mono_image_close
-mono_image_ensure_section
-mono_image_ensure_section_idx
-mono_image_fixup_vtable
-mono_image_get_assembly
-mono_image_get_entry_point
-mono_image_get_filename
-mono_image_get_guid
-mono_image_get_name
-mono_image_get_public_key
-mono_image_get_resource
-mono_image_get_strong_name
-mono_image_get_table_info
-mono_image_get_table_rows
-mono_image_has_authenticode_entry
-mono_image_init
-mono_image_init_name_cache
-mono_image_is_dynamic
-mono_image_load_file_for_image
-mono_image_load_module
-mono_image_loaded
-mono_image_loaded_by_guid
-mono_image_loaded_by_guid_full
-mono_image_loaded_full
-mono_image_lookup_resource
-mono_image_open
-mono_image_open_from_data
-mono_image_open_from_data_full
-mono_image_open_from_data_with_name
-mono_image_open_full
-mono_image_rva_map
-mono_image_strerror
-mono_image_strong_name_position
-mono_images_cleanup
-mono_images_init
-mono_init
-mono_init_from_assembly
-mono_init_version
-mono_install_assembly_load_hook
-mono_install_assembly_postload_refonly_search_hook
-mono_install_assembly_postload_search_hook
-mono_install_assembly_preload_hook
-mono_install_assembly_refonly_preload_hook
-mono_install_assembly_refonly_search_hook
-mono_install_assembly_search_hook
-mono_install_ftnptr_eh_callback
-mono_install_load_aot_data_hook
-mono_install_runtime_cleanup
-mono_install_unhandled_exception_hook
-mono_is_debugger_attached
-mono_jit_cleanup
-mono_jit_exec
-mono_jit_info_get_code_size
-mono_jit_info_get_code_start
-mono_jit_info_get_method
-mono_jit_info_table_find
-mono_jit_init
-mono_jit_init_version
-mono_jit_parse_options
-mono_jit_set_aot_mode
-mono_jit_set_aot_only
-mono_jit_set_domain
-mono_jit_set_trace_options
-mono_jit_thread_attach
-mono_ldstr
-mono_ldtoken
-mono_lls_find
-mono_lls_get_hazardous_pointer_with_mask
-mono_lls_init
-mono_lls_insert
-mono_lls_remove
-mono_load_remote_field
-mono_load_remote_field_new
-mono_loader_register_module
-mono_lock_free_alloc
-mono_lock_free_allocator_check_consistency
-mono_lock_free_allocator_init_allocator
-mono_lock_free_allocator_init_size_class
-mono_lock_free_free
-mono_lock_free_queue_dequeue
-mono_lock_free_queue_enqueue
-mono_lock_free_queue_init
-mono_lock_free_queue_node_init
-mono_lock_free_queue_node_unpoison
-mono_locks_dump
-mono_lookup_icall_symbol
-mono_lookup_internal_call
-mono_lookup_pinvoke_call
-mono_main
-mono_marshal_string_to_utf16
-mono_md5_final
-mono_md5_get_digest
-mono_md5_get_digest_from_file
-mono_md5_init
-mono_md5_update
-mono_mem_account_register_counters
-mono_mem_account_type_name
-mono_mempool_alloc
-mono_mempool_alloc0
-mono_mempool_contains_addr
-mono_mempool_destroy
-mono_mempool_get_allocated
-mono_mempool_invalidate
-mono_mempool_new
-mono_mempool_new_size
-mono_mempool_stats
-mono_mempool_strdup
-mono_metadata_blob_heap
-mono_metadata_cleanup
-mono_metadata_compute_size
-mono_metadata_custom_attrs_from_index
-mono_metadata_declsec_from_index
-mono_metadata_decode_blob_size
-mono_metadata_decode_row
-mono_metadata_decode_row_col
-mono_metadata_decode_signed_value
-mono_metadata_decode_table_row
-mono_metadata_decode_table_row_col
-mono_metadata_decode_value
-mono_metadata_encode_value
-mono_metadata_events_from_typedef
-mono_metadata_field_info
-mono_metadata_field_info_with_mempool
-mono_metadata_free_array
-mono_metadata_free_inflated_signature
-mono_metadata_free_marshal_spec
-mono_metadata_free_method_signature
-mono_metadata_free_mh
-mono_metadata_free_type
-mono_metadata_generic_class_is_valuetype
-mono_metadata_get_constant_index
-mono_metadata_get_generic_param_row
-mono_metadata_get_inflated_signature
-mono_metadata_get_marshal_info
-mono_metadata_guid_heap
-mono_metadata_implmap_from_method
-mono_metadata_init
-mono_metadata_interfaces_from_typedef
-mono_metadata_load_generic_param_constraints_checked
-mono_metadata_load_generic_params
-mono_metadata_locate
-mono_metadata_locate_token
-mono_metadata_methods_from_event
-mono_metadata_methods_from_property
-mono_metadata_nested_in_typedef
-mono_metadata_nesting_typedef
-mono_metadata_packing_from_typedef
-mono_metadata_parse_array
-mono_metadata_parse_custom_mod
-mono_metadata_parse_field_type
-mono_metadata_parse_marshal_spec
-mono_metadata_parse_method_signature
-mono_metadata_parse_method_signature_full
-mono_metadata_parse_mh
-mono_metadata_parse_mh_full
-mono_metadata_parse_param
-mono_metadata_parse_signature
-mono_metadata_parse_type
-mono_metadata_parse_typedef_or_ref
-mono_metadata_properties_from_typedef
-mono_metadata_signature_alloc
-mono_metadata_signature_dup
-mono_metadata_signature_equal
-mono_metadata_string_heap
-mono_metadata_token_from_dor
-mono_metadata_translate_token_index
-mono_metadata_type_equal
-mono_metadata_type_hash
-mono_metadata_typedef_from_field
-mono_metadata_typedef_from_method
-mono_metadata_user_string
-mono_method_body_get_object
-mono_method_can_access_field
-mono_method_can_access_method
-mono_method_desc_free
-mono_method_desc_from_method
-mono_method_desc_full_match
-mono_method_desc_match
-mono_method_desc_new
-mono_method_desc_search_in_class
-mono_method_desc_search_in_image
-mono_method_full_name
-mono_method_get_class
-mono_method_get_context
-mono_method_get_flags
-mono_method_get_generic_container
-mono_method_get_header
-mono_method_get_header_checked
-mono_method_get_index
-mono_method_get_last_managed
-mono_method_get_marshal_info
-mono_method_get_name
-mono_method_get_object
-mono_method_get_param_names
-mono_method_get_param_token
-mono_method_get_signature
-mono_method_get_signature_full
-mono_method_get_token
-mono_method_get_unmanaged_thunk
-mono_method_has_marshal_info
-mono_method_header_get_clauses
-mono_method_header_get_code
-mono_method_header_get_locals
-mono_method_header_get_num_clauses
-mono_method_print_code
-mono_method_signature
-mono_method_signature_checked
-mono_method_verify
-mono_mlist_alloc
-mono_mlist_append
-mono_mlist_get_data
-mono_mlist_last
-mono_mlist_length
-mono_mlist_next
-mono_mlist_prepend
-mono_mlist_remove_item
-mono_mlist_set_data
-mono_mlist_set_next
-mono_module_file_get_object
-mono_module_get_object
-mono_monitor_enter
-mono_monitor_enter_v4
-mono_monitor_exit
-mono_monitor_try_enter
-mono_mprotect
-mono_native_getrootdir
-mono_native_thread_create
-mono_native_thread_id_equals
-mono_native_thread_id_get
-mono_native_thread_join
-mono_native_thread_set_name
-mono_object_castclass_mbyref
-mono_object_clone
-mono_object_describe
-mono_object_describe_fields
-mono_object_get_class
-mono_object_get_domain
-mono_object_get_size
-mono_object_get_virtual_method
-mono_object_hash
-mono_object_isinst
-mono_object_isinst_mbyref
-mono_object_new
-mono_object_new_alloc_specific
-mono_object_new_fast
-mono_object_new_from_token
-mono_object_new_specific
-mono_object_to_string
-mono_object_unbox
-mono_opcode_name
-mono_opcode_value
-mono_pagesize
-mono_param_get_objects
-mono_parse_default_optimizations
-mono_parse_env_options
-mono_parse_options_from
-mono_path_canonicalize
-mono_path_resolve_symlinks
-mono_pe_file_open
-mono_perfcounter_foreach
-mono_perfcounters_init
-mono_personality
-mono_pmip
-mono_poll
-mono_print_method_from_ip
-mono_print_thread_dump
-mono_print_thread_dump_from_ctx
-mono_print_unhandled_exception
-mono_profiler_call_context_free_buffer
-mono_profiler_call_context_get_argument
-mono_profiler_call_context_get_local
-mono_profiler_call_context_get_result
-mono_profiler_call_context_get_this
-mono_profiler_create
-mono_profiler_enable_allocations
-mono_profiler_enable_call_context_introspection
-mono_profiler_enable_sampling
-mono_profiler_get_coverage_data
-mono_profiler_get_sample_mode
-mono_profiler_install
-mono_profiler_install_gc
-mono_profiler_install_jit_end
-mono_profiler_install_thread
-mono_profiler_load
-mono_profiler_set_assembly_loaded_callback
-mono_profiler_set_assembly_loading_callback
-mono_profiler_set_assembly_unloaded_callback
-mono_profiler_set_assembly_unloading_callback
-mono_profiler_set_call_instrumentation_filter_callback
-mono_profiler_set_class_failed_callback
-mono_profiler_set_class_loaded_callback
-mono_profiler_set_class_loading_callback
-mono_profiler_set_context_loaded_callback
-mono_profiler_set_context_unloaded_callback
-mono_profiler_set_coverage_filter_callback
-mono_profiler_set_domain_loaded_callback
-mono_profiler_set_domain_loading_callback
-mono_profiler_set_domain_name_callback
-mono_profiler_set_domain_unloaded_callback
-mono_profiler_set_domain_unloading_callback
-mono_profiler_set_events
-mono_profiler_set_exception_clause_callback
-mono_profiler_set_exception_throw_callback
-mono_profiler_set_gc_allocation_callback
-mono_profiler_set_gc_event_callback
-mono_profiler_set_gc_finalized_callback
-mono_profiler_set_gc_finalized_object_callback
-mono_profiler_set_gc_finalizing_callback
-mono_profiler_set_gc_finalizing_object_callback
-mono_profiler_set_gc_handle_created_callback
-mono_profiler_set_gc_handle_deleted_callback
-mono_profiler_set_gc_moves_callback
-mono_profiler_set_gc_resize_callback
-mono_profiler_set_gc_roots_callback
-mono_profiler_set_image_failed_callback
-mono_profiler_set_image_loaded_callback
-mono_profiler_set_image_loading_callback
-mono_profiler_set_image_unloaded_callback
-mono_profiler_set_image_unloading_callback
-mono_profiler_set_iomap_report_callback
-mono_profiler_set_jit_begin_callback
-mono_profiler_set_jit_chunk_created_callback
-mono_profiler_set_jit_chunk_destroyed_callback
-mono_profiler_set_jit_code_buffer_callback
-mono_profiler_set_jit_done_callback
-mono_profiler_set_jit_failed_callback
-mono_profiler_set_method_begin_invoke_callback
-mono_profiler_set_method_end_invoke_callback
-mono_profiler_set_method_enter_callback
-mono_profiler_set_method_exception_leave_callback
-mono_profiler_set_method_free_callback
-mono_profiler_set_method_leave_callback
-mono_profiler_set_monitor_acquired_callback
-mono_profiler_set_monitor_contention_callback
-mono_profiler_set_monitor_failed_callback
-mono_profiler_set_runtime_initialized_callback
-mono_profiler_set_runtime_shutdown_begin_callback
-mono_profiler_set_runtime_shutdown_end_callback
-mono_profiler_set_sample_hit_callback
-mono_profiler_set_sample_mode
-mono_profiler_set_thread_name_callback
-mono_profiler_set_thread_started_callback
-mono_profiler_set_thread_stopped_callback
-mono_property_get_flags
-mono_property_get_get_method
-mono_property_get_name
-mono_property_get_object
-mono_property_get_parent
-mono_property_get_set_method
-mono_property_get_value
-mono_property_hash_destroy
-mono_property_hash_insert
-mono_property_hash_lookup
-mono_property_hash_new
-mono_property_hash_remove_object
-mono_property_set_value
-mono_ptr_class_get
-mono_raise_exception
-mono_reflection_assembly_get_assembly
-mono_reflection_free_type_info
-mono_reflection_get_custom_attrs
-mono_reflection_get_custom_attrs_blob
-mono_reflection_get_custom_attrs_by_type
-mono_reflection_get_custom_attrs_data
-mono_reflection_get_custom_attrs_info
-mono_reflection_get_token
-mono_reflection_get_type
-mono_reflection_parse_type
-mono_reflection_type_from_name
-mono_reflection_type_get_type
-mono_register_bundled_assemblies
-mono_register_config_for_assembly
-mono_register_machine_config
-mono_register_symfile_for_assembly
-mono_runtime_class_init
-mono_runtime_cleanup
-mono_runtime_delegate_invoke
-mono_runtime_exec_main
-mono_runtime_exec_managed_code
-mono_runtime_get_main_args
-mono_runtime_init
-mono_runtime_invoke
-mono_runtime_invoke_array
-mono_runtime_is_shutting_down
-mono_runtime_object_init
-mono_runtime_quit
-mono_runtime_resource_check_limit
-mono_runtime_resource_limit
-mono_runtime_resource_set_callback
-mono_runtime_run_main
-mono_runtime_set_main_args
-mono_runtime_set_shutting_down
-mono_security_core_clr_get_options
-mono_security_core_clr_require_elevated_permissions
-mono_security_core_clr_set_options
-mono_security_enable_core_clr
-mono_security_set_core_clr_platform_callback
-mono_set_allocator_vtable
-mono_set_assemblies_path
-mono_set_break_policy
-mono_set_config_dir
-mono_set_crash_chaining
-mono_set_defaults
-mono_set_dirs
-mono_set_is_debugger_attached
-mono_set_rootdir
-mono_set_signal_chaining
-mono_sha1_final
-mono_sha1_get_digest
-mono_sha1_get_digest_from_file
-mono_sha1_init
-mono_sha1_update
-mono_shared_area
-mono_shared_area_for_pid
-mono_shared_area_instances
-mono_shared_area_remove
-mono_shared_area_unload
-mono_signature_explicit_this
-mono_signature_full_name
-mono_signature_get_call_conv
-mono_signature_get_desc
-mono_signature_get_param_count
-mono_signature_get_params
-mono_signature_get_return_type
-mono_signature_hash
-mono_signature_is_instance
-mono_signature_param_is_out
-mono_signature_vararg_start
-mono_signbit_double
-mono_signbit_float
-mono_stack_walk
-mono_stack_walk_async_safe
-mono_stack_walk_no_il
-mono_store_remote_field
-mono_store_remote_field_new
-mono_string_chars
-mono_string_empty
-mono_string_empty_wrapper
-mono_string_equal
-mono_string_from_bstr
-mono_string_from_utf16
-mono_string_from_utf32
-mono_string_hash
-mono_string_intern
-mono_string_is_interned
-mono_string_length
-mono_string_new
-mono_string_new_len
-mono_string_new_size
-mono_string_new_utf16
-mono_string_new_utf32
-mono_string_new_wrapper
-mono_string_to_utf16
-mono_string_to_utf32
-mono_string_to_utf8
-mono_string_to_utf8_checked
-mono_stringify_assembly_name
-mono_table_info_get_rows
-mono_thread_attach
-mono_thread_cleanup
-mono_thread_create
-mono_thread_current
-mono_thread_detach
-mono_thread_detach_if_exiting
-mono_thread_exit
-mono_thread_get_main
-mono_thread_get_managed_id
-mono_thread_get_name_utf8
-mono_thread_get_undeniable_exception
-mono_thread_hazardous_queue_free
-mono_thread_hazardous_try_free
-mono_thread_hazardous_try_free_all
-mono_thread_info_detach
-mono_thread_info_get_small_id
-mono_thread_info_register_small_id
-mono_thread_info_yield
-mono_thread_init
-mono_thread_is_foreign
-mono_thread_manage
-mono_thread_new_init
-mono_thread_set_main
-mono_thread_set_manage_callback
-mono_thread_stop
-mono_threads_assert_gc_safe_region
-mono_threads_assert_gc_unsafe_region
-mono_threads_attach_coop
-mono_threads_attach_tools_thread
-mono_threads_detach_coop
-mono_threads_enter_gc_safe_region
-mono_threads_enter_gc_safe_region_unbalanced
-mono_threads_enter_gc_unsafe_region
-mono_threads_enter_gc_unsafe_region_unbalanced
-mono_threads_exit_gc_safe_region
-mono_threads_exit_gc_safe_region_unbalanced
-mono_threads_exit_gc_unsafe_region
-mono_threads_exit_gc_unsafe_region_unbalanced
-mono_threads_get_default_stacksize
-mono_threads_request_thread_dump
-mono_threads_set_default_stacksize
-mono_trace_set_level_string
-mono_trace_set_log_handler
-mono_trace_set_mask_string
-mono_trace_set_print_handler
-mono_trace_set_printerr_handler
-mono_tracev_inner
-mono_type_create_from_typespec
-mono_type_full_name
-mono_type_generic_inst_is_valuetype
-mono_type_get_array_type
-mono_type_get_class
-mono_type_get_desc
-mono_type_get_modifiers
-mono_type_get_name
-mono_type_get_object
-mono_type_get_ptr_type
-mono_type_get_signature
-mono_type_get_type
-mono_type_get_underlying_type
-mono_type_is_byref
-mono_type_is_pointer
-mono_type_is_primitive
-mono_type_is_reference
-mono_type_is_struct
-mono_type_is_valid_enum_basetype
-mono_type_is_void
-mono_type_size
-mono_type_stack_size
-mono_type_to_unmanaged
-mono_unhandled_exception
-mono_unicode_from_external
-mono_unicode_to_external
-mono_upgrade_remote_class_wrapper
-mono_utf8_from_external
-mono_utf8_validate_and_len
-mono_utf8_validate_and_len_with_bounds
-mono_valloc
-mono_valloc_aligned
-mono_valloc_granule
-mono_value_box
-mono_value_copy
-mono_value_copy_array
-mono_value_describe_fields
-mono_verify_corlib
-mono_vfree
-mono_vtable_get_static_field_data
-mono_win32_compat_CopyMemory
-mono_win32_compat_FillMemory
-mono_win32_compat_MoveMemory
-mono_win32_compat_ZeroMemory
index fded8b5ffe6fd80e8ce98e63f991baabc2e5c38b..d491a5bd266435b47caddac0fc6f91175e8c2131 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmonoutils.lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmonoutils.lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
       <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmonoutils.lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>eglib.lib;libmonoruntime$(MONO_TARGET_SUFFIX).lib;libmonoutils.lib;$(GC_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_STATIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
-    <ClCompile Include="..\mono\metadata\appdomain.c" />\r
-    <ClCompile Include="..\mono\metadata\assembly.c" />\r
-    <ClCompile Include="..\mono\metadata\boehm-gc.c" />\r
-    <ClCompile Include="..\mono\metadata\class.c" />\r
-    <ClCompile Include="..\mono\metadata\console-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\domain.c" />\r
-    <ClCompile Include="..\mono\metadata\environment.c" />\r
-    <ClCompile Include="..\mono\metadata\w32file-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\w32file.c" />\r
-    <ClCompile Include="..\mono\metadata\w32error-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\filewatcher.c" />\r
-    <ClCompile Include="..\mono\metadata\gc.c" />\r
-    <ClCompile Include="..\mono\metadata\icall-windows.c" />\r
-    <ClCompile Include="..\mono\metadata\icall.c" />\r
-    <ClCompile Include="..\mono\metadata\image.c" />\r
-    <ClCompile Include="..\mono\metadata\loader.c" />\r
-    <ClCompile Include="..\mono\metadata\locales.c" />\r
-    <ClCompile Include="..\mono\metadata\marshal-windows.c" />\r
-    <ClCompile Include="..\mono\metadata\marshal.c" />\r
-    <ClCompile Include="..\mono\metadata\metadata.c" />\r
-    <ClCompile Include="..\mono\metadata\monitor.c" />\r
-    <ClCompile Include="..\mono\metadata\mono-config.c" />\r
-    <ClCompile Include="..\mono\utils\mono-dl.c" />\r
-    <ClCompile Include="..\mono\metadata\object.c" />\r
-    <ClCompile Include="..\mono\metadata\w32process.c" />\r
-    <ClCompile Include="..\mono\metadata\w32process-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\profiler.c" />\r
-    <ClCompile Include="..\mono\metadata\rand.c" />\r
-    <ClCompile Include="..\mono\metadata\reflection.c" />\r
-    <ClCompile Include="..\mono\metadata\security-manager.c" />\r
-    <ClCompile Include="..\mono\metadata\w32socket.c" />\r
-    <ClCompile Include="..\mono\metadata\string-icalls.c" />\r
-    <ClCompile Include="..\mono\metadata\sysmath.c" />\r
-    <ClCompile Include="..\mono\metadata\threads.c" />\r
     <ClCompile Include="..\tools\pedump\pedump.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="eglib.vcxproj">\r
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</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="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-static.vcxproj">\r
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0772}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
index 5b01ceb1a56351c4e3e9c3904203ecd8f42654d4..5503d0afa8cf033bf6d724a0f2b34a8f7bde78af 100644 (file)
@@ -1,111 +1,9 @@
 ï»¿<?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\metadata\appdomain.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\assembly.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\boehm-gc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\class.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\console-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\domain.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\environment.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32file.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\filewatcher.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\gc.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\icall.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\image.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\loader.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\locales.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\marshal.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\metadata.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\monitor.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\mono-config.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\utils\mono-dl.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\object.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32process.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32process-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\profiler.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\rand.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\reflection.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\security-manager.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32socket.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\string-icalls.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\sysmath.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\threads.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="..\tools\pedump\pedump.c">\r
       <Filter>Source Files</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\marshal-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\icall-windows.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32file-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
-    <ClCompile Include="..\mono\metadata\w32error-win32.c">\r
-      <Filter>Source Files</Filter>\r
-    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Filter Include="Header Files">\r
index 73ace6bdc745252f4ad5e7e95453ee1d26a31d55..c16a2c304961e809ff40de32b6cc9a2193c71fa7 100644 (file)
@@ -77,8 +77,6 @@
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(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
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-profiler-vtune$(MONO_TARGET_SUFFIX)</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-profiler-vtune$(MONO_TARGET_SUFFIX)</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-profiler-vtune$(MONO_TARGET_SUFFIX)</TargetName>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);$(VTUNE_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>\r
-      <AdditionalDependencies>$(MONO_LIBMONO_LIB);$(GC_LIB);eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
     </Link>\r
     <ProjectReference>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
     <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);$(VTUNE_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>\r
-      <AdditionalDependencies>$(MONO_LIBMONO_LIB);$(GC_LIB);eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
     </Link>\r
     <ProjectReference>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);$(VTUNE_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <AdditionalDependencies>$(MONO_LIBMONO_LIB);$(GC_LIB);eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>\r
     </Link>\r
     <ProjectReference>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_INCLUDE_DIR);$(MONO_LIBGC_INCLUDE_DIR);$(MONO_JIT_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR);$(VTUNE_INCLUDE_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <AdditionalDependencies>$(MONO_LIBMONO_LIB);$(GC_LIB);eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>$(MONO_LIBMONO_LIB);jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
       <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>\r
     </Link>\r
     <ProjectReference>\r
     <None Include="mono-profiler-vtune.def" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="eglib.vcxproj">\r
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</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="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-dynamic.vcxproj">\r
+      <Project>{675f4175-ffb1-480d-ad36-f397578844d4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
index c60bc5397ce28ad027f8856df3061ebfad69d4f6..96337cadaaff450ce4e4e274987a19063fbedc2b 100644 (file)
@@ -794,12 +794,8 @@ class MsbuildGenerator {
 
                var refs = new StringBuilder ();
 
-               bool is_test = response.Contains ("_test_");
-               if (is_test) {
-                       // F:\src\mono\mcs\class\lib\net_2_0\nunit.framework.dll
-                       // F:\src\mono\mcs\class\SomeProject\SomeProject_test_-net_2_0.csproj
-                       var nunitLibPath = string.Format (@"..\lib\{0}\nunit.framework.dll", profile);
-                       refs.Append (string.Format ("    <Reference Include=\"{0}\" />" + NewLine, nunitLibPath));
+               if (response.Contains ("_test")) {
+                       refs.Append ($@"    <Reference Include=""..\lib\{profile}\nunitlite.dll"" />{NewLine}");
                }
 
                //
@@ -1049,7 +1045,7 @@ class MsbuildGenerator {
 
 public class Driver {
 
-       static IEnumerable<XElement> GetProjects (bool full = false)
+       static IEnumerable<XElement> GetProjects (bool withTests = false)
        {
                XDocument doc = XDocument.Load ("order.xml");
                foreach (XElement project in doc.Root.Elements ()) {
@@ -1071,12 +1067,6 @@ public class Driver {
                        //
                        if (!(dir.StartsWith ("class") || dir.StartsWith ("mcs") || dir.StartsWith ("basic")))
                                continue;
-
-                       if (full){
-                               if (!library.Contains ("tests"))
-                                       yield return project;
-                               continue;
-                       }
 #endif
                        //
                        // Do not do 2.1, it is not working yet
@@ -1094,11 +1084,12 @@ public class Driver {
                        if (dir.Contains ("nunit20"))
                                continue;
                        
-#if true
-                       if (profile != "net_4_x" || library.Contains ("tests")) 
+                       if (library.Contains ("tests") && !withTests)
                                continue;
-#endif
-                       //Console.WriteLine ("Going to handle {0}", library);
+
+                       if (profile != "net_4_x")
+                               continue;
+
                        yield return project;
                }
        }
@@ -1112,12 +1103,12 @@ public class Driver {
 
                if (args.Length == 1 && args [0].ToLower ().Contains ("-h")) {
                        Console.WriteLine ("Usage:");
-                       Console.WriteLine ("genproj.exe [visual_studio_release] [output_full_solutions]");
+                       Console.WriteLine ("genproj.exe [visual_studio_release] [output_full_solutions] [with_tests]");
                        Console.WriteLine ("If output_full_solutions is false, only the main System*.dll");
                        Console.WriteLine (" assemblies (and dependencies) is included in the solution.");
                        Console.WriteLine ("Example:");
-                       Console.WriteLine ("genproj.exe 2012 false");
-                       Console.WriteLine ("genproj.exe with no arguments is equivalent to 'genproj.exe 2012 true'\n\n");
+                       Console.WriteLine ("genproj.exe 2012 false false");
+                       Console.WriteLine ("genproj.exe with no arguments is equivalent to 'genproj.exe 2012 true false'\n\n");
                        Console.WriteLine ("genproj.exe deps");
                        Console.WriteLine ("Generates a Makefile dependency file from the projects input");
                        Environment.Exit (0);
@@ -1125,6 +1116,7 @@ public class Driver {
 
                var slnVersion = (args.Length > 0) ? args [0] : "2012";
                bool fullSolutions = (args.Length > 1) ? bool.Parse (args [1]) : true;
+               bool withTests = (args.Length > 2) ? bool.Parse (args [2]) : false;
 
                // To generate makefile depenedencies
                var makefileDeps =  (args.Length > 0 && args [0] == "deps");
@@ -1134,11 +1126,11 @@ public class Driver {
                var projects = new Dictionary<string,MsbuildGenerator> ();
 
                var duplicates = new List<string> ();
-               foreach (var project in GetProjects (makefileDeps)) {
+               foreach (var project in GetProjects (withTests)) {
                        var library_output = project.Element ("library_output").Value;
                        projects [library_output] = new MsbuildGenerator (project);
                }
-               foreach (var project in GetProjects (makefileDeps)){
+               foreach (var project in GetProjects (withTests)){
                        var library_output = project.Element ("library_output").Value;
                        //Console.WriteLine ("=== {0} ===", library_output);
                        var gen = projects [library_output];
index f258fb673c65cf75f2bcee1ed5179608c7baaa2a..b753a04e32fc5d6a5350eaa11e45b7d270bcf954 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
+      <SubSystem>Console</SubSystem>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <SubSystem>Console</SubSystem>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
+      <SubSystem>Console</SubSystem>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\samples\embed\test-invoke.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="eglib.vcxproj">\r
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-dynamic.vcxproj">\r
+      <Project>{675f4175-ffb1-480d-ad36-f397578844d4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
index 810f82f82fa93894eddc640d2de9388582f9c53b..6b6c771d3dd0828ae636c824e595272c93faf574 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_SOURCE_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
     <ClCompile Include="..\samples\embed\test-metadata.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="eglib.vcxproj">\r
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-dynamic.vcxproj">\r
+      <Project>{675f4175-ffb1-480d-ad36-f397578844d4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
index 826b9b62633eb7d630f1af39741e32e3714afd49..7ee098d0174ac30498dcc2ba35928e20a5ed7d58 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?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
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EGLIB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <TreatWarningAsError>false</TreatWarningAsError>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <OptimizeReferences>false</OptimizeReferences>\r
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>\r
       <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EGLIB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <TreatWarningAsError>false</TreatWarningAsError>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
     </Link>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EGLIB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <TreatWarningAsError>false</TreatWarningAsError>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <OptimizeReferences>false</OptimizeReferences>\r
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(MONO_EGLIB_INCLUDE_DIR);$(MONO_EGLIB_SOURCE_DIR)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EGLIB_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level4</WarningLevel>\r
-      <TreatWarningAsError>false</TreatWarningAsError>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="eglib.vcxproj">\r
       <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
     </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
-    </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
index 5fac6d8ac2349d1007bca1c36a2efdf3b8259c31..12be4cfb64fe297bafef26ffd99ae24a43c52b59 100644 (file)
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\bin\$(Configuration)\</OutDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(MONO_BUILD_DIR_PREFIX)$(Platform)\obj\$(ProjectName)$(MONO_TARGET_SUFFIX)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <TargetName>$(ProjectName)$(MONO_TARGET_SUFFIX)</TargetName>\r
   </PropertyGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
     <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
+      <Optimization>Disabled</Optimization>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
       <DataExecutionPrevention>\r
       </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)</ObjectFileName>\r
-      <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
+      <Optimization>Disabled</Optimization>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     <Link>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
       <TargetEnvironment>X64</TargetEnvironment>\r
     </Midl>\r
     <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
       <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>$(MONO_DIR);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <IntrinsicFunctions>true</IntrinsicFunctions>\r
+      <StringPooling>true</StringPooling>\r
     </ClCompile>\r
     <ProjectReference>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
       <AdditionalDependencies>$(MONO_DYNAMIC_LIBMONO_LIB);%(AdditionalDependencies)</AdditionalDependencies>\r
     </Link>\r
   </ItemDefinitionGroup>\r
     <ClCompile Include="..\samples\embed\teste.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <ProjectReference Include="eglib.vcxproj">\r
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
-    </ProjectReference>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+    <ProjectReference Include="libmono-dynamic.vcxproj">\r
+      <Project>{675f4175-ffb1-480d-ad36-f397578844d4}</Project>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
index f2e7a9bcdb6fc2e4362f257c8ae9ae5ed4470ad6..4de097b5dc750879ef38fa79219b163cf5911a00 100644 (file)
@@ -8,7 +8,7 @@ class FsharpPackage(GitHubTarballPackage):
             override_properties={ 'make': 'make' })
 
         self.extra_stage_files = ['lib/mono/xbuild/Microsoft/VisualStudio/v/FSharp/Microsoft.FSharp.Targets']
-        self.sources.extend(['patches/fsharp-portable-pdb.patch', 'patches/fsharp-metadata-table-size-fix.patch'])
+        self.sources.extend(['patches/fsharp-portable-pdb.patch', 'patches/fsharp-metadata-table-size-fix.patch', 'patches/fsharp-install-netsdk-targets.patch'])
 
     def prep(self):
         Package.prep(self)
index 9c9469c83d4d684a6c1b4a9fb2db579c0b447d2f..67db79c7fe63b3729025e8fe7e314002805a8ce8 100644 (file)
@@ -3,7 +3,7 @@ import fileinput
 class MSBuild (GitHubPackage):
        def __init__ (self):
                GitHubPackage.__init__ (self, 'mono', 'msbuild', '15.4',
-                       revision = '1a3faa18228d2bc4ac7556c0e851846ab57c49af')
+                       revision = '5bb588162eadfc68c6af8895397f4f65f8008b24')
 
        def build (self):
                self.sh ('./cibuild.sh --scope Compile --target Mono --host Mono --config Release')
diff --git a/packaging/MacSDK/patches/fsharp-install-netsdk-targets.patch b/packaging/MacSDK/patches/fsharp-install-netsdk-targets.patch
new file mode 100644 (file)
index 0000000..796a007
--- /dev/null
@@ -0,0 +1,47 @@
+From 066a39a0ccd98222a0e372a443e59e28182def50 Mon Sep 17 00:00:00 2001
+From: nosami <jasonimison@gmail.com>
+Date: Thu, 14 Sep 2017 18:54:49 +0100
+Subject: [PATCH] Install Microsoft.FSharp.NetSdk.props and targets into Mono
+
+So that F# .NET Core 2.0 templates can be built with VS for Mac and
+Mono msbuild. Re: https://bugzilla.xamarin.com/show_bug.cgi?id=57771
+
+Searching the .NET Core sdk files we see:
+
+/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Sdk.FSharp.props:
+
+```
+<FSharpPropsShim Condition = " '$(FSharpPropsShim)' == '' and Exists('$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.NetSdk.props') ">$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.NetSdk.props</FSharpPropsShim>
+
+<FSharpPropsShim Condition = " '$(FSharpPropsShim)' == '' and Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.NetSdk.props') ">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.NetSdk.props</FSharpPropsShim>
+
+<Import Condition=" '$(UseBundledFSharpTargets)' == 'true' and
+  Exists('$(FSharpPropsShim)') " Project="$(FSharpPropsShim)" />
+```
+---
+ mono/config.make.in | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/mono/config.make.in b/mono/config.make.in
+index 6249aca46..573717208 100644
+--- a/mono/config.make.in
++++ b/mono/config.make.in
+@@ -194,6 +194,18 @@ install-sdk-lib:
+           $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
+           $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
+           $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
++          \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.props $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
++          \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v11.0/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v14.0/FSharp/; \
++          $(INSTALL_LIB) $(outdir)Microsoft.FSharp.NetSdk.targets $(DESTDIR)$(monodir)/xbuild/Microsoft/VisualStudio/v15.0/FSharp/; \
+       fi
+       @if test x-$(outsuffix) = x-net40; then \
+           if test -e $(outdir)$(NAME).dll; then \
index 9b504614ac0ddbb600f3f989782fae4e8b7acfc5..3ad4c05c8008d4f72cccf410e22233ea2e7dd7a0 100755 (executable)
@@ -100,7 +100,7 @@ class MonoReleaseProfile(DarwinProfile):
         self.env.set('PANGO_SYSCONFDIR', '%{staged_prefix}/etc')
         self.env.set('PANGO_LIBDIR', '%{staged_prefix}/lib')
         # self.env.set ('MONO_PATH', '%{staged_prefix}/lib/mono/4.0')
-        self.debug_info = ['gtk+', 'cairo',
+        self.debug_info = ['gtk+', 'cairo', 'glib',
                            'pango', 'mono', 'llvm', 'libgdiplus']
         self.cache_host = None
 
@@ -396,4 +396,4 @@ class MonoReleaseProfile(DarwinProfile):
 
         subprocess.call(['bash', '-c', path])
 
-MonoReleaseProfile()
\ No newline at end of file
+MonoReleaseProfile()
index 8f127d7c414caa748fc8ed8349ce65d253645230..5d23ed09d2c7b4e5d8be99dcc111471d9a0d3ff4 100644 (file)
@@ -6,7 +6,7 @@ class MonoExtensionsPackage(Package):
     def __init__(self):
         Package.__init__(self, 'mono-extensions', None,
                          sources=['git@github.com:xamarin/mono-extensions.git'],
-                         revision='07ad37d63e0e9dcf7c879a72bc14c5d6c794f7b6'
+                         revision='3cc5e2e1870b35f15b1540f835a370d2b011bacd'
                          )
         self.source_dir_name = 'mono-extensions'
 
index 5188f37291151780129e4e1fb41e9f4d9393f9ad..021fdae9424c4116bf85ff3410095456daf6b838 100644 (file)
@@ -7,6 +7,10 @@
 fun:monoeg_g_hash_table_iter_next
 fun:monoeg_g_hash_table_lookup_extended
 
+# gslist.c #
+
+fun:monoeg_g_slist_nth_data
+
 # sort.frag.h #
 
 fun:init_sort_info
@@ -19,16 +23,19 @@ fun:merge_lists
 
 # class-accessors.c #
 
+fun:mono_class_get_field_count
 fun:mono_class_get_first_method_idx
 fun:mono_class_get_flags
 fun:mono_class_get_generic_class
 fun:mono_class_get_method_count
 fun:mono_class_get_field_count
 fun:mono_class_set_first_method_idx
+fun:mono_class_set_flags
 fun:mono_class_set_method_count
 
 # class-inlines.h #
 
+fun:mono_class_has_static_metadata
 fun:mono_class_is_ginst
 fun:mono_class_is_gtd
 
@@ -44,10 +51,13 @@ fun:inflate_generic_context
 fun:inflate_generic_type
 fun:init_sizes_with_info
 fun:make_generic_param_class
+fun:mono_array_element_size
 fun:mono_bounded_array_class_get
 fun:mono_class_create_from_typedef
+fun:mono_class_enum_basetype
 fun:mono_class_from_generic_parameter_internal
 fun:mono_class_from_mono_type
+fun:mono_class_from_name_checked_aux
 fun:mono_class_get_cctor
 fun:mono_class_get_inflated_method
 fun:mono_class_get_method_from_name_flags
@@ -56,6 +66,7 @@ fun:mono_class_get_vtable_entry
 fun:mono_class_has_failure
 fun:mono_class_has_finalizer
 fun:mono_class_inflate_generic_method_full_checked
+fun:mono_class_inflate_generic_type_with_mempool
 fun:mono_class_init
 fun:mono_class_instance_size
 fun:mono_class_is_assignable_from
@@ -64,22 +75,23 @@ fun:mono_class_setup_basic_field_info
 fun:mono_class_setup_fields
 fun:mono_class_setup_interfaces
 fun:mono_class_setup_methods
+fun:mono_class_setup_mono_type
+fun:mono_class_setup_parent
 fun:mono_class_setup_supertypes
 fun:mono_class_setup_vtable_full
 fun:mono_class_setup_vtable_general
+fun:mono_class_value_size
+fun:mono_field_get_type_checked
 fun:mono_field_resolve_type
 fun:mono_generic_class_get_class
+fun:mono_ldtoken_checked
 fun:mono_method_get_context_general
 fun:mono_method_get_method_definition
-fun:mono_ptr_class_get
 fun:mono_type_get_basic_type_from_generic
+fun:mono_type_get_checked
 fun:mono_type_get_underlying_type
 fun:mono_type_has_exceptions
 
-# domain.c #
-
-fun:mono_domain_alloc0
-
 # gc.c #
 
 fun:finalize_domain_objects
@@ -100,19 +112,18 @@ fun:mono_stack_mark_pop
 
 # icall.c #
 
+fun:is_generic_parameter
 fun:vell_icall_get_method_attributes
 fun:ves_icall_InternalInvoke
+fun:ves_icall_RuntimeTypeHandle_GetBaseType
+fun:ves_icall_RuntimeTypeHandle_HasInstantiation
 fun:ves_icall_RuntimeTypeHandle_IsArray
+fun:ves_icall_RuntimeTypeHandle_IsGenericVariable
 fun:ves_icall_RuntimeType_GetConstructors_native
+fun:ves_icall_System_Array_ClearInternal
 fun:ves_icall_System_Array_FastCopy
 fun:ves_icall_System_Reflection_MonoMethodInfo_get_parameter_info
 
-# image.c #
-
-fun:mono_image_alloc
-fun:mono_image_alloc0
-fun:mono_image_strdup
-
 # jit-info.c #
 
 fun:jit_info_table_add
@@ -122,40 +133,51 @@ fun:jit_info_table_find
 fun:jit_info_table_index
 fun:jit_info_table_split_chunk
 fun:mono_jit_info_init
+fun:mono_jit_info_table_free
 
 # loader.c #
 
-fun:cache_memberref_sig
 fun:inflate_generic_signature_checked
+fun:mono_field_from_token_checked
+fun:mono_get_method_checked
 fun:mono_get_method_from_token
-fun:mono_method_get_signature_checked
+fun:mono_method_get_header_checked
 fun:mono_method_signature_checked
 
 # marshal.c #
 
 fun:mono_icall_start
 fun:mono_marshal_get_native_wrapper
+fun:mono_marshal_get_runtime_invoke_full
 fun:mono_marshal_isinst_with_cache
 
 # metadata.c #
 
 fun:_mono_metadata_generic_class_equal
+fun:add_image
+fun:collect_data_init
+fun:collect_ginst_images
 fun:collect_method_images
+fun:collect_type_images
 fun:do_mono_metadata_parse_type
-fun:img_set_cache_get
+fun:get_image_set
 fun:mono_metadata_decode_row
 fun:mono_metadata_get_canonical_generic_inst
 fun:mono_metadata_lookup_generic_class
+fun:mono_metadata_parse_mh_full
 fun:mono_metadata_parse_type_internal
+fun:mono_method_get_header_summary
 fun:mono_type_get_class
 fun:mono_type_get_type
 fun:mono_type_is_struct
+fun:typedef_locator
 
 # monitor.c #
 
 fun:mon_new
 fun:mono_monitor_ensure_owned
 fun:mono_monitor_enter_v4_fast
+fun:mono_monitor_exit
 fun:mono_monitor_exit_inflated
 fun:mono_monitor_inflate
 fun:mono_monitor_try_enter_inflated
@@ -166,8 +188,15 @@ fun:ves_icall_System_Threading_Monitor_Monitor_test_synchronised
 fun:ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var
 fun:ves_icall_System_Threading_Monitor_Monitor_wait
 
+# mono-basic-block.c #
+
+fun:bb_formation_il_pass
+fun:mono_basic_block_split
+fun:mono_opcode_value_and_size
+
 # mono-conc-hash.c #
 
+fun:conc_table_new
 fun:expand_table
 fun:mono_conc_g_hash_table_lookup_extended
 fun:set_key
@@ -178,13 +207,17 @@ fun:mono_g_hash_table_find_slot
 
 # object.c #
 
+fun:class_get_virtual_method
 fun:mono_class_compute_gc_descriptor
 fun:mono_class_create_runtime_vtable
+fun:mono_class_try_get_vtable
 fun:mono_class_vtable_full
+fun:mono_delegate_ctor_with_method
 fun:mono_object_handle_get_virtual_method
 fun:mono_object_handle_isinst
 fun:mono_object_isinst_checked
 fun:mono_object_new_alloc_specific_checked
+fun:mono_object_new_mature
 fun:mono_object_new_specific_checked
 fun:mono_runtime_class_init_full
 fun:mono_runtime_invoke_array_checked
@@ -198,26 +231,23 @@ fun:cache_object_handle
 # reflection.c #
 
 fun:method_object_construct
+fun:mono_type_get_object_checked
 fun:reflected_equal
 
-# runtime.c #
-
-fun:mono_runtime_is_shutting_down
-fun:mono_runtime_try_shutdown
-
 # sgen-client-mono.h #
 
+fun:sgen_client_par_object_get_size
 fun:SGEN_LOAD_VTABLE_UNCHECKED
+fun:sgen_mono_array_size
 
 # sgen-mono.c #
 
 fun:mono_gchandle_free
 fun:mono_gc_alloc_string
 fun:mono_gc_alloc_vector
+fun:mono_gc_get_nursery
 fun:mono_gc_thread_in_critical_region
 fun:mono_gc_wbarrier_set_arrayref
-fun:sgen_client_gchandle_created
-fun:sgen_client_gchandle_destroyed
 
 # threadpool-worker-default.c #
 
@@ -228,8 +258,8 @@ fun:hill_climbing_change_thread_count
 fun:hill_climbing_force_change
 fun:hill_climbing_update
 fun:monitor_should_keep_running
-fun:monitor_thread
 fun:monitor_sufficient_delay_since_last_dequeue
+fun:monitor_thread
 
 # threadpool.c #
 
@@ -241,10 +271,9 @@ fun:worker_callback
 fun:build_wait_tids
 fun:create_thread
 fun:mono_thread_clr_state
+fun:mono_thread_create_internal
 fun:mono_thread_detach_internal
 fun:mono_thread_set_name_internal
-fun:mono_threads_add_joinable_thread
-fun:mono_threads_join_threads
 fun:remove_and_abort_threads
 fun:request_thread_abort
 
@@ -262,17 +291,36 @@ fun:mono_w32handle_unref_core
 
 # alias-analysis.c #
 
-fun:recompute_aliased_variables
+fun:lower_memory_access
 
 # aot-runtime.c #
 
 fun:mono_aot_get_cached_class_info
+fun:mono_aot_get_method_checked
 fun:mono_aot_get_method_from_vt_slot
 
+# branch-opts.c #
+
+fun:mono_if_conversion
+fun:mono_optimize_branches
+
+# cfold.c #
+
+fun:mono_constant_fold_ins
+
 # decompose.c #
 
 fun:mono_decompose_vtype_opts
 
+# dominators.c #
+
+fun:compute_dominators
+fun:mono_compute_natural_loops
+
+# jit-icalls.c #
+
+fun:ldvirtfn_internal
+
 # linear-scan.c #
 
 fun:mono_linear_scan
@@ -282,27 +330,56 @@ fun:mono_linear_scan
 fun:mono_analyze_liveness
 fun:mono_liveness_handle_exception_clauses
 
+# lldb.c #
+
+fun:mono_lldb_save_method_info
+
+# local-propagation.c #
+
+fun:mono_local_cprop
+fun:mono_local_deadce
+
+# memory-access.c #
+
+fun:mini_emit_memory_copy_internal
+
 # method-to-ir.c #
 
 fun:check_call_signature
+fun:check_method_sharing
 fun:emit_init_rvar
+fun:emit_stloc_ir
+fun:get_basic_blocks
 fun:inline_method
+fun:link_bblock
+fun:mini_emit_inst_for_method
+fun:mini_field_access_needs_cctor_run
+fun:mono_emit_call_args
+fun:mono_emit_method_call_full
+fun:mono_handle_global_vregs
 fun:mono_method_check_inlining
 fun:mono_method_to_ir
 fun:mono_spill_global_vars
+fun:target_type_is_incompatible
 
 # mini-amd64.c #
 
+fun:add_outarg_reg
 fun:get_call_info
-fun:mono_arch_allocate_vars
+fun:mono_arch_emit_call
 fun:mono_arch_emit_epilog
+fun:mono_arch_emit_exceptions
+fun:mono_arch_emit_inst_for_method
+fun:mono_arch_emit_outarg_vt
 fun:mono_arch_emit_prolog
 fun:mono_arch_get_delegate_invoke_impl
 fun:mono_arch_lowering_pass
+fun:mono_arch_output_basic_block
 fun:mono_arch_peephole_pass_2
 
 # mini-codegen.c #
 
+fun:create_spilled_store
 fun:mono_local_regalloc
 fun:mono_peephole_ins
 
@@ -312,7 +389,6 @@ fun:mono_thread_state_init_from_sigctx
 
 # mini-generic-sharing.c #
 
-fun:alloc_template
 fun:class_get_rgctx_template_oti
 fun:get_info_templates
 fun:inflate_info
@@ -321,6 +397,7 @@ fun:mini_get_basic_type_from_generic
 fun:mini_is_gsharedvt_type
 fun:mini_type_get_underlying_type
 fun:mono_class_fill_runtime_generic_context
+fun:mono_class_get_method_generic
 fun:mono_generic_context_check_used
 fun:mono_method_check_context_used
 fun:mono_method_fill_runtime_generic_context
@@ -339,17 +416,19 @@ fun:mini_native_type_replace_type
 fun:create_runtime_invoke_info
 fun:mini_imt_entry_inited
 fun:mono_jit_compile_method_with_opt
-fun:mono_jit_find_compiled_method_with_jit_info
 fun:mono_jit_runtime_invoke
+fun:mono_resolve_patch_target
 
 # mini-trampolines.c #
 
 fun:common_call_trampoline
+fun:is_generic_method_definition
 fun:mini_add_method_trampoline
 fun:mini_resolve_imt_method
 fun:mono_create_delegate_trampoline_info
 fun:mono_create_jit_trampoline
 fun:mono_create_jump_trampoline
+fun:mono_create_static_rgctx_trampoline
 fun:mono_delegate_trampoline
 fun:mono_magic_trampoline
 fun:mono_rgctx_lazy_fetch_trampoline
@@ -357,15 +436,19 @@ fun:mono_vcall_trampoline
 
 # mini.c #
 
+fun:create_jit_info
 fun:mini_method_compile
 fun:mono_allocate_stack_slots
+fun:mono_bb_ordering
 fun:mono_codegen
 fun:mono_compile_create_vars
+fun:mono_compile_create_var_for_vreg
+fun:mono_handle_out_of_line_bblock
 fun:mono_insert_branches_between_bblocks
 fun:mono_jit_compile_method_inner
-fun:mono_time_track_end
 fun:mono_type_to_load_membase
 fun:mono_type_to_store_membase
+fun:mono_unlink_bblock
 
 # seq-points.c #
 
@@ -373,6 +456,7 @@ fun:mono_save_seq_point_info
 
 # tramp-amd64.c #
 
+fun:mono_arch_create_specific_trampoline
 fun:mono_arch_patch_callsite
 
 # unwind.c #
@@ -401,11 +485,16 @@ fun:sgen_array_list_bucketize
 # sgen-cardtable.c #
 
 fun:sgen_card_table_wbarrier_range_copy
+fun:sgen_get_card_table_configuration
 
 # sgen-cardtable.h #
 
 fun:sgen_card_table_mark_address
 
+# sgen-copy-object.h #
+
+fun:copy_object_no_checks
+
 # sgen-fin-weak-hash.c #
 
 fun:add_stage_entry
@@ -413,6 +502,8 @@ fun:add_stage_entry
 # sgen-gc.c #
 
 fun:mono_gc_wbarrier_generic_store
+fun:pin_objects_from_nursery_pin_queue
+fun:sgen_conservatively_pin_objects_from
 
 # sgen-gc.h #
 
@@ -422,22 +513,32 @@ fun:sgen_set_nursery_scan_start
 
 fun:is_slot_set
 fun:link_get
+fun:sgen_gchandle_free
 fun:sgen_gchandle_iterate
 
 # sgen-marksweep.c #
 
+fun:alloc_obj
 fun:ensure_block_is_checked_for_sweeping
 fun:ensure_can_access_block_free_list
 fun:major_finish_sweep_checking
+fun:ms_alloc_block
 fun:set_block_state
 fun:sweep_block
 fun:sweep_block_for_size
 fun:unlink_slot_from_free_list_uncontested
 
+# sgen-minor-copy-object.h #
+
+fun:simple_nursery_serial_copy_object_from_obj
+
 # sgen-nursery-allocator.c #
 
+fun:fragment_list_reverse
+fun:par_alloc_from_fragment
 fun:sgen_fragment_allocator_add
 fun:sgen_fragment_allocator_alloc
+fun:sgen_fragment_allocator_par_alloc
 fun:sgen_fragment_allocator_par_range_alloc
 fun:sgen_fragment_allocator_release
 
@@ -451,6 +552,10 @@ fun:is_pointer_hazardous
 fun:mono_get_hazardous_pointer
 fun:mono_thread_small_id_alloc
 
+# lock-free-alloc.c #
+
+fun:alloc_from_new_sb
+
 # lock-free-array-queue.c #
 
 fun:mono_lock_free_array_queue_pop
@@ -461,8 +566,13 @@ fun:mono_lock_free_array_queue_push
 fun:mono_gc_bzero_aligned
 fun:mono_gc_memmove_aligned
 
+# mono-codeman.c #
+
+fun:mono_code_manager_reserve_align
+
 # mono-conc-hashtable.c #
 
+fun:conc_table_new
 fun:expand_table
 fun:mono_conc_hashtable_insert
 fun:mono_conc_hashtable_lookup
index f600c3ace39acb3db11090fee9c33d3e3de325c8..6fdb428d7dd4b000bf49e05c09c28d3b2a54cfae 100755 (executable)
@@ -3,10 +3,11 @@
 # This script is meant to be executed on all "slave" machines that run coverage collection.
 
 COV_DIR=coverage
-COV_INFO="$COV_DIR/$JOB_NAME.info"
+COV_NAME="$(echo $JOB_NAME | sed 's#/#-#g').info"
+COV_INFO="$COV_DIR/$COV_NAME"
 
 # Build Mono and collect coverage on the test suite.
-CI_TAGS=collect-coverage,monolite scripts/ci/run-jenkins.sh
+CI_TAGS="collect-coverage,monolite,$CI_TAGS" scripts/ci/run-jenkins.sh
 
 # Place the coverage info file into the coverage directory.
 # Multiple such files can be assembled to create a unified coverage report that spans multiple architectures and operating systems.
@@ -14,7 +15,7 @@ mkdir "$COV_DIR"
 scripts/ci/run-step.sh --label=coverage-lcov --timeout=20m lcov --no-external -c -d mono -d support -d tools -o "$COV_INFO"
 
 # Generate HTML coverage report in the lcov directory at the root of the project.
-scripts/ci/run-step.sh --label=coverage-genhtml --timeout=20m genhtml "$COV_INFO" -o lcov
+scripts/ci/run-step.sh --label=coverage-genhtml --timeout=20m genhtml -f -s "$COV_INFO" -o lcov
 
 # Make the paths relative so that they could be assembled from different Jenkins workspaces.
 sed -Eie "s#^SF:$WORKSPACE/?#SF:#" "$COV_INFO"
index bdecfae3efb974b15ed2b08a787f2b04716aa4ab..ca0cca115eb2ac8fd889b4583b32d02727074133 100755 (executable)
@@ -10,23 +10,25 @@ make_timeout=300m
 if [[ $CI_TAGS == *'collect-coverage'* ]]; then
     # Collect coverage for further use by lcov and similar tools.
     # Coverage must be collected with -O0 and debug information.
-    export CFLAGS="-ggdb3 --coverage -O0"
-    # Collect coverage on all optimizations
-    export MONO_ENV_OPTIONS="$MONO_ENV_OPTIONS -O=all"
-elif [[ ${CI_TAGS} == *'clang-sanitizer'* ]]; then
+    export CFLAGS="$CFLAGS -ggdb3 --coverage -O0"
+fi
+
+if [[ ${CI_TAGS} == *'clang-sanitizer'* ]]; then
        export CC="clang"
        export CXX="clang++"
-       export CFLAGS="-g -O1 -fsanitize=thread -fsanitize-blacklist=${MONO_REPO_ROOT}/scripts/ci/clang-thread-sanitizer-blacklist -mllvm -tsan-instrument-atomics=false"
+       export CFLAGS="$CFLAGS -g -O1 -fsanitize=thread -fsanitize-blacklist=${MONO_REPO_ROOT}/scripts/ci/clang-thread-sanitizer-blacklist -mllvm -tsan-instrument-atomics=false"
        export LDFLAGS="-fsanitize=thread"
        # TSAN_OPTIONS are used by programs that were compiled with Clang's ThreadSanitizer
        # see https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags for more details
        export TSAN_OPTIONS="history_size=7:exitcode=0:force_seq_cst_atomics=1"
        make_timeout=30m
-elif [[ ${label} == w* ]]; then
+fi
+
+if [[ ${label} == w* ]]; then
     # Passing -ggdb3 on Cygwin breaks linking against libmonosgen-x.y.dll
-    export CFLAGS="-g -O2"
+    export CFLAGS="$CFLAGS -g -O2"
 else
-    export CFLAGS="-ggdb3 -O2"
+    export CFLAGS="$CFLAGS -ggdb3 -O2"
 fi
 
 if [[ $CI_TAGS == *'retry-flaky-tests'* ]]; then
@@ -108,6 +110,8 @@ ${TESTCMD} --label=make --timeout=${make_timeout} --fatal make ${make_parallelis
 if [[ ${CI_TAGS} == *'checked-coop'* ]]; then export MONO_CHECK_MODE=gc,thread; fi
 if [[ ${CI_TAGS} == *'checked-all'* ]]; then export MONO_CHECK_MODE=all; fi
 
+export MONO_ENV_OPTIONS="$MONO_ENV_OPTIONS $MONO_TEST_ENV_OPTIONS"
+
 if [[ ${CI_TAGS} == *'acceptance-tests'* ]];
     then
        $(dirname "${BASH_SOURCE[0]}")/run-test-acceptance-tests.sh