Merge pull request #4828 from BrzVlad/fix-windows-ci
authorVlad Brezae <brezaevlad@gmail.com>
Fri, 12 May 2017 19:43:35 +0000 (22:43 +0300)
committerGitHub <noreply@github.com>
Fri, 12 May 2017 19:43:35 +0000 (22:43 +0300)
[runtime] Fix windows ci

97 files changed:
configure.ac
eglib/src/Makefile.am
external/api-snapshot
external/corefx
mcs/build/README.configury
mcs/build/README.makefiles
mcs/build/config-default.make
mcs/build/executable.make
mcs/build/library.make
mcs/build/profiles/net_4_x.make
mcs/build/profiles/xbuild_12.make
mcs/build/rules.make
mcs/class/Facades/Microsoft.Win32.Registry/AssemblyInfo.cs
mcs/class/Facades/Microsoft.Win32.Registry/TypeForwarders.cs
mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs
mcs/class/Facades/System.Data.SqlClient/AssemblyInfo.cs
mcs/class/Facades/System.Data.SqlClient/TypeForwarders.cs
mcs/class/Facades/System.IO.FileSystem.AccessControl/AssemblyInfo.cs
mcs/class/Facades/System.Reflection.DispatchProxy/Assembly/AssemblyInfo.cs
mcs/class/Facades/System.Reflection.TypeExtensions/AssemblyInfo.cs
mcs/class/Facades/System.Security.AccessControl/AssemblyInfo.cs
mcs/class/Facades/System.Security.Cryptography.Pkcs/AssemblyInfo.cs
mcs/class/Facades/System.Security.Cryptography.ProtectedData/AssemblyInfo.cs
mcs/class/Facades/System.Security.Principal.Windows/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Duplex/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.NetTcp/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs
mcs/class/Facades/System.ServiceProcess.ServiceController/AssemblyInfo.cs
mcs/class/Facades/System.ServiceProcess.ServiceController/TimeoutException_mobile.cs
mcs/class/Facades/System.Text.Encoding.CodePages/AssemblyInfo.cs
mcs/class/Facades/System.Threading.AccessControl/AssemblyInfo.cs
mcs/class/System.Data/System.Data-net_4_x.csproj
mcs/class/System.Data/System.Data.SqlClient/SqlBulkCopy.cs
mcs/class/System.Data/System.Data.SqlClient/SqlBulkCopy.platformnotsupported.cs
mcs/class/System.Net.Http/System.Net.Http/HttpResponseMessage.cs
mcs/class/System.ServiceModel/Dummy_2_1.cs
mcs/class/System.ServiceModel/Dummy_XM_4_5.cs
mcs/class/System.ServiceModel/mobile_System.ServiceModel.dll.sources
mcs/class/System.Web.Extensions/Makefile
mcs/class/System/Makefile
mcs/class/System/System.Net.Security/SslStream.cs
mcs/class/System/System.Net/HttpConnection.cs
mcs/class/System/System.Net/HttpListener.Mono.cs
mcs/class/System/System.Net/HttpListenerBasicIdentity.platformnotsupported.cs [new file with mode: 0644]
mcs/class/System/System.Net/HttpListenerResponse.cs
mcs/class/System/System.Net/HttpListenerResponseHelper.cs [deleted file]
mcs/class/System/System.Net/HttpListenerTimeoutManager.platformnotsupported.cs [new file with mode: 0644]
mcs/class/System/Test/System.Diagnostics/ProcessTest.cs
mcs/class/System/common.sources
mcs/class/System/common_networking.sources [new file with mode: 0644]
mcs/class/System/mobile_System.dll.sources
mcs/class/System/monotouch_watch_System.dll.exclude.sources
mcs/class/System/monotouch_watch_System.dll.sources
mcs/class/System/net_4_x_System.dll.sources
mcs/class/corlib/Microsoft.Win32/RegistryKey.cs
mcs/class/corlib/Microsoft.Win32/RegistryKeyPermissionCheck.cs
mcs/class/corlib/Mono/RuntimeMarshal.cs
mcs/class/corlib/System.Security.Principal/WellKnownSidType.cs
mcs/tools/mdoc/Makefile
mcs/tools/mono-service/Makefile
mono/metadata/dynamic-image-internals.h
mono/metadata/dynamic-image.c
mono/metadata/icall-def.h
mono/metadata/icall-internals.h
mono/metadata/icall-windows-uwp.c
mono/metadata/icall-windows.c
mono/metadata/icall.c
mono/metadata/locales.c
mono/metadata/locales.h
mono/metadata/mono-security-windows-uwp.c
mono/metadata/mono-security-windows.c
mono/metadata/mono-security.c
mono/metadata/object-internals.h
mono/metadata/remoting.c
mono/metadata/security.h
mono/metadata/sre-encode.c
mono/metadata/sre.c
mono/mini/abcremoval.c
mono/mini/memory-access.c
mono/mini/method-to-ir.c
mono/mini/mini-amd64-gsharedvt.c
mono/mini/mini-amd64-gsharedvt.h
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-ia64.c
mono/mini/mini-mips.c
mono/mini/mini-ppc.c
mono/mini/mini-runtime.c
mono/mini/mini-sparc.c
mono/mini/mini.h
mono/mini/tramp-amd64-gsharedvt.c
mono/tests/Makefile.am
mono/tests/appdomain-serialize-exception.cs [new file with mode: 0644]
packaging/MacSDK/packaging/resources/License.rtf
packaging/MacSDK/packaging/resources/whitelist.txt

index 25c905871588f56aceb8e91bbb1a38ef4d5e5798..508f575b460b6b000d90c6f1328026029a50c8f4 100644 (file)
@@ -4555,7 +4555,19 @@ fi
     echo "MONO_CORLIB_VERSION = $MONO_CORLIB_VERSION" >> $mcs_topdir/build/config.make
 
     if test x$host_darwin = xyes; then
-      echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make
+      echo "BUILD_PLATFORM = darwin" >> $mcs_topdir/build/config.make
+    elif test x$host_win32 = xyes; then
+      echo "BUILD_PLATFORM = win32" >> $mcs_topdir/build/config.make
+    else
+      echo "BUILD_PLATFORM = linux" >> $mcs_topdir/build/config.make
+    fi
+
+    if test x$host_darwin = xyes; then
+      echo "HOST_PLATFORM ?= darwin" >> $mcs_topdir/build/config.make
+    elif test x$host_win32 = xyes; then
+      echo "HOST_PLATFORM ?= win32" >> $mcs_topdir/build/config.make
+    else
+      echo "HOST_PLATFORM ?= linux" >> $mcs_topdir/build/config.make
     fi
 
     if test "x$PLATFORM_AOT_SUFFIX" != "x"; then
index f89138ba851b49bb5ad317571536be5f3af3d632..d7e6a94f74586202ff00274dcc231a9882f5468d 100644 (file)
@@ -5,7 +5,7 @@ AM_CFLAGS = $(WERROR_CFLAGS)
 win_files  = \
        eglib-config.hw \
        gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
-       gmodule-win32.c gtimer-win32.c gunicode-win32.c
+       gmodule-win32.c gmodule-win32-internals.h gtimer-win32.c gunicode-win32.c
 
 unix_files = \
        gdate-unix.c  gdir-unix.c  gfile-unix.c  gmisc-unix.c   \
index 62b458536891b4de889254d9a3f1e44697ad4b06..ba90b3440d775ace30ceaebb0ceec3c5b021bb4e 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 62b458536891b4de889254d9a3f1e44697ad4b06
+Subproject commit ba90b3440d775ace30ceaebb0ceec3c5b021bb4e
index 0d81ca28ac43d399124d07f9dd46485c0bf2ab52..5b7e0d739fa65bb7b1c2230df875d37a55b74d10 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 0d81ca28ac43d399124d07f9dd46485c0bf2ab52
+Subproject commit 5b7e0d739fa65bb7b1c2230df875d37a55b74d10
index 52732e6bdade99f0e877272a7198dc2290f3e488..7fbd1bcb10a8dcf4eacf5200fafa25a6a887176a 100644 (file)
@@ -6,12 +6,12 @@ Peter Williams <peter@newton.cx>
 It's pretty easy. You can create two files in this directory to tweak
 settings: pre-config.make and config.make.
 
-pre-config.make is included before $(PLATFORM).make and
+pre-config.make is included before $(BUILD_PLATFORM).make and
 $(PROFILE).make, so you can set either of these variables if you want
 to change the default.
 
 Just about any other change should go in config.make, which is
-included after $(PLATFORM).make and $(PROFILE).make, so you can use
+included after $(BUILD_PLATFORM).make and $(PROFILE).make, so you can use
 the values defined in those files if you wish. For example,
 
     MCS_FLAGS = $(DEFAULT_MCS_FLAGS) /my-experimental-optimizer-flag
index f5b95a5a32e011e5a092d80d945a1136cbf634ff..9453d4e0b91fc3d29eb80b7e7461352ce21018de 100644 (file)
@@ -119,8 +119,8 @@ Configuration variables are given defaults in `config-default.make';
 `rules.make' optionally includes `$(topdir)/build/config.make', so you
 can customize your build without CVS trying to commit your modified
 `config-default.make' all the time.  Platform-specific variables are
-defined in `$(topdir)/build/platforms/$(PLATFORM).make', where
-$(PLATFORM) is detected in config-default.make. (Currently, the only
+defined in `$(topdir)/build/platforms/$(BUILD_PLATFORM).make', where
+$(BUILD_PLATFORM) is detected in config-default.make. (Currently, the only
 choices are linux.make and win32.make.)
 
 The best way to learn what the configuration variables are is to read
index 40d2c6f1c758d2a32a23caf2f1be29e0a52be328..6120d57882fc985bd47050aa3fe50a1ff09a068e 100644 (file)
@@ -10,7 +10,7 @@
 CODEPAGE = 65001
 
 RUNTIME_FLAGS =
-TEST_HARNESS = $(topdir)/class/lib/$(PROFILE)/$(PARENT_PROFILE)nunit-lite-console.exe
+TEST_HARNESS = $(topdir)/class/lib/$(PROFILE_DIRECTORY)/$(PARENT_PROFILE)nunit-lite-console.exe
 PLATFORM_DEBUG_FLAGS = /debug:portable
 MCS_FLAGS = 
 MBAS_FLAGS = -debug
@@ -24,7 +24,7 @@ mono_libdir = $(exec_prefix)/lib
 sysconfdir = $(prefix)/etc
 #RUNTIME = mono
 RUNTIME = false
-TEST_RUNTIME = MONO_PATH="./$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$(TEST_MONO_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) --debug
+TEST_RUNTIME = MONO_PATH="./$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/$(PROFILE_DIRECTORY)$(PLATFORM_PATH_SEPARATOR)$(TEST_MONO_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) --debug
 
 # In case you want to add MCS_FLAGS, this lets you not have to
 # keep track of the default value
index 1a9ffab0e7f5d774e95bc328d436941d260fc7c0..902697219b4e6b84bb791bc4a74fab9239f32e6f 100644 (file)
@@ -19,7 +19,7 @@ executable_CLEAN_FILES += $(response)
 endif
 
 ifndef the_libdir
-the_libdir = $(topdir)/class/lib/$(PROFILE)/
+the_libdir = $(topdir)/class/lib/$(PROFILE_DIRECTORY)/
 ifdef PROGRAM_USE_INTERMEDIATE_FILE
 build_libdir = $(the_libdir)tmp/
 else
@@ -42,8 +42,8 @@ executable_CLEAN_FILES += $(build_lib) $(build_lib).so $(build_lib).mdb $(build_
 
 makefrag = $(depsdir)/$(PROFILE)_$(base_prog).makefrag
 
-MCS_REFERENCES = $(patsubst %,-r:$(topdir)/class/lib/$(PROFILE)/%.dll,$(LIB_REFS))
-MCS_REFERENCES += $(patsubst %,-r:$(topdir)/class/lib/$(PROFILE)/%.exe,$(EXE_REFS))
+MCS_REFERENCES = $(patsubst %,-r:$(topdir)/class/lib/$(PROFILE_DIRECTORY)/%.dll,$(LIB_REFS))
+MCS_REFERENCES += $(patsubst %,-r:$(topdir)/class/lib/$(PROFILE_DIRECTORY)/%.exe,$(EXE_REFS))
 
 ifndef NO_BUILD
 all-local: $(the_lib) $(PROGRAM_config)
@@ -117,7 +117,12 @@ ifndef PROGRAM_COMPILE
 PROGRAM_COMPILE = $(CSCOMPILE)
 endif
 
-$(the_lib): $(the_libdir)/.stamp
+$(the_lib): $(the_libdir)/.stamp $(if $(PROFILE_PLATFORM),$(if $(filter $(HOST_PLATFORM),$(BUILD_PLATFORM)),$(topdir)/class/lib/$(PROFILE)/.stamp))
+
+ifdef PROFILE_PLATFORM
+$(topdir)/class/lib/$(PROFILE)/.stamp: | $(topdir)/class/lib/$(PROFILE)-$(HOST_PLATFORM)/.stamp
+       $(if $(filter $(HOST_PLATFORM),$(BUILD_PLATFORM)),$(if $(filter $(BUILD_PLATFORM),win32),CYGWIN=winsymlinks:nativestrict) ln -s $(abspath $(topdir)/class/lib/$(PROFILE)-$(BUILD_PLATFORM)) $(abspath $(topdir)/class/lib/$(PROFILE)))
+endif
 
 $(build_lib): $(BUILT_SOURCES) $(EXTRA_SOURCES) $(response) $(build_libdir:=/.stamp)
        $(PROGRAM_COMPILE) $(MCS_REFERENCES) -target:exe -out:$@ $(BUILT_SOURCES) $(EXTRA_SOURCES) @$(response)
index 2e04a3a359555c76695cc522937ee4ddce2c1b30..6f3e0a8c2d2a4f460a8ba4669874d98068726a01 100644 (file)
@@ -23,37 +23,8 @@ _FILTER_OUT = $(foreach x,$(2),$(if $(findstring $(1),$(x)),,$(x)))
 LIB_REFS_FULL = $(call _FILTER_OUT,=, $(LIB_REFS))
 LIB_REFS_ALIAS = $(filter-out $(LIB_REFS_FULL),$(LIB_REFS))
 
-LIB_MCS_FLAGS += $(patsubst %,-r:$(topdir)/class/lib/$(PROFILE)/%.dll,$(LIB_REFS_FULL))
-LIB_MCS_FLAGS += $(patsubst %,-r:%.dll, $(subst =,=$(topdir)/class/lib/$(PROFILE)/,$(LIB_REFS_ALIAS)))
-
-sourcefile = $(LIBRARY).sources
-
-# If the directory contains the per profile include file, generate list file.
-PROFILE_sources := $(wildcard $(PROFILE)_$(LIBRARY).sources)
-ifdef PROFILE_sources
-PROFILE_excludes = $(wildcard $(PROFILE)_$(LIBRARY).exclude.sources)
-sourcefile = $(depsdir)/$(PROFILE)_$(LIBRARY).sources
-library_CLEAN_FILES += $(sourcefile)
-
-# Note, gensources.sh can create a $(sourcefile).makefrag if it sees any '#include's
-# We don't include it in the dependencies since it isn't always created
-$(sourcefile): $(PROFILE_sources) $(PROFILE_excludes) $(topdir)/build/gensources.sh
-       @echo Creating the per profile list $@ ...
-       $(SHELL) $(topdir)/build/gensources.sh $@ '$(PROFILE_sources)' '$(PROFILE_excludes)'
-endif
-
-PLATFORM_excludes := $(wildcard $(LIBRARY).$(PLATFORM)-excludes)
-
-ifndef PLATFORM_excludes
-ifeq (cat,$(PLATFORM_CHANGE_SEPARATOR_CMD))
-response = $(sourcefile)
-endif
-endif
-
-ifndef response
-response = $(depsdir)/$(PROFILE)_$(LIBRARY_SUBDIR)_$(LIBRARY).response
-library_CLEAN_FILES += $(response)
-endif
+LIB_MCS_FLAGS += $(patsubst %,-r:$(topdir)/class/lib/$(PROFILE_DIRECTORY)/%.dll,$(LIB_REFS_FULL))
+LIB_MCS_FLAGS += $(patsubst %,-r:%.dll, $(subst =,=$(topdir)/class/lib/$(PROFILE_DIRECTORY)/,$(LIB_REFS_ALIAS)))
 
 ifndef LIBRARY_NAME
 LIBRARY_NAME = $(LIBRARY)
@@ -65,11 +36,7 @@ else
 lib_dir = lib
 endif
 
-ifdef LIBRARY_SUBDIR
-the_libdir_base = $(topdir)/class/$(lib_dir)/$(PROFILE)/$(LIBRARY_SUBDIR)/
-else
-the_libdir_base = $(topdir)/class/$(lib_dir)/$(PROFILE)/
-endif
+the_libdir_base = $(topdir)/class/$(lib_dir)/$(PROFILE_DIRECTORY)/$(if $(LIBRARY_SUBDIR),$(LIBRARY_SUBDIR)/)
 
 ifdef RESOURCE_STRINGS
 ifneq (basic, $(PROFILE))
@@ -110,7 +77,7 @@ SN = MONO_PATH="$(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)$(PLATFORM_PATH_SEPARA
 endif
 endif
 
-ifeq ($(PLATFORM), win32)
+ifeq ($(BUILD_PLATFORM), win32)
 GACDIR = `cygpath -w $(mono_libdir)`
 GACROOT = `cygpath -w $(DESTDIR)$(mono_libdir)`
 test_flags += -d:WINDOWS
@@ -296,11 +263,51 @@ endif
 
 # The library
 
-$(the_lib): $(the_libdir)/.stamp
+# If the directory contains the per profile include file, generate list file.
+PROFILE_sources := $(firstword $(if $(PROFILE_PLATFORM),$(wildcard $(PROFILE_PLATFORM)_$(PROFILE)_$(LIBRARY).sources)) $(wildcard $(PROFILE)_$(LIBRARY).sources) $(wildcard $(LIBRARY).sources))
+PROFILE_excludes = $(firstword $(if $(PROFILE_PLATFORM),$(wildcard $(PROFILE_PLATFORM)_$(PROFILE)_$(LIBRARY).exclude.sources)) $(wildcard $(PROFILE)_$(LIBRARY).exclude.sources))
+
+# Note, gensources.sh can create a $(sourcefile).makefrag if it sees any '#include's
+# We don't include it in the dependencies since it isn't always created
+sourcefile = $(depsdir)/$(PROFILE_PLATFORM)_$(PROFILE)_$(LIBRARY_SUBDIR)_$(LIBRARY).sources
+$(sourcefile): $(PROFILE_sources) $(PROFILE_excludes) $(topdir)/build/gensources.sh $(depsdir)/.stamp
+       $(SHELL) $(topdir)/build/gensources.sh $@ '$(PROFILE_sources)' '$(PROFILE_excludes)'
+
+library_CLEAN_FILES += $(sourcefile)
+
+response = $(depsdir)/$(PROFILE_PLATFORM)_$(PROFILE)_$(LIBRARY_SUBDIR)_$(LIBRARY).response
+$(response): $(sourcefile) $(topdir)/build/library.make $(depsdir)/.stamp
+       $(PLATFORM_CHANGE_SEPARATOR_CMD) <$(sourcefile) >$@
+
+library_CLEAN_FILES += $(response)
+
+makefrag = $(depsdir)/$(PROFILE_PLATFORM)_$(PROFILE)_$(LIBRARY_SUBDIR)_$(LIBRARY).makefrag
+$(makefrag): $(sourcefile) $(topdir)/build/library.make $(depsdir)/.stamp
+#      @echo Creating $@ ...
+       @sed 's,^,$(build_lib): ,' $< >$@
+       @if test ! -f $(sourcefile).makefrag; then :; else \
+          cat $(sourcefile).makefrag >> $@ ; \
+          echo '$@: $(sourcefile).makefrag' >> $@; \
+          echo '$(sourcefile).makefrag:' >> $@; fi
+
+library_CLEAN_FILES += $(makefrag)
+
+ifndef NO_BUILD
+all-local: $(makefrag)
+endif
+
+-include $(makefrag)
+
+$(the_lib): $(the_libdir)/.stamp $(if $(PROFILE_PLATFORM),$(if $(filter $(HOST_PLATFORM),$(BUILD_PLATFORM)),$(topdir)/class/$(lib_dir)/$(PROFILE)/.stamp))
+
+ifdef PROFILE_PLATFORM
+$(topdir)/class/$(lib_dir)/$(PROFILE)/.stamp: | $(topdir)/class/$(lib_dir)/$(PROFILE)-$(HOST_PLATFORM)/.stamp
+       $(if $(filter $(HOST_PLATFORM),$(BUILD_PLATFORM)),$(if $(filter $(BUILD_PLATFORM),win32),CYGWIN=winsymlinks:nativestrict) ln -s $(abspath $(topdir)/class/$(lib_dir)/$(PROFILE)-$(BUILD_PLATFORM)) $(abspath $(topdir)/class/$(lib_dir)/$(PROFILE)))
+endif
 
 ifndef NO_BUILD
 
-$(build_lib): $(response) $(sn) $(BUILT_SOURCES) $(build_libdir:=/.stamp) $(GEN_RESOURCE_DEPS)
+$(build_lib): $(response) $(sn) $(BUILT_SOURCES) $(build_libdir)/.stamp $(GEN_RESOURCE_DEPS)
        $(LIBRARY_COMPILE) $(LIBRARY_FLAGS) $(LIB_MCS_FLAGS) $(GEN_RESOURCE_FLAGS) -target:library -out:$@ $(BUILT_SOURCES_cmdline) @$(response)
 ifdef RESOURCE_STRINGS_FILES
        $(Q) $(STRING_REPLACER) $(RESOURCE_STRINGS_FILES) $@
@@ -317,7 +324,7 @@ endif
 
 endif
 
-library_CLEAN_FILES += $(PROFILE)_aot.log
+library_CLEAN_FILES += $(PROFILE)_$(LIBRARY_NAME)_aot.log
 
 ifdef PLATFORM_AOT_SUFFIX
 $(the_lib)$(PLATFORM_AOT_SUFFIX): $(the_lib)
@@ -326,33 +333,6 @@ $(the_lib)$(PLATFORM_AOT_SUFFIX): $(the_lib)
 all-local-aot: $(the_lib)$(PLATFORM_AOT_SUFFIX)
 endif
 
-
-makefrag = $(depsdir)/$(PROFILE)_$(LIBRARY_SUBDIR)_$(LIBRARY).makefrag
-library_CLEAN_FILES += $(makefrag)
-$(makefrag): $(sourcefile)
-#      @echo Creating $@ ...
-       @sed 's,^,$(build_lib): ,' $< >$@
-       @if test ! -f $(sourcefile).makefrag; then :; else \
-          cat $(sourcefile).makefrag >> $@ ; \
-          echo '$@: $(sourcefile).makefrag' >> $@; \
-          echo '$(sourcefile).makefrag:' >> $@; fi
-
-ifneq ($(response),$(sourcefile))
-
-ifdef PLATFORM_excludes
-$(response): $(sourcefile) $(PLATFORM_excludes)
-       @echo Filtering $(sourcefile) to $@ ...
-       @sort $(sourcefile) $(PLATFORM_excludes) | uniq -u | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@
-else
-$(response): $(sourcefile)
-       @echo Converting $(sourcefile) to $@ ...
-       @cat $(sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@
-endif
-
-endif
-
--include $(makefrag)
-
 # for now, don't give any /lib flags or set MONO_PATH, since we
 # give a full path to the assembly.
 
@@ -360,25 +340,17 @@ endif
 include $(topdir)/build/corcompare.make
 
 ifndef NO_BUILD
-all-local: $(makefrag) $(test_makefrag) $(btest_makefrag)
+all-local: $(test_makefrag) $(btest_makefrag)
 endif
 
-ifneq ($(response),$(sourcefile))
-$(response): $(topdir)/build/library.make $(depsdir)/.stamp
-endif
-$(makefrag) $(test_response) $(test_makefrag) $(btest_response) $(btest_makefrag): $(topdir)/build/library.make $(depsdir)/.stamp
+$(test_response) $(test_makefrag) $(btest_response) $(btest_makefrag): $(topdir)/build/library.make $(depsdir)/.stamp
 
 ## Documentation stuff
 
-Q_MDOC_UP=$(if $(V),,@echo "MDOC-UP [$(PROFILE)] $(notdir $(@))";)
-MDOC_UP  =$(Q_MDOC_UP) \
-               MONO_PATH="$(topdir)/class/lib/$(DEFAULT_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/$(DEFAULT_PROFILE)/mdoc.exe \
-               update --delete -o Documentation/en $(the_lib)
-
 doc-update-local: $(the_libdir)/.doc-stamp
 
 $(the_libdir)/.doc-stamp: $(the_lib)
-       $(MDOC_UP)
+       $(MDOC_UP) $(the_lib)
        @echo "doc-stamp" > $@
 
 # Need to be here so it comes after the definition of DEP_DIRS/DEP_LIBS
index a63c7a29e951fbd05b75728a00f2756f5ea68ea8..a4965ddc99e02086fa9fe30fd368932b7d883595 100644 (file)
@@ -5,12 +5,14 @@ BOOTSTRAP_PROFILE = build
 BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_CSC)
 MCS = $(BOOTSTRAP_MCS)
 
+PLATFORMS = darwin linux win32
+
 # nuttzing!
 
 profile-check:
        @:
 
-DEFAULT_REFERENCES = -r:$(topdir)/class/lib/$(PROFILE)/mscorlib.dll
+DEFAULT_REFERENCES = -r:$(topdir)/class/lib/$(PROFILE_DIRECTORY)/mscorlib.dll
 PROFILE_MCS_FLAGS = -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:WIN_PLATFORM -d:MULTIPLEX_OS -nowarn:1699 -nostdlib $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
 
 FRAMEWORK_VERSION = 4.5
index c54c946c5040170262fc51edc2ddb377abd3d33d..b73af545a679fb4dbb0844eadf48d8cb4bc13118 100644 (file)
@@ -2,8 +2,8 @@
 
 include $(topdir)/build/profiles/net_4_x.make
 
-PARENT_PROFILE = ../net_4_x/
-DEFAULT_REFERENCES = -r:$(topdir)/class/lib/net_4_x/mscorlib.dll
+PARENT_PROFILE = ../net_4_x$(if $(PROFILE_PLATFORM),-$(PROFILE_PLATFORM))/
+DEFAULT_REFERENCES = -r:$(topdir)/class/lib/net_4_x$(if $(PROFILE_PLATFORM),-$(PROFILE_PLATFORM))/mscorlib.dll
 PROFILE_MCS_FLAGS += -d:XBUILD_12
 
 XBUILD_VERSION = 12.0
index 2ddd55efb21edfc8960cf68fe601fde37ea590dc..7e1ee2124c10012f0cd1b60c8d9502eba006d407 100644 (file)
@@ -22,8 +22,8 @@ VERSION = 0.93
 
 Q=$(if $(V),,@)
 # echo -e "\\t" does not work on some systems, so use 5 spaces
-Q_MCS=$(if $(V),,@echo "$(if $(MCS_MODE),MCS,CSC)     [$(intermediate)$(PROFILE)] $(notdir $(@))";)
-Q_AOT=$(if $(V),,@echo "AOT     [$(intermediate)$(PROFILE)] $(notdir $(@))";)
+Q_MCS=$(if $(V),,@echo "$(if $(MCS_MODE),MCS,CSC)     [$(intermediate)$(PROFILE_DIRECTORY)] $(notdir $(@))";)
+Q_AOT=$(if $(V),,@echo "AOT     [$(intermediate)$(PROFILE_DIRECTORY)] $(notdir $(@))";)
 
 ifndef BUILD_TOOLS_PROFILE
 BUILD_TOOLS_PROFILE = build
@@ -56,7 +56,6 @@ depsdir = $(topdir)/build/deps
 
 # Make sure these propagate if set manually
 
-export PLATFORM
 export PROFILE
 export MCS
 export MCS_FLAGS
@@ -75,31 +74,18 @@ export RESGEN
 default: all
 
 # Get initial configuration. pre-config is so that the builder can
-# override PLATFORM or PROFILE
+# override BUILD_PLATFORM or PROFILE
 
 include $(topdir)/build/config-default.make
 -include $(topdir)/build/pre-config.make
 -include $(topdir)/build/config.make
 
-# Default PLATFORM and PROFILE if they're not already defined.
-
-ifndef PLATFORM
-ifeq ($(OS),Windows_NT)
-ifneq ($(V),)
-$(info *** Assuming PLATFORM is 'win32'.)
-endif
-PLATFORM = win32
-else
-ifneq ($(V),)
-$(info *** Assuming PLATFORM is 'linux'.)
-endif
-PLATFORM = linux
-endif
-endif
-
 # Platform config
 
-include $(topdir)/build/platforms/$(PLATFORM).make
+include $(topdir)/build/platforms/$(BUILD_PLATFORM).make
+
+PROFILE_PLATFORM = $(if $(PLATFORMS),$(if $(filter $(PLATFORMS),$(HOST_PLATFORM)),$(HOST_PLATFORM),$(error Unknown platform "$(HOST_PLATFORM)" for profile "$(PROFILE)")))
+PROFILE_DIRECTORY = $(PROFILE)$(if $(PROFILE_PLATFORM),-$(PROFILE_PLATFORM))
 
 ifdef PLATFORM_CORLIB
 corlib = $(PLATFORM_CORLIB)
@@ -224,37 +210,34 @@ csproj: do-csproj
 # be listed _before_ including rules.make.  However, the default
 # SUBDIRS list can come after, so don't use the eager := syntax when
 # using the defaults.
-PROFILE_SUBDIRS := $($(PROFILE)_SUBDIRS)
-ifndef PROFILE_SUBDIRS
-PROFILE_SUBDIRS = $(SUBDIRS)
-endif
+PROFILE_SUBDIRS = $(or $($(PROFILE)_SUBDIRS),$(SUBDIRS))
 
 # These subdirs can be built in parallel
-PROFILE_PARALLEL_SUBDIRS := $($(PROFILE)_PARALLEL_SUBDIRS)
-ifndef PROFILE_PARALLEL_SUBDIRS
-PROFILE_PARALLEL_SUBDIRS = $(PARALLEL_SUBDIRS)
-endif
+PROFILE_PARALLEL_SUBDIRS = $(or $($(PROFILE)_PARALLEL_SUBDIRS),$(PARALLEL_SUBDIRS))
 
 ifndef FRAMEWORK_VERSION_MAJOR
 FRAMEWORK_VERSION_MAJOR = $(basename $(FRAMEWORK_VERSION))
 endif
 
 %-recursive:
-       @set . $$MAKEFLAGS; final_exit=:; \
+       @set . $$MAKEFLAGS; \
        case $$2 in --unix) shift ;; esac; \
        case $$2 in *=*) dk="exit 1" ;; *k*) dk=: ;; *) dk="exit 1" ;; esac; \
-       list='$(PROFILE_SUBDIRS)'; for d in $$list ; do \
-           (cd $$d && $(MAKE) $*) || { final_exit="exit 1"; $$dk; } ; \
-       done; \
-       if [ $* = "all" -a -n "$(PROFILE_PARALLEL_SUBDIRS)" ]; then \
-               $(MAKE) do-all-parallel ENABLE_PARALLEL_SUBDIR_BUILD=1 || { final_exit="exit 1"; $$dk; } ; \
-       else \
-               list='$(PROFILE_PARALLEL_SUBDIRS)'; for d in $$list ; do \
-                   (cd $$d && $(MAKE) $*) || { final_exit="exit 1"; $$dk; } ; \
-               done; \
-       fi; \
+       final_exit=:; \
+       $(foreach subdir,$(PROFILE_SUBDIRS),$(MAKE) -C $(subdir) $* || { final_exit="exit 1"; $$dk; };) \
+       $(if $(PROFILE_PARALLEL_SUBDIRS), \
+               $(if $(filter $*,all), \
+                       $(MAKE) $(PROFILE_PARALLEL_SUBDIRS) ENABLE_PARALLEL_SUBDIR_BUILD=1 || { final_exit="exit 1"; $$dk; };, \
+                       $(foreach subdir,$(PROFILE_PARALLEL_SUBDIRS),$(MAKE) -C $(subdir) $* || { final_exit="exit 1"; $$dk; };))) \
        $$final_exit
 
+ifdef ENABLE_PARALLEL_SUBDIR_BUILD
+.PHONY: $(PROFILE_PARALLEL_SUBDIRS)
+$(PROFILE_PARALLEL_SUBDIRS):
+       @set . $$MAKEFLAGS; \
+       $(MAKE) -C $@ all
+endif
+
 #
 # Parallel build support
 #
@@ -287,16 +270,6 @@ clean-dep-dir:
 
 clean-local: clean-dep-dir
 
-ifdef ENABLE_PARALLEL_SUBDIR_BUILD
-.PHONY: do-all-parallel $(PROFILE_PARALLEL_SUBDIRS)
-
-do-all-parallel: $(PROFILE_PARALLEL_SUBDIRS)
-
-$(PROFILE_PARALLEL_SUBDIRS):
-       @set . $$MAKEFLAGS; \
-       cd $@ && $(MAKE)
-endif
-
 ifndef DIST_SUBDIRS
 DIST_SUBDIRS = $(SUBDIRS) $(DIST_ONLY_SUBDIRS)
 endif
@@ -337,6 +310,8 @@ dist-default:
 
 ## Documentation stuff
 
-Q_MDOC =$(if $(V),,@echo "MDOC    [$(PROFILE)] $(notdir $(@))";)
+Q_MDOC =$(if $(V),,@echo "MDOC    [$(PROFILE_DIRECTORY)] $(notdir $(@))";)
 MDOC   =$(Q_MDOC) MONO_PATH="$(topdir)/class/lib/$(DEFAULT_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/$(DEFAULT_PROFILE)/mdoc.exe
 
+Q_MDOC_UP=$(if $(V),,@echo "MDOC-UP [$(PROFILE_DIRECTORY)] $(notdir $(@))";)
+MDOC_UP  =$(Q_MDOC_UP) MONO_PATH="$(topdir)/class/lib/$(DEFAULT_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(topdir)/class/lib/$(DEFAULT_PROFILE)/mdoc.exe update --delete -o Documentation/en
index 4b723eac1ab9a553b8cf5c3aa5cb13a9bcd99015..6b25c0b4d349c12ee279166f78739d8c5b6f1e9b 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index fae8514159ef6ae454d4414207ded833a41eef4d..77ccf63681e828d13fba0f9c181287fd80e0fcce 100644 (file)
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.Registry))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryHive))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryKey))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryKeyPermissionCheck))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryValueKind))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryValueOptions))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.RegistryView))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.Win32.SafeHandles.SafeRegistryHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AccessControl.RegistryAccessRule))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AccessControl.RegistryAuditRule))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AccessControl.RegistryRights))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AccessControl.RegistrySecurity))]
 
 
index 932bd697e19d414a0d0f640e4dccf481f238d8a2..4d823adf367010791730c17c7659d93ac502a7e8 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.0.0")]
+[assembly: AssemblyVersion ("4.2.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index b9f48ff1266af08660b9441ba90bfe2ddd54fb70..3506b353157df13882e1d60911e38dd1d229752a 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.0.0")]
+[assembly: AssemblyVersion ("4.2.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 3237d9eb98fbddfa777678623072a5db0808da07..d8f7bb5be561ec55cdacd76549276d2ff8925382 100644 (file)
@@ -22,6 +22,7 @@
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.SqlServer.Server.SqlDataRecord))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(Microsoft.SqlServer.Server.SqlMetaData))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.OperationAbortedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.ApplicationIntent))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SortOrder))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlBulkCopy))]
@@ -32,6 +33,7 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlCommand))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlConnection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlConnectionStringBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlDataAdapter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlDataReader))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlError))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlErrorCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlParameterCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlRowsCopiedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlRowsCopiedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlRowUpdatedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlRowUpdatedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlRowUpdatingEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlRowUpdatingEventHandler))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlClient.SqlTransaction))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlDbType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.SqlTypes.INullable))]
@@ -68,4 +74,3 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.StatementCompletedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Data.StatementCompletedEventHandler))]
 
-
index 056e067985ea9d4b2af5dd4a6b39542c62fa7eca..f78fa7c14037f0017cfbcb5e787215b34bd566a9 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index b31d2d3ec11f0d917154e78cdcf75a8c32a4f035..ba036fac365f55261dd873726bd13d6e797ec8a1 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.2.0")]
+[assembly: AssemblyVersion ("4.0.3.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index f60f7d0e6ebb2d73eb55d86a6dfe37426498db22..005d1f35ae95cbd905c3d961f285a6f5eac9dfe5 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.0.0")]
+[assembly: AssemblyVersion ("4.1.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index db93dea9198e59a77c867815f83a571f33780488..ef22ddbd867b45bca1bc574e96c6e1501bbd1662 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 1666aa8bfdc12eec0b5a830ebd07ea4efbf8d2f2..dc13964acce0bef3421e981a18d6096c1464a469 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index cccb2f29ca2a9cf2c681f6c31c0871111cb42ccc..ba8da75d3285eb4f6a9a593019dfb7014be788c1 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index b7abc6857f9d85749faa9c68a45039d166a2586b..b4910cd133d7b0755935ec21f3dd141c479af765 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 00ca00c3593324cfbd45a43c309952f259fc5b76..28a4ce5f350972206991b4e64115d11474a27b5d 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.2.0")]
+[assembly: AssemblyVersion ("4.0.3.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index a6ac477d56154ec886368075f24a005e409a0d27..69ff3416e326d780d58400ab843d245015c1aad1 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.1.0")]
+[assembly: AssemblyVersion ("4.1.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index a6ac477d56154ec886368075f24a005e409a0d27..69ff3416e326d780d58400ab843d245015c1aad1 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.1.0")]
+[assembly: AssemblyVersion ("4.1.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 9c4769a3681be41d9c23cdbda6766dee9d1299f7..262afab0c99c978f583989983dc965df92e21afa 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.1.0")]
+[assembly: AssemblyVersion ("4.2.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 3be79604b4df5ab03f5afe7079cd14fcbbb48137..86c999184c2377c47bd24b4d978dfa3494d8c63d 100644 (file)
@@ -20,6 +20,8 @@
 // THE SOFTWARE.
 // 
 
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyedByTypeCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SynchronizedCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IdentityModel.Selectors.X509CertificateValidator))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ActionNotSupportedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory))]
@@ -76,6 +78,7 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.RequestContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TextMessageEncodingBindingElement))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.UnderstoodHeaders))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ClientBase<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectAbortedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.OperationDescription))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.OperationDescriptionCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ServiceEndpoint))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.XmlSerializerOperationBehavior))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.ClientOperation))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.ClientRuntime))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.DispatchOperation))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.DispatchRuntime))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.EndpointDispatcher))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.FaultContractInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IChannelInitializer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IClientMessageFormatter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IClientMessageInspector))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IClientOperationSelector))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IInteractiveChannelInitializer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IParameterInspector))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddress))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddressBuilder))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointNotFoundException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EnvelopeVersion))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ExceptionDetail))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ExtensionCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultCode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultContractAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractMemberAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageCredentialType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeader<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeaderArrayAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeaderAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeaderException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageParameterAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessagePropertyAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContextScope))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContractAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationFormatStyle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationFormatUse))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ProtocolException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.QuotaExceededException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.HttpDigestClientCredential))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.MessageSecurityException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityAccessDeniedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityNegotiationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.UserNamePasswordClientCredential))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.WindowsClientCredential))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.X509ServiceCertificateAuthentication))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceActivationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceContractAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceKnownTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SessionMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.TransferMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UnknownMessageReceivedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
index 3abe68c0dced670039f0012a0fa201a1376c9cf6..49f6621b00de52feb28f5492324dc2a83f2e6096 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.1.0.0")]
+[assembly: AssemblyVersion ("4.2.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 5dbf4041b386ca9a4fc955f73caa304632832f1f..d273b9d2432f7074110469ece8849c3f9057df8f 100644 (file)
@@ -31,6 +31,7 @@
 #if MOBILE || XAMMAC_4_5
 
 using System;
+using System.Runtime.Serialization;
 
 namespace System.ServiceProcess
 {
@@ -50,6 +51,11 @@ namespace System.ServiceProcess
                {
                        throw new PlatformNotSupportedException ();
                }
+
+               protected TimeoutException (SerializationInfo info, StreamingContext context)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
        }
 }
 
index d89864256b475977be0c032ad5f720c344cf3096..f97526cbe1033f339272c6f1efbcf165436e7bf8 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2016 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.2.0")]
+[assembly: AssemblyVersion ("4.1.0.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 818bdcee0c1c33b1ee1be1de13fe0d70a731422e..52f17f51fc81b2be4915e72134e4d454082a689f 100644 (file)
@@ -30,6 +30,6 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyCompany ("Xamarin, Inc.")]
 [assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
 [assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyVersion ("4.0.2.0")]
 [assembly: AssemblyInformationalVersion ("4.0.0.0")]
 [assembly: AssemblyFileVersion ("4.0.0.0")]
index 51f6624d7999e201996c0613ad676bebc7504fa6..49100dfb07905bef5f9c84a3ec124e19ebe30f18 100644 (file)
     <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\UpdateRowSource.cs" />\r
     <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\updatestatus.cs" />\r
     <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\XDRSchema.cs" />\r
-    <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\XmlContent.cs" />\r
     <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\XmlDataLoader.cs" />\r
     <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\XMLDiffLoader.cs" />\r
     <Compile Include="..\..\..\external\corefx\src\System.Data.Common\src\System\Data\XmlKeywords.cs" />\r
     <Compile Include="..\referencesource\System.Data\System\Data\SqlClient\TdsParserStaticMethods.cs" />\r
     <Compile Include="..\referencesource\System.Data\System\Data\SQLTypes\SqlTypesSchemaImporter.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="corefx\DataView.cs" />\r
+    <Compile Include="corefx\DBCommandBuilder.cs" />\r
+    <Compile Include="corefx\DbConnection.cs" />\r
+    <Compile Include="corefx\FieldNameLookup.cs" />\r
+    <Compile Include="corefx\Index.cs" />\r
     <Compile Include="corefx\SR.cs" />\r
     <Compile Include="Microsoft.SqlServer.Server\SqlDataRecord.cs" />\r
     <Compile Include="Microsoft.SqlServer.Server\SqlMetaData.cs" />\r
index 96cf66caba6888d67c967131816667c10b24f34b..87e740495b1393463cfd28db080a5e043ec1645a 100644 (file)
@@ -612,6 +612,30 @@ namespace System.Data.SqlClient {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
+               public Task WriteToServerAsync (DataRow[] rows)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (DataRow[] rows, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (IDataReader reader)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (IDataReader reader, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
                [MonoTODO]
                public Task WriteToServerAsync (DbDataReader reader)
                {
@@ -624,6 +648,30 @@ namespace System.Data.SqlClient {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
+               public Task WriteToServerAsync (DataTable table)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (DataTable table, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (DataTable table, DataRowState rowState)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public Task WriteToServerAsync (DataTable table, DataRowState rowState, CancellationToken cancellationToken)
+               {
+                       throw new NotImplementedException ();
+               }
+
                private void RowsCopied (long rowsCopied)
                {
                        SqlRowsCopiedEventArgs e = new SqlRowsCopiedEventArgs (rowsCopied);
index 95d68018512ea48444be6e833398a5c67a1a8376..3b5cc3116a70b807c7592b81368541cc664cfbd5 100644 (file)
@@ -112,6 +112,26 @@ namespace System.Data.SqlClient {
                        throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
                }
 
+               public Task WriteToServerAsync (DataRow[] rows)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public Task WriteToServerAsync (DataRow[] rows, CancellationToken cancellationToken)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public Task WriteToServerAsync (IDataReader reader)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public Task WriteToServerAsync (IDataReader reader, CancellationToken cancellationToken)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
                public Task WriteToServerAsync (DbDataReader reader)
                {
                        throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
@@ -122,6 +142,26 @@ namespace System.Data.SqlClient {
                        throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
                }
 
+               public Task WriteToServerAsync (DataTable table)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public Task WriteToServerAsync (DataTable table, CancellationToken cancellationToken)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public Task WriteToServerAsync (DataTable table, DataRowState rowState)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public Task WriteToServerAsync (DataTable table, DataRowState rowState, CancellationToken cancellationToken)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
                private void RowsCopied (long rowsCopied)
                {
                        throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
index 25c9743fbc711c782a89d02a668a452aa02ba64c..0bdd0b652a18aefae737cd2d76afa829bbd74914 100644 (file)
@@ -66,7 +66,7 @@ namespace System.Net.Http
 
                public string ReasonPhrase {
                        get {
-                               return reasonPhrase ?? HttpListenerResponseHelper.GetStatusDescription ((int) statusCode);
+                               return reasonPhrase ?? HttpStatusDescription.Get (statusCode);
                        }
                        set {
                                reasonPhrase = value;
index fd890ec76e12d40f57bccb53759b77b7a8a68aa7..2773e6a93c1a57f51ba0021f02fc72b31ba31f9a 100644 (file)
@@ -35,7 +35,7 @@ namespace System.ServiceModel
                        get { throw new NotImplementedException (); }
                }
 
-               IExtensionCollection<InstanceContext> IExtensibleObject<InstanceContext>.Extensions
+               public IExtensionCollection<InstanceContext> Extensions
                {
                        get { throw new NotImplementedException (); }
                }
index c36efe1ad2a4c806f5e17c8248260f49578d4ee3..989c4dddc5278311963004334220e755ee4b555b 100644 (file)
@@ -22,7 +22,7 @@ namespace System.ServiceModel
                        get { throw new NotImplementedException (); }
                }
 
-               IExtensionCollection<InstanceContext> IExtensibleObject<InstanceContext>.Extensions
+               public IExtensionCollection<InstanceContext> Extensions
                {
                        get { throw new NotImplementedException (); }
                }
index c614c10beaaf0ca66902d6949a51d1bc51d1fedd..64af3348dc7c6a0b0c245dd99722782191b6a1c5 100644 (file)
@@ -177,6 +177,7 @@ System.ServiceModel.Dispatcher/IParameterInspector.cs
 System.ServiceModel.Security/HttpDigestClientCredential.cs
 System.ServiceModel.Security/MessageSecurityException.cs
 System.ServiceModel.Security/SecurityAccessDeniedException.cs
+System.ServiceModel.Security/SecurityNegotiationException.cs
 System.ServiceModel.Security/UserNamePasswordClientCredential.cs
 System.ServiceModel.Security/WindowsClientCredential.cs
 System.ServiceModel.Security/X509CertificateInitiatorClientCredential.cs
index dc21bcf31c1cea9773e28c1c19748bab0f7657a4..9660692d0db17f64e0ad6b4cc43c76ad8dbbdaae 100644 (file)
@@ -86,7 +86,7 @@ $(STANDALONE_TEST_ASSEMBLY): $(the_assembly) Test/standalone-tests/Consts.cs
        $(CSCOMPILE) $(STANDALONE_TEST_MCS_FLAGS) -out:$@ -target:library @System.Web.Extensions_standalone_test.dll.sources
 
 Test/standalone-tests/Consts.cs: Test/standalone-tests/Consts.cs.in
-ifeq ($(PLATFORM), win32)
+ifeq ($(BUILD_PLATFORM), win32)
        @sed 's,@SystemWebExtensionsClassDir@,$(shell cygpath -a -m .),' $< > $@
 else
        @sed 's,@SystemWebExtensionsClassDir@,$(shell pwd),' $< > $@
index 39b0706253fe7de44347564fe0a8b358557c6d51..188da5e572e9a47fc87edd96aea03ffdb25e60ae 100644 (file)
@@ -118,6 +118,7 @@ endif
 
 EXTRA_DISTFILES = \
        common.sources                                  \
+       common_networking.sources               \
        Test/test-config-file                           \
        Test/System.Security.Cryptography.X509Certificates/pkits/Makefile       \
        Test/System.Security.Cryptography.X509Certificates/pkits/README         \
index b2f51095a7d9d1ac3be2092cd5bdce993fd85b92..6d61e08dfb1bf659161ca1869175ffa3e70cdb16 100644 (file)
@@ -130,7 +130,7 @@ namespace System.Net.Security
                {
                }
 
-               SslStream (Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
+               internal SslStream (Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
                        : base (innerStream, leaveInnerStreamOpen)
                {
                        this.provider = provider;
index 231de98ff9467e33b3ad5f2e65c61ce15870dfd4..90ddf31f17e8bd894f6efe2b4d3baa35b5add021 100644 (file)
@@ -379,7 +379,7 @@ namespace System.Net {
                                HttpListenerResponse response = context.Response;
                                response.StatusCode = status;
                                response.ContentType = "text/html";
-                               string description = HttpListenerResponseHelper.GetStatusDescription (status);
+                               string description = HttpStatusDescription.Get (status);
                                string str;
                                if (msg != null)
                                        str = String.Format ("<h1>{0} ({1})</h1>", description, msg);
index f6c88f02286f575f44980ceeb23240c5aa51ac27..5e673b9d5f0b25b883d97a6d2db6e34298092889 100644 (file)
@@ -100,12 +100,9 @@ namespace System.Net {
                        lock (_internalLock) {
                                if (tlsProvider == null)
                                        tlsProvider = MonoTlsProviderFactory.GetProvider ();
-                               if (tlsSettings == null)
-                                       tlsSettings = MonoTlsSettings.CopyDefaultSettings ();
-                               if (tlsSettings.RemoteCertificateValidationCallback == null)
-                                       tlsSettings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono (callback);
-                               var sslStream = tlsProvider.CreateSslStream (innerStream, ownsStream, tlsSettings);
-                               return sslStream.SslStream;
+                               var settings = (tlsSettings ?? MonoTlsSettings.DefaultSettings).Clone ();
+                               settings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono (callback);
+                               return new SslStream (innerStream, ownsStream, tlsProvider, settings);
                        }
 #else
                        throw new PlatformNotSupportedException ();
diff --git a/mcs/class/System/System.Net/HttpListenerBasicIdentity.platformnotsupported.cs b/mcs/class/System/System.Net/HttpListenerBasicIdentity.platformnotsupported.cs
new file mode 100644 (file)
index 0000000..11fc32f
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// HttpListenerBasicIdentity.platformnotsupported.cs
+//
+// Author:
+//       Martin Baulig <mabaul@microsoft.com>
+//
+// Copyright (c) 2017 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+namespace System.Net {
+       public class HttpListenerBasicIdentity {
+               internal const string EXCEPTION_MESSAGE = "System.Net.HttpListenerBasicIdentity is not supported on the current platform.";
+
+               public HttpListenerBasicIdentity (string username, string password)
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               public virtual string Password {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+       }
+}
+
index 367c977c0edc4ffa36964f48d1fd8c3f6c9ab0ac..5d32ec93f38543fe733ed0bc6d0c4c4e4cc8c20f 100644 (file)
@@ -217,7 +217,7 @@ namespace System.Net {
                                if (value < 100 || value > 999)
                                        throw new ProtocolViolationException ("StatusCode must be between 100 and 999.");
                                status_code = value;
-                               status_description = HttpListenerResponseHelper.GetStatusDescription (value);
+                               status_description = HttpStatusDescription.Get (value);
                        }
                }
 
diff --git a/mcs/class/System/System.Net/HttpListenerResponseHelper.cs b/mcs/class/System/System.Net/HttpListenerResponseHelper.cs
deleted file mode 100644 (file)
index 7fc3c11..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.Net.HttpListenerResponseHelper
-//
-// Author:
-//     Gonzalo Paniagua Javier (gonzalo@novell.com)
-//
-// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
-// Copyright (C) 2016 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net {
-       // do not inline into HttpListenerResponse as this recursively brings everything that's
-       // reachable by IDisposable.Dispose (and that's quite a lot in this case).
-       static class HttpListenerResponseHelper {
-
-               internal static string GetStatusDescription (int code)
-               {
-                       switch (code){
-                       case 100: return "Continue";
-                       case 101: return "Switching Protocols";
-                       case 102: return "Processing";
-                       case 200: return "OK";
-                       case 201: return "Created";
-                       case 202: return "Accepted";
-                       case 203: return "Non-Authoritative Information";
-                       case 204: return "No Content";
-                       case 205: return "Reset Content";
-                       case 206: return "Partial Content";
-                       case 207: return "Multi-Status";
-                       case 300: return "Multiple Choices";
-                       case 301: return "Moved Permanently";
-                       case 302: return "Found";
-                       case 303: return "See Other";
-                       case 304: return "Not Modified";
-                       case 305: return "Use Proxy";
-                       case 307: return "Temporary Redirect";
-                       case 400: return "Bad Request";
-                       case 401: return "Unauthorized";
-                       case 402: return "Payment Required";
-                       case 403: return "Forbidden";
-                       case 404: return "Not Found";
-                       case 405: return "Method Not Allowed";
-                       case 406: return "Not Acceptable";
-                       case 407: return "Proxy Authentication Required";
-                       case 408: return "Request Timeout";
-                       case 409: return "Conflict";
-                       case 410: return "Gone";
-                       case 411: return "Length Required";
-                       case 412: return "Precondition Failed";
-                       case 413: return "Request Entity Too Large";
-                       case 414: return "Request-Uri Too Long";
-                       case 415: return "Unsupported Media Type";
-                       case 416: return "Requested Range Not Satisfiable";
-                       case 417: return "Expectation Failed";
-                       case 422: return "Unprocessable Entity";
-                       case 423: return "Locked";
-                       case 424: return "Failed Dependency";
-                       case 500: return "Internal Server Error";
-                       case 501: return "Not Implemented";
-                       case 502: return "Bad Gateway";
-                       case 503: return "Service Unavailable";
-                       case 504: return "Gateway Timeout";
-                       case 505: return "Http Version Not Supported";
-                       case 507: return "Insufficient Storage";
-                       }
-                       return "";
-               }
-       }
-}
diff --git a/mcs/class/System/System.Net/HttpListenerTimeoutManager.platformnotsupported.cs b/mcs/class/System/System.Net/HttpListenerTimeoutManager.platformnotsupported.cs
new file mode 100644 (file)
index 0000000..9ea9d21
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// HttpListenerTimeoutManager.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2015 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Net
+{
+       public class HttpListenerTimeoutManager
+       {
+               internal const string EXCEPTION_MESSAGE = "System.Net.HttpListenerTimeoutManager is not supported on the current platform.";
+
+               public HttpListenerTimeoutManager ()
+               {
+                       throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
+               }
+
+               [MonoTODO]
+               public TimeSpan EntityBody
+               {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+                       set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+
+               [MonoTODO]
+               public TimeSpan DrainEntityBody
+               {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+                       set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+
+               [MonoTODO]
+               public TimeSpan RequestQueue
+               {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+                       set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+
+               [MonoTODO]
+               public TimeSpan IdleConnection
+               {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+                       set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+
+               [MonoTODO]
+               public TimeSpan HeaderWait
+               {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+                       set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+
+               [MonoTODO]
+               public long MinSendBytesPerSecond
+               {
+                       get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+                       set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
+               }
+       }
+}
\ No newline at end of file
index 8871d4aa1ea1e3453009d77c825a26a0681eefe9..2d321b814a1648e52420589cf1137428d99c1f11 100644 (file)
@@ -1116,6 +1116,7 @@ namespace MonoTests.System.Diagnostics
 #endif // MONO_FEATURE_PROCESS_START
 
                [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")]
                public void GetProcessesByName()
                {
                        // This should return Process[0] or a Process[] with all the "foo" programs running
@@ -1133,7 +1134,7 @@ namespace MonoTests.System.Diagnostics
                }
 
                [Test]
-               [NUnit.Framework.Category ("AndroidNotWorking")] //SELinux makes probing the parent process impossible
+               [NUnit.Framework.Category ("MobileNotWorking")]
                public void NonChildProcessWaitForExit ()
                {
                        if (!RunningOnUnix)
@@ -1157,7 +1158,7 @@ namespace MonoTests.System.Diagnostics
                }
 
                [Test]
-               [NUnit.Framework.Category ("AndroidNotWorking")] //SELinux makes probing the parent process impossible
+               [NUnit.Framework.Category ("MobileNotWorking")]
                public void NonChildProcessName ()
                {
                        if (!RunningOnUnix)
@@ -1172,7 +1173,7 @@ namespace MonoTests.System.Diagnostics
                }
 
                [Test]
-               [NUnit.Framework.Category ("AndroidNotWorking")] //SELinux makes probing the parent process impossible
+               [NUnit.Framework.Category ("MobileNotWorking")]
                public void NonChildProcessId ()
                {
                        if (!RunningOnUnix)
index 8dc20e21dc5e2b1da3702abea8ad0598c4999e6d..61e5b6472b96582b820051cf9f4e7de47e65aa85 100644 (file)
@@ -42,61 +42,27 @@ System.IO/RenamedEventHandler.cs
 System.IO/WaitForChangedResult.cs
 System.IO/WatcherChangeTypes.cs
 
-System.Net/AuthenticationManager.cs
 System.Net/BasicClient.cs
 System.Net/BindIPEndPoint.cs
-System.Net/ChunkedInputStream.cs
 System.Net/MonoChunkStream.cs
 System.Net/DecompressionMethods.cs
 System.Net/DefaultCertificatePolicy.cs
 System.Net/DigestClient.cs
 System.Net/Dns.cs
-System.Net/EndPointListener.cs
-System.Net/EndPointManager.cs
 System.Net/EndpointPermission.cs
-System.Net/FtpAsyncResult.cs
-System.Net/FtpDataStream.cs
-System.Net/FtpRequestCreator.cs
-System.Net/FtpStatus.cs
-System.Net/FtpWebRequest.cs
-System.Net/FtpWebResponse.cs
-System.Net/HttpConnection.cs
-System.Net/HttpListener.cs
-System.Net/HttpListener.Mono.cs
-System.Net/HttpListenerBasicIdentity.cs
-System.Net/HttpListenerContext.cs
-System.Net/HttpListenerPrefixCollection.cs
-System.Net/HttpListenerRequest.cs
-System.Net/HttpListenerResponse.cs
-System.Net/HttpListenerResponseHelper.cs
-System.Net/HttpListenerTimeoutManager.cs
 System.Net/HttpRequestCreator.cs
 System.Net/HttpStreamAsyncResult.cs
-System.Net/HttpWebRequest.cs
-System.Net/HttpWebResponse.cs
 System.Net/ICredentialPolicy.cs
 System.Net/IPv6Address.cs
-System.Net/IWebConnectionState.cs
 System.Net/IWebProxyScript.cs
-System.Net/ListenerAsyncResult.cs
 System.Net/ListenerPrefix.cs
-System.Net/MacProxy.cs
 System.Net/MonoHttpDate.cs
 System.Net/NetConfig.cs
-System.Net/NtlmClient.cs
 System.Net/RequestStream.cs
-System.Net/ResponseStream.cs
-System.Net/ServicePoint.cs
-System.Net/ServicePointManager.cs
-System.Net/ServicePointManager.extra.cs
 System.Net/SimpleAsyncResult.cs
 System.Net/SocketPermissionAttribute.cs
 System.Net/SocketPermission.cs
 System.Net/WebAsyncResult.cs
-System.Net/WebConnection.cs
-System.Net/WebConnectionData.cs
-System.Net/WebConnectionGroup.cs
-System.Net/WebConnectionStream.cs
 
 System.Net.Mail/AlternateView.cs
 System.Net.Mail/AlternateViewCollection.cs
@@ -112,7 +78,6 @@ System.Net.Mail/MailMessage.cs
 System.Net.Mail/MailPriority.cs
 System.Net.Mail/SendCompletedEventHandler.cs
 System.Net.Mail/SmtpAccess.cs
-System.Net.Mail/SmtpClient.cs
 System.Net.Mail/SmtpDeliveryFormat.cs
 System.Net.Mail/SmtpDeliveryMethod.cs
 System.Net.Mail/SmtpException.cs
@@ -145,7 +110,6 @@ System.Net.Security/LocalCertificateSelectionCallback.cs
 System.Net.Security/NegotiateStream.cs
 System.Net.Security/RemoteCertificateValidationCallback.cs
 System.Net.Security/SslPolicyErrors.cs
-System.Net.Security/SslStream.cs
 
 System.Net.Sockets/SafeSocketHandle.cs
 System.Net.Sockets/Socket.cs
@@ -279,8 +243,6 @@ Mono.Btls/MonoBtlsX509VerifyParam.cs
 Mono.Btls/X509CertificateImplBtls.cs
 Mono.Btls/X509ChainImplBtls.cs
 
-Mono.Http/NtlmClient.cs
-
 Mono.AppleTls/AppleCertificateHelper.cs
 Mono.AppleTls/AppleTlsContext.cs
 Mono.AppleTls/AppleTlsProvider.cs
@@ -295,18 +257,6 @@ Mono.AppleTls/Trust.cs
 Mono.AppleTls/SslConnection.cs
 Mono.AppleTls/Items.cs
 
-Mono.Net.Security/AsyncProtocolRequest.cs
-Mono.Net.Security/CallbackHelpers.cs
-Mono.Net.Security/ChainValidationHelper.cs
-Mono.Net.Security/LegacySslStream.cs
-Mono.Net.Security/MobileAuthenticatedStream.cs
-Mono.Net.Security/MobileTlsContext.cs
-Mono.Net.Security/LegacyTlsProvider.cs
-Mono.Net.Security/MonoTlsProviderFactory.cs
-Mono.Net.Security/MonoTlsStream.cs
-Mono.Net.Security/NoReflectionHelper.cs
-Mono.Net.Security/SystemCertificateValidator.cs
-
 Mono.Util/MonoPInvokeCallbackAttribute.cs
 
 MonoTouch/Dummy.cs
@@ -786,11 +736,8 @@ ReferenceSources/Win32Exception.cs
 ../referencesource/System/net/System/Net/Sockets/SocketOptionName.cs
 ../referencesource/System/net/System/Net/Sockets/SocketShutdown.cs
 ../referencesource/System/net/System/Net/Sockets/SocketType.cs
-../referencesource/System/net/System/Net/Sockets/TCPClient.cs
-../referencesource/System/net/System/Net/Sockets/TCPListener.cs
 ../referencesource/System/net/System/Net/Sockets/TransmitFileFlags.cs
 ../referencesource/System/net/System/Net/Sockets/UdpReceiveResult.cs
-../referencesource/System/net/System/Net/Sockets/UDPClient.cs
 
 ../referencesource/System/net/System/Net/NetworkInformation/DuplicateAddressDetectionState.cs
 ../referencesource/System/net/System/Net/NetworkInformation/GatewayIPAddressInformation.cs
@@ -917,6 +864,7 @@ corefx/SR.cs
 ../../../external/corefx/src/Common/src/System/Collections/Generic/EnumerableHelpers.cs
 ../../../external/corefx/src/Common/src/System/Collections/Generic/LargeArrayBuilder.cs
 
+../../../external/corefx/src/Common/src/System/Net/HttpStatusDescription.cs
 ../../../external/corefx/src/Common/src/System/Net/SecurityProtocol.cs
 ../../../external/corefx/src/Common/src/System/Net/UriScheme.cs
 
diff --git a/mcs/class/System/common_networking.sources b/mcs/class/System/common_networking.sources
new file mode 100644 (file)
index 0000000..548180b
--- /dev/null
@@ -0,0 +1,53 @@
+Mono.Http/NtlmClient.cs
+System.Net/NtlmClient.cs
+
+Mono.Net.Security/AsyncProtocolRequest.cs
+Mono.Net.Security/CallbackHelpers.cs
+Mono.Net.Security/ChainValidationHelper.cs
+Mono.Net.Security/LegacySslStream.cs
+Mono.Net.Security/LegacyTlsProvider.cs
+Mono.Net.Security/MobileAuthenticatedStream.cs
+Mono.Net.Security/MobileTlsContext.cs
+Mono.Net.Security/MonoTlsProviderFactory.cs
+Mono.Net.Security/MonoTlsStream.cs
+Mono.Net.Security/NoReflectionHelper.cs
+Mono.Net.Security/SystemCertificateValidator.cs
+
+System.Net/MacProxy.cs
+System.Net.Mail/SmtpClient.cs
+System.Net.Security/SslStream.cs
+System.Net/AuthenticationManager.cs
+System.Net/ChunkedInputStream.cs
+System.Net/EndPointListener.cs
+System.Net/EndPointManager.cs
+System.Net/FtpAsyncResult.cs
+System.Net/FtpDataStream.cs
+System.Net/FtpRequestCreator.cs
+System.Net/FtpStatus.cs
+System.Net/FtpWebRequest.cs
+System.Net/FtpWebResponse.cs
+System.Net/HttpConnection.cs
+System.Net/HttpListener.cs
+System.Net/HttpListener.Mono.cs
+System.Net/HttpListenerBasicIdentity.cs
+System.Net/HttpListenerContext.cs
+System.Net/HttpListenerPrefixCollection.cs
+System.Net/HttpListenerRequest.cs
+System.Net/HttpListenerResponse.cs
+System.Net/HttpListenerTimeoutManager.cs
+System.Net/HttpWebRequest.cs
+System.Net/HttpWebResponse.cs
+System.Net/IWebConnectionState.cs
+System.Net/ListenerAsyncResult.cs
+System.Net/ResponseStream.cs
+System.Net/ServicePoint.cs
+System.Net/ServicePointManager.cs
+System.Net/ServicePointManager.extra.cs
+System.Net/WebConnection.cs
+System.Net/WebConnectionData.cs
+System.Net/WebConnectionGroup.cs
+System.Net/WebConnectionStream.cs
+
+../referencesource/System/net/System/Net/Sockets/TCPClient.cs
+../referencesource/System/net/System/Net/Sockets/TCPListener.cs
+../referencesource/System/net/System/Net/Sockets/UDPClient.cs
index aaa9ab17047a17639cff49ddac43e7ceb55488ad..738753a16c7f41213b7e681e1613258809e7e2b0 100644 (file)
@@ -1,2 +1,3 @@
 #include common.sources
+#include common_networking.sources
 System.IO/FileSystemWatcher_mobile.cs
index b65990c3b4c761af0b3fdf8a77c2ffea9bc53de9..58aa75573b00f1c9198b7072bc70f5cea402f204 100644 (file)
@@ -1,54 +1 @@
-Mono.Http/NtlmClient.cs
-Mono.Net.Security/AsyncProtocolRequest.cs
-Mono.Net.Security/CallbackHelpers.cs
-Mono.Net.Security/ChainValidationHelper.cs
-Mono.Net.Security/LegacySslStream.cs
-Mono.Net.Security/LegacySslStream.cs
-Mono.Net.Security/LegacyTlsProvider.cs
-Mono.Net.Security/LegacyTlsProvider.cs
-Mono.Net.Security/MobileAuthenticatedStream.cs
-Mono.Net.Security/MobileTlsContext.cs
-Mono.Net.Security/MonoTlsProviderFactory.cs
-Mono.Net.Security/MonoTlsProviderImpl.cs
-Mono.Net.Security/MonoTlsStream.cs
-Mono.Net.Security/NoReflectionHelper.cs
-Mono.Net.Security/SystemCertificateValidator.cs
-System.Net/MacProxy.cs
-System.Net.Mail/SmtpClient.cs
-System.Net.Security/SslStream.cs
-System.Net.Sockets/TcpClient.cs
-System.Net.Sockets/TcpListener.cs
-System.Net.WebSockets/ClientWebSocket.cs
-System.Net/AuthenticationManager.cs
-System.Net/ChunkedInputStream.cs
-System.Net/EndPointListener.cs
-System.Net/EndPointManager.cs
-System.Net/FtpAsyncResult.cs
-System.Net/FtpDataStream.cs
-System.Net/FtpRequestCreator.cs
-System.Net/FtpRequestCreator.cs
-System.Net/FtpStatus.cs
-System.Net/FtpWebRequest.cs
-System.Net/FtpWebResponse.cs
-System.Net/HttpConnection.cs
-System.Net/HttpListener.cs
-System.Net/HttpListener.Mono.cs
-System.Net/HttpListenerContext.cs
-System.Net/HttpListenerPrefixCollection.cs
-System.Net/HttpListenerRequest.cs
-System.Net/HttpListenerResponse.cs
-System.Net/HttpWebRequest.cs
-System.Net/HttpWebResponse.cs
-System.Net/IWebConnectionState.cs
-System.Net/ListenerAsyncResult.cs
-System.Net/NtlmClient.cs
-System.Net/ResponseStream.cs
-System.Net/ServicePoint.cs
-System.Net/ServicePointManager.cs
-System.Net/WebConnection.cs
-System.Net/WebConnectionData.cs
-System.Net/WebConnectionGroup.cs
-System.Net/WebConnectionStream.cs
-../referencesource/System/net/System/Net/Sockets/TCPClient.cs
-../referencesource/System/net/System/Net/Sockets/TCPListener.cs
-../referencesource/System/net/System/Net/Sockets/UDPClient.cs
+#include common_networking.sources
index 0b3eb092e74c5d963d391209c6ba14d699d54c2a..ad5e4c7bee884a6c7cc123110d6a27ecf7e6567b 100644 (file)
@@ -9,10 +9,12 @@ System.Net/FtpRequestCreator.platformnotsupported.cs
 System.Net/FtpWebRequest.platformnotsupported.cs
 System.Net/FtpWebResponse.platformnotsupported.cs
 System.Net/HttpListener.platformnotsupported.cs
+System.Net/HttpListenerBasicIdentity.platformnotsupported.cs
 System.Net/HttpListenerContext.platformnotsupported.cs
 System.Net/HttpListenerPrefixCollection.platformnotsupported.cs
 System.Net/HttpListenerRequest.platformnotsupported.cs
 System.Net/HttpListenerResponse.platformnotsupported.cs
+System.Net/HttpListenerTimeoutManager.platformnotsupported.cs
 System.Net/HttpWebRequest.platformnotsupported.cs
 System.Net/HttpWebResponse.platformnotsupported.cs
 System.Net/ServicePoint.platformnotsupported.cs
index a8a0fad0838669d850b7a562eba7cc15b1d308f7..46b53b430521e615b5766bb2d9fd720efbd9d4ed 100644 (file)
@@ -1,4 +1,5 @@
 #include common.sources
+#include common_networking.sources
 
 Microsoft.CSharp/CSharpCodeGenerator.cs
 Microsoft.VisualBasic/VBCodeGenerator.cs
index 2bf573ea9490c530d7fb8a75a32a924d85f1ba6e..f133104e8c84bb367ed15ba3d297bf76984636a1 100644 (file)
@@ -55,6 +55,10 @@ namespace Microsoft.Win32
                {
                }
 
+               public void Close ()
+               {
+               }
+
                public RegistryKey CreateSubKey (string subkey)
                {
                        throw new PlatformNotSupportedException ();
@@ -70,6 +74,26 @@ namespace Microsoft.Win32
                        throw new PlatformNotSupportedException ();
                }
 
+               public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck, RegistryOptions registryOptions)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck, RegistrySecurity registrySecurity)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryKey CreateSubKey (string subkey, RegistryKeyPermissionCheck permissionCheck, RegistryOptions registryOptions, RegistrySecurity registrySecurity)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
                public void DeleteSubKey (string subkey)
                {
                }
@@ -128,6 +152,16 @@ namespace Microsoft.Win32
                        throw new PlatformNotSupportedException ();
                }
 
+               public RegistrySecurity GetAccessControl ()
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistrySecurity GetAccessControl (AccessControlSections includeSections)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
                public RegistryValueKind GetValueKind (string name)
                {
                        throw new PlatformNotSupportedException ();
@@ -158,6 +192,31 @@ namespace Microsoft.Win32
                        throw new PlatformNotSupportedException ();
                }
 
+               public RegistryKey OpenSubKey (string name, RegistryKeyPermissionCheck permissionCheck)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public RegistryKey OpenSubKey (string name, RegistryKeyPermissionCheck permissionCheck, RegistryRights rights)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public static RegistryKey OpenRemoteBaseKey (RegistryHive hKey, string machineName)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public static RegistryKey OpenRemoteBaseKey (RegistryHive hKey, string machineName, RegistryView view)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               public void SetAccessControl (RegistrySecurity registrySecurity)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
                public void SetValue (string name, object value)
                {
                }
index 25c642851701f3da7e124fafe771d5328404254b..a1f95aacc2ab1e535d8a94e296cfcea86b9d5aca 100644 (file)
@@ -27,7 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if WIN_PLATFORM || XAMMAC_4_5
 namespace Microsoft.Win32
 {
        public enum RegistryKeyPermissionCheck
@@ -37,4 +36,3 @@ namespace Microsoft.Win32
                ReadWriteSubTree        = 2,
        }
 }
-#endif
index 5c997cd677ac36fc30e04f9f4f2ea25d99e32d26..28124b21aaf4341cf93686fa5dbd05f9d84e9658 100644 (file)
@@ -7,7 +7,20 @@ namespace Mono {
                internal static string PtrToUtf8String (IntPtr ptr)
                {
                        unsafe {
-                               return new String ((sbyte*)ptr);
+                               if (ptr == IntPtr.Zero)
+                                       return string.Empty;
+
+                               byte* bytes = (byte*)ptr;
+                               int length = 0;
+
+                               try {
+                                       while (bytes++ [0] != 0)
+                                               length++;
+                               } catch (NullReferenceException) {
+                                       throw new ArgumentOutOfRangeException ("ptr", "Value does not refer to a valid string.");
+                               }
+
+                               return new String ((sbyte*)ptr, 0, length, System.Text.Encoding.UTF8);
                        }
                }
 
index 51902a47f2ca76f4dc29b6c766ed70b674d002bd..7ca54b976187733f6c00f4d6b86a949a28a2ac80 100644 (file)
@@ -94,7 +94,41 @@ namespace System.Security.Principal {
                BuiltinPerformanceLoggingUsersSid,
                BuiltinAuthorizationAccessSid,
                WinBuiltinTerminalServerLicenseServersSid,
-               MaxDefined = WinBuiltinTerminalServerLicenseServersSid
+               MaxDefined = WinBuiltinTerminalServerLicenseServersSid,
+               WinBuiltinDCOMUsersSid,
+               WinBuiltinIUsersSid,
+               WinIUserSid,
+               WinBuiltinCryptoOperatorsSid,
+               WinUntrustedLabelSid,
+               WinLowLabelSid,
+               WinMediumLabelSid,
+               WinHighLabelSid,
+               WinSystemLabelSid,
+               WinWriteRestrictedCodeSid,
+               WinCreatorOwnerRightsSid,
+               WinCacheablePrincipalsGroupSid,
+               WinNonCacheablePrincipalsGroupSid,
+               WinEnterpriseReadonlyControllersSid,
+               WinAccountReadonlyControllersSid,
+               WinBuiltinEventLogReadersGroup,
+               WinNewEnterpriseReadonlyControllersSid,
+               WinBuiltinCertSvcDComAccessGroup,
+               WinMediumPlusLabelSid,
+               WinLocalLogonSid,
+               WinConsoleLogonSid,
+               WinThisOrganizationCertificateSid,
+               WinApplicationPackageAuthoritySid,
+               WinBuiltinAnyPackageSid,
+               WinCapabilityInternetClientSid,
+               WinCapabilityInternetClientServerSid,
+               WinCapabilityPrivateNetworkClientServerSid,
+               WinCapabilityPicturesLibrarySid,
+               WinCapabilityVideosLibrarySid,
+               WinCapabilityMusicLibrarySid,
+               WinCapabilityDocumentsLibrarySid,
+               WinCapabilitySharedUserCertificatesSid,
+               WinCapabilityEnterpriseAuthenticationSid,
+               WinCapabilityRemovableStorageSid
        }
 }
 
index 4c8bfb4208b9bea42447c8fa4c9ad77f6d0d2935..d0f83022fbc7f17257cfa7f370b8e23b96a5c5ba 100644 (file)
@@ -62,7 +62,7 @@ MONO = \
 
 DIFF = diff -rup
 DIFF_QUIET = diff --brief
-ifeq ($(PLATFORM), win32)
+ifeq ($(BUILD_PLATFORM), win32)
 DIFF = diff -rupZ
 DIFF_QUIET = diff --brief -Z
 endif
index cdca30fb3fbe5489a9eb10852ebb1d49e7a3b639..e27822addc65e0fda8465c0975549a93b25bc035 100644 (file)
@@ -14,7 +14,7 @@ LIB_REFS = System.ServiceProcess Mono.Posix System
 # Copied from library.make
 
 # -- begin --
-ifeq ($(PLATFORM), win32)
+ifeq ($(BUILD_PLATFORM), win32)
 GACDIR = `cygpath -w $(mono_libdir)`
 GACROOT = `cygpath -w $(DESTDIR)$(mono_libdir)`
 test_flags += -d:WINDOWS
index 8578c24824a376c3b4b54c0991b43adfe9823f22..344d2d6e978efe3467ab9a88b8da6f4e79875812 100644 (file)
@@ -33,6 +33,9 @@ mono_dynamic_image_register_token (MonoDynamicImage *assembly, guint32 token, Mo
 gboolean
 mono_dynamic_image_is_valid_token (MonoDynamicImage *image, guint32 token);
 
+MonoObjectHandle
+mono_dynamic_image_get_registered_token (MonoDynamicImage *dynimage, guint32 token, MonoError *error);
+
 MonoDynamicImage*
 mono_dynamic_image_create (MonoDynamicAssembly *assembly, char *assembly_name, char *module_name);
 
index 440f8094f02ca531f46e0cd60fca494a21974f52..b846347126cb0bf39f5baea7359c3544099cf384 100644 (file)
@@ -185,7 +185,7 @@ dynamic_image_unlock (MonoDynamicImage *image)
        mono_image_unlock ((MonoImage*)image);
 }
 
-#ifndef DISABLE_REFLECTION_INIT
+#ifndef DISABLE_REFLECTION_EMIT
 /*
  * mono_dynamic_image_register_token:
  *
@@ -222,6 +222,22 @@ lookup_dyn_token (MonoDynamicImage *assembly, guint32 token)
        return obj;
 }
 
+#ifndef DISABLE_REFLECTION_EMIT
+MonoObjectHandle
+mono_dynamic_image_get_registered_token (MonoDynamicImage *dynimage, guint32 token, MonoError *error)
+{
+       error_init (error);
+       return MONO_HANDLE_NEW (MonoObject, lookup_dyn_token (dynimage, token));
+}
+#else /* DISABLE_REFLECTION_EMIT */
+MonoObjectHandle
+mono_dynamic_image_get_registered_token (MonoDynamicImage *dynimage, guint32 token, MonoError *error)
+{
+       g_assert_not_reached ();
+       return NULL_HANDLE;
+}
+#endif
+
 /**
  * 
  * mono_dynamic_image_is_valid_token:
index 37e349224a428c2191141a2526e34edae54000f3..b8d6b81b1e76643bf7ea75cdcdfba5500dd831d0 100644 (file)
@@ -281,7 +281,7 @@ ICALL(ENV_14, "get_ProcessorCount", mono_cpu_count)
 ICALL(ENV_15, "get_TickCount", ves_icall_System_Environment_get_TickCount)
 HANDLES(ICALL(ENV_16, "get_UserName", ves_icall_System_Environment_get_UserName))
 HANDLES(ICALL(ENV_16b, "get_bundled_machine_config", ves_icall_System_Environment_get_bundled_machine_config))
-ICALL(ENV_16m, "internalBroadcastSettingChange", ves_icall_System_Environment_BroadcastSettingChange)
+HANDLES(ICALL(ENV_16m, "internalBroadcastSettingChange", ves_icall_System_Environment_BroadcastSettingChange))
 HANDLES(ICALL(ENV_17, "internalGetEnvironmentVariable_native", ves_icall_System_Environment_GetEnvironmentVariable_native))
 HANDLES(ICALL(ENV_18, "internalGetGacPath", ves_icall_System_Environment_GetGacPath))
 HANDLES(ICALL(ENV_19, "internalGetHome", ves_icall_System_Environment_InternalGetHome))
@@ -546,10 +546,10 @@ ICALL_TYPE(DYNM, "System.Reflection.Emit.DynamicMethod", DYNM_1)
 HANDLES(ICALL(DYNM_1, "create_dynamic_method", ves_icall_DynamicMethod_create_dynamic_method))
 
 ICALL_TYPE(ENUMB, "System.Reflection.Emit.EnumBuilder", ENUMB_1)
-ICALL(ENUMB_1, "setup_enum_type", ves_icall_EnumBuilder_setup_enum_type)
+HANDLES(ICALL(ENUMB_1, "setup_enum_type", ves_icall_EnumBuilder_setup_enum_type))
 
 ICALL_TYPE(MODULEB, "System.Reflection.Emit.ModuleBuilder", MODULEB_10)
-ICALL(MODULEB_10, "GetRegisteredToken", ves_icall_ModuleBuilder_GetRegisteredToken)
+HANDLES(ICALL(MODULEB_10, "GetRegisteredToken", ves_icall_ModuleBuilder_GetRegisteredToken))
 HANDLES(ICALL(MODULEB_8, "RegisterToken", ves_icall_ModuleBuilder_RegisterToken))
 ICALL(MODULEB_1, "WriteToFile", ves_icall_ModuleBuilder_WriteToFile)
 HANDLES(ICALL(MODULEB_2, "basic_init", ves_icall_ModuleBuilder_basic_init))
@@ -557,11 +557,11 @@ ICALL(MODULEB_3, "build_metadata", ves_icall_ModuleBuilder_build_metadata)
 HANDLES(ICALL(MODULEB_5, "getMethodToken", ves_icall_ModuleBuilder_getMethodToken))
 HANDLES(ICALL(MODULEB_6, "getToken", ves_icall_ModuleBuilder_getToken))
 HANDLES(ICALL(MODULEB_7, "getUSIndex", ves_icall_ModuleBuilder_getUSIndex))
-ICALL(MODULEB_9, "set_wrappers_type", ves_icall_ModuleBuilder_set_wrappers_type)
+HANDLES(ICALL(MODULEB_9, "set_wrappers_type", ves_icall_ModuleBuilder_set_wrappers_type))
 
 ICALL_TYPE(SIGH, "System.Reflection.Emit.SignatureHelper", SIGH_1)
-ICALL(SIGH_1, "get_signature_field", ves_icall_SignatureHelper_get_signature_field)
-ICALL(SIGH_2, "get_signature_local", ves_icall_SignatureHelper_get_signature_local)
+HANDLES(ICALL(SIGH_1, "get_signature_field", ves_icall_SignatureHelper_get_signature_field))
+HANDLES(ICALL(SIGH_2, "get_signature_local", ves_icall_SignatureHelper_get_signature_local))
 
 ICALL_TYPE(TYPEB, "System.Reflection.Emit.TypeBuilder", TYPEB_1)
 HANDLES(ICALL(TYPEB_1, "create_runtime_class", ves_icall_TypeBuilder_create_runtime_class))
@@ -766,7 +766,7 @@ ICALL(RFH_1, "SetValueDirect", ves_icall_System_RuntimeFieldHandle_SetValueDirec
 ICALL(RFH_2, "SetValueInternal", ves_icall_MonoField_SetValueInternal)
 
 ICALL_TYPE(MHAN, "System.RuntimeMethodHandle", MHAN_1)
-ICALL(MHAN_1, "GetFunctionPointer", ves_icall_RuntimeMethodHandle_GetFunctionPointer)
+HANDLES(ICALL(MHAN_1, "GetFunctionPointer", ves_icall_RuntimeMethodHandle_GetFunctionPointer))
 
 ICALL_TYPE(RT, "System.RuntimeType", RT_1)
 HANDLES(ICALL(RT_1, "CreateInstanceInternal", ves_icall_System_Activator_CreateInstanceInternal))
@@ -830,9 +830,9 @@ ICALL_TYPE(EVID, "System.Security.Policy.Evidence", EVID_1)
 HANDLES(ICALL(EVID_1, "IsAuthenticodePresent", ves_icall_System_Security_Policy_Evidence_IsAuthenticodePresent))
 
 ICALL_TYPE(WINID, "System.Security.Principal.WindowsIdentity", WINID_1)
-ICALL(WINID_1, "GetCurrentToken", ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken)
-ICALL(WINID_2, "GetTokenName", ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName)
-ICALL(WINID_3, "GetUserToken", ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken)
+HANDLES(ICALL(WINID_1, "GetCurrentToken", ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken))
+HANDLES(ICALL(WINID_2, "GetTokenName", ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName))
+HANDLES(ICALL(WINID_3, "GetUserToken", ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken))
 ICALL(WINID_4, "_GetRoles", ves_icall_System_Security_Principal_WindowsIdentity_GetRoles)
 
 ICALL_TYPE(WINIMP, "System.Security.Principal.WindowsImpersonationContext", WINIMP_1)
@@ -872,7 +872,7 @@ ICALL_TYPE(TENC, "System.Text.EncodingHelper", TENC_1)
 HANDLES(ICALL(TENC_1, "InternalCodePage", ves_icall_System_Text_EncodingHelper_InternalCodePage))
 
 ICALL_TYPE(UNORM, "System.Text.Normalization", UNORM_1)
-ICALL(UNORM_1, "load_normalization_resource", ves_icall_System_Text_Normalization_load_normalization_resource)
+HANDLES(ICALL(UNORM_1, "load_normalization_resource", ves_icall_System_Text_Normalization_load_normalization_resource))
 
 ICALL_TYPE(ILOCK, "System.Threading.Interlocked", ILOCK_1)
 ICALL(ILOCK_1, "Add(int&,int)", ves_icall_System_Threading_Interlocked_Add_Int)
index 60cca8316b0ae31da8f794ecc075c71558cdae13..c172b8404bcbf9d646418553d29c3281ee6b9b5a 100644 (file)
@@ -44,8 +44,8 @@ mono_icall_set_environment_variable (MonoString *name, MonoString *value);
 MonoStringHandle
 mono_icall_get_windows_folder_path (int folder, MonoError *error);
 
-void
-mono_icall_broadcast_setting_change (void);
+MonoBoolean
+mono_icall_broadcast_setting_change (MonoError *error);
 
 void
 mono_icall_write_windows_debug_string (MonoString *message);
index 2708e90e26e5b2d2faa2c0f53e1606de13f66efe..918510b1c7b9d66a741a1e798f0ba871b733505c 100644 (file)
@@ -44,20 +44,18 @@ mono_icall_get_logical_drives (void)
        return NULL;
 }
 
-void
-mono_icall_broadcast_setting_change (void)
+MonoBoolean
+mono_icall_broadcast_setting_change (MonoError *error)
 {
-       MonoError mono_error;
-       error_init (&mono_error);
+       error_init (error);
 
        g_unsupported_api ("SendMessageTimeout");
 
-       mono_error_set_not_supported (&mono_error, G_UNSUPPORTED_API, "SendMessageTimeout");
-       mono_error_set_pending_exception (&mono_error);
+       mono_error_set_not_supported (error, G_UNSUPPORTED_API, "SendMessageTimeout");
 
        SetLastError (ERROR_NOT_SUPPORTED);
 
-       return;
+       return is_ok (error);
 }
 
 guint32
index 21a759157c08641bc2d5cfdcac05f8ebd6c738ca..691d1b03b30fa50e3a3c62a02fd439eebe195e96 100644 (file)
@@ -197,10 +197,12 @@ mono_icall_get_windows_folder_path (int folder, MonoError *error)
 #endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) */
 
 #if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT)
-void
-mono_icall_broadcast_setting_change (void)
+MonoBoolean
+mono_icall_broadcast_setting_change (MonoError *error)
 {
+       error_init (error);
        SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, (WPARAM)NULL, (LPARAM)L"Environment", SMTO_ABORTIFHUNG, 2000, 0);
+       return TRUE;
 }
 
 gint32
index 33376d734921926e39e1d9b1611ccb1bea606cd8..ed071dd099555683c2851f00500137b4fdad6973 100644 (file)
@@ -6885,17 +6885,19 @@ ves_icall_System_Environment_get_HasShutdownStarted (void)
 }
 
 #ifndef HOST_WIN32
-static inline void
-mono_icall_broadcast_setting_change (void)
+static inline MonoBoolean
+mono_icall_broadcast_setting_change (MonoError *error)
 {
-       return;
+       error_init (error);
+       return TRUE;
 }
 #endif /* !HOST_WIN32 */
 
 ICALL_EXPORT void
-ves_icall_System_Environment_BroadcastSettingChange (void)
+ves_icall_System_Environment_BroadcastSettingChange (MonoError *error)
 {
-       mono_icall_broadcast_setting_change ();
+       error_init (error);
+       mono_icall_broadcast_setting_change (error);
 }
 
 ICALL_EXPORT
@@ -7089,12 +7091,10 @@ ves_icall_System_IO_DriveInfo_GetDriveType (MonoString *root_path_name)
 #endif /* PLATFORM_NO_DRIVEINFO */
 
 ICALL_EXPORT gpointer
-ves_icall_RuntimeMethodHandle_GetFunctionPointer (MonoMethod *method)
+ves_icall_RuntimeMethodHandle_GetFunctionPointer (MonoMethod *method, MonoError *error)
 {
-       MonoError error;
-       gpointer result = mono_compile_method_checked (method, &error);
-       mono_error_set_pending_exception (&error);
-       return result;
+       error_init (error);
+       return mono_compile_method_checked (method, error);
 }
 
 ICALL_EXPORT MonoStringHandle
index 205fae8f031919017fbbdc109f1f41edd5c8d230..b0e6135f49a931befbff87178a53a3be7e93953a 100644 (file)
@@ -966,14 +966,16 @@ static gint32 string_invariant_indexof_char (MonoString *source, gint32 sindex,
 }
 
 void ves_icall_System_Text_Normalization_load_normalization_resource (guint8 **argProps,
-                                                                                                                                         guint8 **argMappedChars,
-                                                                                                                                         guint8 **argCharMapIndex,
-                                                                                                                                         guint8 **argHelperIndex,
-                                                                                                                                         guint8 **argMapIdxToComposite,
-                                                                                                                                         guint8 **argCombiningClass)
+                                                                     guint8 **argMappedChars,
+                                                                     guint8 **argCharMapIndex,
+                                                                     guint8 **argHelperIndex,
+                                                                     guint8 **argMapIdxToComposite,
+                                                                     guint8 **argCombiningClass,
+                                                                     MonoError *error)
 {
+       error_init (error);
 #ifdef DISABLE_NORMALIZATION
-       mono_set_pending_exception (mono_get_exception_not_supported ("This runtime has been compiled without string normalization support."));
+       mono_error_set_not_supported (error, "This runtime has been compiled without string normalization support.");
        return;
 #else
        *argProps = (guint8*)props;
index 6987aa316167888695fc6423e8bedaab999854bc..0faee51a1587af83ee382cbfd5e555d9be88e8e5 100644 (file)
@@ -51,6 +51,6 @@ extern MonoString *ves_icall_System_String_InternalToLower_Comp (MonoString *thi
 extern MonoString *ves_icall_System_String_InternalToUpper_Comp (MonoString *this_obj, MonoCultureInfo *cult);
 extern gunichar2 ves_icall_System_Char_InternalToUpper_Comp (gunichar2 c, MonoCultureInfo *cult);
 extern gunichar2 ves_icall_System_Char_InternalToLower_Comp (gunichar2 c, MonoCultureInfo *cult);
-extern void ves_icall_System_Text_Normalization_load_normalization_resource (guint8 **argProps, guint8** argMappedChars, guint8** argCharMapIndex, guint8** argHelperIndex, guint8** argMapIdxToComposite, guint8** argCombiningClass);
+extern void ves_icall_System_Text_Normalization_load_normalization_resource (guint8 **argProps, guint8** argMappedChars, guint8** argCharMapIndex, guint8** argHelperIndex, guint8** argMapIdxToComposite, guint8** argCombiningClass, MonoError *error);
 
 #endif /* _MONO_METADATA_FILEIO_H_ */
index 42f5297aaa627c0373e4ca254d44a1ee78bb3743..72989994c1397eb9c775eb5a6aca8e909b5087c2 100644 (file)
 #include "mono/metadata/mono-security-windows-internals.h"
 
 gpointer
-ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (void)
+mono_security_principal_windows_identity_get_current_token ()
 {
-       MonoError mono_error;
-       error_init (&mono_error);
-
        g_unsupported_api ("OpenThreadToken, OpenProcessToken");
 
-       mono_error_set_not_supported (&mono_error, G_UNSUPPORTED_API, "OpenThreadToken, OpenProcessToken");
-       mono_error_set_pending_exception (&mono_error);
-
        SetLastError (ERROR_NOT_SUPPORTED);
-
        return NULL;
 }
 
+gpointer
+ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (MonoError *error)
+{
+       error_init (error);
+
+       mono_error_set_not_supported (error, G_UNSUPPORTED_API, "OpenThreadToken, OpenProcessToken");
+       return mono_security_principal_windows_identity_get_current_token ();
+}
+
 MonoArray*
 ves_icall_System_Security_Principal_WindowsIdentity_GetRoles (gpointer token)
 {
index 7a34c8a1a6186206251169b4a6e0602a3dfa0c98..bfdc96a9bb2804621bd149e99b7d36cd3967ee72 100644 (file)
@@ -69,7 +69,7 @@ GetSidName (gunichar2 *server, PSID sid, gint32 *size)
 }
 
 gpointer
-ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (void)
+mono_security_principal_windows_identity_get_current_token (void)
 {
        gpointer token = NULL;
 
@@ -86,6 +86,13 @@ ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (void)
        return token;
 }
 
+gpointer
+ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (MonoError *error)
+{
+       error_init (error);
+       return mono_security_principal_windows_identity_get_current_token ();
+}
+
 gint32
 mono_security_win_get_token_name (gpointer token, gunichar2 ** uniname)
 {
@@ -104,34 +111,33 @@ mono_security_win_get_token_name (gpointer token, gunichar2 ** uniname)
 }
 #endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) */
 
-MonoString*
-ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token)
+MonoStringHandle
+ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token, MonoError *error)
 {
-       MonoError error;
-       MonoString *result = NULL;
+       MonoStringHandle result;
        gunichar2 *uniname = NULL;
        gint32 size = 0;
 
-       error_init (&error);
+       error_init (error);
 
        size = mono_security_win_get_token_name (token, &uniname);
 
        if (size > 0) {
-               result = mono_string_new_utf16_checked (mono_domain_get (), uniname, size, &error);
+               result = mono_string_new_utf16_handle (mono_domain_get (), uniname, size, error);
        }
        else
-               result = mono_string_new_checked (mono_domain_get (), "", &error);
+               result = mono_string_new_handle (mono_domain_get (), "", error);
 
        if (uniname)
                g_free (uniname);
 
-       mono_error_set_pending_exception (&error);
        return result;
 }
 
 gpointer
-ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *username)
+ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoStringHandle username, MonoError *error)
 {
+       error_init (error);
        gpointer token = NULL;
 
        /* TODO: MS has something like this working in Windows 2003 (client and
@@ -264,7 +270,7 @@ GetCurrentUserSid (void)
 {
        PSID sid = NULL;
        guint32 size = 0;
-       gpointer token = ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken ();
+       gpointer token = mono_security_principal_windows_identity_get_current_token ();
 
        GetTokenInformation (token, TokenUser, NULL, size, (PDWORD)&size);
        if (size > 0) {
index fe043d0a6bfaa861dc0b37a0ac307dd1bc19381d..e3b82bcd61120cd411065aa34771a9879abe8d0b 100644 (file)
@@ -216,11 +216,18 @@ IsMemberOf (gid_t user, struct group *g)
 
 #ifndef HOST_WIN32
 gpointer
-ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (void)
+mono_security_principal_windows_identity_get_current_token ()
 {
        return GINT_TO_POINTER (geteuid ());
 }
 
+gpointer
+ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (MonoError *error)
+{
+       error_init (error);
+       return mono_security_principal_windows_identity_get_current_token ();
+}
+
 static gint32
 internal_get_token_name (gpointer token, gunichar2 ** uniname)
 {
@@ -237,38 +244,37 @@ internal_get_token_name (gpointer token, gunichar2 ** uniname)
        return size;
 }
 
-MonoString*
-ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token)
+MonoStringHandle
+ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token, MonoError *error)
 {
-       MonoError error;
-       MonoString *result = NULL;
+       MonoStringHandle result;
        gunichar2 *uniname = NULL;
        gint32 size = 0;
 
-       error_init (&error);
+       error_init (error);
 
        size = internal_get_token_name (token, &uniname);
 
        if (size > 0) {
-               result = mono_string_new_utf16_checked (mono_domain_get (), uniname, size, &error);
+               result = mono_string_new_utf16_handle (mono_domain_get (), uniname, size, error);
        }
        else
-               result = mono_string_new_checked (mono_domain_get (), "", &error);
+               result = mono_string_new_handle (mono_domain_get (), "", error);
 
        if (uniname)
                g_free (uniname);
 
-       mono_error_set_pending_exception (&error);
        return result;
 }
 #endif  /* !HOST_WIN32 */
 
 #ifndef HOST_WIN32
 gpointer
-ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *username)
+ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoStringHandle username, MonoError *error)
 {
        gpointer token = (gpointer)-2;
 
+       error_init (error);
 #ifdef HAVE_PWD_H
 
 #ifdef HAVE_GETPWNAM_R
@@ -281,7 +287,8 @@ ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *us
        gchar *utf8_name;
        gboolean result;
 
-       utf8_name = mono_unicode_to_external (mono_string_chars (username));
+       utf8_name = mono_string_handle_to_utf8 (username, error);
+       return_val_if_nok (error, NULL);
 
 #ifdef HAVE_GETPWNAM_R
 #ifdef _SC_GETPW_R_SIZE_MAX
index 9ad68f46a1540eaefe5a6c19bb438c1f7196a846..59b1cc558995810ce60a38bd480b4515d0c5ccbc 100644 (file)
@@ -1465,11 +1465,11 @@ mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, Mono
 MonoReflectionEvent *
 ves_icall_TypeBuilder_get_event_info (MonoReflectionTypeBuilder *tb, MonoReflectionEventBuilder *eb);
 
-MonoArray *
-ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelper *sig);
+MonoArrayHandle
+ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelperHandle sig, MonoError *error);
 
-MonoArray *
-ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelper *sig);
+MonoArrayHandle
+ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelperHandle sig, MonoError *error);
 
 MonoReflectionMarshalAsAttributeHandle
 mono_reflection_marshal_as_attribute_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec, MonoError *error);
@@ -1880,8 +1880,8 @@ ves_icall_ModuleBuilder_build_metadata (MonoReflectionModuleBuilder *mb);
 void
 ves_icall_ModuleBuilder_RegisterToken (MonoReflectionModuleBuilderHandle mb, MonoObjectHandle obj, guint32 token, MonoError *error);
 
-MonoObject*
-ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, guint32 token);
+MonoObjectHandle
+ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilderHandle mb, guint32 token, MonoError *error);
 
 void
 ves_icall_AssemblyBuilder_basic_init (MonoReflectionAssemblyBuilder *assemblyb);
@@ -1899,8 +1899,9 @@ MonoReflectionTypeHandle
 ves_icall_TypeBuilder_create_runtime_class (MonoReflectionTypeBuilderHandle tb, MonoError *error);
 
 void
-ves_icall_EnumBuilder_setup_enum_type (MonoReflectionType *enumtype,
-                                                                          MonoReflectionType *t);
+ves_icall_EnumBuilder_setup_enum_type (MonoReflectionTypeHandle enumtype,
+                                      MonoReflectionTypeHandle t,
+                                      MonoError *error);
 
 void
 ves_icall_ModuleBuilder_basic_init (MonoReflectionModuleBuilderHandle moduleb, MonoError *error);
@@ -1909,7 +1910,7 @@ guint32
 ves_icall_ModuleBuilder_getUSIndex (MonoReflectionModuleBuilderHandle module, MonoStringHandle str, MonoError *error);
 
 void
-ves_icall_ModuleBuilder_set_wrappers_type (MonoReflectionModuleBuilder *moduleb, MonoReflectionType *type);
+ves_icall_ModuleBuilder_set_wrappers_type (MonoReflectionModuleBuilderHandle moduleb, MonoReflectionTypeHandle type, MonoError *error);
 
 MonoAssembly*
 mono_try_assembly_resolve_handle (MonoDomain *domain, MonoStringHandle fname, MonoAssembly *requesting, gboolean refonly, MonoError *error);
index 9578b47e5d5ec61ae5ff9d8b2be8574fc485535d..ea2ff0c3d7b2fc029d42a882f828d220bee6258f 100644 (file)
@@ -671,8 +671,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 *main_clause;
-       int pos, pos_leave;
+       MonoExceptionClause *clauses, *main_clause, *serialization_clause;
+       int pos, pos_leave, pos_leave_serialization;
        gboolean copy_return;
        WrapperInfo *info;
 
@@ -714,7 +714,8 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
 
        /* try */
 
-       main_clause = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
+       clauses = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, 2 * sizeof (MonoExceptionClause));
+       main_clause = &clauses [0];
        main_clause->try_offset = mono_mb_get_label (mb);
 
        /* Clean the call context */
@@ -894,15 +895,48 @@ 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_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);
        mono_mb_emit_branch (mb, CEE_LEAVE);
-       main_clause->handler_len = mono_mb_get_pos (mb) - main_clause->handler_offset;
-       /* end catch */
 
+       /* 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;
        mono_mb_patch_branch (mb, pos_leave);
        
        if (copy_return)
@@ -910,7 +944,7 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
 
        mono_mb_emit_byte (mb, CEE_RET);
 
-       mono_mb_set_clauses (mb, 1, main_clause);
+       mono_mb_set_clauses (mb, 2, clauses);
 #endif
 
        info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
index 44e4b4ea4c1617bfb6763b10c06d931a30e5bbce..e6d57cff5d1f312e1043fae21d9e8c74446c8012 100644 (file)
@@ -26,10 +26,11 @@ extern MonoStringHandle ves_icall_System_Environment_get_UserName (MonoError *er
 
 
 /* System.Security.Principal.WindowsIdentity */
+gpointer mono_security_principal_windows_identity_get_current_token (void);
 extern MonoArray* ves_icall_System_Security_Principal_WindowsIdentity_GetRoles (gpointer token);
-extern gpointer ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (void);
-extern MonoString* ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token);
-extern gpointer ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *username);
+extern gpointer ves_icall_System_Security_Principal_WindowsIdentity_GetCurrentToken (MonoError *error);
+extern MonoStringHandle ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token, MonoError *error);
+extern gpointer ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoStringHandle username, MonoError *error);
 
 
 /* System.Security.Principal.WindowsImpersonationContext */
index ecd2339cdf29691da77ff9c7a9ad82858a46ea47..56a484087fd86bd18dab625450bb555f35ee4993 100644 (file)
@@ -948,14 +948,25 @@ mono_dynimage_encode_reflection_sighelper (MonoDynamicImage *assembly, MonoRefle
 }
 #endif /* DISABLE_REFLECTION_EMIT */
 
-static MonoArray *
-reflection_sighelper_get_signature_local (MonoReflectionSigHelper *sig, MonoError *error)
+static gboolean
+encode_reflection_types (MonoDynamicImage *assembly, MonoArrayHandle sig_arguments, int i, SigBuffer *buf, MonoError *error)
+{
+       HANDLE_FUNCTION_ENTER ();
+       error_init (error);
+       MonoReflectionTypeHandle type = MONO_HANDLE_NEW (MonoReflectionType, NULL);
+       MONO_HANDLE_ARRAY_GETREF (type, sig_arguments, i);
+       encode_reflection_type (assembly, type, buf, error);
+       HANDLE_FUNCTION_RETURN_VAL (is_ok (error));
+}
+
+static MonoArrayHandle
+reflection_sighelper_get_signature_local (MonoReflectionSigHelperHandle sig, MonoError *error)
 {
-       MonoReflectionModuleBuilder *module = sig->module;
-       MonoDynamicImage *assembly = module != NULL ? module->dynamic_image : NULL;
-       guint32 na = sig->arguments ? mono_array_length (sig->arguments) : 0;
+       MonoReflectionModuleBuilderHandle module = MONO_HANDLE_NEW_GET (MonoReflectionModuleBuilder, sig, module);
+       MonoDynamicImage *assembly = MONO_HANDLE_IS_NULL (module) ? NULL : MONO_HANDLE_GETVAL (module, dynamic_image);
+       MonoArrayHandle sig_arguments = MONO_HANDLE_NEW_GET (MonoArray, sig, arguments);
+       guint32 na = MONO_HANDLE_IS_NULL (sig_arguments) ? 0 : mono_array_handle_length (sig_arguments);
        guint32 buflen, i;
-       MonoArray *result;
        SigBuffer buf;
 
        error_init (error);
@@ -966,30 +977,33 @@ reflection_sighelper_get_signature_local (MonoReflectionSigHelper *sig, MonoErro
        sigbuffer_add_value (&buf, na);
        if (assembly != NULL){
                for (i = 0; i < na; ++i) {
-                       MonoReflectionType *type = mono_array_get (sig->arguments, MonoReflectionType*, i);
-                       encode_reflection_type_raw (assembly, type, &buf, error);
-                       if (!is_ok (error)) goto fail;
+                       if (!encode_reflection_types (assembly, sig_arguments, i, &buf, error))
+                               goto fail;
                }
        }
 
        buflen = buf.p - buf.buf;
-       result = mono_array_new_checked (mono_domain_get (), mono_defaults.byte_class, buflen, error);
+       MonoArrayHandle result = mono_array_new_handle (mono_domain_get (), mono_defaults.byte_class, buflen, error);
        if (!is_ok (error)) goto fail;
-       memcpy (mono_array_addr (result, char, 0), buf.buf, buflen);
+       uint32_t gchandle;
+       void *base = MONO_ARRAY_HANDLE_PIN (result, char, 0, &gchandle);
+       memcpy (base, buf.buf, buflen);
        sigbuffer_free (&buf);
+       mono_gchandle_free (gchandle);
        return result;
 fail:
        sigbuffer_free (&buf);
-       return NULL;
+       return MONO_HANDLE_CAST (MonoArray, NULL_HANDLE);
 }
 
-static MonoArray *
-reflection_sighelper_get_signature_field (MonoReflectionSigHelper *sig, MonoError *error)
+static MonoArrayHandle
+reflection_sighelper_get_signature_field (MonoReflectionSigHelperHandle sig, MonoError *error)
 {
-       MonoDynamicImage *assembly = sig->module->dynamic_image;
-       guint32 na = sig->arguments ? mono_array_length (sig->arguments) : 0;
+       MonoReflectionModuleBuilderHandle module = MONO_HANDLE_NEW_GET (MonoReflectionModuleBuilder, sig, module);
+       MonoDynamicImage *assembly = MONO_HANDLE_GETVAL (module, dynamic_image);
+       MonoArrayHandle sig_arguments = MONO_HANDLE_NEW_GET (MonoArray, sig, arguments);
+       guint32 na = MONO_HANDLE_IS_NULL (sig_arguments) ? 0 : mono_array_handle_length (sig_arguments);
        guint32 buflen, i;
-       MonoArray *result;
        SigBuffer buf;
 
        error_init (error);
@@ -998,22 +1012,23 @@ reflection_sighelper_get_signature_field (MonoReflectionSigHelper *sig, MonoErro
 
        sigbuffer_add_value (&buf, 0x06);
        for (i = 0; i < na; ++i) {
-               MonoReflectionType *type = mono_array_get (sig->arguments, MonoReflectionType*, i);
-               encode_reflection_type_raw (assembly, type, &buf, error);
-               if (!is_ok (error))
+               if (! encode_reflection_types (assembly, sig_arguments, i, &buf, error))
                        goto fail;
        }
 
        buflen = buf.p - buf.buf;
-       result = mono_array_new_checked (mono_domain_get (), mono_defaults.byte_class, buflen, error);
+       MonoArrayHandle result = mono_array_new_handle (mono_domain_get (), mono_defaults.byte_class, buflen, error);
        if (!is_ok (error)) goto fail;
-       memcpy (mono_array_addr (result, char, 0), buf.buf, buflen);
+       uint32_t gchandle;
+       void *base = MONO_ARRAY_HANDLE_PIN (result, char, 0, &gchandle);
+       memcpy (base, buf.buf, buflen);
        sigbuffer_free (&buf);
+       mono_gchandle_free (gchandle);
 
        return result;
 fail:
        sigbuffer_free (&buf);
-       return NULL;
+       return MONO_HANDLE_CAST (MonoArray, NULL_HANDLE);
 }
 
 static char*
@@ -1200,36 +1215,34 @@ mono_dynimage_save_encode_property_signature (MonoDynamicImage *assembly, MonoRe
 #endif /*DISABLE_REFLECTION_EMIT_SAVE*/
 
 #ifndef DISABLE_REFLECTION_EMIT
-MonoArray *
-ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelper *sig)
+MonoArrayHandle
+ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelperHandle sig, MonoError *error)
 {
-       MonoError error;
-       MonoArray *result = reflection_sighelper_get_signature_local (sig, &error);
-       mono_error_set_pending_exception (&error);
-       return result;
+       error_init (error);
+       return reflection_sighelper_get_signature_local (sig, error);
 }
 
-MonoArray *
-ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelper *sig)
+MonoArrayHandle
+ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelperHandle sig, MonoError *error)
 {
-       MonoError error;
-       MonoArray *result = reflection_sighelper_get_signature_field (sig, &error);
-       mono_error_set_pending_exception (&error);
-       return result;
+       error_init (error);
+       return reflection_sighelper_get_signature_field (sig, error);
 }
 #else /* DISABLE_REFLECTION_EMIT */
-MonoArray *
-ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelper *sig)
+MonoArrayHandle
+ves_icall_SignatureHelper_get_signature_local (MonoReflectionSigHelperHandle sig, MonoError *error)
 {
+       error_init (error);
        g_assert_not_reached ();
-       return NULL;
+       return MONO_HANDLE_CAST (MonoArray, NULL_HANDLE);
 }
 
-MonoArray *
-ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelper *sig)
+MonoArrayHandle
+ves_icall_SignatureHelper_get_signature_field (MonoReflectionSigHelperHandle sig, MonoError *error)
 {
+       error_init (error);
        g_assert_not_reached ();
-       return NULL;
+       return MONO_HANDLE_CAST (MonoArray, NULL_HANDLE);
 }
 
 #endif /* DISABLE_REFLECTION_EMIT */
index cc40e048493bbc1bf8f9d1ccf55cc14ad2cc7de4..b50434bc1feca744de19cc559bf63b873dac06d3 100644 (file)
@@ -4317,16 +4317,12 @@ ves_icall_ModuleBuilder_RegisterToken (MonoReflectionModuleBuilderHandle mb, Mon
        mono_dynamic_image_register_token (MONO_HANDLE_GETVAL (mb, dynamic_image), token, obj);
 }
 
-MonoObject*
-ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, guint32 token)
+MonoObjectHandle
+ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilderHandle mb, guint32 token, MonoError *error)
 {
-       MonoObject *obj;
-
-       mono_loader_lock ();
-       obj = (MonoObject *)mono_g_hash_table_lookup (mb->dynamic_image->tokens, GUINT_TO_POINTER (token));
-       mono_loader_unlock ();
-
-       return obj;
+       error_init (error);
+       MonoDynamicImage *dynamic_image = MONO_HANDLE_GETVAL (mb, dynamic_image);
+       return mono_dynamic_image_get_registered_token (dynamic_image, token, error);
 }
 
 #ifndef DISABLE_REFLECTION_EMIT
@@ -4347,10 +4343,12 @@ ves_icall_AssemblyBuilder_basic_init (MonoReflectionAssemblyBuilder *assemblyb)
 }
 
 void
-ves_icall_EnumBuilder_setup_enum_type (MonoReflectionType *enumtype,
-                                                                          MonoReflectionType *t)
+ves_icall_EnumBuilder_setup_enum_type (MonoReflectionTypeHandle enumtype,
+                                      MonoReflectionTypeHandle t,
+                                      MonoError *error)
 {
-       enumtype->type = t->type;
+       error_init (error);
+       MONO_HANDLE_SETVAL (enumtype, type, MonoType*, MONO_HANDLE_GETVAL (t, type));
 }
 
 void
@@ -4367,10 +4365,12 @@ ves_icall_ModuleBuilder_getUSIndex (MonoReflectionModuleBuilderHandle module, Mo
 }
 
 void
-ves_icall_ModuleBuilder_set_wrappers_type (MonoReflectionModuleBuilder *moduleb, MonoReflectionType *type)
+ves_icall_ModuleBuilder_set_wrappers_type (MonoReflectionModuleBuilderHandle moduleb, MonoReflectionTypeHandle ref_type, MonoError *error)
 {
-       MonoDynamicImage *image = moduleb->dynamic_image;
+       error_init (error);
+       MonoDynamicImage *image = MONO_HANDLE_GETVAL (moduleb, dynamic_image);
+       MonoType *type = MONO_HANDLE_GETVAL (ref_type, type);
 
-       g_assert (type->type);
-       image->wrappers_type = mono_class_from_mono_type (type->type);
+       g_assert (type);
+       image->wrappers_type = mono_class_from_mono_type (type);
 }
index 2d8b5267ae03cadcdab157404b2b59232e57f743..c5d5f4dfb34f92459d610fb9ee02032010067340 100644 (file)
@@ -905,7 +905,7 @@ evaluate_relation_with_target_variable (MonoVariableRelationsEvaluationArea *are
                        
                        current_context = father_context;
                        while (current_context != last_context) {
-                               int index = father_context - area->contexts;
+                               int index = current_context - area->contexts;
                                MonoRelationsEvaluationStatus *current_status = &(area->statuses [index]);
                                *current_status = (MonoRelationsEvaluationStatus)(*current_status | recursive_status);
                                current_context = current_context->father;
@@ -1300,10 +1300,22 @@ mono_perform_abc_removal (MonoCompile *cfg)
 
                for (ins = bb->code; ins; ins = ins->next) {
                        const char *spec = INS_INFO (ins->opcode);
+                       gint32 idx, *reg;
                        
                        if (spec [MONO_INST_DEST] == ' ' || MONO_IS_STORE_MEMBASE (ins))
                                continue;
 
+                       MONO_INS_FOR_EACH_REG (ins, idx, reg) {
+                               MonoInst *var = get_vreg_to_inst (cfg, *reg);
+                               if (var && (!MONO_VARINFO (cfg, var->inst_c0)->def))
+                                               break;
+                       }
+                       if (idx < MONO_INST_LEN) {
+                               if (TRACE_ABC_REMOVAL)
+                                       printf ("Global register %d is not in the SSA form, skipping.\n", *reg);
+                               continue;
+                       }
+
                        if (spec [MONO_INST_DEST] == 'i') {
                                MonoIntegerValueKind effective_value_kind;
                                MonoRelationsEvaluationRange range;
index 76c42e0b04f64a577bc3a17723a49553c74553fb..f20d6790eea5bb45770d5d44fab00404aedbbbcb 100644 (file)
@@ -13,6 +13,8 @@
 #include "mini.h"
 #include "ir-emit.h"
 
+#define MAX_INLINE_COPIES 10
+
 void 
 mini_emit_memset (MonoCompile *cfg, int destreg, int offset, int size, int val, int align)
 {
@@ -149,6 +151,62 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
        }
 }
 
+static void
+mini_emit_memcpy_internal (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoInst *size_ins, int size, int align)
+{
+       /* FIXME: Optimize the case when src/dest is OP_LDADDR */
+
+       /* We can't do copies at a smaller granule than the provided alignment */
+       if (size_ins || ((size / align > MAX_INLINE_COPIES) && !(cfg->opt & MONO_OPT_INTRINS))) {
+               MonoInst *iargs [3];
+               iargs [0] = dest;
+               iargs [1] = src;
+
+               if (!size_ins)
+                       EMIT_NEW_ICONST (cfg, size_ins, size);
+               iargs [2] = size_ins;
+               mono_emit_method_call (cfg, mini_get_memcpy_method (), iargs, NULL);
+       } else {
+               mini_emit_memcpy (cfg, dest->dreg, 0, src->dreg, 0, size, align);
+       }
+}
+
+static void
+mini_emit_memset_internal (MonoCompile *cfg, MonoInst *dest, MonoInst *value_ins, int value, MonoInst *size_ins, int size, int align)
+{
+       /* FIXME: Optimize the case when dest is OP_LDADDR */
+
+       /* We can't do copies at a smaller granule than the provided alignment */
+       if (value_ins || size_ins || value != 0 || ((size / align > MAX_INLINE_COPIES) && !(cfg->opt & MONO_OPT_INTRINS))) {
+               MonoInst *iargs [3];
+               iargs [0] = dest;
+
+               if (!value_ins)
+                       EMIT_NEW_ICONST (cfg, value_ins, value);
+               iargs [1] = value_ins;
+
+               if (!size_ins)
+                       EMIT_NEW_ICONST (cfg, size_ins, size);
+               iargs [2] = size_ins;
+
+               mono_emit_method_call (cfg, mini_get_memset_method (), iargs, NULL);
+       } else {
+               mini_emit_memset (cfg, dest->dreg, 0, size, value, align);
+       }
+}
+
+static void
+mini_emit_memcpy_const_size (MonoCompile *cfg, MonoInst *dest, MonoInst *src, int size, int align)
+{
+       mini_emit_memcpy_internal (cfg, dest, src, NULL, size, align);
+}
+
+static void
+mini_emit_memset_const_size (MonoCompile *cfg, MonoInst *dest, int value, int size, int align)
+{
+       mini_emit_memset_internal (cfg, dest, NULL, value, NULL, size, align);
+}
+
 MonoInst*
 mini_emit_memory_load (MonoCompile *cfg, MonoType *type, MonoInst *src, int offset, int ins_flag)
 {
@@ -186,4 +244,55 @@ mini_emit_memory_store (MonoCompile *cfg, MonoType *type, MonoInst *dest, MonoIn
        }
 }
 
+void
+mini_emit_memory_copy_bytes (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoInst *size, int ins_flag)
+{
+       int align = SIZEOF_VOID_P;
+
+       /*
+        * FIXME: It's unclear whether we should be emitting both the acquire
+        * and release barriers for cpblk. It is technically both a load and
+        * store operation, so it seems like that's the sensible thing to do.
+        *
+        * FIXME: We emit full barriers on both sides of the operation for
+        * simplicity. We should have a separate atomic memcpy method instead.
+        */
+       if (ins_flag & MONO_INST_VOLATILE) {
+               /* Volatile loads have acquire semantics, see 12.6.7 in Ecma 335 */
+               mini_emit_memory_barrier (cfg, MONO_MEMORY_BARRIER_SEQ);
+       }
+
+       if ((cfg->opt & MONO_OPT_INTRINS) && (size->opcode == OP_ICONST) && size->inst_c0 < 10000) {
+               mini_emit_memcpy_const_size (cfg, dest, src, size->inst_c0, align);
+       } else {
+               if (cfg->verbose_level > 3)
+                       printf ("EMITING REGULAR COPY\n");
+               mini_emit_memcpy_internal (cfg, dest, src, size, 0, align);
+       }
+
+       if (ins_flag & MONO_INST_VOLATILE) {
+               /* Volatile loads have acquire semantics, see 12.6.7 in Ecma 335 */
+               mini_emit_memory_barrier (cfg, MONO_MEMORY_BARRIER_SEQ);
+       }
+}
+
+void
+mini_emit_memory_init_bytes (MonoCompile *cfg, MonoInst *dest, MonoInst *value, MonoInst *size, int ins_flag)
+{
+       int align = SIZEOF_VOID_P;
+
+       if (ins_flag & MONO_INST_VOLATILE) {
+               /* Volatile stores have release semantics, see 12.6.7 in Ecma 335 */
+               mini_emit_memory_barrier (cfg, MONO_MEMORY_BARRIER_REL);
+       }
+
+       //FIXME unrolled memset only supports zeroing
+       if ((cfg->opt & MONO_OPT_INTRINS) && (size->opcode == OP_ICONST) && (value->opcode == OP_ICONST) && (value->inst_c0 == 0)) {
+               mini_emit_memset_const_size (cfg, dest, value->inst_c0, size->inst_c0, align);
+       } else {
+               mini_emit_memset_internal (cfg, dest, value, 0, size, 0, align);
+       }
+
+}
+
 #endif
index 46ec94350691f39d384d6db6d94021864c6da907..41dbd1a5cb6ed91e279e332a6e4d0656d0c9c3ec 100644 (file)
@@ -12627,56 +12627,21 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ip += 6;
                                break;
                        case CEE_CPBLK:
-                       case CEE_INITBLK: {
-                               MonoInst *iargs [3];
                                CHECK_STACK (3);
                                sp -= 3;
-
-                               /* Skip optimized paths for volatile operations. */
-                               if ((ip [1] == CEE_CPBLK) && !(ins_flag & MONO_INST_VOLATILE) && (cfg->opt & MONO_OPT_INTRINS) && (sp [2]->opcode == OP_ICONST) && ((n = sp [2]->inst_c0) <= sizeof (gpointer) * 5)) {
-                                       mini_emit_memcpy (cfg, sp [0]->dreg, 0, sp [1]->dreg, 0, sp [2]->inst_c0, 0);
-                               } else if ((ip [1] == CEE_INITBLK) && !(ins_flag & MONO_INST_VOLATILE) && (cfg->opt & MONO_OPT_INTRINS) && (sp [2]->opcode == OP_ICONST) && ((n = sp [2]->inst_c0) <= sizeof (gpointer) * 5) && (sp [1]->opcode == OP_ICONST) && (sp [1]->inst_c0 == 0)) {
-                                       /* emit_memset only works when val == 0 */
-                                       mini_emit_memset (cfg, sp [0]->dreg, 0, sp [2]->inst_c0, sp [1]->inst_c0, 0);
-                               } else {
-                                       MonoInst *call;
-                                       iargs [0] = sp [0];
-                                       iargs [1] = sp [1];
-                                       iargs [2] = sp [2];
-                                       if (ip [1] == CEE_CPBLK) {
-                                               /*
-                                                * FIXME: It's unclear whether we should be emitting both the acquire
-                                                * and release barriers for cpblk. It is technically both a load and
-                                                * store operation, so it seems like that's the sensible thing to do.
-                                                *
-                                                * FIXME: We emit full barriers on both sides of the operation for
-                                                * simplicity. We should have a separate atomic memcpy method instead.
-                                                */
-                                               MonoMethod *memcpy_method = mini_get_memcpy_method ();
-
-                                               if (ins_flag & MONO_INST_VOLATILE)
-                                                       mini_emit_memory_barrier (cfg, MONO_MEMORY_BARRIER_SEQ);
-
-                                               call = mono_emit_method_call (cfg, memcpy_method, iargs, NULL);
-                                               call->flags |= ins_flag;
-
-                                               if (ins_flag & MONO_INST_VOLATILE)
-                                                       mini_emit_memory_barrier (cfg, MONO_MEMORY_BARRIER_SEQ);
-                                       } else {
-                                               MonoMethod *memset_method = mini_get_memset_method ();
-                                               if (ins_flag & MONO_INST_VOLATILE) {
-                                                       /* Volatile stores have release semantics, see 12.6.7 in Ecma 335 */
-                                                       mini_emit_memory_barrier (cfg, MONO_MEMORY_BARRIER_REL);
-                                               }
-                                               call = mono_emit_method_call (cfg, memset_method, iargs, NULL);
-                                               call->flags |= ins_flag;
-                                       }
-                               }
+                               mini_emit_memory_copy_bytes (cfg, sp [0], sp [1], sp [2], ins_flag);
+                               ip += 2;
+                               ins_flag = 0;
+                               inline_costs += 1;
+                               break;
+                       case CEE_INITBLK:
+                               CHECK_STACK (3);
+                               sp -= 3;
+                               mini_emit_memory_init_bytes (cfg, sp [0], sp [1], sp [2], ins_flag);
                                ip += 2;
                                ins_flag = 0;
                                inline_costs += 1;
                                break;
-                       }
                        case CEE_NO_:
                                CHECK_OPSIZE (3);
                                if (ip [2] & 0x1)
index a4143e8a34494d926f21f4276b166100aca50eb3..d6cc6a743e547b5a6cf0dc8a13ee6a2bdec7d322 100644 (file)
@@ -128,7 +128,7 @@ Format for the destination descriptor:
        bits 24:32 - slot count
 */
 #define SRC_DESCRIPTOR_MARSHAL_SHIFT 16
-#define SRC_DESCRIPTOR_MARSHAL_MASK 0x0Ff
+#define SRC_DESCRIPTOR_MARSHAL_MASK 0x0ff
 
 #define SLOT_COUNT_SHIFT 24
 #define SLOT_COUNT_MASK 0xff
@@ -378,6 +378,23 @@ mono_arch_get_gsharedvt_call_info (gpointer addr, MonoMethodSignature *normal_si
                default:
                        g_error ("Gsharedvt can't handle dest arg type %d", (int)dst_info->storage); // See above
                }
+
+               if (arg_marshal == GSHAREDVT_ARG_BYREF_TO_BYVAL && dst_info->byte_arg_size) {
+                       /* Have to load less than 4 bytes */
+                       // FIXME: Signed types
+                       switch (dst_info->byte_arg_size) {
+                       case 1:
+                               arg_marshal = GSHAREDVT_ARG_BYREF_TO_BYVAL_U1;
+                               break;
+                       case 2:
+                               arg_marshal = GSHAREDVT_ARG_BYREF_TO_BYVAL_U2;
+                               break;
+                       default:
+                               arg_marshal = GSHAREDVT_ARG_BYREF_TO_BYVAL_U4;
+                               break;
+                       }
+               }
+
                if (nsrc)
                        src [0] |= (arg_marshal << SRC_DESCRIPTOR_MARSHAL_SHIFT) | (arg_slots << SLOT_COUNT_SHIFT);
 
index 323e2f3f98ae3be1198e7187927b14e501383041..9cb873e567c6802d57789d37fe3a210114e0e3fc 100644 (file)
@@ -18,6 +18,9 @@ typedef enum {
        GSHAREDVT_ARG_NONE = 0,
        GSHAREDVT_ARG_BYVAL_TO_BYREF,
        GSHAREDVT_ARG_BYREF_TO_BYVAL,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_U1,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_U2,
+       GSHAREDVT_ARG_BYREF_TO_BYVAL_U4
 } GSharedVtArgMarshal;
 
 typedef enum {
index 6351b6d9306149ea80fd9b2d9896be5e4c1ebc51..e71d3d327169061beac384ebc404788eadd97c68 100644 (file)
@@ -1001,14 +1001,17 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
                        add_general (&gr, &stack_size, ainfo);
+                       ainfo->byte_arg_size = 1;
                        break;
                case MONO_TYPE_I2:
                case MONO_TYPE_U2:
                        add_general (&gr, &stack_size, ainfo);
+                       ainfo->byte_arg_size = 2;
                        break;
                case MONO_TYPE_I4:
                case MONO_TYPE_U4:
                        add_general (&gr, &stack_size, ainfo);
+                       ainfo->byte_arg_size = 4;
                        break;
                case MONO_TYPE_I:
                case MONO_TYPE_U:
@@ -2302,7 +2305,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                load->klass = vtaddr->klass;
                load->dreg = mono_alloc_ireg (cfg);
                MONO_ADD_INS (cfg->cbb, load);
-               mini_emit_memcpy (cfg, load->dreg, 0, src->dreg, 0, size, 4);
+               mini_emit_memcpy (cfg, load->dreg, 0, src->dreg, 0, size, SIZEOF_VOID_P);
 
                if (ainfo->pair_storage [0] == ArgInIReg) {
                        MONO_INST_NEW (cfg, arg, OP_X86_LEA_MEMBASE);
@@ -2330,10 +2333,10 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, 0);
                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, AMD64_RSP, ainfo->offset, dreg);
                } else if (size <= 40) {
-                       mini_emit_memcpy (cfg, AMD64_RSP, ainfo->offset, src->dreg, 0, size, 4);
+                       mini_emit_memcpy (cfg, AMD64_RSP, ainfo->offset, src->dreg, 0, size, SIZEOF_VOID_P);
                } else {
                        // FIXME: Code growth
-                       mini_emit_memcpy (cfg, AMD64_RSP, ainfo->offset, src->dreg, 0, size, 4);
+                       mini_emit_memcpy (cfg, AMD64_RSP, ainfo->offset, src->dreg, 0, size, SIZEOF_VOID_P);
                }
 
                if (cfg->compute_gc_maps) {
index b42ac52a33bfe7b7c18cc175d219cfa4b7dfd991..66857b616d16f50a20dad2e6b1e3b17c56ee3a76 100644 (file)
@@ -312,6 +312,8 @@ typedef struct {
        int nregs;
        /* Only if storage == ArgOnStack */
        int arg_size; // Bytes, will always be rounded up/aligned to 8 byte boundary
+       // Size in bytes for small arguments
+       int byte_arg_size;
        guint8 pass_empty_struct : 1; // Set in scenarios when empty structs needs to be represented as argument.
 } ArgInfo;
 
index 2c866de3fdc7dccfa3c96ba9e8259e9d00c9fbc9..57b11f339a8c82474b953b4f60d6698fcd79f161 100644 (file)
@@ -1249,7 +1249,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        MONO_ADD_INS (cfg->cbb, store);
                }
        } else {
-               mini_emit_memcpy (cfg, IA64_SP, 16 + ainfo->offset, src->dreg, 0, size, 4);
+               mini_emit_memcpy (cfg, IA64_SP, 16 + ainfo->offset, src->dreg, 0, size, SIZEOF_VOID_P);
        }
 }
 
index d660489fe5e4c37ea47bf2137b2bf155da4f9eaf..91f22b94a0e36be8ffc17479f4b6e79148e5a33e 100644 (file)
@@ -1881,7 +1881,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        soffset += SIZEOF_REGISTER;
                }
                if (ovf_size != 0) {
-                       mini_emit_memcpy (cfg, mips_sp, doffset, src->dreg, soffset, ovf_size * sizeof (gpointer), 0);
+                       mini_emit_memcpy (cfg, mips_sp, doffset, src->dreg, soffset, ovf_size * sizeof (gpointer), SIZEOF_VOID_P);
                }
        } else if (ainfo->storage == ArgInFReg) {
                int tmpr = mono_alloc_freg (cfg);
@@ -1909,7 +1909,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        g_assert (ovf_size > 0);
 
                EMIT_NEW_VARLOADA (cfg, load, vtcopy, vtcopy->inst_vtype);
-               mini_emit_memcpy (cfg, load->dreg, 0, src->dreg, 0, size, 0);
+               mini_emit_memcpy (cfg, load->dreg, 0, src->dreg, 0, size, SIZEOF_VOID_P);
 
                if (ainfo->offset)
                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, mips_at, ainfo->offset, load->dreg);
index ed3d0bca4c6959e97a5bdbb6f870e9570b6ba0fa..fdd064ba214b23e9a1538ab8a3b3fccae247ac56 100644 (file)
@@ -1795,7 +1795,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                                soffset += sizeof (gpointer);
                        }
                if (ovf_size != 0)
-                       mini_emit_memcpy (cfg, ppc_r1, doffset + soffset, src->dreg, soffset, ovf_size * sizeof (gpointer), 0);
+                       mini_emit_memcpy (cfg, ppc_r1, doffset + soffset, src->dreg, soffset, ovf_size * sizeof (gpointer), SIZEOF_VOID_P);
        } else if (ainfo->regtype == RegTypeFPStructByVal) {
                soffset = 0;
                for (i = 0; i < ainfo->vtregs; ++i) {
@@ -1810,7 +1810,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        soffset += ainfo->size;
                        }
                if (ovf_size != 0)
-                       mini_emit_memcpy (cfg, ppc_r1, doffset + soffset, src->dreg, soffset, ovf_size * sizeof (gpointer), 0);
+                       mini_emit_memcpy (cfg, ppc_r1, doffset + soffset, src->dreg, soffset, ovf_size * sizeof (gpointer), SIZEOF_VOID_P);
        } else if (ainfo->regtype == RegTypeFP) {
                int tmpr = mono_alloc_freg (cfg);
                if (ainfo->size == 4)
@@ -1836,7 +1836,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                        g_assert (ovf_size > 0);
 
                EMIT_NEW_VARLOADA (cfg, load, vtcopy, vtcopy->inst_vtype);
-               mini_emit_memcpy (cfg, load->dreg, 0, src->dreg, 0, size, 0);
+               mini_emit_memcpy (cfg, load->dreg, 0, src->dreg, 0, size, SIZEOF_VOID_P);
 
                if (ainfo->offset)
                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, ppc_r1, ainfo->offset, load->dreg);
index 55275e0cade3f739c4a800bc1bda10f6e571f48a..a9d42e691d684612ba388364b7790b6a96967e5b 100644 (file)
@@ -496,6 +496,13 @@ mono_tramp_info_register_internal (MonoTrampInfo *info, MonoDomain *domain, gboo
        if (info->unwind_ops) {
                copy->uw_info = mono_unwind_ops_encode (info->unwind_ops, &copy->uw_info_len);
                copy->owns_uw_info = TRUE;
+               if (domain) {
+                       /* Move unwind info into the domain's memory pool so that it is removed once the domain is released. */
+                       guint8 *temp = copy->uw_info;
+                       copy->uw_info = mono_domain_alloc (domain, copy->uw_info_len);
+                       memcpy (copy->uw_info, temp, copy->uw_info_len);
+                       g_free (temp);
+               }
        } else {
                /* Trampolines from aot have the unwind ops already encoded */
                copy->uw_info = info->uw_info;
index 65056f26c5b8a705b1691d9226952c26475ce7c6..6c23834e7e73c1c7f9c2eaf0fac11a2f6850bdfb 100644 (file)
@@ -1337,7 +1337,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
        ArgInfo *ainfo = (ArgInfo*)ins->inst_p1;
        int size = ins->backend.size;
 
-       mini_emit_memcpy (cfg, sparc_sp, ainfo->offset, src->dreg, 0, size, 0);
+       mini_emit_memcpy (cfg, sparc_sp, ainfo->offset, src->dreg, 0, size, SIZEOF_VOID_P);
 }
 
 void
index da2c219b42fca1b56013cb457208c78b55495f3c..6eb32809205aa44af20d634bfaf7607a344fa0e3 100644 (file)
@@ -595,6 +595,20 @@ extern const gint8 ins_sreg_counts [];
 
 #define mono_bb_first_ins(bb) (bb)->code
 
+/*
+ * Iterate through all used registers in the instruction.
+ * Relies on the existing order of the MONO_INST enum: MONO_INST_{DREG,SREG1,SREG2,SREG3,LEN}
+ * INS is the instruction, IDX is the register index, REG is the pointer to a register.
+ */
+#define MONO_INS_FOR_EACH_REG(ins, idx, reg) for ((idx) = INS_INFO ((ins)->opcode)[MONO_INST_DEST] != ' ' ? MONO_INST_DEST : \
+                                                         (mono_inst_get_num_src_registers (ins) ? MONO_INST_SRC1 : MONO_INST_LEN); \
+                                                 (reg) = (idx) == MONO_INST_DEST ? &(ins)->dreg : \
+                                                         ((idx) == MONO_INST_SRC1 ? &(ins)->sreg1 : \
+                                                          ((idx) == MONO_INST_SRC2 ? &(ins)->sreg2 : \
+                                                           ((idx) == MONO_INST_SRC3 ? &(ins)->sreg3 : NULL))), \
+                                                         idx < MONO_INST_LEN; \
+                                                 (idx) = (idx) > mono_inst_get_num_src_registers (ins) + (INS_INFO ((ins)->opcode)[MONO_INST_DEST] != ' ') ? MONO_INST_LEN : (idx) + 1)
+
 struct MonoSpillInfo {
        int offset;
 };
@@ -2641,6 +2655,8 @@ void              mini_emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, Mono
 gboolean          mini_emit_wb_aware_memcpy (MonoCompile *cfg, MonoClass *klass, MonoInst *iargs[4], int size, int align);
 MonoInst*         mini_emit_memory_load (MonoCompile *cfg, MonoType *type, MonoInst *src, int offset, int ins_flag);
 void              mini_emit_memory_store (MonoCompile *cfg, MonoType *type, MonoInst *dest, MonoInst *value, int ins_flag);
+void              mini_emit_memory_copy_bytes (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoInst *size, int ins_flag);
+void              mini_emit_memory_init_bytes (MonoCompile *cfg, MonoInst *dest, MonoInst *value, MonoInst *size, int ins_flag);
 
 MonoMethod*       mini_get_memcpy_method (void);
 MonoMethod*       mini_get_memset_method (void);
index eb1d59340f03843479ae60fe992854a6c7a2be11..9cf67dd282514ca661d988d4e63b63fad0d99d93 100644 (file)
@@ -90,6 +90,28 @@ mono_amd64_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpoi
                        DEBUG_AMD64_GSHAREDVT_PRINT ("[%d] <- [%d] (%d words) (%p) <- (%p)\n", dest_reg, source_reg, slot_count, &callee [dest_reg], &caller [source_reg]);
                        break;
                }
+               case GSHAREDVT_ARG_BYREF_TO_BYVAL_U1: {
+                       guint8 *addr = caller [source_reg];
+
+                       callee [dest_reg] = (gpointer)(mgreg_t)*addr;
+                       DEBUG_AMD64_GSHAREDVT_PRINT ("[%d] <- (u1) [%d] (%p) <- (%p)\n", dest_reg, source_reg, &callee [dest_reg], &caller [source_reg]);
+                       break;
+               }
+               case GSHAREDVT_ARG_BYREF_TO_BYVAL_U2: {
+                       guint16 *addr = caller [source_reg];
+
+                       callee [dest_reg] = (gpointer)(mgreg_t)*addr;
+                       DEBUG_AMD64_GSHAREDVT_PRINT ("[%d] <- (u2) [%d] (%p) <- (%p)\n", dest_reg, source_reg, &callee [dest_reg], &caller [source_reg]);
+                       break;
+               }
+               case GSHAREDVT_ARG_BYREF_TO_BYVAL_U4: {
+                       guint32 *addr = caller [source_reg];
+
+                       callee [dest_reg] = (gpointer)(mgreg_t)*addr;
+                       DEBUG_AMD64_GSHAREDVT_PRINT ("[%d] <- (u4) [%d] (%p) <- (%p)\n", dest_reg, source_reg, &callee [dest_reg], &caller [source_reg]);
+                       break;
+               }
+
                default:
                        g_error ("cant handle arg marshal %d\n", arg_marshal);
                }
index f8946b03be7cbd909b4c31d8b448741bcf8a01b3..dc2bb937cbe4d8905aa01f5230114fc243121aff 100644 (file)
@@ -458,6 +458,7 @@ TESTS_CS_SRC=               \
        appdomain1.cs   \
        appdomain2.cs   \
        appdomain-exit.cs       \
+       appdomain-serialize-exception.cs \
        assemblyresolve_event2.2.cs     \
        appdomain-unload-callback.cs    \
        appdomain-unload-doesnot-raise-pending-events.cs        \
@@ -1220,7 +1221,7 @@ tests: compile-tests
 #
 # Test that no symbols are missed in eglib-remap.h
 #
-OK_G_SYMBOLS='g_list\|g_slist\|g_concat_dir_and_file\|g_Ctoc\'
+OK_G_SYMBOLS='g_list\|g_slist\|g_concat_dir_and_file\|g_Ctoc'
 if NACL_CODEGEN
 test-eglib-remap:
 else
diff --git a/mono/tests/appdomain-serialize-exception.cs b/mono/tests/appdomain-serialize-exception.cs
new file mode 100644 (file)
index 0000000..8b0fe47
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+using System.Reflection;
+using System.Runtime.Serialization;
+
+public class UnserializableException : Exception
+{
+}
+
+public class TestOutput : MarshalByRefObject
+{
+       public void ThrowUnserializable ()
+       {
+               Console.WriteLine("Throwing Unserializable exception in AppDomain \"{0}\"", AppDomain.CurrentDomain.FriendlyName);
+               throw new UnserializableException ();
+       }
+}
+
+public class Example
+{
+       public static int Main ()
+       {
+               string original_domain = AppDomain.CurrentDomain.FriendlyName;
+
+               AppDomain ad = AppDomain.CreateDomain("subdomain");
+               try {
+                       TestOutput remoteOutput = (TestOutput) ad.CreateInstanceAndUnwrap(
+                               typeof (TestOutput).Assembly.FullName,
+                               "TestOutput");
+                       remoteOutput.ThrowUnserializable ();
+               } catch (SerializationException) {
+                       Console.WriteLine ("Caught serialization exception");
+               } catch (Exception) {
+                       Console.WriteLine ("Caught other exception");
+                       Environment.Exit (1);
+               } finally {
+                       Console.WriteLine ("Finally in domain {0}", AppDomain.CurrentDomain.FriendlyName);
+                       if (original_domain != AppDomain.CurrentDomain.FriendlyName)
+                               Environment.Exit (2);
+                       AppDomain.Unload (ad);
+               }
+
+               Console.WriteLine ("All OK");
+               return 0;
+       }
+}
index ab13fe4cf4d9b6a563dcf10995a10ed42bac3eee..ad4f2c0033b1091e5d9b55f8f956515bb4fc6297 100644 (file)
 \margl1440\margr1440\vieww9000\viewh9000\viewkind0
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
 
-\f0\fs24 \cf0 The software included in the package is licensed under several different agreements.\
+\f0\fs24 \cf0 In general, the runtime and its class libraries are licensed under the\
+terms of the MIT license, and some third party code is licensed under\
+the 3-clause BSD license.  See the file "PATENTS.TXT" for Microsoft's\
+patent grant on the Mono codebase.\
 \
-MIT License:\
+The Mono distribution does include a handful of pieces of code that\
+are used during the build system and are covered under different\
+licenses, those include:\
 \
-http://www.opensource.org/licenses/mit-license.php\
+Build Time Code\
+===============\
 \
-LGPL:\
+This is code that is used at build time, or during the maintenance of\
+Mono itself, and does not end up in the redistributable part of Mono:\
 \
-http://www.opensource.org/licenses/lgpl-2.1.php\
+* gettext\
 \
-GPL:\
+  m4 source files used to probe features at build time: GPL\
 \
-http://www.opensource.org/licenses/gpl-2.0.php\
+* Benchmark Source Files\
 \
-You can develop commercial applications and redistribute the code in this package.
-You only need to obtain a commercial license if you wish to make changes to Mono or
-if you are using Mono as an embedded runtime into your application.\
+  Logic.cs and zipmark.cs are GPL source files.\
 \
-Contact contact@xamarin.com if you think you need a license.
-}
+* mono/docs/HtmlAgilityPack\
+\
+  MS-PL licensed\
+\
+* mcs/jay: 4-clause BSD licensed\
+\
+* mcs/nunit24: MS-PL\
+\
+* mcs/class/I18N/mklist.sh, tools/cvt.sh: GNU GPLv2\
+\
+Runtime Code\
+============\
+\
+The following code is linked with the final Mono runtime, the libmono\
+embeddable runtime:\
+\
+* support/minizip: BSD license.\
+\
+* mono/utils/memcheck.h: BSD license, used on debug builds that use Valgrind.\
+\
+* mono/utils/freebsd-dwarf.h, freebsd-elf_common.h, freebsd-elf64.h freebsd-elf32.h: BSD license.\
+\
+* mono/utils/bsearch.c: BSD license.\
+\
+* mono/io-layer/wapi_glob.h, wapi_glob.c: BSD license\
+\
+Class Library code\
+==================\
+\
+These are class libraries that can be loaded by your process:\
+\
+* mcs/class/RabbitMQ.Client: dual licensed in Apache v2, and Mozilla Public License 1.1\
+\
+* mcs/class/Compat.ICSharpCode.SharpZipLib and\
+  mcs/class/ICSharpCode.SharpZipLib are GPL with class-path exception.\
+  Originates with the SharpDevelop project.\
+\
+* mcs/class/System.Core/System/TimeZoneInfo.Android.cs\
+\
+  This is a port of Apache 2.0-licensed Android code, and thus is\
+  licensed under the Apache 2.0 license\
+\
+           http://www.apache.org/licenses/LICENSE-2.0\
+\
+API Documentation\
+=================\
+\
+The API documentation is licensed under the terms of the Creative\
+Commons Attribution 4.0 International Public License\
+\
+\
+The Licenses\
+============\
+\
+       These are the licenses used in Mono, the files are located:\
+\
+### MIT X11 License\
+\
+Permission is hereby granted, free of charge, to any person obtaining\
+a copy of this software and associated documentation files (the\
+"Software"), to deal in the Software without restriction, including\
+without limitation the rights to use, copy, modify, merge, publish,\
+distribute, sublicense, and/or sell copies of the Software, and to\
+permit persons to whom the Software is furnished to do so, subject to\
+the following conditions:\
+\
+The above copyright notice and this permission notice shall be\
+included in all copies or substantial portions of the Software.\
+\
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\
+\
+\
+### Mozilla.MPL\
+\
+                          MOZILLA PUBLIC LICENSE\
+                                Version 1.1\
+\
+                              ---------------\
+\
+1. Definitions.\
+\
+     1.0.1. "Commercial Use" means distribution or otherwise making the\
+     Covered Code available to a third party.\
+\
+     1.1. "Contributor" means each entity that creates or contributes to\
+     the creation of Modifications.\
+\
+     1.2. "Contributor Version" means the combination of the Original\
+     Code, prior Modifications used by a Contributor, and the Modifications\
+     made by that particular Contributor.\
+\
+     1.3. "Covered Code" means the Original Code or Modifications or the\
+     combination of the Original Code and Modifications, in each case\
+     including portions thereof.\
+\
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally\
+     accepted in the software development community for the electronic\
+     transfer of data.\
+\
+     1.5. "Executable" means Covered Code in any form other than Source\
+     Code.\
+\
+     1.6. "Initial Developer" means the individual or entity identified\
+     as the Initial Developer in the Source Code notice required by Exhibit\
+     A.\
+\
+     1.7. "Larger Work" means a work which combines Covered Code or\
+     portions thereof with code not governed by the terms of this License.\
+\
+     1.8. "License" means this document.\
+\
+     1.8.1. "Licensable" means having the right to grant, to the maximum\
+     extent possible, whether at the time of the initial grant or\
+     subsequently acquired, any and all of the rights conveyed herein.\
+\
+     1.9. "Modifications" means any addition to or deletion from the\
+     substance or structure of either the Original Code or any previous\
+     Modifications. When Covered Code is released as a series of files, a\
+     Modification is:\
+          A. Any addition to or deletion from the contents of a file\
+          containing Original Code or previous Modifications.\
+\
+          B. Any new file that contains any part of the Original Code or\
+          previous Modifications.\
+\
+     1.10. "Original Code" means Source Code of computer software code\
+     which is described in the Source Code notice required by Exhibit A as\
+     Original Code, and which, at the time of its release under this\
+     License is not already Covered Code governed by this License.\
+\
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or\
+     hereafter acquired, including without limitation,  method, process,\
+     and apparatus claims, in any patent Licensable by grantor.\
+\
+     1.11. "Source Code" means the preferred form of the Covered Code for\
+     making modifications to it, including all modules it contains, plus\
+     any associated interface definition files, scripts used to control\
+     compilation and installation of an Executable, or source code\
+     differential comparisons against either the Original Code or another\
+     well known, available Covered Code of the Contributor's choice. The\
+     Source Code can be in a compressed or archival form, provided the\
+     appropriate decompression or de-archiving software is widely available\
+     for no charge.\
+\
+     1.12. "You" (or "Your")  means an individual or a legal entity\
+     exercising rights under, and complying with all of the terms of, this\
+     License or a future version of this License issued under Section 6.1.\
+     For legal entities, "You" includes any entity which controls, is\
+     controlled by, or is under common control with You. For purposes of\
+     this definition, "control" means (a) the power, direct or indirect,\
+     to cause the direction or management of such entity, whether by\
+     contract or otherwise, or (b) ownership of more than fifty percent\
+     (50%) of the outstanding shares or beneficial ownership of such\
+     entity.\
+\
+2. Source Code License.\
+\
+     2.1. The Initial Developer Grant.\
+     The Initial Developer hereby grants You a world-wide, royalty-free,\
+     non-exclusive license, subject to third party intellectual property\
+     claims:\
+          (a)  under intellectual property rights (other than patent or\
+          trademark) Licensable by Initial Developer to use, reproduce,\
+          modify, display, perform, sublicense and distribute the Original\
+          Code (or portions thereof) with or without Modifications, and/or\
+          as part of a Larger Work; and\
+\
+          (b) under Patents Claims infringed by the making, using or\
+          selling of Original Code, to make, have made, use, practice,\
+          sell, and offer for sale, and/or otherwise dispose of the\
+          Original Code (or portions thereof).\
+\
+          (c) the licenses granted in this Section 2.1(a) and (b) are\
+          effective on the date Initial Developer first distributes\
+          Original Code under the terms of this License.\
+\
+          (d) Notwithstanding Section 2.1(b) above, no patent license is\
+          granted: 1) for code that You delete from the Original Code; 2)\
+          separate from the Original Code;  or 3) for infringements caused\
+          by: i) the modification of the Original Code or ii) the\
+          combination of the Original Code with other software or devices.\
+\
+     2.2. Contributor Grant.\
+     Subject to third party intellectual property claims, each Contributor\
+     hereby grants You a world-wide, royalty-free, non-exclusive license\
+\
+          (a)  under intellectual property rights (other than patent or\
+          trademark) Licensable by Contributor, to use, reproduce, modify,\
+          display, perform, sublicense and distribute the Modifications\
+          created by such Contributor (or portions thereof) either on an\
+          unmodified basis, with other Modifications, as Covered Code\
+          and/or as part of a Larger Work; and\
+\
+          (b) under Patent Claims infringed by the making, using, or\
+          selling of  Modifications made by that Contributor either alone\
+          and/or in combination with its Contributor Version (or portions\
+          of such combination), to make, use, sell, offer for sale, have\
+          made, and/or otherwise dispose of: 1) Modifications made by that\
+          Contributor (or portions thereof); and 2) the combination of\
+          Modifications made by that Contributor with its Contributor\
+          Version (or portions of such combination).\
+\
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are\
+          effective on the date Contributor first makes Commercial Use of\
+          the Covered Code.\
+\
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is\
+          granted: 1) for any code that Contributor has deleted from the\
+          Contributor Version; 2)  separate from the Contributor Version;\
+          3)  for infringements caused by: i) third party modifications of\
+          Contributor Version or ii)  the combination of Modifications made\
+          by that Contributor with other software  (except as part of the\
+          Contributor Version) or other devices; or 4) under Patent Claims\
+          infringed by Covered Code in the absence of Modifications made by\
+          that Contributor.\
+\
+3. Distribution Obligations.\
+\
+     3.1. Application of License.\
+     The Modifications which You create or to which You contribute are\
+     governed by the terms of this License, including without limitation\
+     Section 2.2. The Source Code version of Covered Code may be\
+     distributed only under the terms of this License or a future version\
+     of this License released under Section 6.1, and You must include a\
+     copy of this License with every copy of the Source Code You\
+     distribute. You may not offer or impose any terms on any Source Code\
+     version that alters or restricts the applicable version of this\
+     License or the recipients' rights hereunder. However, You may include\
+     an additional document offering the additional rights described in\
+     Section 3.5.\
+\
+     3.2. Availability of Source Code.\
+     Any Modification which You create or to which You contribute must be\
+     made available in Source Code form under the terms of this License\
+     either on the same media as an Executable version or via an accepted\
+     Electronic Distribution Mechanism to anyone to whom you made an\
+     Executable version available; and if made available via Electronic\
+     Distribution Mechanism, must remain available for at least twelve (12)\
+     months after the date it initially became available, or at least six\
+     (6) months after a subsequent version of that particular Modification\
+     has been made available to such recipients. You are responsible for\
+     ensuring that the Source Code version remains available even if the\
+     Electronic Distribution Mechanism is maintained by a third party.\
+\
+     3.3. Description of Modifications.\
+     You must cause all Covered Code to which You contribute to contain a\
+     file documenting the changes You made to create that Covered Code and\
+     the date of any change. You must include a prominent statement that\
+     the Modification is derived, directly or indirectly, from Original\
+     Code provided by the Initial Developer and including the name of the\
+     Initial Developer in (a) the Source Code, and (b) in any notice in an\
+     Executable version or related documentation in which You describe the\
+     origin or ownership of the Covered Code.\
+\
+     3.4. Intellectual Property Matters\
+          (a) Third Party Claims.\
+          If Contributor has knowledge that a license under a third party's\
+          intellectual property rights is required to exercise the rights\
+          granted by such Contributor under Sections 2.1 or 2.2,\
+          Contributor must include a text file with the Source Code\
+          distribution titled "LEGAL" which describes the claim and the\
+          party making the claim in sufficient detail that a recipient will\
+          know whom to contact. If Contributor obtains such knowledge after\
+          the Modification is made available as described in Section 3.2,\
+          Contributor shall promptly modify the LEGAL file in all copies\
+          Contributor makes available thereafter and shall take other steps\
+          (such as notifying appropriate mailing lists or newsgroups)\
+          reasonably calculated to inform those who received the Covered\
+          Code that new knowledge has been obtained.\
+\
+          (b) Contributor APIs.\
+          If Contributor's Modifications include an application programming\
+          interface and Contributor has knowledge of patent licenses which\
+          are reasonably necessary to implement that API, Contributor must\
+          also include this information in the LEGAL file.\
+\
+               (c)    Representations.\
+          Contributor represents that, except as disclosed pursuant to\
+          Section 3.4(a) above, Contributor believes that Contributor's\
+          Modifications are Contributor's original creation(s) and/or\
+          Contributor has sufficient rights to grant the rights conveyed by\
+          this License.\
+\
+     3.5. Required Notices.\
+     You must duplicate the notice in Exhibit A in each file of the Source\
+     Code.  If it is not possible to put such notice in a particular Source\
+     Code file due to its structure, then You must include such notice in a\
+     location (such as a relevant directory) where a user would be likely\
+     to look for such a notice.  If You created one or more Modification(s)\
+     You may add your name as a Contributor to the notice described in\
+     Exhibit A.  You must also duplicate this License in any documentation\
+     for the Source Code where You describe recipients' rights or ownership\
+     rights relating to Covered Code.  You may choose to offer, and to\
+     charge a fee for, warranty, support, indemnity or liability\
+     obligations to one or more recipients of Covered Code. However, You\
+     may do so only on Your own behalf, and not on behalf of the Initial\
+     Developer or any Contributor. You must make it absolutely clear than\
+     any such warranty, support, indemnity or liability obligation is\
+     offered by You alone, and You hereby agree to indemnify the Initial\
+     Developer and every Contributor for any liability incurred by the\
+     Initial Developer or such Contributor as a result of warranty,\
+     support, indemnity or liability terms You offer.\
+\
+     3.6. Distribution of Executable Versions.\
+     You may distribute Covered Code in Executable form only if the\
+     requirements of Section 3.1-3.5 have been met for that Covered Code,\
+     and if You include a notice stating that the Source Code version of\
+     the Covered Code is available under the terms of this License,\
+     including a description of how and where You have fulfilled the\
+     obligations of Section 3.2. The notice must be conspicuously included\
+     in any notice in an Executable version, related documentation or\
+     collateral in which You describe recipients' rights relating to the\
+     Covered Code. You may distribute the Executable version of Covered\
+     Code or ownership rights under a license of Your choice, which may\
+     contain terms different from this License, provided that You are in\
+     compliance with the terms of this License and that the license for the\
+     Executable version does not attempt to limit or alter the recipient's\
+     rights in the Source Code version from the rights set forth in this\
+     License. If You distribute the Executable version under a different\
+     license You must make it absolutely clear that any terms which differ\
+     from this License are offered by You alone, not by the Initial\
+     Developer or any Contributor. You hereby agree to indemnify the\
+     Initial Developer and every Contributor for any liability incurred by\
+     the Initial Developer or such Contributor as a result of any such\
+     terms You offer.\
+\
+     3.7. Larger Works.\
+     You may create a Larger Work by combining Covered Code with other code\
+     not governed by the terms of this License and distribute the Larger\
+     Work as a single product. In such a case, You must make sure the\
+     requirements of this License are fulfilled for the Covered Code.\
+\
+4. Inability to Comply Due to Statute or Regulation.\
+\
+     If it is impossible for You to comply with any of the terms of this\
+     License with respect to some or all of the Covered Code due to\
+     statute, judicial order, or regulation then You must: (a) comply with\
+     the terms of this License to the maximum extent possible; and (b)\
+     describe the limitations and the code they affect. Such description\
+     must be included in the LEGAL file described in Section 3.4 and must\
+     be included with all distributions of the Source Code. Except to the\
+     extent prohibited by statute or regulation, such description must be\
+     sufficiently detailed for a recipient of ordinary skill to be able to\
+     understand it.\
+\
+5. Application of this License.\
+\
+     This License applies to code to which the Initial Developer has\
+     attached the notice in Exhibit A and to related Covered Code.\
+\
+6. Versions of the License.\
+\
+     6.1. New Versions.\
+     Netscape Communications Corporation ("Netscape") may publish revised\
+     and/or new versions of the License from time to time. Each version\
+     will be given a distinguishing version number.\
+\
+     6.2. Effect of New Versions.\
+     Once Covered Code has been published under a particular version of the\
+     License, You may always continue to use it under the terms of that\
+     version. You may also choose to use such Covered Code under the terms\
+     of any subsequent version of the License published by Netscape. No one\
+     other than Netscape has the right to modify the terms applicable to\
+     Covered Code created under this License.\
+\
+     6.3. Derivative Works.\
+     If You create or use a modified version of this License (which you may\
+     only do in order to apply it to code which is not already Covered Code\
+     governed by this License), You must (a) rename Your license so that\
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",\
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your\
+     license (except to note that your license differs from this License)\
+     and (b) otherwise make it clear that Your version of the license\
+     contains terms which differ from the Mozilla Public License and\
+     Netscape Public License. (Filling in the name of the Initial\
+     Developer, Original Code or Contributor in the notice described in\
+     Exhibit A shall not of themselves be deemed to be modifications of\
+     this License.)\
+\
+7. DISCLAIMER OF WARRANTY.\
+\
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,\
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,\
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF\
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.\
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE\
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,\
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE\
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER\
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF\
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.\
+\
+8. TERMINATION.\
+\
+     8.1.  This License and the rights granted hereunder will terminate\
+     automatically if You fail to comply with terms herein and fail to cure\
+     such breach within 30 days of becoming aware of the breach. All\
+     sublicenses to the Covered Code which are properly granted shall\
+     survive any termination of this License. Provisions which, by their\
+     nature, must remain in effect beyond the termination of this License\
+     shall survive.\
+\
+     8.2.  If You initiate litigation by asserting a patent infringement\
+     claim (excluding declatory judgment actions) against Initial Developer\
+     or a Contributor (the Initial Developer or Contributor against whom\
+     You file such action is referred to as "Participant")  alleging that:\
+\
+     (a)  such Participant's Contributor Version directly or indirectly\
+     infringes any patent, then any and all rights granted by such\
+     Participant to You under Sections 2.1 and/or 2.2 of this License\
+     shall, upon 60 days notice from Participant terminate prospectively,\
+     unless if within 60 days after receipt of notice You either: (i)\
+     agree in writing to pay Participant a mutually agreeable reasonable\
+     royalty for Your past and future use of Modifications made by such\
+     Participant, or (ii) withdraw Your litigation claim with respect to\
+     the Contributor Version against such Participant.  If within 60 days\
+     of notice, a reasonable royalty and payment arrangement are not\
+     mutually agreed upon in writing by the parties or the litigation claim\
+     is not withdrawn, the rights granted by Participant to You under\
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of\
+     the 60 day notice period specified above.\
+\
+     (b)  any software, hardware, or device, other than such Participant's\
+     Contributor Version, directly or indirectly infringes any patent, then\
+     any rights granted to You by such Participant under Sections 2.1(b)\
+     and 2.2(b) are revoked effective as of the date You first made, used,\
+     sold, distributed, or had made, Modifications made by that\
+     Participant.\
+\
+     8.3.  If You assert a patent infringement claim against Participant\
+     alleging that such Participant's Contributor Version directly or\
+     indirectly infringes any patent where such claim is resolved (such as\
+     by license or settlement) prior to the initiation of patent\
+     infringement litigation, then the reasonable value of the licenses\
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken\
+     into account in determining the amount or value of any payment or\
+     license.\
+\
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,\
+     all end user license agreements (excluding distributors and resellers)\
+     which have been validly granted by You or any distributor hereunder\
+     prior to termination shall survive termination.\
+\
+9. LIMITATION OF LIABILITY.\
+\
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT\
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL\
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,\
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR\
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY\
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,\
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER\
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN\
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF\
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY\
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW\
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE\
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO\
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.\
+\
+10. U.S. GOVERNMENT END USERS.\
+\
+     The Covered Code is a "commercial item," as that term is defined in\
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer\
+     software" and "commercial computer software documentation," as such\
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48\
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),\
+     all U.S. Government End Users acquire Covered Code with only those\
+     rights set forth herein.\
+\
+11. MISCELLANEOUS.\
+\
+     This License represents the complete agreement concerning subject\
+     matter hereof. If any provision of this License is held to be\
+     unenforceable, such provision shall be reformed only to the extent\
+     necessary to make it enforceable. This License shall be governed by\
+     California law provisions (except to the extent applicable law, if\
+     any, provides otherwise), excluding its conflict-of-law provisions.\
+     With respect to disputes in which at least one party is a citizen of,\
+     or an entity chartered or registered to do business in the United\
+     States of America, any litigation relating to this License shall be\
+     subject to the jurisdiction of the Federal Courts of the Northern\
+     District of California, with venue lying in Santa Clara County,\
+     California, with the losing party responsible for costs, including\
+     without limitation, court costs and reasonable attorneys' fees and\
+     expenses. The application of the United Nations Convention on\
+     Contracts for the International Sale of Goods is expressly excluded.\
+     Any law or regulation which provides that the language of a contract\
+     shall be construed against the drafter shall not apply to this\
+     License.\
+\
+12. RESPONSIBILITY FOR CLAIMS.\
+\
+     As between Initial Developer and the Contributors, each party is\
+     responsible for claims and damages arising, directly or indirectly,\
+     out of its utilization of rights under this License and You agree to\
+     work with Initial Developer and Contributors to distribute such\
+     responsibility on an equitable basis. Nothing herein is intended or\
+     shall be deemed to constitute any admission of liability.\
+\
+13. MULTIPLE-LICENSED CODE.\
+\
+     Initial Developer may designate portions of the Covered Code as\
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial\
+     Developer permits you to utilize portions of the Covered Code under\
+     Your choice of the NPL or the alternative licenses, if any, specified\
+     by the Initial Developer in the file described in Exhibit A.\
+\
+EXHIBIT A -Mozilla Public License.\
+\
+     ``The contents of this file are subject to the Mozilla Public License\
+     Version 1.1 (the "License"); you may not use this file except in\
+     compliance with the License. You may obtain a copy of the License at\
+     http://www.mozilla.org/MPL/\
+\
+     Software distributed under the License is distributed on an "AS IS"\
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the\
+     License for the specific language governing rights and limitations\
+     under the License.\
+\
+     The Original Code is ______________________________________.\
+\
+     The Initial Developer of the Original Code is ________________________.\
+     Portions created by ______________________ are Copyright (C) ______\
+     _______________________. All Rights Reserved.\
+\
+     Contributor(s): ______________________________________.\
+\
+     Alternatively, the contents of this file may be used under the terms\
+     of the _____ license (the  "[___] License"), in which case the\
+     provisions of [______] License are applicable instead of those\
+     above.  If you wish to allow use of your version of this file only\
+     under the terms of the [____] License and not to allow others to use\
+     your version of this file under the MPL, indicate your decision by\
+     deleting  the provisions above and replace  them with the notice and\
+     other provisions required by the [___] License.  If you do not delete\
+     the provisions above, a recipient may use your version of this file\
+     under either the MPL or the [___] License."\
+\
+     [NOTE: The text of this Exhibit A may differ slightly from the text of\
+     the notices in the Source Code files of the Original Code. You should\
+     use the text of this Exhibit A rather than the text found in the\
+     Original Code Source Code for Your Modifications.]\
+\
+### Microsoft Public License\
+\
+Microsoft Permissive License (Ms-PL)\
+ \
+       This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.\
+ \
+1. Definitions\
+\
+       The terms \uc0\u147 reproduce,\u148  \u147 reproduction,\u148  \u147 derivative works,\u148  and \u147 distribution\u148  have the same meaning here as under U.S. copyright law.\
+       A \uc0\u147 contribution\u148  is the original software, or any additions or changes to the software.\
+       A \uc0\u147 contributor\u148  is any person that distributes its contribution under this license.\
+        \uc0\u147 Licensed patents\u148  are a contributor\u146 s patent claims that read directly on its contribution.\
+ \
+2. Grant of Rights\
+\
+       (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.\
+       (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.\
+ \
+3. Conditions and Limitations\
+\
+       (A) No Trademark License- This license does not grant you rights to use any contributors\uc0\u146  name, logo, or trademarks.\
+       (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.\
+       (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.\
+       (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.\
+       (E) The software is licensed \uc0\u147 as-is.\u148  You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.\
+       (F) If you distribute the software or derivative works with programs you develop, you agree to indemnify, defend, and hold harmless all contributors from any claims, including attorneys\uc0\u146  fees, related to the distribution or use of your programs.  For clarity, you have no such obligations to a contributor for any claims based solely on the unmodified contributions of that contributor.\
+       (G) If you make any additions or changes to the original software, you may only distribute them under a new namespace.  In addition, you will clearly identify your changes or additions as your own.\
+\
+### Infozip BSD\
+\
+This is version 2009-Jan-02 of the Info-ZIP license. The definitive\
+version of this document should be available at\
+ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and a\
+copy at http://www.info-zip.org/pub/infozip/license.html.\
+\
+Copyright (c) 1990-2009 Info-ZIP. All rights reserved.\
+\
+For the purposes of this copyright and license, "Info-ZIP" is defined\
+as the following set of individuals: Mark Adler, John Bush, Karl\
+Davis, Harald Denker, Jean-Michel Dubois, Jean-loup Gailly, Hunter\
+Goatley, Ed Gordon, Ian Gorman, Chris Herborth, Dirk Haase, Greg\
+Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, David\
+Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, Steve\
+P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,\
+Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda,\
+Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren,\
+Rich Wales, Mike White.\
+\
+This software is provided "as is," without warranty of any kind,\
+express or implied. In no event shall Info-ZIP or its contributors be\
+held liable for any direct, indirect, incidental, special or\
+consequential damages arising out of the use of or inability to use\
+this software.\
+\
+Permission is granted to anyone to use this software for any purpose,\
+including commercial applications, and to alter it and redistribute it\
+freely, subject to the above disclaimer and the following\
+restrictions:\
+\
+Redistributions of source code (in whole or in part) must retain the\
+above copyright notice, definition, disclaimer, and this list of\
+conditions.\
+\
+Redistributions in binary form (compiled executables and libraries)\
+must reproduce the above copyright notice, definition, disclaimer, and\
+this list of conditions in documentation and/or other materials\
+provided with the distribution. Additional documentation is not needed\
+for executables where a command line license option provides these and\
+a note regarding this option is in the executable's startup\
+banner. The sole exception to this condition is redistribution of a\
+standard UnZipSFX binary (including SFXWiz) as part of a\
+self-extracting archive; that is permitted without inclusion of this\
+license, as long as the normal SFX banner has not been removed from\
+the binary or disabled.\
+\
+Altered versions--including, but not limited to, ports to new\
+operating systems, existing ports with new graphical interfaces,\
+versions with modified or added functionality, and dynamic, shared, or\
+static library versions not from Info-ZIP--must be plainly marked as\
+such and must not be misrepresented as being the original source or,\
+if binaries, compiled from the original source. Such altered versions\
+also must not be misrepresented as being Info-ZIP releases--including,\
+but not limited to, labeling of the altered versions with the names\
+"Info-ZIP" (or any variation thereof, including, but not limited to,\
+different capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without\
+the explicit permission of Info-ZIP. Such altered versions are further\
+prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP\
+e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP\
+will provide support for the altered versions.\
+\
+Info-ZIP retains the right to use the names "Info-ZIP," "Zip,"\
+"UnZip," "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip"\
+for its own source and binary releases.\
+\
+### License Creative Commons 2.5\
+\
+// Copyright 2006 James Newton-King\
+// http://www.newtonsoft.com\
+//\
+// This work is licensed under the Creative Commons Attribution 2.5 License\
+// http://creativecommons.org/licenses/by/2.5/\
+//\
+// You are free:\
+//    * to copy, distribute, display, and perform the work\
+//    * to make derivative works\
+//    * to make commercial use of the work\
+//\
+// Under the following conditions:\
+//    * For any reuse or distribution, you must make clear to others the license terms of this work.\
+//    * Any of these conditions can be waived if you get permission from the copyright holder.\
+\
+From: james.newtonking@gmail.com [mailto:james.newtonking@gmail.com] On Behalf Of James Newton-King\
+Sent: Tuesday, June 05, 2007 6:36 AM\
+To: Konstantin Triger\
+Subject: Re: Support request by Konstantin Triger for Json.NET\
+\
+Hey Kosta\
+\
+I think it would be awesome to use Json.NET in Mono for System.Web.Extensions.\
+\
+The CC license has the following clause: Any of the above conditions can be waived if you get permission from the copyright holder.\
+\
+I can waive that statement for you and Mono. Would that be acceptable?\
+\
+\
+Regards,\
+James\
+\
+### Creative Commons Attribution 4.0 International Public License\
+\
+Attribution 4.0 International\
+\
+=======================================================================\
+\
+Creative Commons Corporation ("Creative Commons") is not a law firm and\
+does not provide legal services or legal advice. Distribution of\
+Creative Commons public licenses does not create a lawyer-client or\
+other relationship. Creative Commons makes its licenses and related\
+information available on an "as-is" basis. Creative Commons gives no\
+warranties regarding its licenses, any material licensed under their\
+terms and conditions, or any related information. Creative Commons\
+disclaims all liability for damages resulting from their use to the\
+fullest extent possible.\
+\
+Using Creative Commons Public Licenses\
+\
+Creative Commons public licenses provide a standard set of terms and\
+conditions that creators and other rights holders may use to share\
+original works of authorship and other material subject to copyright\
+and certain other rights specified in the public license below. The\
+following considerations are for informational purposes only, are not\
+exhaustive, and do not form part of our licenses.\
+\
+     Considerations for licensors: Our public licenses are\
+     intended for use by those authorized to give the public\
+     permission to use material in ways otherwise restricted by\
+     copyright and certain other rights. Our licenses are\
+     irrevocable. Licensors should read and understand the terms\
+     and conditions of the license they choose before applying it.\
+     Licensors should also secure all rights necessary before\
+     applying our licenses so that the public can reuse the\
+     material as expected. Licensors should clearly mark any\
+     material not subject to the license. This includes other CC-\
+     licensed material, or material used under an exception or\
+     limitation to copyright. More considerations for licensors:\
+       wiki.creativecommons.org/Considerations_for_licensors\
+\
+     Considerations for the public: By using one of our public\
+     licenses, a licensor grants the public permission to use the\
+     licensed material under specified terms and conditions. If\
+     the licensor's permission is not necessary for any reason--for\
+     example, because of any applicable exception or limitation to\
+     copyright--then that use is not regulated by the license. Our\
+     licenses grant only permissions under copyright and certain\
+     other rights that a licensor has authority to grant. Use of\
+     the licensed material may still be restricted for other\
+     reasons, including because others have copyright or other\
+     rights in the material. A licensor may make special requests,\
+     such as asking that all changes be marked or described.\
+     Although not required by our licenses, you are encouraged to\
+     respect those requests where reasonable. More_considerations\
+     for the public: \
+       wiki.creativecommons.org/Considerations_for_licensees\
+\
+=======================================================================\
+\
+Creative Commons Attribution 4.0 International Public License\
+\
+By exercising the Licensed Rights (defined below), You accept and agree\
+to be bound by the terms and conditions of this Creative Commons\
+Attribution 4.0 International Public License ("Public License"). To the\
+extent this Public License may be interpreted as a contract, You are\
+granted the Licensed Rights in consideration of Your acceptance of\
+these terms and conditions, and the Licensor grants You such rights in\
+consideration of benefits the Licensor receives from making the\
+Licensed Material available under these terms and conditions.\
+\
+\
+Section 1 -- Definitions.\
+\
+  a. Adapted Material means material subject to Copyright and Similar\
+     Rights that is derived from or based upon the Licensed Material\
+     and in which the Licensed Material is translated, altered,\
+     arranged, transformed, or otherwise modified in a manner requiring\
+     permission under the Copyright and Similar Rights held by the\
+     Licensor. For purposes of this Public License, where the Licensed\
+     Material is a musical work, performance, or sound recording,\
+     Adapted Material is always produced where the Licensed Material is\
+     synched in timed relation with a moving image.\
+\
+  b. Adapter's License means the license You apply to Your Copyright\
+     and Similar Rights in Your contributions to Adapted Material in\
+     accordance with the terms and conditions of this Public License.\
+\
+  c. Copyright and Similar Rights means copyright and/or similar rights\
+     closely related to copyright including, without limitation,\
+     performance, broadcast, sound recording, and Sui Generis Database\
+     Rights, without regard to how the rights are labeled or\
+     categorized. For purposes of this Public License, the rights\
+     specified in Section 2(b)(1)-(2) are not Copyright and Similar\
+     Rights.\
+\
+  d. Effective Technological Measures means those measures that, in the\
+     absence of proper authority, may not be circumvented under laws\
+     fulfilling obligations under Article 11 of the WIPO Copyright\
+     Treaty adopted on December 20, 1996, and/or similar international\
+     agreements.\
+\
+  e. Exceptions and Limitations means fair use, fair dealing, and/or\
+     any other exception or limitation to Copyright and Similar Rights\
+     that applies to Your use of the Licensed Material.\
+\
+  f. Licensed Material means the artistic or literary work, database,\
+     or other material to which the Licensor applied this Public\
+     License.\
+\
+  g. Licensed Rights means the rights granted to You subject to the\
+     terms and conditions of this Public License, which are limited to\
+     all Copyright and Similar Rights that apply to Your use of the\
+     Licensed Material and that the Licensor has authority to license.\
+\
+  h. Licensor means the individual(s) or entity(ies) granting rights\
+     under this Public License.\
+\
+  i. Share means to provide material to the public by any means or\
+     process that requires permission under the Licensed Rights, such\
+     as reproduction, public display, public performance, distribution,\
+     dissemination, communication, or importation, and to make material\
+     available to the public including in ways that members of the\
+     public may access the material from a place and at a time\
+     individually chosen by them.\
+\
+  j. Sui Generis Database Rights means rights other than copyright\
+     resulting from Directive 96/9/EC of the European Parliament and of\
+     the Council of 11 March 1996 on the legal protection of databases,\
+     as amended and/or succeeded, as well as other essentially\
+     equivalent rights anywhere in the world.\
+\
+  k. You means the individual or entity exercising the Licensed Rights\
+     under this Public License. Your has a corresponding meaning.\
+\
+\
+Section 2 -- Scope.\
+\
+  a. License grant.\
+\
+       1. Subject to the terms and conditions of this Public License,\
+          the Licensor hereby grants You a worldwide, royalty-free,\
+          non-sublicensable, non-exclusive, irrevocable license to\
+          exercise the Licensed Rights in the Licensed Material to:\
+\
+            a. reproduce and Share the Licensed Material, in whole or\
+               in part; and\
+\
+            b. produce, reproduce, and Share Adapted Material.\
+\
+       2. Exceptions and Limitations. For the avoidance of doubt, where\
+          Exceptions and Limitations apply to Your use, this Public\
+          License does not apply, and You do not need to comply with\
+          its terms and conditions.\
+\
+       3. Term. The term of this Public License is specified in Section\
+          6(a).\
+\
+       4. Media and formats; technical modifications allowed. The\
+          Licensor authorizes You to exercise the Licensed Rights in\
+          all media and formats whether now known or hereafter created,\
+          and to make technical modifications necessary to do so. The\
+          Licensor waives and/or agrees not to assert any right or\
+          authority to forbid You from making technical modifications\
+          necessary to exercise the Licensed Rights, including\
+          technical modifications necessary to circumvent Effective\
+          Technological Measures. For purposes of this Public License,\
+          simply making modifications authorized by this Section 2(a)\
+          (4) never produces Adapted Material.\
+\
+       5. Downstream recipients.\
+\
+            a. Offer from the Licensor -- Licensed Material. Every\
+               recipient of the Licensed Material automatically\
+               receives an offer from the Licensor to exercise the\
+               Licensed Rights under the terms and conditions of this\
+               Public License.\
+\
+            b. No downstream restrictions. You may not offer or impose\
+               any additional or different terms or conditions on, or\
+               apply any Effective Technological Measures to, the\
+               Licensed Material if doing so restricts exercise of the\
+               Licensed Rights by any recipient of the Licensed\
+               Material.\
+\
+       6. No endorsement. Nothing in this Public License constitutes or\
+          may be construed as permission to assert or imply that You\
+          are, or that Your use of the Licensed Material is, connected\
+          with, or sponsored, endorsed, or granted official status by,\
+          the Licensor or others designated to receive attribution as\
+          provided in Section 3(a)(1)(A)(i).\
+\
+  b. Other rights.\
+\
+       1. Moral rights, such as the right of integrity, are not\
+          licensed under this Public License, nor are publicity,\
+          privacy, and/or other similar personality rights; however, to\
+          the extent possible, the Licensor waives and/or agrees not to\
+          assert any such rights held by the Licensor to the limited\
+          extent necessary to allow You to exercise the Licensed\
+          Rights, but not otherwise.\
+\
+       2. Patent and trademark rights are not licensed under this\
+          Public License.\
+\
+       3. To the extent possible, the Licensor waives any right to\
+          collect royalties from You for the exercise of the Licensed\
+          Rights, whether directly or through a collecting society\
+          under any voluntary or waivable statutory or compulsory\
+          licensing scheme. In all other cases the Licensor expressly\
+          reserves any right to collect such royalties.\
+\
+\
+Section 3 -- License Conditions.\
+\
+Your exercise of the Licensed Rights is expressly made subject to the\
+following conditions.\
+\
+  a. Attribution.\
+\
+       1. If You Share the Licensed Material (including in modified\
+          form), You must:\
+\
+            a. retain the following if it is supplied by the Licensor\
+               with the Licensed Material:\
+\
+                 i. identification of the creator(s) of the Licensed\
+                    Material and any others designated to receive\
+                    attribution, in any reasonable manner requested by\
+                    the Licensor (including by pseudonym if\
+                    designated);\
+\
+                ii. a copyright notice;\
+\
+               iii. a notice that refers to this Public License;\
+\
+                iv. a notice that refers to the disclaimer of\
+                    warranties;\
+\
+                 v. a URI or hyperlink to the Licensed Material to the\
+                    extent reasonably practicable;\
+\
+            b. indicate if You modified the Licensed Material and\
+               retain an indication of any previous modifications; and\
+\
+            c. indicate the Licensed Material is licensed under this\
+               Public License, and include the text of, or the URI or\
+               hyperlink to, this Public License.\
+\
+       2. You may satisfy the conditions in Section 3(a)(1) in any\
+          reasonable manner based on the medium, means, and context in\
+          which You Share the Licensed Material. For example, it may be\
+          reasonable to satisfy the conditions by providing a URI or\
+          hyperlink to a resource that includes the required\
+          information.\
+\
+       3. If requested by the Licensor, You must remove any of the\
+          information required by Section 3(a)(1)(A) to the extent\
+          reasonably practicable.\
+\
+       4. If You Share Adapted Material You produce, the Adapter's\
+          License You apply must not prevent recipients of the Adapted\
+          Material from complying with this Public License.\
+\
+\
+Section 4 -- Sui Generis Database Rights.\
+\
+Where the Licensed Rights include Sui Generis Database Rights that\
+apply to Your use of the Licensed Material:\
+\
+  a. for the avoidance of doubt, Section 2(a)(1) grants You the right\
+     to extract, reuse, reproduce, and Share all or a substantial\
+     portion of the contents of the database;\
+\
+  b. if You include all or a substantial portion of the database\
+     contents in a database in which You have Sui Generis Database\
+     Rights, then the database in which You have Sui Generis Database\
+     Rights (but not its individual contents) is Adapted Material; and\
+\
+  c. You must comply with the conditions in Section 3(a) if You Share\
+     all or a substantial portion of the contents of the database.\
+\
+For the avoidance of doubt, this Section 4 supplements and does not\
+replace Your obligations under this Public License where the Licensed\
+Rights include other Copyright and Similar Rights.\
+\
+\
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.\
+\
+  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE\
+     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS\
+     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF\
+     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,\
+     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,\
+     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR\
+     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,\
+     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT\
+     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT\
+     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.\
+\
+  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE\
+     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,\
+     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,\
+     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,\
+     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR\
+     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN\
+     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR\
+     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR\
+     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.\
+\
+  c. The disclaimer of warranties and limitation of liability provided\
+     above shall be interpreted in a manner that, to the extent\
+     possible, most closely approximates an absolute disclaimer and\
+     waiver of all liability.\
+\
+\
+Section 6 -- Term and Termination.\
+\
+  a. This Public License applies for the term of the Copyright and\
+     Similar Rights licensed here. However, if You fail to comply with\
+     this Public License, then Your rights under this Public License\
+     terminate automatically.\
+\
+  b. Where Your right to use the Licensed Material has terminated under\
+     Section 6(a), it reinstates:\
+\
+       1. automatically as of the date the violation is cured, provided\
+          it is cured within 30 days of Your discovery of the\
+          violation; or\
+\
+       2. upon express reinstatement by the Licensor.\
+\
+     For the avoidance of doubt, this Section 6(b) does not affect any\
+     right the Licensor may have to seek remedies for Your violations\
+     of this Public License.\
+\
+  c. For the avoidance of doubt, the Licensor may also offer the\
+     Licensed Material under separate terms or conditions or stop\
+     distributing the Licensed Material at any time; however, doing so\
+     will not terminate this Public License.\
+\
+  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public\
+     License.\
+\
+\
+Section 7 -- Other Terms and Conditions.\
+\
+  a. The Licensor shall not be bound by any additional or different\
+     terms or conditions communicated by You unless expressly agreed.\
+\
+  b. Any arrangements, understandings, or agreements regarding the\
+     Licensed Material not stated herein are separate from and\
+     independent of the terms and conditions of this Public License.\
+\
+\
+Section 8 -- Interpretation.\
+\
+  a. For the avoidance of doubt, this Public License does not, and\
+     shall not be interpreted to, reduce, limit, restrict, or impose\
+     conditions on any use of the Licensed Material that could lawfully\
+     be made without permission under this Public License.\
+\
+  b. To the extent possible, if any provision of this Public License is\
+     deemed unenforceable, it shall be automatically reformed to the\
+     minimum extent necessary to make it enforceable. If the provision\
+     cannot be reformed, it shall be severed from this Public License\
+     without affecting the enforceability of the remaining terms and\
+     conditions.\
+\
+  c. No term or condition of this Public License will be waived and no\
+     failure to comply consented to unless expressly agreed to by the\
+     Licensor.\
+\
+  d. Nothing in this Public License constitutes or may be interpreted\
+     as a limitation upon, or waiver of, any privileges and immunities\
+     that apply to the Licensor or You, including from the legal\
+     processes of any jurisdiction or authority.\
+\
+\
+=======================================================================\
+\
+Creative Commons is not a party to its public\
+licenses. Notwithstanding, Creative Commons may elect to apply one of\
+its public licenses to material it publishes and in those instances\
+will be considered the \'93Licensor.\'94 The text of the Creative Commons\
+public licenses is dedicated to the public domain under the CC0 Public\
+Domain Dedication. Except for the limited purpose of indicating that\
+material is shared under a Creative Commons public license or as\
+otherwise permitted by the Creative Commons policies published at\
+creativecommons.org/policies, Creative Commons does not authorize the\
+use of the trademark "Creative Commons" or any other trademark or logo\
+of Creative Commons without its prior written consent including,\
+without limitation, in connection with any unauthorized modifications\
+to any of its public licenses or any other arrangements,\
+understandings, or agreements concerning use of licensed material. For\
+the avoidance of doubt, this paragraph does not form part of the\
+public licenses.\
+\
+Creative Commons may be contacted at creativecommons.org.\
+\
+### GPL version 2\
+\
+                   GNU GENERAL PUBLIC LICENSE\
+                      Version 2, June 1991\
+\
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.\
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+                           Preamble\
+\
+  The licenses for most software are designed to take away your\
+freedom to share and change it.  By contrast, the GNU General Public\
+License is intended to guarantee your freedom to share and change free\
+software--to make sure the software is free for all its users.  This\
+General Public License applies to most of the Free Software\
+Foundation's software and to any other program whose authors commit to\
+using it.  (Some other Free Software Foundation software is covered by\
+the GNU Library General Public License instead.)  You can apply it to\
+your programs, too.\
+\
+  When we speak of free software, we are referring to freedom, not\
+price.  Our General Public Licenses are designed to make sure that you\
+have the freedom to distribute copies of free software (and charge for\
+this service if you wish), that you receive source code or can get it\
+if you want it, that you can change the software or use pieces of it\
+in new free programs; and that you know you can do these things.\
+\
+  To protect your rights, we need to make restrictions that forbid\
+anyone to deny you these rights or to ask you to surrender the rights.\
+These restrictions translate to certain responsibilities for you if you\
+distribute copies of the software, or if you modify it.\
+\
+  For example, if you distribute copies of such a program, whether\
+gratis or for a fee, you must give the recipients all the rights that\
+you have.  You must make sure that they, too, receive or can get the\
+source code.  And you must show them these terms so they know their\
+rights.\
+\
+  We protect your rights with two steps: (1) copyright the software, and\
+(2) offer you this license which gives you legal permission to copy,\
+distribute and/or modify the software.\
+\
+  Also, for each author's protection and ours, we want to make certain\
+that everyone understands that there is no warranty for this free\
+software.  If the software is modified by someone else and passed on, we\
+want its recipients to know that what they have is not the original, so\
+that any problems introduced by others will not reflect on the original\
+authors' reputations.\
+\
+  Finally, any free program is threatened constantly by software\
+patents.  We wish to avoid the danger that redistributors of a free\
+program will individually obtain patent licenses, in effect making the\
+program proprietary.  To prevent this, we have made it clear that any\
+patent must be licensed for everyone's free use or not licensed at all.\
+\
+  The precise terms and conditions for copying, distribution and\
+modification follow.\
+\page \
+                   GNU GENERAL PUBLIC LICENSE\
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+  0. This License applies to any program or other work which contains\
+a notice placed by the copyright holder saying it may be distributed\
+under the terms of this General Public License.  The "Program", below,\
+refers to any such program or work, and a "work based on the Program"\
+means either the Program or any derivative work under copyright law:\
+that is to say, a work containing the Program or a portion of it,\
+either verbatim or with modifications and/or translated into another\
+language.  (Hereinafter, translation is included without limitation in\
+the term "modification".)  Each licensee is addressed as "you".\
+\
+Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope.  The act of\
+running the Program is not restricted, and the output from the Program\
+is covered only if its contents constitute a work based on the\
+Program (independent of having been made by running the Program).\
+Whether that is true depends on what the Program does.\
+\
+  1. You may copy and distribute verbatim copies of the Program's\
+source code as you receive it, in any medium, provided that you\
+conspicuously and appropriately publish on each copy an appropriate\
+copyright notice and disclaimer of warranty; keep intact all the\
+notices that refer to this License and to the absence of any warranty;\
+and give any other recipients of the Program a copy of this License\
+along with the Program.\
+\
+You may charge a fee for the physical act of transferring a copy, and\
+you may at your option offer warranty protection in exchange for a fee.\
+\
+  2. You may modify your copy or copies of the Program or any portion\
+of it, thus forming a work based on the Program, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+    a) You must cause the modified files to carry prominent notices\
+    stating that you changed the files and the date of any change.\
+\
+    b) You must cause any work that you distribute or publish, that in\
+    whole or in part contains or is derived from the Program or any\
+    part thereof, to be licensed as a whole at no charge to all third\
+    parties under the terms of this License.\
+\
+    c) If the modified program normally reads commands interactively\
+    when run, you must cause it, when started running for such\
+    interactive use in the most ordinary way, to print or display an\
+    announcement including an appropriate copyright notice and a\
+    notice that there is no warranty (or else, saying that you provide\
+    a warranty) and that users may redistribute the program under\
+    these conditions, and telling the user how to view a copy of this\
+    License.  (Exception: if the Program itself is interactive but\
+    does not normally print such an announcement, your work based on\
+    the Program is not required to print an announcement.)\
+\page \
+These requirements apply to the modified work as a whole.  If\
+identifiable sections of that work are not derived from the Program,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works.  But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Program, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Program.\
+\
+In addition, mere aggregation of another work not based on the Program\
+with the Program (or with a work based on the Program) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+  3. You may copy and distribute the Program (or a work based on it,\
+under Section 2) in object code or executable form under the terms of\
+Sections 1 and 2 above provided that you also do one of the following:\
+\
+    a) Accompany it with the complete corresponding machine-readable\
+    source code, which must be distributed under the terms of Sections\
+    1 and 2 above on a medium customarily used for software interchange; or,\
+\
+    b) Accompany it with a written offer, valid for at least three\
+    years, to give any third party, for a charge no more than your\
+    cost of physically performing source distribution, a complete\
+    machine-readable copy of the corresponding source code, to be\
+    distributed under the terms of Sections 1 and 2 above on a medium\
+    customarily used for software interchange; or,\
+\
+    c) Accompany it with the information you received as to the offer\
+    to distribute corresponding source code.  (This alternative is\
+    allowed only for noncommercial distribution and only if you\
+    received the program in object code or executable form with such\
+    an offer, in accord with Subsection b above.)\
+\
+The source code for a work means the preferred form of the work for\
+making modifications to it.  For an executable work, complete source\
+code means all the source code for all modules it contains, plus any\
+associated interface definition files, plus the scripts used to\
+control compilation and installation of the executable.  However, as a\
+special exception, the source code distributed need not include\
+anything that is normally distributed (in either source or binary\
+form) with the major components (compiler, kernel, and so on) of the\
+operating system on which the executable runs, unless that component\
+itself accompanies the executable.\
+\
+If distribution of executable or object code is made by offering\
+access to copy from a designated place, then offering equivalent\
+access to copy the source code from the same place counts as\
+distribution of the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\page \
+  4. You may not copy, modify, sublicense, or distribute the Program\
+except as expressly provided under this License.  Any attempt\
+otherwise to copy, modify, sublicense or distribute the Program is\
+void, and will automatically terminate your rights under this License.\
+However, parties who have received copies, or rights, from you under\
+this License will not have their licenses terminated so long as such\
+parties remain in full compliance.\
+\
+  5. You are not required to accept this License, since you have not\
+signed it.  However, nothing else grants you permission to modify or\
+distribute the Program or its derivative works.  These actions are\
+prohibited by law if you do not accept this License.  Therefore, by\
+modifying or distributing the Program (or any work based on the\
+Program), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Program or works based on it.\
+\
+  6. Each time you redistribute the Program (or any work based on the\
+Program), the recipient automatically receives a license from the\
+original licensor to copy, distribute or modify the Program subject to\
+these terms and conditions.  You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties to\
+this License.\
+\
+  7. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License.  If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Program at all.  For example, if a patent\
+license would not permit royalty-free redistribution of the Program by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Program.\
+\
+If any portion of this section is held invalid or unenforceable under\
+any particular circumstance, the balance of the section is intended to\
+apply and the section as a whole is intended to apply in other\
+circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system, which is\
+implemented by public license practices.  Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\page \
+  8. If the distribution and/or use of the Program is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Program under this License\
+may add an explicit geographical distribution limitation excluding\
+those countries, so that distribution is permitted only in or among\
+countries not thus excluded.  In such case, this License incorporates\
+the limitation as if written in the body of this License.\
+\
+  9. The Free Software Foundation may publish revised and/or new versions\
+of the General Public License from time to time.  Such new versions will\
+be similar in spirit to the present version, but may differ in detail to\
+address new problems or concerns.\
+\
+Each version is given a distinguishing version number.  If the Program\
+specifies a version number of this License which applies to it and "any\
+later version", you have the option of following the terms and conditions\
+either of that version or of any later version published by the Free\
+Software Foundation.  If the Program does not specify a version number of\
+this License, you may choose any version ever published by the Free Software\
+Foundation.\
+\
+  10. If you wish to incorporate parts of the Program into other free\
+programs whose distribution conditions are different, write to the author\
+to ask for permission.  For software which is copyrighted by the Free\
+Software Foundation, write to the Free Software Foundation; we sometimes\
+make exceptions for this.  Our decision will be guided by the two goals\
+of preserving the free status of all derivatives of our free software and\
+of promoting the sharing and reuse of software generally.\
+\
+                           NO WARRANTY\
+\
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\
+REPAIR OR CORRECTION.\
+\
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\
+POSSIBILITY OF SUCH DAMAGES.\
+\
+                    END OF TERMS AND CONDITIONS\
+\page \
+           How to Apply These Terms to Your New Programs\
+\
+  If you develop a new program, and you want it to be of the greatest\
+possible use to the public, the best way to achieve this is to make it\
+free software which everyone can redistribute and change under these terms.\
+\
+  To do so, attach the following notices to the program.  It is safest\
+to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least\
+the "copyright" line and a pointer to where the full notice is found.\
+\
+    <one line to give the program's name and a brief idea of what it does.>\
+    Copyright (C) <year>  <name of author>\
+\
+    This program is free software; you can redistribute it and/or modify\
+    it under the terms of the GNU General Public License as published by\
+    the Free Software Foundation; either version 2 of the License, or\
+    (at your option) any later version.\
+\
+    This program is distributed in the hope that it will be useful,\
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\
+    GNU General Public License for more details.\
+\
+    You should have received a copy of the GNU General Public License\
+    along with this program; if not, write to the Free Software\
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\
+\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+If the program is interactive, make it output a short notice like this\
+when it starts in an interactive mode:\
+\
+    Gnomovision version 69, Copyright (C) year  name of author\
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\
+    This is free software, and you are welcome to redistribute it\
+    under certain conditions; type `show c' for details.\
+\
+The hypothetical commands `show w' and `show c' should show the appropriate\
+parts of the General Public License.  Of course, the commands you use may\
+be called something other than `show w' and `show c'; they could even be\
+mouse-clicks or menu items--whatever suits your program.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the program, if\
+necessary.  Here is a sample; alter the names:\
+\
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.\
+\
+  <signature of Ty Coon>, 1 April 1989\
+  Ty Coon, President of Vice\
+\
+This General Public License does not permit incorporating your program into\
+proprietary programs.  If your program is a subroutine library, you may\
+consider it more useful to permit linking proprietary applications with the\
+library.  If this is what you want to do, use the GNU Library General\
+Public License instead of this License.\
+}
\ No newline at end of file
index e18d5a4cf6db9ecce7bac0372fa53c935900d428..f1184d213d3851988c73af791cf641f6b9bc307e 100644 (file)
@@ -104,7 +104,6 @@ nuget
 nunit-console
 nunit-console2
 nunit-console4
-opt
 pdb2mdb
 pedump
 permview