Handle ENETDOWN error if defined.
# Process this file with autoconf to produce a configure script.
#AC_PREREQ([2.62])
-AC_INIT(mono, [3.0.10],
+AC_INIT(mono, [3.0.11],
[http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
AC_CONFIG_SRCDIR([README])
arch_target=arm;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
- CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+ CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
# libgc's gc_locks.h depends on this
NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
sgen_supported=true
AOT_SUPPORTED="yes"
if test "x$cross_compiling" != "xno"; then
# Provide sane defaults when cross-compiling
- CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+ CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
fi
;;
arch_target=arm;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
- CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+ CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
jit_wanted=true
# Can't use tls, since it depends on the runtime detection of tls offsets
# in mono-compiler.h
# JIT_SUPPORTED=yes
# sizeof_register=4
# CPPFLAGS="$CPPFLAGS \
-# -DARM_FPU_VFP=1 -D__ARM_EABI__ \
+# -D__ARM_EABI__ \
# -D__arm__ \
# -D__portable_native_client__ \
-# -DARM_FPU_VFP=1 \
# -Dtimezone=_timezone \
# -DDISABLE_SOCKETS \
# -DDISABLE_ATTACH \
case "$target" in
armv7l-unknown-linux-gnueabi*)
# TEGRA
- CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1"
+ CPPFLAGS="$CPPFLAGS"
;;
armv5-*-linux-androideabi*)
AC_DEFINE(TARGET_ANDROID, 1, [...])
- CPPFLAGS="$CPPFLAGS -DARM_FPU_NONE"
+ CPPFLAGS="$CPPFLAGS"
;;
esac
;;
Name: Reactive Extensions
Description: Reactive Extensions
Version: @VERSION@
-Libs:
--r:@prefix@/lib/mono/4.5/System.Reactive.Interfaces.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Core.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Linq.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.PlatformServices.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Providers.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Debugger.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Experimental.dll
--r:@prefix@/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
+Libs: -r:@prefix@/lib/mono/4.5/System.Reactive.Interfaces.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Core.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Linq.dll -r:@prefix@/lib/mono/4.5/System.Reactive.PlatformServices.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Providers.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Debugger.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Experimental.dll -r:@prefix@/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
# define OS_TYPE "LINUX"
# define LINUX_STACKBOTTOM
# define DYNAMIC_LOADING
- extern int __data_start[];
+ extern int __data_start[] __attribute__((weak));
# define DATASTART ((ptr_t)(__data_start))
- extern int _end[];
-# define DATAEND (_end)
-# define CACHE_LINE_SIZE 256
-# define GETPAGESIZE() 4096
+ extern int _end[] __attribute__((weak));
+# define DATAEND (_end)
+# define CACHE_LINE_SIZE 256
+# define GETPAGESIZE() 4096
# endif
# endif
--- /dev/null
+thisdir = class/Facades
+
+net_4_5_SUBDIRS = System.Runtime System.Linq System.Xml.Serialization System.Xml.XmlSerializer \
+ System.ServiceModel.Primitives System.Xml.ReaderWriter System.Diagnostics.Debug \
+ System.Runtime.Extensions System.Diagnostics.Tools System.Collections \
+ System.ComponentModel.EventBasedAsync System.ComponentModel System.ObjectModel \
+ System.Text.RegularExpressions System.Threading System.Runtime.InteropServices \
+ System.Reflection System.Globalization System.IO System.Reflection.Primitives \
+ System.Resources.ResourceManager System.Security.Principal System.Text.Encoding \
+ System.Text.Encoding.Extensions System.Linq.Queryable System.Linq.Expressions \
+ System.Net.Primitives System.Net.Requests System.Net.NetworkInformation \
+ System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml \
+ System.Runtime.Serialization.Json System.ServiceModel.Http System.Windows \
+ System.Xml.XDocument System.Threading.Tasks System.Diagnostics.Contracts \
+ System.Dynamic.Runtime System.ComponentModel.Annotations System.Runtime.Numerics \
+ System.Linq.Parallel System.Collections.Concurrent System.Threading.Tasks.Parallel \
+ System.Reflection.Extensions
+
+SUBDIRS = $(net_4_5_SUBDIRS)
+
+include ../../build/rules.make
+
+dist-local: dist-default
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Collections.Concurrent.dll")]
+[assembly: AssemblyDescription ("System.Collections.Concurrent.dll")]
+[assembly: AssemblyDefaultAlias ("System.Collections.Concurrent.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Collections.Concurrent
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Collections.Concurrent.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.BlockingCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentBag<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.IProducerConsumerCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentQueue<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentStack<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.OrderablePartitioner<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.EnumerablePartitionerOptions))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Collections.dll")]
+[assembly: AssemblyDescription ("System.Collections.dll")]
+[assembly: AssemblyDefaultAlias ("System.Collections.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Collections
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Collections.dll
+LIB_MCS_FLAGS = /r:System /r:System.Core
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedListNode<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Queue<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Stack<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.BitArray))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Comparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Dictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.EqualityComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.List<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.HashSet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SortedDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SortedSet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.StructuralComparisons))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ComponentModel.Annotations.dll")]
+[assembly: AssemblyDescription ("System.ComponentModel.Annotations.dll")]
+[assembly: AssemblyDefaultAlias ("System.ComponentModel.Annotations.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.ComponentModel.Annotations
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ComponentModel.Annotations.dll
+LIB_MCS_FLAGS = /r:System.ComponentModel.DataAnnotations
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.AssociationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.CustomValidationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DataType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DataTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DisplayColumnAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DisplayFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.EditableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.EnumDataTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.FilterUIHintAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.KeyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RangeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RegularExpressionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RequiredAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.StringLengthAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.TimestampAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.UIHintAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Validator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ComponentModel.EventBasedAsync.dll")]
+[assembly: AssemblyDescription ("System.ComponentModel.EventBasedAsync.dll")]
+[assembly: AssemblyDefaultAlias ("System.ComponentModel.EventBasedAsync.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.ComponentModel.EventBasedAsync
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ComponentModel.EventBasedAsync.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.AsyncCompletedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.AsyncCompletedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.ProgressChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.ProgressChangedEventHandler))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ComponentModel.dll")]
+[assembly: AssemblyDescription ("System.ComponentModel.dll")]
+[assembly: AssemblyDefaultAlias ("System.ComponentModel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.ComponentModel
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ComponentModel.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.CancelEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IChangeTracking))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IEditableObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IRevertibleChangeTracking))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IServiceProvider))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Diagnostics.Contracts.dll")]
+[assembly: AssemblyDescription ("System.Diagnostics.Contracts.dll")]
+[assembly: AssemblyDefaultAlias ("System.Diagnostics.Contracts.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Diagnostics.Contracts
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Diagnostics.Contracts.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.Contract))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractClassAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractClassForAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailureKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractInvariantMethodAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractVerificationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.PureAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractAbbreviatorAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractArgumentValidatorAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractOptionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ContractHelper))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Diagnostics.Debug.dll")]
+[assembly: AssemblyDescription ("System.Diagnostics.Debug.dll")]
+[assembly: AssemblyDefaultAlias ("System.Diagnostics.Debug.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Diagnostics.Debug
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Diagnostics.Debug.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Debug))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Debugger))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerBrowsableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerBrowsableState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerDisplayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerHiddenAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerNonUserCodeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerStepThroughAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggerTypeProxyAttribute))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Diagnostics.Tools.dll")]
+[assembly: AssemblyDescription ("System.Diagnostics.Tools.dll")]
+[assembly: AssemblyDefaultAlias ("System.Diagnostics.Tools.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Diagnostics.Tools
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Diagnostics.Tools.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.CodeDom.Compiler.GeneratedCodeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.CodeAnalysis.SuppressMessageAttribute))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Dynamic.Runtime.dll")]
+[assembly: AssemblyDescription ("System.Dynamic.Runtime.dll")]
+[assembly: AssemblyDefaultAlias ("System.Dynamic.Runtime.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Dynamic.Runtime
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Dynamic.Runtime.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConditionalWeakTable<,>))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Globalization.dll")]
+[assembly: AssemblyDescription ("System.Globalization.dll")]
+[assembly: AssemblyDefaultAlias ("System.Globalization.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Globalization
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Globalization.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.Calendar))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CalendarWeekRule))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CharUnicodeInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CompareInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CompareOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeFormatInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberFormatInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.RegionInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.StringInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TextElementEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TextInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.UnicodeCategory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureNotFoundException))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.IO.dll")]
+[assembly: AssemblyDescription ("System.IO.dll")]
+[assembly: AssemblyDefaultAlias ("System.IO.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.IO
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.IO.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BinaryReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BinaryWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.IOException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.EndOfStreamException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.FileNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Stream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.MemoryStream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.SeekOrigin))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StreamReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StreamWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.InvalidDataException))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.Expressions.dll")]
+[assembly: AssemblyDescription ("System.Linq.Expressions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.Expressions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Linq.Expressions
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.Expressions.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedQueryable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedQueryable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryProvider))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.Parallel.dll")]
+[assembly: AssemblyDescription ("System.Linq.Parallel.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.Parallel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Linq.Parallel
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.Parallel.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.OrderedParallelQuery<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelEnumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelExecutionMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelMergeOptions))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.Queryable.dll")]
+[assembly: AssemblyDescription ("System.Linq.Queryable.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.Queryable.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Linq.Queryable
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.Queryable.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableExecutor))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableExecutor<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableQuery))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableQuery<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Queryable))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Linq.dll")]
+[assembly: AssemblyDescription ("System.Linq.dll")]
+[assembly: AssemblyDefaultAlias ("System.Linq.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Linq
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Linq.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Enumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IGrouping<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ILookup<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedEnumerable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Lookup<,>))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Net.NetworkInformation.dll")]
+[assembly: AssemblyDescription ("System.Net.NetworkInformation.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.NetworkInformation.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Net.NetworkInformation
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Net.NetworkInformation.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkAddressChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkChange))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkInterface))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Net.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Net.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Net.Primitives
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Net.Primitives.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.Cookie))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieContainer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpStatusCode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ICredentials))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.AuthenticationSchemes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ICredentialsByHost))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CredentialCache))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.DecompressionMethods))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.IWebProxy))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.TransportContext))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Net.Requests.dll")]
+[assembly: AssemblyDescription ("System.Net.Requests.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.Requests.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Net.Requests
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Net.Requests.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpRequestHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebRequest))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpWebRequest))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebResponse))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpWebResponse))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.IWebRequestCreate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ProtocolViolationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebExceptionStatus))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebHeaderCollection))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ObjectModel.dll")]
+[assembly: AssemblyDescription ("System.ObjectModel.dll")]
+[assembly: AssemblyDefaultAlias ("System.ObjectModel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.ObjectModel
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ObjectModel.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyPropertyChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.KeyedCollection<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Extensions.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Extensions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Extensions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Reflection.Extensions
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Extensions.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.InterfaceMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.RuntimeReflectionExtensions))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Reflection.Primitives
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Primitives.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CallingConventions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.EventAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.FieldAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.GenericParameterAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.PropertyAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodImplAttributes))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.dll")]
+[assembly: AssemblyDescription ("System.Reflection.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Reflection
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MemberInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AmbiguousMatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Assembly))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ConstructorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.EventInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.FieldInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Module))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.PropertyInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionTypeLoadException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetInvocationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetParameterCountException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ManifestResourceInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ResourceLocation))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyContentType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeData))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeNamedArgument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeTypedArgument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IntrospectionExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IReflectableType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.LocalVariableInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeInfo))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Resources.ResourceManager.dll")]
+[assembly: AssemblyDescription ("System.Resources.ResourceManager.dll")]
+[assembly: AssemblyDefaultAlias ("System.Resources.ResourceManager.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Resources.ResourceManager
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Resources.ResourceManager.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.MissingManifestResourceException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.NeutralResourcesLanguageAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.ResourceManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.SatelliteContractVersionAttribute))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Extensions.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Extensions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Extensions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime.Extensions
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Extensions.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.BitConverter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Convert))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Environment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Math))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Random))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Stopwatch))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MidpointRounding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Progress<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Path))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebUtility))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.InteropServices.dll")]
+[assembly: AssemblyDescription ("System.Runtime.InteropServices.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.InteropServices.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime.InteropServices
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.InteropServices.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DataMisalignedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Missing))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DllNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ArrayWithOffset))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.BestFitMappingAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.BStrWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CallingConvention))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ClassInterfaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ClassInterfaceType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CoClassAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComDefaultInterfaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComEventInterfaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.COMException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComInterfaceType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComMemberType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComSourceInterfacesAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CriticalHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CurrencyWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultCharSetAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispIdAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandleType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GuidAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ICustomAdapter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InterfaceTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InvalidComObjectException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InvalidOleVariantTypeException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.MarshalAsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.MarshalDirectiveException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.OptionalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.PreserveSigAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeArrayRankMismatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeArrayTypeMismatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeBuffer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SEHException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.TypeIdentifierAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnknownWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VarEnum))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VariantWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Numerics.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Numerics.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Numerics.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime.Numerics
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Numerics.dll
+LIB_MCS_FLAGS = /r:System.Numerics
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Numerics.BigInteger))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Numerics.Complex))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Serialization.Json.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Serialization.Json.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Json.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime.Serialization.Json
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Serialization.Json.dll
+LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DateTimeFormat))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.EmitTypeInformation))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializerSettings))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Serialization.Primitives.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Serialization.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime.Serialization.Primitives
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Serialization.Primitives.dll
+LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.CollectionDataContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.ContractNamespaceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.EnumMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.IgnoreDataMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.KnownTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnDeserializedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnDeserializingAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnSerializedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.OnSerializingAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.SerializationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.StreamingContext))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.Serialization.Xml.dll")]
+[assembly: AssemblyDescription ("System.Runtime.Serialization.Xml.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Xml.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime.Serialization.Xml
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.Serialization.Xml.dll
+LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.XmlObjectSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.InvalidDataContractException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.UniqueId))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryReaderQuotas))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryString))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractResolver))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializerSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryReaderSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryWriterSession))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Runtime.dll")]
+[assembly: AssemblyDescription ("System.Runtime.dll")]
+[assembly: AssemblyDefaultAlias ("System.Runtime.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Runtime
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Runtime.dll
+LIB_MCS_FLAGS = /r:System /r:System.Core /r:System.ComponentModel.Composition
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ExtensionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Uri))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriComponents))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriFormat))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DefaultValueAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(object))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ValueType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IEquatable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormattable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(decimal))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Delegate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MulticastDelegate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Activator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Exception))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentNullException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentOutOfRangeException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArithmeticException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ICollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IList))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Array))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArraySegment<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArrayTypeMismatchException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AsyncCallback))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Attribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Enum))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AttributeTargets))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AttributeUsageAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.BadImageFormatException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(bool))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Buffer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(byte))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(char))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.CLSCompliantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Comparison<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTime))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTimeKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTimeOffset))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DayOfWeek))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DivideByZeroException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(double))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventHandler<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.FlagsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.FormatException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Guid))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IAsyncResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ICustomFormatter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IDisposable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormatProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IndexOutOfRangeException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(short))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(int))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(long))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IntPtr))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidCastException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidOperationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MemberAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MissingMemberException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NotImplementedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NotSupportedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Nullable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Nullable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NullReferenceException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ObjectDisposedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ObsoleteAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OutOfMemoryException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OverflowException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ParamArrayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.PlatformNotSupportedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Predicate<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RankException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeFieldHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeMethodHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeTypeHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(sbyte))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(float))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEqualityComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEqualityComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparison))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringSplitOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeoutException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeSpan))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Type))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeInitializationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeLoadException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(ushort))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(uint))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(ulong))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UIntPtr))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UnauthorizedAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Version))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(void))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.DictionaryEntry))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionaryEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ICollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerator<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyValuePair<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.Collection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.ConditionalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCompanyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyConfigurationAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCopyrightAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCultureAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyDefaultAliasAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyDelaySignAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyDescriptionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyFileVersionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyFlagsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyInformationalVersionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyKeyFileAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyKeyNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyNameFlags))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyProductAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyTitleAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyTrademarkAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyVersionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.DefaultMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AccessedThroughPropertyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CompilationRelaxationsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CustomConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DateTimeConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DecimalConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IndexerNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.InternalsVisibleToAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IsVolatile))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.MethodImplAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.MethodImplOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.RuntimeCompatibilityAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.RuntimeHelpers))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.FieldOffsetAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.LayoutKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.OutAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.StructLayoutAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Versioning.TargetFrameworkAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityCriticalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecuritySafeCriticalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityTransparentAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.VerificationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.StringBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Timeout))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidTimeZoneException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeZoneInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IStrongBox))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StrongBox<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TimeSpanStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ISet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralComparable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralEquatable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ThreadStaticAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedFromAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedToAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AllowPartiallyTrustedCallersAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyThreadSafetyMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriHostNameType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GCCollectionMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObservable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObserver<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCLatencyMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.FixedBufferAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.UnsafeValueTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CharSet))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComVisibleAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IProgress<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MTAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.STAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyMetadataAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblySignatureKeyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerFilePathAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerLineNumberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerMemberNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IteratorStateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ReferenceAssemblyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.ExceptionServices.ExceptionDispatchInfo))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Security.Principal.dll")]
+[assembly: AssemblyDescription ("System.Security.Principal.dll")]
+[assembly: AssemblyDefaultAlias ("System.Security.Principal.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Security.Principal
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Security.Principal.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.IIdentity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.IPrincipal))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.TokenImpersonationLevel))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ServiceModel.Http.dll")]
+[assembly: AssemblyDescription ("System.ServiceModel.Http.dll")]
+[assembly: AssemblyDefaultAlias ("System.ServiceModel.Http.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.ServiceModel.Http
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ServiceModel.Http.dll
+LIB_MCS_FLAGS = /r:System.ServiceModel
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpMessageCredentialType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpSecurity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpSecurityMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpRequestMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpResponseMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpTransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpsTransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpBindingBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpClientCredentialType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpTransportSecurity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.NetHttpBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.NetHttpMessageEncoding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportUsage))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.ServiceModel.Primitives.dll")]
+[assembly: AssemblyDescription ("System.ServiceModel.Primitives.dll")]
+[assembly: AssemblyDefaultAlias ("System.ServiceModel.Primitives.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.ServiceModel.Primitives
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.ServiceModel.Primitives.dll
+LIB_MCS_FLAGS = /r:System.ServiceModel /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ActionNotSupportedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IDefaultCommunicationTimeouts))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Binding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ICommunicationObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CommunicationObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ClientBase<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensibleObject<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IContextChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IClientChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectAbortedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectFaultedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DataContractFormatAttribute))]
+[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.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.FaultException<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReason))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReasonText))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtension<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensionCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.InvalidMessageContractException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageBodyMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ProtocolException))]
+[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.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.QuotaExceededException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServerTooBusyException))]
+[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.UnknownMessageReceivedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressHeaderCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressingVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BinaryMessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElementCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingParameterCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BodyWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BufferManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelManagerBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelFactoryBase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelFactoryBase<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelParameterCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CustomBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.FaultConverter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISessionChannel<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Message))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageBuffer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncoder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncoderFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageFault))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaderInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaders))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageProperties))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageVersion))]
+[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.Description.ClientCredentials))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ContractDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.FaultDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.FaultDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageBodyDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDirection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePartDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePartDescriptionCollection))]
+[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.Security.MessageSecurityException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityAccessDeniedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.UserNamePasswordClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointIdentity))]
+[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.SecurityMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.TransferMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IEndpointBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IOperationBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.DataContractSerializerOperationBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IContractBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.HttpDigestClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.WindowsClientCredential))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Text.Encoding.Extensions.dll")]
+[assembly: AssemblyDescription ("System.Text.Encoding.Extensions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Text.Encoding.Extensions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Text.Encoding.Extensions
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Text.Encoding.Extensions.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.UnicodeEncoding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.UTF8Encoding))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Text.Encoding.dll")]
+[assembly: AssemblyDescription ("System.Text.Encoding.dll")]
+[assembly: AssemblyDefaultAlias ("System.Text.Encoding.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Text.Encoding
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Text.Encoding.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Decoder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.DecoderFallbackException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Encoder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.EncoderFallbackException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Encoding))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Text.RegularExpressions.dll")]
+[assembly: AssemblyDescription ("System.Text.RegularExpressions.dll")]
+[assembly: AssemblyDefaultAlias ("System.Text.RegularExpressions.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Text.RegularExpressions
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Text.RegularExpressions.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Capture))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.CaptureCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Group))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.GroupCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Match))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.MatchCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.MatchEvaluator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Regex))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexMatchTimeoutException))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Threading.Tasks.Parallel.dll")]
+[assembly: AssemblyDescription ("System.Threading.Tasks.Parallel.dll")]
+[assembly: AssemblyDefaultAlias ("System.Threading.Tasks.Parallel.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Threading.Tasks.Parallel
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Threading.Tasks.Parallel.dll
+LIB_MCS_FLAGS =
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Parallel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelLoopResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelLoopState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelOptions))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Threading.Tasks.dll")]
+[assembly: AssemblyDescription ("System.Threading.Tasks.dll")]
+[assembly: AssemblyDefaultAlias ("System.Threading.Tasks.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Threading.Tasks
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Threading.Tasks.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AggregateException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OperationCanceledException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationToken))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationTokenRegistration))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationTokenSource))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Task))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Task<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCanceledException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCompletionSource<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskContinuationOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCreationOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskScheduler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskSchedulerException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskStatus))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.UnobservedTaskExceptionEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncVoidMethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.INotifyCompletion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ICriticalNotifyCompletion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IAsyncStateMachine))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.YieldAwaitable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Threading.dll")]
+[assembly: AssemblyDescription ("System.Threading.dll")]
+[assembly: AssemblyDefaultAlias ("System.Threading.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Threading
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Threading.dll
+LIB_MCS_FLAGS = /r:System.Core /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventWaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AutoResetEvent))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Interlocked))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEvent))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Monitor))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SendOrPostCallback))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationLockException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionPolicy))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ReaderWriterLockSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Barrier))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.BarrierPostPhaseException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Semaphore))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AbandonedMutexException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CountdownEvent))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventResetMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyInitializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEventSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Mutex))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SemaphoreFullException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SemaphoreSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SpinLock))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SpinWait))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ThreadLocal<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandleCannotBeOpenedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Volatile))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Windows.dll")]
+[assembly: AssemblyDescription ("System.Windows.dll")]
+[assembly: AssemblyDefaultAlias ("System.Windows.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Windows
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Windows.dll
+LIB_MCS_FLAGS = /r:System
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.ReaderWriter.dll")]
+[assembly: AssemblyDescription ("System.Xml.ReaderWriter.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.ReaderWriter.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Xml.ReaderWriter
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.ReaderWriter.dll
+LIB_MCS_FLAGS = /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.ConformanceLevel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.DtdProcessing))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlLineInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlNamespaceResolver))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NamespaceHandling))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNameTable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NameTable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NewLineHandling))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.ReadState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.WriteState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlConvert))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNamespaceManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNamespaceScope))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNodeType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlParserContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlQualifiedName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlReaderSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlSpace))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlWriter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlWriterSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchema))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchemaForm))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.Serialization.dll")]
+[assembly: AssemblyDescription ("System.Xml.Serialization.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.Serialization.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Xml.Serialization
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.Serialization.dll
+LIB_MCS_FLAGS = /r:System.Xml /r:System.ServiceModel
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMappingAccess))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.XDocument.dll")]
+[assembly: AssemblyDescription ("System.Xml.XDocument.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.XDocument.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Xml.XDocument
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.XDocument.dll
+LIB_MCS_FLAGS = /r:System.Xml.Linq /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.Extensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.LoadOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.ReaderOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.SaveOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XText))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XCData))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XComment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XContainer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XDeclaration))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XDocument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XDocumentType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XName))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNamespace))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNodeDocumentOrderComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNodeEqualityComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObjectChange))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObjectChangeEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XProcessingInstruction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XStreamingElement))]
+
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.XmlSerializer.dll")]
+[assembly: AssemblyDescription ("System.Xml.XmlSerializer.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.XmlSerializer.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
--- /dev/null
+thisdir = class/Facades/System.Xml.XmlSerializer
+SUBDIRS =
+include ../../../build/rules.make
+
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Xml.XmlSerializer.dll
+LIB_MCS_FLAGS = /r:System.Xml
+
+NO_TEST = yes
+
+include ../../../build/library.make
--- /dev/null
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
--- /dev/null
+//
+// TypeForwarders.cs
+//
+// Author:
+// Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.IXmlSerializable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlChoiceIdentifierAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlEnumAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlIgnoreAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlIncludeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlRootAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSchemaProviderAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTextAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlNamespaceDeclarationsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyAttributeAttribute))]
+
System.IO.Compression \
System.IO.Compression.FileSystem \
System.ComponentModel.DataAnnotations \
- System.ComponentModel.Composition.4.5
+ System.ComponentModel.Composition.4.5 \
+ Facades
monodroid_dirs := \
Mono.CompilerServices.SymbolWriter \
Mono.CSharp \
Microsoft.CSharp \
- System.Net.Http
+ System.Security \
+ System.Configuration \
+ System.Net.Http \
+ System.Net.Http.Formatting
monotouch_runtime_dirs := \
corlib \
EntityFramework.SqlServer \
Mono.CodeContracts \
System.IO.Compression \
- System.IO.Compression.FileSystem
+ System.IO.Compression.FileSystem \
+ Facades
net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) aot-compiler
monodroid_SUBDIRS := $(mobile_dirs) $(monodroid_dirs)
Evaluator.Run ("var a = new int [] {1,2,3}; var b = a.Length;");
}
+ [Test]
+ public void AnonymousType ()
+ {
+ Evaluator.Run ("var foo = new { Bar = \"baz\" };");
+ }
+
[Test]
public void Simple ()
{
unhandled_exception ();
return 0;
}
+ if (args.Length >0 && args [0] == "unhandled-exception-endinvoke") {
+ unhandled_exception_endinvoke ();
+ return 0;
+ }
if (args.Length >0 && args [0] == "unhandled-exception-user") {
unhandled_exception_user ();
return 0;
Thread.Sleep (10000);
}
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public static void unhandled_exception_endinvoke_2 () {
+ }
+
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public static void unhandled_exception_endinvoke () {
+ Action action = new Action (() =>
+ {
+ throw new Exception ("thrown");
+ });
+ action.BeginInvoke ((ar) => {
+ try {
+ action.EndInvoke (ar);
+ } catch (Exception ex) {
+ //Console.WriteLine (ex);
+ }
+ }, null);
+ Thread.Sleep (1000);
+ unhandled_exception_endinvoke_2 ();
+ }
+
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static void unhandled_exception_user () {
#if NET_4_5
[Test]
public void UnhandledException () {
- vm.Detach ();
+ vm.Exit (0);
Start (new string [] { "dtest-app.exe", "unhandled-exception" });
vm = null;
}
+ [Test]
+ public void UnhandledException_2 () {
+ vm.Exit (0);
+
+ Start (new string [] { "dtest-app.exe", "unhandled-exception-endinvoke" });
+
+ var req = vm.CreateExceptionRequest (null, false, true);
+ req.Enable ();
+
+ MethodMirror m = entry_point.DeclaringType.GetMethod ("unhandled_exception_endinvoke_2");
+ Assert.IsNotNull (m);
+ vm.SetBreakpoint (m, m.ILOffsets [0]);
+
+ var e = run_until ("unhandled_exception_endinvoke");
+ vm.Resume ();
+
+ var e2 = GetNextEvent ();
+ Assert.IsFalse (e2 is ExceptionEvent);
+
+ vm.Exit (0);
+ vm = null;
+ }
+
#if NET_4_5
[Test]
public void UnhandledExceptionUserCode () {
// References:
// a. http://www.drh-consultancy.demon.co.uk/pvk.html
- public class PrivateKey {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class PrivateKey {
private const uint magic = 0xb0b5f11e;
// a. Usenet 1994 - RC4 Algorithm revealed
// http://www.qrst.de/html/dsds/rc4.htm
- public class ARC4Managed : RC4, ICryptoTransform {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class ARC4Managed : RC4, ICryptoTransform {
private byte[] key;
private byte[] state;
// MD4.cs - Message Digest 4 Abstract class
//
// Author:
-// Sebastien Pouliot (spouliot@motus.com)
+// Sebastien Pouliot (sebastien@xamarin.com)
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
//
//
namespace Mono.Security.Cryptography {
- public abstract class MD4 : HashAlgorithm {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ abstract class MD4 : HashAlgorithm {
protected MD4 ()
{
public static new MD4 Create ()
{
+#if FULL_AOT_RUNTIME
+ return new MD4Managed ();
+#else
// for this to work we must register ourself with CryptoConfig
return Create ("MD4");
+#endif
}
public static new MD4 Create (string hashName)
// a. RFC1320: The MD4 Message-Digest Algorithm
// http://www.ietf.org/rfc/rfc1320.txt
- public class MD4Managed : MD4 {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class MD4Managed : MD4 {
private uint[] state;
private byte[] buffer;
// RC4 is a trademark of RSA Security
//
// Author:
-// Sebastien Pouliot (spouliot@motus.com)
+// Sebastien Pouliot (sebastien@xamarin.com)
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
//
//
namespace Mono.Security.Cryptography {
-public abstract class RC4 : SymmetricAlgorithm {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ abstract class RC4 : SymmetricAlgorithm {
private static KeySizes[] s_legalBlockSizes = {
new KeySizes (64, 64, 0)
new static public RC4 Create()
{
+#if FULL_AOT_RUNTIME
+ return new ARC4Managed ();
+#else
return Create ("RC4");
+#endif
}
new static public RC4 Create (string algName)
namespace Mono.Security.Protocol.Ntlm {
[Obsolete (Type3Message.LegacyAPIWarning)]
- public class ChallengeResponse : IDisposable {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class ChallengeResponse : IDisposable {
static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
namespace Mono.Security.Protocol.Ntlm {
- public static class ChallengeResponse2 {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ static class ChallengeResponse2 {
static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
namespace Mono.Security.Protocol.Ntlm {
- public abstract class MessageBase {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ abstract class MessageBase {
static private byte[] header = { 0x4e, 0x54, 0x4c, 0x4d, 0x53, 0x53, 0x50, 0x00 };
* is LM_and_NTLM_and_try_NTLMv2_Session.
*/
- public enum NtlmAuthLevel {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ enum NtlmAuthLevel {
/* Use LM and NTLM, never use NTLMv2 session security. */
LM_and_NTLM,
namespace Mono.Security.Protocol.Ntlm {
[Flags]
- public enum NtlmFlags : int {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ enum NtlmFlags : int {
// The client sets this flag to indicate that it supports Unicode strings.
NegotiateUnicode = 0x00000001,
// This is set to indicate that the client supports OEM strings.
namespace Mono.Security.Protocol.Ntlm {
- public class Type1Message : MessageBase {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class Type1Message : MessageBase {
private string _host;
private string _domain;
namespace Mono.Security.Protocol.Ntlm {
- public class Type2Message : MessageBase {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class Type2Message : MessageBase {
private byte[] _nonce;
private string _targetName;
namespace Mono.Security.Protocol.Ntlm {
- public class Type3Message : MessageBase {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class Type3Message : MessageBase {
private NtlmAuthLevel _level;
private byte[] _challenge;
return true;
}
-
- static private void VerifyOSX (X509CertificateCollection certificates)
- {
-
- }
-
private void validateCertificates(X509CertificateCollection certificates)
{
ClientContext context = (ClientContext)this.Context;
AlertDescription description = AlertDescription.BadCertificate;
-#if NET_2_0
- if (context.SslStream.HaveRemoteValidation2Callback) {
- ValidationResult res = context.SslStream.RaiseServerCertificateValidation2 (certificates);
- if (res.Trusted)
- return;
+#if INSIDE_SYSTEM
+ // This helps the linker to remove a lot of validation code that will never be used since
+ // System.dll will, for OSX and iOS, uses the operating system X.509 certificate validations
+ RemoteValidation (context, description);
+#else
+ if (context.SslStream.HaveRemoteValidation2Callback)
+ RemoteValidation (context, description);
+ else
+ LocalValidation (context, description);
+#endif
+ }
- long error = res.ErrorCode;
- switch (error) {
- case 0x800B0101:
- description = AlertDescription.CertificateExpired;
- break;
- case 0x800B010A:
- description = AlertDescription.UnknownCA;
- break;
- case 0x800B0109:
- description = AlertDescription.UnknownCA;
- break;
- default:
- description = AlertDescription.CertificateUnknown;
- break;
- }
- string err = String.Format ("0x{0:x}", error);
- throw new TlsException (description, "Invalid certificate received from server. Error code: " + err);
+ void RemoteValidation (ClientContext context, AlertDescription description)
+ {
+ ValidationResult res = context.SslStream.RaiseServerCertificateValidation2 (certificates);
+ if (res.Trusted)
+ return;
+
+ long error = res.ErrorCode;
+ switch (error) {
+ case 0x800B0101:
+ description = AlertDescription.CertificateExpired;
+ break;
+ case 0x800B010A:
+ description = AlertDescription.UnknownCA;
+ break;
+ case 0x800B0109:
+ description = AlertDescription.UnknownCA;
+ break;
+ default:
+ description = AlertDescription.CertificateUnknown;
+ break;
}
-#endif
+ string err = String.Format ("Invalid certificate received from server. Error code: 0x{0:x}", error);
+ throw new TlsException (description, err);
+ }
+
+ void LocalValidation (ClientContext context, AlertDescription description)
+ {
// the leaf is the web server certificate
X509Certificate leaf = certificates [0];
X509Cert.X509Certificate cert = new X509Cert.X509Certificate (leaf.RawData);
namespace Mono.Security.Protocol.Tls
{
+#if INSIDE_SYSTEM
+ internal
+#else
[Serializable]
- public enum CipherAlgorithmType
+ public
+#endif
+ enum CipherAlgorithmType
{
Des,
None,
namespace Mono.Security.Protocol.Tls
{
+#if INSIDE_SYSTEM
+ internal
+#else
[Serializable]
- public enum ExchangeAlgorithmType
+ public
+#endif
+ enum ExchangeAlgorithmType
{
DiffieHellman,
Fortezza,
namespace Mono.Security.Protocol.Tls
{
+#if INSIDE_SYSTEM
+ internal
+#else
[Serializable]
- public enum HashAlgorithmType
+ public
+#endif
+ enum HashAlgorithmType
{
Md5,
None,
namespace Mono.Security.Protocol.Tls {
- // Note: DO NOT REUSE this class - instead use SslClientStream
+ // Note: DO NOT REUSE this class - instead use SslClientStream
- internal class HttpsClientStream : SslClientStream {
+ internal class HttpsClientStream : SslClientStream {
- private HttpWebRequest _request;
+ private HttpWebRequest _request;
private int _status;
- public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
+ public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
HttpWebRequest request, byte [] buffer)
- : base (stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
+ : base (stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
ServicePointManager.SecurityProtocol, clientCertificates)
- {
- // this constructor permit access to the WebRequest to call
- // ICertificatePolicy.CheckValidationResult
- _request = request;
+ {
+ // this constructor permit access to the WebRequest to call
+ // ICertificatePolicy.CheckValidationResult
+ _request = request;
_status = 0;
if (buffer != null)
InputBuffer.Write (buffer, 0, buffer.Length);
- // also saved from reflection
- base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;
+ // also saved from reflection
+ base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;
ClientCertSelection += delegate (X509CertificateCollection clientCerts, X509Certificate serverCertificate,
string targetHost, X509CertificateCollection serverRequestedCertificates) {
X509Certificate2 cert = (certificate as X509Certificate2);
return (cert == null) ? null : cert.PrivateKey;
};
- }
+ }
public bool TrustFailure {
get {
}
internal override bool RaiseServerCertificateValidation (X509Certificate certificate, int[] certificateErrors)
- {
+ {
bool failed = (certificateErrors.Length > 0);
// only one problem can be reported by this interface
_status = ((failed) ? certificateErrors [0] : 0);
}
return failed;
}
- }
+ }
}
public override void SetHashAlgorithm(string strName)
{
+#if INSIDE_SYSTEM
+ hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
switch (strName)
{
case "MD5SHA1":
this.hash = HashAlgorithm.Create(strName);
break;
}
+#endif
}
public override void SetKey(AsymmetricAlgorithm key)
public override void SetHashAlgorithm(string strName)
{
+#if INSIDE_SYSTEM
+ hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
switch (strName)
{
case "MD5SHA1":
this.hash = HashAlgorithm.Create(strName);
break;
}
+#endif
}
public override void SetKey(AsymmetricAlgorithm key)
// Information about compression methods allowed by TLS
// can be found in:
// draft-ietf-tls-compression-05.txt (http://www.ietf.org/internet-drafts/draft-ietf-tls-compression-05.txt)
- public enum SecurityCompressionType
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ enum SecurityCompressionType
{
None = 0,
Zlib = 1
namespace Mono.Security.Protocol.Tls
{
[Flags]
+#if INSIDE_SYSTEM
+ internal
+#else
[Serializable]
- public enum SecurityProtocolType
+ public
+#endif
+ enum SecurityProtocolType
{
Default = -1073741824,
Ssl2 = 12,
{
#region Delegates
- public delegate bool CertificateValidationCallback(
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ delegate bool CertificateValidationCallback(
X509Certificate certificate,
int[] certificateErrors);
- public class ValidationResult {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class ValidationResult {
bool trusted;
bool user_denied;
int error_code;
}
}
+#if INSIDE_SYSTEM
+ internal
+#else
public
+#endif
delegate ValidationResult CertificateValidationCallback2 (Mono.Security.X509.X509CertificateCollection collection);
- public delegate X509Certificate CertificateSelectionCallback(
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ delegate X509Certificate CertificateSelectionCallback(
X509CertificateCollection clientCertificates,
X509Certificate serverCertificate,
string targetHost,
X509CertificateCollection serverRequestedCertificates);
- public delegate AsymmetricAlgorithm PrivateKeySelectionCallback(
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ delegate AsymmetricAlgorithm PrivateKeySelectionCallback(
X509Certificate certificate,
string targetHost);
#endregion
- public class SslClientStream : SslStreamBase
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class SslClientStream : SslStreamBase
{
#region Internal Events
namespace Mono.Security.Protocol.Tls
{
- public class SslServerStream : SslStreamBase
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class SslServerStream : SslStreamBase
{
#region Internal Events
namespace Mono.Security.Protocol.Tls
{
- public abstract class SslStreamBase: Stream, IDisposable
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ abstract class SslStreamBase: Stream, IDisposable
{
private delegate void AsyncHandshakeDelegate(InternalAsyncResult asyncResult, bool fromWrite);
* KeyIdentifier ::= OCTET STRING
*/
- public class AuthorityKeyIdentifierExtension : X509Extension {
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
+ class AuthorityKeyIdentifierExtension : X509Extension {
private byte[] aki;
* KeyPurposeId ::= OBJECT IDENTIFIER
*/
- public
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
class ExtendedKeyUsageExtension : X509Extension {
private ArrayList keyPurpose;
// c. 2.16.840.1.113730.1.1 - Netscape certificate type
// http://www.alvestrand.no/objectid/2.16.840.1.113730.1.1.html
- public
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
class NetscapeCertTypeExtension : X509Extension {
/*
*/
// TODO: Directories not supported
- public
+#if INSIDE_SYSTEM
+ internal
+#else
+ public
+#endif
class SubjectAltNameExtension : X509Extension {
private GeneralNames _names;
// Authors:
// Sebastien Pouliot <sebastien@xamarin.com>
//
-// Copyright 2011 Xamarin Inc.
+// Copyright 2011-2013 Xamarin Inc.
//
// The class can be either constructed from a string (from user code)
// or from a handle (from iphone-sharp.dll internal calls). This
#if (INSIDE_CORLIB && MONOTOUCH)
using System;
+using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
-using System.Reflection;
+using System.Runtime.InteropServices;
namespace System {
public partial class TimeZoneInfo {
- static Type nstimezone;
-
- static Type NSTimeZone {
- get {
- if (nstimezone == null)
- nstimezone = Type.GetType ("MonoTouch.Foundation.NSTimeZone, monotouch, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
- return nstimezone;
- }
- }
-
+ [DllImport ("__Internal")]
+ extern static IntPtr monotouch_timezone_get_names (ref int count);
+
static ReadOnlyCollection<string> GetMonoTouchNames ()
{
- try {
- var p = NSTimeZone.GetProperty ("KnownTimeZoneNames", BindingFlags.Static | BindingFlags.Public);
- var m = p.GetGetMethod ();
- return (ReadOnlyCollection<string>) m.Invoke (null, null);
- }
- catch (TargetInvocationException tie) {
- throw tie.InnerException;
- }
- }
-
- static Stream GetMonoTouchDefault ()
- {
- try {
- var m = NSTimeZone.GetMethod ("_GetDefault", BindingFlags.Static | BindingFlags.NonPublic);
- return (Stream) m.Invoke (null, null);
- }
- catch (TargetInvocationException tie) {
- throw tie.InnerException;
+ int count = 0;
+ IntPtr array = monotouch_timezone_get_names (ref count);
+ string [] names = new string [count];
+ for (int i = 0, offset = 0; i < count; i++, offset += IntPtr.Size) {
+ IntPtr p = Marshal.ReadIntPtr (array, offset);
+ names [i] = Marshal.PtrToStringAnsi (p);
+ Marshal.FreeHGlobal (p);
}
+ Marshal.FreeHGlobal (array);
+ return new ReadOnlyCollection<string> (names);
}
+ [DllImport ("__Internal")]
+ extern static IntPtr monotouch_timezone_get_data (string name, ref int size);
+
static Stream GetMonoTouchData (string name)
{
- try {
- var m = NSTimeZone.GetMethod ("_GetData", BindingFlags.Static | BindingFlags.NonPublic);
- return (Stream) m.Invoke (null, new object[] { name });
- }
- catch (TargetInvocationException tie) {
- throw tie.InnerException;
+ int size = 0;
+ IntPtr data = monotouch_timezone_get_data (name, ref size);
+ if (size <= 0)
+ throw new TimeZoneNotFoundException ();
+
+ unsafe {
+ var s = new UnmanagedMemoryStream ((byte*) data, size);
+ s.Closed += delegate {
+ Marshal.FreeHGlobal (data);
+ };
+ return s;
}
}
}
#if MONODROID
local = ZoneInfoDB.Default;
#elif MONOTOUCH
- using (Stream stream = GetMonoTouchDefault ()) {
+ using (Stream stream = GetMonoTouchData (null)) {
local = BuildFromStream ("Local", stream);
}
#elif LIBC
}
[Test]
+#if MOBILE
+ [Category ("NotWorking")] // String:Intern () is linked away
+#endif
[ExpectedException (typeof (ArgumentException))]
public void InstanceTypeDoesntMatchMethodDeclaringType ()
{
<Compile Include="System.Data.Common\SchemaTableColumn.cs" />\r
<Compile Include="System.Data.Common\SchemaTableOptionalColumn.cs" />\r
<Compile Include="System.Data.Common\SupportedJoinOperators.cs" />\r
+ <Compile Include="System.Data.Common\TaskHelper.cs" />\r
<Compile Include="System.Data.Odbc\libodbc.cs" />\r
<Compile Include="System.Data.Odbc\NativeBuffer.cs" />\r
<Compile Include="System.Data.Odbc\OdbcCategoryAttribute.cs" />\r
public abstract void Prepare ();
#if NET_4_5
- [MonoTODO]
protected virtual Task<DbDataReader> ExecuteDbDataReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<DbDataReader> ();
+ }
+
+ try {
+ return Task.FromResult (ExecuteDbDataReader (behavior));
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<DbDataReader> (e);
+ }
}
public Task<int> ExecuteNonQueryAsync ()
return ExecuteNonQueryAsync (CancellationToken.None);
}
- [MonoTODO]
public virtual Task<int> ExecuteNonQueryAsync (CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<int> ();
+ }
+
+ try {
+ return Task.FromResult (ExecuteNonQuery ());
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<int> (e);
+ }
}
public Task<Object> ExecuteScalarAsync ()
return ExecuteScalarAsync (CancellationToken.None);
}
- [MonoTODO]
public virtual Task<Object> ExecuteScalarAsync (CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<Object> ();
+ }
+
+ try {
+ return Task.FromResult (ExecuteScalar ());
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<Object> (e);
+ }
}
public Task<DbDataReader> ExecuteReaderAsync ()
return ExecuteReaderAsync (CancellationToken.None);
}
- [MonoTODO]
public Task<DbDataReader> ExecuteReaderAsync (CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<DbDataReader> ();
+ }
+
+ try {
+ return Task.FromResult (ExecuteReader ());
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<DbDataReader> (e);
+ }
}
public Task<DbDataReader> ExecuteReaderAsync (CommandBehavior behavior)
return ExecuteReaderAsync (behavior, CancellationToken.None);
}
- [MonoTODO]
public Task<DbDataReader> ExecuteReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<DbDataReader> ();
+ }
+
+ try {
+ return Task.FromResult (ExecuteReader (behavior));
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<DbDataReader> (e);
+ }
}
#endif
return OpenAsync (CancellationToken.None);
}
- [MonoTODO]
public virtual Task OpenAsync (CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask ();
+ }
+
+ try {
+ Open ();
+ return TaskHelper.CreateVoidTask ();
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask (e);
+ }
}
#endif
return GetFieldValueAsync<T> (ordinal, CancellationToken.None);
}
- [MonoTODO]
public virtual Task<T> GetFieldValueAsync<T> (int ordinal, CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<T> ();
+ }
+
+ try {
+ return Task.FromResult<T> (GetFieldValue<T> (ordinal));
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<T> (e);
+ }
}
public Task<bool> NextResultAsync ()
throw new NotImplementedException ();
}
- [MonoTODO]
public virtual Task<bool> IsDBNullAsync (int ordinal, CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<bool> ();
+ }
+
+ try {
+ return Task.FromResult (IsDBNull (ordinal));
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<bool> (e);
+ }
}
- [MonoTODO]
public virtual Task<bool> NextResultAsync (CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<bool> ();
+ }
+
+ try {
+ return Task.FromResult (NextResult ());
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<bool> (e);
+ }
}
public Task<bool> ReadAsync ()
return ReadAsync (CancellationToken.None);
}
- [MonoTODO]
public virtual Task<bool> ReadAsync (CancellationToken cancellationToken)
{
- throw new NotImplementedException ();
+ if (cancellationToken.IsCancellationRequested) {
+ return TaskHelper.CreateCanceledTask<bool> ();
+ }
+
+ try {
+ return Task.FromResult (Read ());
+ } catch (Exception e) {
+ return TaskHelper.CreateExceptionTask<bool> (e);
+ }
}
#endif
--- /dev/null
+//
+// System.Data.Common.TaskHelper.cs
+//
+// Copyright (C) 2013 Pēteris Ņikiforovs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Threading.Tasks;
+
+namespace System.Data.Common {
+ static class TaskHelper
+ {
+ internal static Task CreateCanceledTask ()
+ {
+ TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
+ tsc.SetCanceled ();
+ return tsc.Task;
+ }
+
+ internal static Task<T> CreateCanceledTask<T> ()
+ {
+ TaskCompletionSource<T> tsc = new TaskCompletionSource<T> ();
+ tsc.SetCanceled ();
+ return tsc.Task;
+ }
+
+ internal static Task CreateExceptionTask (Exception e)
+ {
+ TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
+ tsc.SetException (e);
+ return tsc.Task;
+ }
+
+ internal static Task<T> CreateExceptionTask<T> (Exception e)
+ {
+ TaskCompletionSource<T> tsc = new TaskCompletionSource<T> ();
+ tsc.SetException (e);
+ return tsc.Task;
+ }
+
+ internal static Task CreateVoidTask ()
+ {
+ TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
+ tsc.SetResult (null);
+ return tsc.Task;
+ }
+ }
+}
+
+#endif
System.Data.Common/SchemaTableColumn.cs
System.Data.Common/SchemaTableOptionalColumn.cs
System.Data.Common/SupportedJoinOperators.cs
+System.Data.Common/TaskHelper.cs
System.Data.OleDb/libgda.cs
System.Data.OleDb/OleDbParameterConverter.cs
System.Data.OleDb/OleDbCommand.cs
System.Data.Common/SchemaTableColumn.cs
System.Data.Common/SchemaTableOptionalColumn.cs
System.Data.Common/SupportedJoinOperators.cs
+System.Data.Common/TaskHelper.cs
System.Data.SqlTypes/INullable.cs
System.Data.SqlTypes/SqlBinary.cs
System.Data.SqlTypes/SqlBoolean.cs
// First, check XmlSchemaProviderAttribute and try GetSchema() to see if it returns a schema in the expected format.
var xpa = type.GetCustomAttribute<XmlSchemaProviderAttribute> (true);
if (xpa != null) {
+ if (xpa.IsAny)
+ return XmlQualifiedName.Empty;
var mi = type.GetMethod (xpa.MethodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
if (mi != null) {
try {
QName qname = GetSerializableQName (type);
- if (FindUserMap (qname, type) != null)
+ if (!QName.Empty.Equals (qname) && FindUserMap (qname, type) != null)
throw new InvalidOperationException (String.Format ("There is already a registered type for XML name {0}", qname));
XmlSerializableMap ret = new XmlSerializableMap (type, qname, this);
}
#if NET_2_0
- [MonoTODO]
[ComVisible (false)]
- public int ExitCode {
- get { throw new NotImplementedException (); }
- set { throw new NotImplementedException (); }
- }
+ public int ExitCode { get; set; }
[MonoTODO]
[EditorBrowsable (EditorBrowsableState.Advanced)]
throw new NotImplementedException ();
}
- [MonoTODO]
public void Stop ()
{
+ OnStop ();
}
#endif
using System;
using System.ComponentModel;
using System.Globalization;
-#if NET_2_0
using System.Runtime.InteropServices;
-#endif
using System.ServiceProcess.Design;
using System.Threading;
{
[Designer("System.ServiceProcess.Design.ServiceControllerDesigner, " + Consts.AssemblySystem_Design)]
[MonoTODO ("No unix implementation")]
-#if NET_2_0
[ServiceProcessDescription ("Provides the ability to connect to, query, and manipulate running or stopped Windows services.")]
-#endif
public class ServiceController : Component
{
private string _name;
[ServiceProcessDescription ("Whether this service recognizes the Pause and Continue commands.")]
public bool CanPauseAndContinue {
get {
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
return _impl.CanPauseAndContinue;
}
}
public bool CanShutdown {
get
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
return _impl.CanShutdown;
}
}
public bool CanStop {
get
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
return _impl.CanStop;
}
}
public ServiceController [] DependentServices {
get
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
if (_dependentServices == null)
_dependentServices = _impl.DependentServices;
return _dependentServices;
if (_serviceName == value)
return;
-#if NET_2_0
ValidateServiceName (value);
-#endif
_serviceName = value;
public ServiceController [] ServicesDependedOn {
get
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
if (_servicesDependedOn == null)
_servicesDependedOn = _impl.ServicesDependedOn;
return _servicesDependedOn;
}
}
-#if NET_2_0
[MonoTODO]
[Browsable (false)]
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
throw new NotImplementedException ();
}
}
-#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
[ServiceProcessDescription ("The type of this service.")]
public ServiceType ServiceType {
get
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
return _impl.ServiceType;
}
}
public ServiceControllerStatus Status {
get
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
return _impl.Status;
}
}
public void Continue ()
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
_impl.Continue ();
}
public void ExecuteCommand (int command)
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
_impl.ExecuteCommand (command);
}
public void Pause ()
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
_impl.Pause ();
}
public void Start (string [] args)
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
_impl.Start (args);
}
public void Stop ()
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
_impl.Stop ();
}
public void WaitForStatus (ServiceControllerStatus desiredStatus, TimeSpan timeout)
{
-#if NET_2_0
ValidateServiceName (ServiceName);
-#endif
DateTime start = DateTime.Now;
while (Status != desiredStatus) {
}
}
-#if NET_2_0
private static void ValidateServiceName (string serviceName)
{
if (serviceName.Length == 0 || serviceName.Length > 80)
"Service name {0} contains invalid characters, is empty"
+ " or is too long (max length = 80).", serviceName));
}
-#endif
private static void ValidateMachineName (string machineName)
{
+System.ServiceProcess/ServiceBaseTest.cs
System.ServiceProcess/ServiceControllerTest.cs
System.ServiceProcess/ServiceControllerPermissionAttributeTest.cs
System.ServiceProcess/ServiceControllerPermissionTest.cs
--- /dev/null
+//
+// ServiceBaseTest.cs -
+// NUnit Test Cases for ServiceBase
+//
+// Author:
+// Andres G. Aragoneses (andres@7digital.com)
+//
+// Copyright (C) 2013 7digital Media, Ltd (http://www.7digital.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.ServiceProcess;
+using NUnit.Framework;
+
+namespace Test
+{
+ [TestFixture]
+ public class ServiceBaseTest
+ {
+ const int SOME_ERROR_CODE = 1;
+
+ public partial class ServiceFoo : ServiceBase
+ {
+ public ServiceFoo ()
+ {
+ InitializeComponent ();
+ }
+
+ protected override void OnStart (string[] args)
+ {
+ }
+
+ protected override void OnStop ()
+ {
+ ExitCode = SOME_ERROR_CODE;
+ }
+
+ public void StartHook ()
+ {
+ OnStart (new string [] { });
+ }
+ }
+
+ [Test]
+ public void StopCallsOnStop ()
+ {
+ var s = new ServiceFoo ();
+ Assert.AreEqual (0, s.ExitCode);
+ s.Stop ();
+ Assert.AreEqual (SOME_ERROR_CODE, s.ExitCode);
+ }
+
+ [Test]
+ public void ExitCodeIsNotResetByBaseClassServiceBaseBetweenRuns ()
+ {
+ var s = new ServiceFoo ();
+ Assert.AreEqual (0, s.ExitCode);
+ s.Stop ();
+ Assert.AreEqual (SOME_ERROR_CODE, s.ExitCode);
+ s.StartHook ();
+ Assert.AreEqual (SOME_ERROR_CODE, s.ExitCode);
+ }
+
+ partial class ServiceFoo
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ components = new System.ComponentModel.Container();
+ this.ServiceName = "ServiceFoo";
+ }
+
+ #endregion
+ }
+ }
+}
+
try {
bool value = sc.CanPauseAndContinue;
Assert.Fail ("#A1: " + value.ToString ());
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#A6");
Assert.IsNull (ex.InnerException, "#A7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
- Assert.IsNotNull (ex.Message, "#A3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#A4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#A5");
- Assert.IsNotNull (ex.InnerException, "#A6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#A7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#A8");
- Assert.IsNotNull (win32Error.Message, "#A9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#A10");
- Assert.IsNull (win32Error.InnerException, "#A11");
- }
-#endif
try {
bool value = sc.CanShutdown;
Assert.Fail ("#B1: " + value.ToString ());
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#B6");
Assert.IsNull (ex.InnerException, "#B7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
- Assert.IsNotNull (ex.Message, "#B3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#B4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#B5");
- Assert.IsNotNull (ex.InnerException, "#B6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#B7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#B8");
- Assert.IsNotNull (win32Error.Message, "#B9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#B10");
- Assert.IsNull (win32Error.InnerException, "#B11");
- }
-#endif
try {
bool value = sc.CanStop;
Assert.Fail ("#C1: " + value.ToString ());
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#C6");
Assert.IsNull (ex.InnerException, "#C7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
- Assert.IsNotNull (ex.Message, "#C3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#C4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#C5");
- Assert.IsNotNull (ex.InnerException, "#C6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#C7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#C8");
- Assert.IsNotNull (win32Error.Message, "#C9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#C10");
- Assert.IsNull (win32Error.InnerException, "#C11");
- }
-#endif
// closing the ServiceController does not result in exception
sc.Close ();
try {
sc.Continue ();
Assert.Fail ("#D1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#D6");
Assert.IsNull (ex.InnerException, "#D7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
- Assert.IsNotNull (ex.Message, "#D3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#D4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#D5");
- Assert.IsNotNull (ex.InnerException, "#D6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#D7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#D8");
- Assert.IsNotNull (win32Error.Message, "#D9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#D10");
- Assert.IsNull (win32Error.InnerException, "#D11");
- }
-#endif
try {
Assert.Fail ("#E1: " + sc.DependentServices.Length);
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#E6");
Assert.IsNull (ex.InnerException, "#E7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
- Assert.IsNotNull (ex.Message, "#E3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#E4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#E5");
- Assert.IsNotNull (ex.InnerException, "#E6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#E7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#E8");
- Assert.IsNotNull (win32Error.Message, "#E9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#E10");
- Assert.IsNull (win32Error.InnerException, "#E11");
- }
-#endif
Assert.IsNotNull (sc.DisplayName, "#F1");
Assert.AreEqual (string.Empty, sc.DisplayName, "#F2");
try {
sc.ExecuteCommand (0);
Assert.Fail ("#G1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#G6");
Assert.IsNull (ex.InnerException, "#G7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
- Assert.IsNotNull (ex.Message, "#G3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#G4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#G5");
- Assert.IsNotNull (ex.InnerException, "#G6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#G7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#G8");
- Assert.IsNotNull (win32Error.Message, "#G9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#G10");
- Assert.IsNull (win32Error.InnerException, "#G11");
- }
-#endif
Assert.IsNotNull (sc.MachineName, "#H1");
Assert.AreEqual (".", sc.MachineName, "#H2");
try {
sc.Pause ();
Assert.Fail ("#I1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#I6");
Assert.IsNull (ex.InnerException, "#I7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#I2");
- Assert.IsNotNull (ex.Message, "#I3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#I4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#I5");
- Assert.IsNotNull (ex.InnerException, "#I6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#I7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#I8");
- Assert.IsNotNull (win32Error.Message, "#I9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#I10");
- Assert.IsNull (win32Error.InnerException, "#I11");
- }
-#endif
}
[Test]
[Test]
public void CanPauseAndContinue_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
bool canPauseAndContinue = sc.CanPauseAndContinue;
Assert.Fail ("#1: " + canPauseAndContinue);
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
[Test]
public void CanShutdown_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
bool canShutdown = sc.CanShutdown;
Assert.Fail ("#1: " + canShutdown);
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
[Test]
public void CanStop_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
bool canStop = sc.CanStop;
Assert.Fail ("#1: " + canStop);
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
[Test]
public void Continue_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
sc.Continue ();
Assert.Fail ("#1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
[Test]
public void DependentServices_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
ServiceController [] dependenServices = sc.DependentServices;
Assert.Fail ("#1: " + dependenServices.Length);
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
[Test]
public void ExecuteCommand_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
sc.ExecuteCommand ((int) SERVICE_CONTROL_TYPE.SERVICE_CONTROL_INTERROGATE);
Assert.Fail ("#1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
Assert.IsNotNull (ex.Message, "#3");
Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
-#if ONLY_1_1
- Assert.IsNull (ex.InnerException, "#5");
-#else
Assert.IsNotNull (ex.InnerException, "#5");
// The RPC server is unavailable
Assert.IsNotNull (win32Error.Message, "#8");
Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
Assert.IsNull (win32Error.InnerException, "#10");
-#endif
}
}
Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
Assert.IsNotNull (ex.Message, "#3");
Assert.IsTrue (ex.Message.IndexOf ("'doesnotexist'") != -1, "#4");
-#if ONLY_1_1
- Assert.IsNull (ex.InnerException, "#5");
-#else
Assert.IsNotNull (ex.InnerException, "#5");
// The RPC server is unavailable
Assert.IsNotNull (win32Error.Message, "#8");
Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
Assert.IsNull (win32Error.InnerException, "#10");
-#endif
}
}
[Test]
public void Pause_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
sc.Pause ();
Assert.Fail ("#1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
Assert.AreEqual ("Workstation", sc.DisplayName, "#B1");
Assert.AreEqual ("lanmanworkstation", sc.ServiceName, "#B2");
-#if ONLY_1_1
- sc.ServiceName = string.Empty;
-
- Assert.AreEqual (string.Empty, sc.DisplayName, "#C1");
- Assert.AreEqual (string.Empty, sc.ServiceName, "#C2");
-#else
try {
sc.ServiceName = string.Empty;
Assert.Fail ("#C1");
Assert.IsNull (ex.ParamName, "#A6");
Assert.IsNull (ex.InnerException, "#A7");
}
-#endif
}
[Test]
[Test]
public void ServicesDependedOn_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
ServiceController [] servicesDependedOn = sc.ServicesDependedOn;
Assert.Fail ("#1: " + servicesDependedOn.Length);
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
[Test]
public void Stop_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
sc.Stop ();
Assert.Fail ("#1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
} catch (TimeoutException ex) {
// Time out has expired and the operation has not been completed
Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
-#if NET_2_0
Assert.IsNotNull (ex.Data, "#B3");
Assert.AreEqual (0, ex.Data.Count, "#B4");
-#endif
Assert.IsNotNull (ex.Message, "#B5");
Assert.IsNull (ex.InnerException, "#B6");
}
} catch (TimeoutException ex) {
// Time out has expired and the operation has not been completed
Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
-#if NET_2_0
Assert.IsNotNull (ex.Data, "#B3");
Assert.AreEqual (0, ex.Data.Count, "#B4");
-#endif
Assert.IsNotNull (ex.Message, "#B5");
Assert.IsNull (ex.InnerException, "#B6");
}
[Test]
public void WaitForStatus_ServiceName_Empty ()
{
-#if ONLY_1_1
- if (RunningOnUnix)
- return;
-#endif
-
ServiceController sc = new ServiceController ();
try {
sc.WaitForStatus (ServiceControllerStatus.Stopped,
new TimeSpan (0, 0, 1));
Assert.Fail ("#1");
-#if NET_2_0
} catch (ArgumentException ex) {
// Service name contains invalid characters, is empty or is
// too long (max length = 80)
Assert.IsNull (ex.ParamName, "#6");
Assert.IsNull (ex.InnerException, "#7");
}
-#else
- } catch (InvalidOperationException ex) {
- // Cannot open service on computer '.'
- Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'.'") != -1, "#5");
- Assert.IsNotNull (ex.InnerException, "#6");
-
- // The filename, directory name, or volume label is incorrect
- Assert.AreEqual (typeof (Win32Exception), ex.InnerException.GetType (), "#7");
- Win32Exception win32Error = (Win32Exception) ex.InnerException;
- //Assert.AreEqual (-2147467259, win32Error.ErrorCode, "#8");
- Assert.IsNotNull (win32Error.Message, "#9");
- Assert.AreEqual (123, win32Error.NativeErrorCode, "#10");
- Assert.IsNull (win32Error.InnerException, "#11");
- }
-#endif
}
[Test]
} catch (TimeoutException ex) {
// Time out has expired and the operation has not been completed
Assert.AreEqual (typeof (TimeoutException), ex.GetType (), "#B2");
-#if NET_2_0
Assert.IsNotNull (ex.Data, "#B3");
Assert.AreEqual (0, ex.Data.Count, "#B4");
-#endif
Assert.IsNotNull (ex.Message, "#B5");
Assert.IsNull (ex.InnerException, "#B6");
}
--- /dev/null
+//
+// System.Web.MimeMapping
+//
+// Authors:
+// Jb Evain (jbevain@gmail.com)
+//
+// (C) 2013 Jb Evain
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+namespace System.Web {
+
+ public static class MimeMapping {
+
+ public static string GetMimeMapping (string fileName)
+ {
+ return MimeTypes.GetMimeType (fileName);
+ }
+ }
+}
+
+#endif
#include net_4_0_System.Web.dll.sources
+
+System.Web/MimeMapping.cs
System.Xml/XmlTextWriter2.cs
System.Xml/XmlInputStream.cs
System.Xml/XmlParserInput.cs
+System.Xml/XmlSecureResolver.cs
System.Xml.XPath/IXPathNavigable.cs
System.Xml.XPath/XPathNavigator.cs
System.Xml.XPath/XPathExpression.cs
private void GetConfigFileSetting ()
{
+#if !MOBILE
IDictionary d = (IDictionary) DiagnosticsConfiguration.Settings ["switches"];
// Load up the specified switch
return;
}
}
+#endif // !MOBILE
if (defaultSwitchValue != null) {
value = defaultSwitchValue;
}
static bool use_global_lock;
-#if !MOBILE
static CorrelationManager correlation_manager = new CorrelationManager ();
public static CorrelationManager CorrelationManager {
return correlation_manager;
}
}
-#endif
[MonoLimitation ("the property exists but it does nothing.")]
public static bool UseGlobalLock {
//
// TraceSource.cs
//
-// Author:
+// Authors:
// Atsushi Enomoto <atsushi@ximian.com>
+// Marek Safar (marek.safar@gmail.com)
//
// Copyright (C) 2007 Novell, Inc.
-//
-
+// Copyright 2013 Xamarin Inc
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
{
}
- public TraceSource (string name, SourceLevels sourceLevels)
+ public TraceSource (string name, SourceLevels defaultLevel)
{
if (name == null)
throw new ArgumentNullException ("name");
+ if (name.Length == 0)
+ throw new ArgumentException ("name");
+
Hashtable sources = DiagnosticsConfiguration.Settings ["sources"] as Hashtable;
TraceSourceInfo info = sources != null ? sources [name] as TraceSourceInfo : null;
source_switch = new SourceSwitch (name);
- if (info == null)
+ if (info == null) {
listeners = new TraceListenerCollection ();
- else {
+ source_switch.Level = defaultLevel;
+ } else {
source_switch.Level = info.Levels;
listeners = info.Listeners;
}
//
// System.Net.NetworkInformation.NetworkChange
//
-// Author:
+// Authors:
// Gonzalo Paniagua Javier (gonzalo@novell.com)
+// Aaron Bockover (abock@xamarin.com)
//
// Copyright (c) 2006,2011 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2013 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
using System.Threading;
namespace System.Net.NetworkInformation {
+ internal interface INetworkChange {
+ event NetworkAddressChangedEventHandler NetworkAddressChanged;
+ event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged;
+ }
+
public sealed class NetworkChange {
+ static INetworkChange networkChange;
+
+ static NetworkChange ()
+ {
+ if (MacNetworkChange.IsEnabled) {
+ networkChange = new MacNetworkChange ();
+ } else {
+ networkChange = new LinuxNetworkChange ();
+ }
+ }
+
+ public static event NetworkAddressChangedEventHandler NetworkAddressChanged {
+ add { networkChange.NetworkAddressChanged += value; }
+ remove { networkChange.NetworkAddressChanged -= value; }
+ }
+
+ public static event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+ add { networkChange.NetworkAvailabilityChanged += value; }
+ remove { networkChange.NetworkAvailabilityChanged -= value; }
+ }
+ }
+
+ internal sealed class MacNetworkChange : INetworkChange {
+ public static bool IsEnabled {
+ get { return mono_sc_reachability_enabled () != 0; }
+ }
+
+ event NetworkAddressChangedEventHandler networkAddressChanged;
+ event NetworkAvailabilityChangedEventHandler networkAvailabilityChanged;
+
+ public event NetworkAddressChangedEventHandler NetworkAddressChanged {
+ add {
+ if (value != null) {
+ MaybeInitialize ();
+ networkAddressChanged += value;
+ value (null, EventArgs.Empty);
+ }
+ }
+
+ remove {
+ networkAddressChanged -= value;
+ MaybeDispose ();
+ }
+ }
+
+ public event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+ add {
+ if (value != null) {
+ MaybeInitialize ();
+ networkAvailabilityChanged += value;
+ var available = handle != IntPtr.Zero && mono_sc_reachability_is_available (handle) != 0;
+ value (null, new NetworkAvailabilityEventArgs (available));
+ }
+ }
+
+ remove {
+ networkAvailabilityChanged -= value;
+ MaybeDispose ();
+ }
+ }
+
+ IntPtr handle;
+ MonoSCReachabilityCallback callback;
+
+ void Callback (int available)
+ {
+ var addressChanged = networkAddressChanged;
+ if (addressChanged != null) {
+ addressChanged (null, EventArgs.Empty);
+ }
+
+ var availabilityChanged = networkAvailabilityChanged;
+ if (availabilityChanged != null) {
+ availabilityChanged (null, new NetworkAvailabilityEventArgs (available != 0));
+ }
+ }
+
+ void MaybeInitialize ()
+ {
+ lock (this) {
+ if (handle == IntPtr.Zero) {
+ callback = new MonoSCReachabilityCallback (Callback);
+ handle = mono_sc_reachability_new (callback);
+ }
+ }
+ }
+
+ void MaybeDispose ()
+ {
+ lock (this) {
+ var addressChanged = networkAddressChanged;
+ var availabilityChanged = networkAvailabilityChanged;
+ if (handle != IntPtr.Zero && addressChanged == null && availabilityChanged == null) {
+ mono_sc_reachability_free (handle);
+ handle = IntPtr.Zero;
+ }
+ }
+ }
+
+#if MONOTOUCH || MONODROID
+ const string LIBNAME = "__Internal";
+#else
+ const string LIBNAME = "MonoPosixHelper";
+#endif
+
+ delegate void MonoSCReachabilityCallback (int available);
+
+ [DllImport (LIBNAME)]
+ static extern int mono_sc_reachability_enabled ();
+
+ [DllImport (LIBNAME)]
+ static extern IntPtr mono_sc_reachability_new (MonoSCReachabilityCallback callback);
+
+ [DllImport (LIBNAME)]
+ static extern void mono_sc_reachability_free (IntPtr handle);
+
+ [DllImport (LIBNAME)]
+ static extern int mono_sc_reachability_is_available (IntPtr handle);
+ }
+
+ internal sealed class LinuxNetworkChange : INetworkChange {
[Flags]
enum EventType {
Availability = 1 << 0,
Address = 1 << 1,
}
- static object _lock = new object ();
- static Socket nl_sock;
- static SocketAsyncEventArgs nl_args;
- static EventType pending_events;
- static Timer timer;
+ object _lock = new object ();
+ Socket nl_sock;
+ SocketAsyncEventArgs nl_args;
+ EventType pending_events;
+ Timer timer;
- static NetworkAddressChangedEventHandler AddressChanged;
- static NetworkAvailabilityChangedEventHandler AvailabilityChanged;
+ NetworkAddressChangedEventHandler AddressChanged;
+ NetworkAvailabilityChangedEventHandler AvailabilityChanged;
- private NetworkChange ()
- {
- }
-
- public static event NetworkAddressChangedEventHandler NetworkAddressChanged {
+ public event NetworkAddressChangedEventHandler NetworkAddressChanged {
add { Register (value); }
remove { Unregister (value); }
}
- public static event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+ public event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
add { Register (value); }
remove { Unregister (value); }
}
//internal Socket (AddressFamily family, SocketType type, ProtocolType proto, IntPtr sock)
- static bool EnsureSocket ()
+ bool EnsureSocket ()
{
lock (_lock) {
if (nl_sock != null)
}
// _lock is held by the caller
- static void MaybeCloseSocket ()
+ void MaybeCloseSocket ()
{
if (nl_sock == null || AvailabilityChanged != null || AddressChanged != null)
return;
nl_args = null;
}
- static bool GetAvailability ()
+ bool GetAvailability ()
{
NetworkInterface [] adapters = NetworkInterface.GetAllNetworkInterfaces ();
foreach (NetworkInterface n in adapters) {
return false;
}
- static void OnAvailabilityChanged (object unused)
+ void OnAvailabilityChanged (object unused)
{
NetworkAvailabilityChangedEventHandler d = AvailabilityChanged;
d (null, new NetworkAvailabilityEventArgs (GetAvailability ()));
}
- static void OnAddressChanged (object unused)
+ void OnAddressChanged (object unused)
{
NetworkAddressChangedEventHandler d = AddressChanged;
d (null, EventArgs.Empty);
}
- static void OnEventDue (object unused)
+ void OnEventDue (object unused)
{
EventType evts;
lock (_lock) {
ThreadPool.QueueUserWorkItem (OnAddressChanged);
}
- static void QueueEvent (EventType type)
+ void QueueEvent (EventType type)
{
lock (_lock) {
if (timer == null)
}
}
- unsafe static void OnDataAvailable (object sender, SocketAsyncEventArgs args)
+ unsafe void OnDataAvailable (object sender, SocketAsyncEventArgs args)
{
EventType type;
fixed (byte *ptr = args.Buffer) {
QueueEvent (type);
}
- static void Register (NetworkAddressChangedEventHandler d)
+ void Register (NetworkAddressChangedEventHandler d)
{
EnsureSocket ();
AddressChanged += d;
}
- static void Register (NetworkAvailabilityChangedEventHandler d)
+ void Register (NetworkAvailabilityChangedEventHandler d)
{
EnsureSocket ();
AvailabilityChanged += d;
}
- static void Unregister (NetworkAddressChangedEventHandler d)
+ void Unregister (NetworkAddressChangedEventHandler d)
{
lock (_lock) {
AddressChanged -= d;
}
}
- static void Unregister (NetworkAvailabilityChangedEventHandler d)
+ void Unregister (NetworkAvailabilityChangedEventHandler d)
{
lock (_lock) {
AvailabilityChanged -= d;
namespace System.Net.NetworkInformation {
public abstract class NetworkInterface {
+#if MONOTOUCH
+ internal const bool runningOnUnix = true;
+#else
static Version windowsVer51 = new Version (5, 1);
static internal readonly bool runningOnUnix = (Environment.OSVersion.Platform == PlatformID.Unix);
-
+#endif
protected NetworkInterface ()
{
}
public static NetworkInterface [] GetAllNetworkInterfaces ()
{
+#if MONOTOUCH
+ return MacOsNetworkInterface.ImplGetAllNetworkInterfaces ();
+#else
if (runningOnUnix) {
try {
if (Platform.IsMacOS)
return Win32NetworkInterface2.ImplGetAllNetworkInterfaces ();
return new NetworkInterface [0];
}
+#endif
}
[MonoTODO("Always returns true")]
[MonoTODO("Look in other places for proxy config info")]
public static IWebProxy GetSystemWebProxy ()
{
+#if MONOTOUCH
+ return CFNetwork.GetDefaultProxy ();
+#else
#if !NET_2_1
if (IsWindows ()) {
int iProxyEnable = (int)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyEnable", 0);
#endif
return new WebProxy ();
+#endif // MONOTOUCH
}
void ISerializable.GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
return X509ChainStatusFlags.NoError;
}
- static MX.X509Crl CheckCrls (string subject, string ski, ArrayList crls)
+ static MX.X509Crl CheckCrls (string subject, string ski, MX.X509Store store)
{
+ if (store == null)
+ return null;
+
+ var crls = store.Crls;
foreach (MX.X509Crl crl in crls) {
if (crl.IssuerName == subject && (ski.Length == 0 || ski == GetAuthorityKeyIdentifier (crl)))
return crl;
string ski = GetSubjectKeyIdentifier (caCertificate);
// consider that the LocalMachine directories could not exists... and cannot be created by the user
- var result = (LMCAStore.Store == null) ? null : CheckCrls (subject, ski, LMCAStore.Store.Crls);
+ MX.X509Crl result = CheckCrls (subject, ski, LMCAStore.Store);
if (result != null)
return result;
if (location == StoreLocation.CurrentUser) {
- result = CheckCrls (subject, ski, UserCAStore.Store.Crls);
+ result = CheckCrls (subject, ski, UserCAStore.Store);
if (result != null)
return result;
}
// consider that the LocalMachine directories could not exists... and cannot be created by the user
- result = (LMRootStore.Store == null) ? null : CheckCrls (subject, ski, LMRootStore.Store.Crls);
+ result = CheckCrls (subject, ski, LMRootStore.Store);
if (result != null)
return result;
if (location == StoreLocation.CurrentUser) {
- result = CheckCrls (subject, ski, UserRootStore.Store.Crls);
+ result = CheckCrls (subject, ski, UserRootStore.Store);
if (result != null)
return result;
}
//
// System.Platform
//
-// Copyright (C) 2011 Xamarin, Inc. (www.xamarin.com)
+// Copyright (C) 2011-2013 Xamarin Inc. (www.xamarin.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
namespace System {
internal static class Platform {
+#if MONOTOUCH
+ public static bool IsMacOS {
+ get { return true; }
+ }
+#else
[DllImport ("libc")]
static extern int uname (IntPtr buf);
return isMacOS;
}
}
+#endif
}
}
new TraceSource (null);
}
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void ConstructorEmpty ()
+ {
+ new TraceSource ("");
+ }
+
[Test]
public void DefaultValues ()
{
TraceSource ts = new TraceSource ("foo");
ts.Switch = null;
}
+
+ [Test]
+ public void SwitchLevel ()
+ {
+ TraceSource s = new TraceSource ("Source1");
+ Assert.AreEqual (SourceLevels.Off, s.Switch.Level, "#1");
+
+ s = new TraceSource("Source2", SourceLevels.All);
+ Assert.AreEqual (SourceLevels.All, s.Switch.Level, "#2");
+
+ s = new TraceSource("Source3");
+ s.Switch.Level = SourceLevels.All;
+ Assert.AreEqual (SourceLevels.All, s.Switch.Level, "#3");
+ }
}
}
System.ComponentModel/WeakObjectWrapper.cs
System.ComponentModel/WeakObjectWrapperComparer.cs
System.ComponentModel/Win32Exception.cs
+System.Diagnostics/BooleanSwitch.cs
+System.Diagnostics/CorrelationManager.cs
System.Diagnostics/DataReceivedEventArgs.cs
System.Diagnostics/DataReceivedEventHandler.cs
System.Diagnostics/Debug.cs
System.Diagnostics/ProcessThread.cs
System.Diagnostics/ProcessThreadCollection.cs
System.Diagnostics/ProcessWindowStyle.cs
+System.Diagnostics/SourceLevels.cs
+System.Diagnostics/SourceSwitch.cs
System.Diagnostics/Stopwatch.cs
+System.Diagnostics/Switch.cs
+System.Diagnostics/SwitchAttribute.cs
+System.Diagnostics/SwitchLevelAttribute.cs
+System.Diagnostics/ThreadPriorityLevel.cs
+System.Diagnostics/ThreadState.cs
+System.Diagnostics/ThreadWaitReason.cs
+System.Diagnostics/Trace.cs
+System.Diagnostics/TraceEventType.cs
System.Diagnostics/TraceImpl.cs
+System.Diagnostics/TraceLevel.cs
System.Diagnostics/TraceListener.cs
System.Diagnostics/TraceListenerCollection.cs
System.Diagnostics/TraceOptions.cs
-System.Diagnostics/ThreadPriorityLevel.cs
-System.Diagnostics/ThreadState.cs
-System.Diagnostics/ThreadWaitReason.cs
+System.Diagnostics/TraceSwitch.cs
System.IO.Compression/CompressionLevel.cs
System.IO.Compression/CompressionMode.cs
System.IO.Compression/DeflateStream.cs
#include mobile_System.dll.sources
System/AndroidPlatform.cs
System.CodeDom.Compiler/IndentedTextWriter.cs
+System.Configuration/ConfigurationException.cs
+System.Configuration/IConfigurationSectionHandler.cs
var projectRefsXml = "";
var resourcesXml = "";
- var signing_xml_template = "<SignAssembly>True</SignAssembly>\n <DelaySign>True</DelaySign>\n <AssemblyOriginatorKeyFile>../../../reactive.pub</AssemblyOriginatorKeyFile>\n";
- var signingXml = ass.StartsWith ("System") ? signing_xml_template : "";
-
-
var doc = XDocument.Load (csproj);
var rootNS = doc.XPathSelectElement ("//*[local-name()='RootNamespace']").Value;
var guid = doc.XPathSelectElement ("//*[local-name()='ProjectGuid']").Value;
.Select (el => el.Attribute ("Include").Value)
.Select (s => s.Replace ("\\", "/"))) {
if (!blacklist.Any (b => path.Contains (b))) {
- var p = Path.Combine ("..", basePath, ass, path);
- tw.WriteLine (Path.Combine (pathPrefix, p));
- sourcesXml += " <Compile Include='..\\..\\..\\..\\..\\..\\" + p.Replace ('/', '\\') + "'>\n <Link>" + path + "</Link>\n </Compile>\n";
+ var p = Path.Combine (ass, path);
+ var p2 = Path.Combine ("..", basePath, ass, path);
+ tw.WriteLine (Path.Combine (pathPrefix, p2));
+ sourcesXml += " <Compile Include=\"..\\..\\..\\..\\" + p.Replace ('/', '\\') + "\">\n <Link>" + path.Replace ('/', '\\') + "</Link>\n </Compile>\n";
}
}
}
string template, prj_prefix, nunitProjRef, nunitRef;
var androidNUnit = "<ProjectReference Include=\"..\\..\\Andr.Unit\\Android.NUnitLite\\Android.NUnitLite.csproj\"><Project>{6A005891-A3D6-4398-A729-F645397D573A}</Project><Name>Android.NUnitLite</Name></ProjectReference>";
if (f == android_proj) {
- prj_guid = guids_android [guid_idx];
+ prj_guid = guids_android [guid_idx].ToUpper ();
template = template_android;
prj_prefix ="android_";
nunitProjRef = ass.Contains ("Test") ? androidNUnit : "";
nunitRef = "";
} else {
- prj_guid = guids_ios [guid_idx];
+ prj_guid = guids_ios [guid_idx].ToUpper ();
template = template_ios;
prj_prefix ="ios_";
nunitProjRef = "";
.Replace ("OPTIONAL_MONOTOUCH_NUNITLITE", nunitRef)
.Replace ("PROJECT_REFERENCES_GO_HERE",
projectRefsXml
+ .Replace (" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"", "")
.Replace ("Microsoft.Reactive.Testing", "Mono.Reactive.Testing")
.Replace ("System", prj_prefix + "System")
.Replace ("Mono", prj_prefix + "Mono")
.Replace ("Include=\"..\\" + prj_prefix, "Include=\"..\\"))
- .Replace ("RESOURCES_GO_HERE", sourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
- .Replace ("SOURCES_GO_HERE", resourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
- .Replace ("SIGNING_SPEC_GOES_HERE", signingXml));
+ .Replace ("RESOURCES_GO_HERE", resourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
+ .Replace ("SOURCES_GO_HERE", sourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\'))); // whoa, BACKSLASH doesn't work only on android on MD/mac...!
}
}
guid_idx++;
private void Resize(int ncapacity)
{
- ncapacity = Math.Max (ncapacity, 16);
+ ncapacity = Math.Max (ncapacity, default_capacity);
object[] ncontents = new object[ncapacity];
Array.Copy(contents, ncontents, count);
capacity = default_capacity;
}
- public Stack(ICollection col) : this (col == null ? 16 : col.Count) {
+ public Stack(ICollection col) : this (col == null ? default_capacity : col.Count) {
if (col == null)
throw new ArgumentNullException("col");
// Authors:
// Sebastien Pouliot <sebastien@xamarin.com>
//
-// Copyright 2012 Xamarin Inc.
+// Copyright 2012-2013 Xamarin Inc.
//
// The class can be either constructed from a string (from user code)
// or from a handle (from iphone-sharp.dll internal calls). This
#if MONOTOUCH
using System;
-using System.Reflection;
+using System.Runtime.InteropServices;
namespace System.Globalization {
public partial class RegionInfo {
-
- static Type nslocale;
-
- static Type NSLocale {
- get {
- if (nslocale == null)
- nslocale = Type.GetType ("MonoTouch.Foundation.NSLocale, monotouch, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
- return nslocale;
- }
- }
-
+
+ [DllImport ("__Internal")]
+ extern static string monotouch_get_locale_country_code ();
+
static RegionInfo CreateFromNSLocale ()
{
- try {
- var cl = NSLocale.GetProperty ("CurrentLocale", BindingFlags.Static | BindingFlags.Public).GetGetMethod ();
- var cc = NSLocale.GetProperty ("CountryCode", BindingFlags.Instance | BindingFlags.Public).GetGetMethod ();
-
- object current = cl.Invoke (null, null);
- return new RegionInfo ((string) cc.Invoke (current, null));
- }
- catch (TargetInvocationException tie) {
- throw tie.InnerException;
- }
+ return new RegionInfo (monotouch_get_locale_country_code ());
}
}
}
FileShare.None, bufferSize);
}
-#if !NET_2_1
[MonoLimitation ("FileOptions are ignored")]
public static FileStream Create (string path, int bufferSize,
FileOptions options)
{
- return Create (path, bufferSize, options, null);
+ return new FileStream (path, FileMode.Create, FileAccess.ReadWrite,
+ FileShare.None, bufferSize, options);
}
+#if !NET_2_1
[MonoLimitation ("FileOptions and FileSecurity are ignored")]
public static FileStream Create (string path, int bufferSize,
FileOptions options,
return(buf_start + buf_offset);
}
set {
- if (handle == MonoIO.InvalidHandle)
- throw new ObjectDisposedException ("Stream has been closed");
-
- if(CanSeek == false) {
- throw new NotSupportedException("The stream does not support seeking");
- }
-
if(value < 0) {
throw new ArgumentOutOfRangeException("Attempt to set the position to a negative value");
}
}\r
}\r
\r
+ void LowLevelWrite (char[] buffer, int index, int count)\r
+ {\r
+ while (count > 0) {\r
+ int todo = decode_buf.Length - decode_pos;\r
+ if (todo == 0) {\r
+ Decode ();\r
+ todo = decode_buf.Length;\r
+ }\r
+ if (todo > count)\r
+ todo = count;\r
+ Buffer.BlockCopy (buffer, index * 2, decode_buf, decode_pos * 2, todo * 2);\r
+ count -= todo;\r
+ index += todo;\r
+ decode_pos += todo;\r
+ }\r
+ }\r
+ \r
+ void LowLevelWrite (string s)\r
+ {\r
+ int count = s.Length;\r
+ int index = 0;\r
+ while (count > 0) {\r
+ int todo = decode_buf.Length - decode_pos;\r
+ if (todo == 0) {\r
+ Decode ();\r
+ todo = decode_buf.Length;\r
+ }\r
+ if (todo > count)\r
+ todo = count;\r
+ \r
+ for (int i = 0; i < todo; i ++)\r
+ decode_buf [i + decode_pos] = s [i + index];\r
+ \r
+ count -= todo;\r
+ index += todo;\r
+ decode_pos += todo;\r
+ }\r
+ } \r
+\r
#if NET_4_5\r
async Task FlushCoreAsync ()\r
{\r
decode_pos = 0;\r
}\r
} \r
-#endif\r
\r
- public override void Write (char[] buffer, int index, int count) \r
- {\r
- if (buffer == null)\r
- throw new ArgumentNullException ("buffer");\r
- if (index < 0)\r
- throw new ArgumentOutOfRangeException ("index", "< 0");\r
- if (count < 0)\r
- throw new ArgumentOutOfRangeException ("count", "< 0");\r
- // re-ordered to avoid possible integer overflow\r
- if (index > buffer.Length - count)\r
- throw new ArgumentException ("index + count > buffer.Length");\r
-\r
- CheckState ();\r
-\r
- LowLevelWrite (buffer, index, count);\r
- if (iflush)\r
- FlushCore ();\r
- }\r
- \r
- void LowLevelWrite (char[] buffer, int index, int count)\r
+ async Task LowLevelWriteAsync (char[] buffer, int index, int count)\r
{\r
while (count > 0) {\r
int todo = decode_buf.Length - decode_pos;\r
if (todo == 0) {\r
- Decode ();\r
+ await DecodeAsync ().ConfigureAwait (false);\r
todo = decode_buf.Length;\r
}\r
if (todo > count)\r
}\r
}\r
\r
- void LowLevelWrite (string s)\r
+ async Task LowLevelWriteAsync (string s)\r
{\r
int count = s.Length;\r
int index = 0;\r
while (count > 0) {\r
int todo = decode_buf.Length - decode_pos;\r
if (todo == 0) {\r
- Decode ();\r
+ await DecodeAsync ().ConfigureAwait (false);\r
todo = decode_buf.Length;\r
}\r
if (todo > count)\r
index += todo;\r
decode_pos += todo;\r
}\r
- }\r
+ } \r
+#endif\r
+\r
+ public override void Write (char[] buffer, int index, int count) \r
+ {\r
+ if (buffer == null)\r
+ throw new ArgumentNullException ("buffer");\r
+ if (index < 0)\r
+ throw new ArgumentOutOfRangeException ("index", "< 0");\r
+ if (count < 0)\r
+ throw new ArgumentOutOfRangeException ("count", "< 0");\r
+ // re-ordered to avoid possible integer overflow\r
+ if (index > buffer.Length - count)\r
+ throw new ArgumentException ("index + count > buffer.Length");\r
\r
+ CheckState ();\r
+\r
+ LowLevelWrite (buffer, index, count);\r
+ if (iflush)\r
+ FlushCore ();\r
+ }\r
+ \r
public override void Write (char value)\r
{\r
CheckState ();\r
{\r
CheckState ();\r
\r
- if (value != null)\r
- LowLevelWrite (value);\r
+ if (value == null)\r
+ return;\r
+ \r
+ LowLevelWrite (value);\r
\r
if (iflush)\r
FlushCore ();\r
{\r
// Debug.Assert (buffer == null);\r
\r
- LowLevelWrite (buffer, 0, buffer.Length);\r
+ await LowLevelWriteAsync (buffer, index, count).ConfigureAwait (false);\r
\r
if (iflush)\r
await FlushCoreAsync ().ConfigureAwait (false);\r
public override Task WriteAsync (string value)\r
{\r
CheckState ();\r
+\r
+ if (value == null)\r
+ return TaskConstants.Finished;\r
+\r
DecoupledTask res; \r
- async_task = res = new DecoupledTask(base.WriteAsync (value));\r
+ async_task = res = new DecoupledTask (WriteAsyncCore (value, false));\r
return res.Task;\r
}\r
\r
+ async Task WriteAsyncCore (string value, bool appendNewLine)\r
+ {\r
+ // Debug.Assert (value == null);\r
+\r
+ await LowLevelWriteAsync (value).ConfigureAwait (false);\r
+ if (appendNewLine)\r
+ await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+ \r
+ if (iflush)\r
+ await FlushCoreAsync ().ConfigureAwait (false);\r
+ } \r
+\r
public override Task WriteLineAsync ()\r
{\r
CheckState ();\r
- DecoupledTask res; \r
- async_task = res = new DecoupledTask (base.WriteLineAsync ());\r
+\r
+ DecoupledTask res;\r
+ async_task = res = new DecoupledTask (WriteAsyncCore (CoreNewLine, 0, CoreNewLine.Length));\r
return res.Task;\r
}\r
\r
{\r
CheckState ();\r
DecoupledTask res;\r
- async_task = res = new DecoupledTask (base.WriteLineAsync (value));\r
+ async_task = res = new DecoupledTask (WriteLineAsyncCore (value));\r
return res.Task;\r
}\r
\r
+ async Task WriteLineAsyncCore (char value)\r
+ {\r
+ await WriteAsyncCore (value).ConfigureAwait (false);\r
+ await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+ \r
+ if (iflush)\r
+ await FlushCoreAsync ().ConfigureAwait (false);\r
+ } \r
+\r
public override Task WriteLineAsync (char[] buffer, int index, int count)\r
{\r
+ if (buffer == null)\r
+ throw new ArgumentNullException ("buffer");\r
+ if (index < 0)\r
+ throw new ArgumentOutOfRangeException ("index", "< 0");\r
+ if (count < 0)\r
+ throw new ArgumentOutOfRangeException ("count", "< 0");\r
+ // re-ordered to avoid possible integer overflow\r
+ if (index > buffer.Length - count)\r
+ throw new ArgumentException ("index + count > buffer.Length");\r
+\r
CheckState ();\r
DecoupledTask res;\r
- async_task = res = new DecoupledTask (base.WriteLineAsync (buffer, index, count));\r
+ async_task = res = new DecoupledTask (WriteLineAsyncCore (buffer, index, count));\r
return res.Task;\r
}\r
\r
+ async Task WriteLineAsyncCore (char[] buffer, int index, int count)\r
+ {\r
+ // Debug.Assert (buffer == null);\r
+\r
+ await LowLevelWriteAsync (buffer, index, count).ConfigureAwait (false);\r
+ await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+ \r
+ if (iflush)\r
+ await FlushCoreAsync ().ConfigureAwait (false);\r
+ } \r
+\r
public override Task WriteLineAsync (string value)\r
{\r
+ if (value == null)\r
+ return WriteLineAsync ();\r
+\r
CheckState ();\r
DecoupledTask res; \r
- async_task = res = new DecoupledTask (base.WriteLineAsync (value));\r
+ async_task = res = new DecoupledTask (WriteAsyncCore (value, true));\r
return res.Task;\r
}\r
#endif\r
public bool TryGetValue (TKey key, out TValue value)
{
- if (key == default (TKey))
+ if (key == null)
throw new ArgumentNullException ("Null key", "key");
value = default (TValue);
public TValue GetValue (TKey key, CreateValueCallback createValueCallback)
{
- if (key == default (TKey))
- throw new ArgumentNullException ("Null key", "key");
if (createValueCallback == null)
throw new ArgumentNullException ("Null create delegate", "createValueCallback");
public void OnCompleted (Action continuation)
{
- if (continuation == null)
- throw new ArgumentNullException ("continuation");
-
- if (TaskScheduler.Current == TaskScheduler.Default) {
- //
- // Pass continuation as an argument to avoid allocating
- // hoisting class
- //
- ThreadPool.QueueUserWorkItem (l => ((Action) l) (), continuation);
- } else {
- new Task (continuation).Start (TaskScheduler.Current);
- }
+ OnCompleted (continuation, false);
}
-
+
public void UnsafeOnCompleted (Action continuation)
+ {
+ OnCompleted (continuation, true);
+ }
+
+ void OnCompleted (Action continuation, bool isUnsafe)
{
if (continuation == null)
throw new ArgumentNullException ("continuation");
+ var ctx = SynchronizationContext.Current;
+ if (ctx != null) {
+ ctx.Post (l => ((Action) l) (), continuation);
+ return;
+ }
+
if (TaskScheduler.Current == TaskScheduler.Default) {
//
- // Pass the continuation as an argument to avoid allocating
+ // Pass continuation as an argument to avoid allocating
// hoisting class
//
- ThreadPool.UnsafeQueueUserWorkItem (l => ((Action) l) (), continuation);
- } else {
- new Task (continuation).Start (TaskScheduler.Current);
+ WaitCallback callBack = l => ((Action) l) ();
+ if (isUnsafe) {
+ ThreadPool.UnsafeQueueUserWorkItem (callBack, continuation);
+ } else {
+ ThreadPool.QueueUserWorkItem (callBack, continuation);
+ }
+ return;
}
+
+ new Task (continuation).Start (TaskScheduler.Current);
}
public void GetResult ()
//
// Authors:
// Thomas Neidhart (tome@sbox.tugraz.at)
-// Sebastien Pouliot (sebastien@ximian.com)
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
if (strName == null)
throw new ArgumentNullException ("strName");
- try {
- // just to test, we don't need the object
- SHA1.Create (strName);
- }
- catch (InvalidCastException) {
+ var instance = HashAlgorithm.Create (strName) as SHA1;
+ if (instance == null)
throw new CryptographicUnexpectedOperationException (
Locale.GetText ("DSA requires SHA1"));
- }
}
public override void SetKey (AsymmetricAlgorithm key)
//
// Authors:
// Thomas Neidhart (tome@sbox.tugraz.at)
-// Sebastien Pouliot (sebastien@ximian.com)
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
if (strName == null)
throw new ArgumentNullException ("strName");
- try {
- // just to test, we don't need the object
- SHA1.Create (strName);
- }
- catch (InvalidCastException) {
+ var instance = HashAlgorithm.Create (strName) as SHA1;
+ if (instance == null)
throw new CryptographicUnexpectedOperationException (
Locale.GetText ("DSA requires SHA1"));
- }
}
public override void SetKey (AsymmetricAlgorithm key)
// HMAC.cs: Generic HMAC inplementation
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
Array.Clear (buf, 0, buf.Length);
}
+#if FULL_AOT_RUNTIME
+ // Allow using HMAC without bringing (most of) the whole crypto stack (using CryptoConfig)
+ // or even without bringing all the hash algorithms (using a common switch)
+ internal void SetHash (string name, HashAlgorithm instance)
+ {
+ _hashName = name;
+ _algo = instance;
+ }
+#endif
// static methods
public static new HMAC Create ()
// HMACMD5.cs: HMAC implementation using MD5
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
public HMACMD5 (byte[] key) : base ()
{
+#if FULL_AOT_RUNTIME
+ SetHash ("MD5", new MD5CryptoServiceProvider ());
+#else
HashName = "MD5";
+#endif
HashSizeValue = 128;
Key = key;
}
// HMACRIPEMD160.cs: HMAC implementation using RIPEMD160
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
public HMACRIPEMD160 (byte[] key) : base ()
{
+#if FULL_AOT_RUNTIME
+ SetHash ("RIPEMD160", new RIPEMD160Managed ());
+#else
HashName = "RIPEMD160";
+#endif
HashSizeValue = 160;
Key = key;
}
// HMACSHA1.cs: Handles HMAC with SHA-1
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
public HMACSHA1 (byte[] key)
{
+#if FULL_AOT_RUNTIME
+ SetHash ("SHA1", new SHA1Managed ());
+#else
HashName = "SHA1";
+#endif
HashSizeValue = 160;
Key = key;
}
// HMACSHA256.cs: HMAC implementation using SHA256
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
public HMACSHA256 (byte[] key) : base ()
{
+#if FULL_AOT_RUNTIME
+ SetHash ("SHA256", new SHA256Managed ());
+#else
HashName = "SHA256";
+#endif
HashSizeValue = 256;
Key = key;
}
// HMACSHA384.cs: HMAC implementation using SHA384
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
[ComVisible (true)]
public class HMACSHA384 : HMAC {
- static bool legacy_mode;
private bool legacy;
+#if !FULL_AOT_RUNTIME
+ static bool legacy_mode;
+
static HMACSHA384 ()
{
legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
}
+#endif
public HMACSHA384 ()
: this (KeyBuilder.Key (8))
{
- ProduceLegacyHmacValues = legacy_mode;
}
public HMACSHA384 (byte[] key)
{
+#if FULL_AOT_RUNTIME
+ BlockSizeValue = 128;
+ SetHash ("SHA384", new SHA384Managed ());
+#else
ProduceLegacyHmacValues = legacy_mode;
HashName = "SHA384";
+#endif
HashSizeValue = 384;
Key = key;
}
// HMACSHA512.cs: HMAC implementation using SHA512
//
// Author:
-// Sebastien Pouliot <sebastien@ximian.com>
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
[ComVisible (true)]
public class HMACSHA512 : HMAC {
- static bool legacy_mode;
private bool legacy;
+#if !FULL_AOT_RUNTIME
+ static bool legacy_mode;
+
static HMACSHA512 ()
{
legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
}
+#endif
public HMACSHA512 ()
: this (KeyBuilder.Key (8))
{
- ProduceLegacyHmacValues = legacy_mode;
}
public HMACSHA512 (byte[] key)
{
+#if FULL_AOT_RUNTIME
+ BlockSizeValue = 128;
+ SetHash ("SHA512", new SHA512Managed ());
+#else
ProduceLegacyHmacValues = legacy_mode;
HashName = "SHA512";
+#endif
HashSizeValue = 512;
Key = key;
}
// MACTripleDES.cs: Handles MAC with TripleDES
//
// Author:
-// Sebastien Pouliot (sebastien@ximian.com)
+// Sebastien Pouliot <sebastien@xamarin.com>
//
// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 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
public MACTripleDES ()
{
- Setup ("TripleDES", null);
+ Setup (null, null);
}
public MACTripleDES (byte[] rgbKey)
{
if (rgbKey == null)
throw new ArgumentNullException ("rgbKey");
- Setup ("TripleDES", rgbKey);
+ Setup (null, rgbKey);
}
public MACTripleDES (string strTripleDES, byte[] rgbKey)
if (rgbKey == null)
throw new ArgumentNullException ("rgbKey");
if (strTripleDES == null)
- Setup ("TripleDES", rgbKey);
+ Setup (null, rgbKey);
else
- Setup (strTripleDES, rgbKey);
+ Setup (TripleDES.Create (strTripleDES), rgbKey);
}
- private void Setup (string strTripleDES, byte[] rgbKey)
+ private void Setup (TripleDES tripleDES, byte[] rgbKey)
{
- tdes = TripleDES.Create (strTripleDES);
+ tdes = tripleDES ?? TripleDES.Create ();
// default padding (as using in Fx 1.0 and 1.1)
tdes.Padding = PaddingMode.Zeros;
// if rgbKey is null we keep the randomly generated key
// Constructors
public SecurityException ()
- : base (Locale.GetText ("A security error has been detected."))
+ : this (Locale.GetText ("A security error has been detected."))
{
- base.HResult = unchecked ((int)0x8013150A);
}
public SecurityException (string message)
{
base.GetObjectData (info, context);
try {
- info.AddValue ("PermissionState", PermissionState);
+ info.AddValue ("PermissionState", permissionState);
}
catch (SecurityException) {
// serialize only if permitted to do so
+//
// AggregateException.cs
//
+// Authors:
+// Marek Safar (marek.safar@gmail.com)
+//
// Copyright (c) 2008 Jérémie "Garuma" Laval
+// Copyright (C) 2013 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
namespace System
{
-
[System.SerializableAttribute]
[System.Diagnostics.DebuggerDisplay ("Count = {InnerExceptions.Count}")]
public class AggregateException : Exception
public void Handle (Func<Exception, bool> predicate)
{
+ if (predicate == null)
+ throw new ArgumentNullException ("predicate");
+
List<Exception> failed = new List<Exception> ();
foreach (var e in innerExceptions) {
- try {
- if (!predicate (e))
- failed.Add (e);
- } catch {
- throw new AggregateException (failed);
- }
+ if (!predicate (e))
+ failed.Add (e);
}
+
if (failed.Count > 0)
throw new AggregateException (failed);
}
static
class BitConverter
{
- static readonly bool SwappedWordsInDouble = DoubleWordsAreSwapped ();
public static readonly bool IsLittleEndian = AmILittleEndian ();
static unsafe bool AmILittleEndian ()
{
// binary representations of 1.0:
- // big endian: 3f f0 00 00 00 00 00 00
- // little endian: 00 00 00 00 00 00 f0 3f
- // arm fpa little endian: 00 00 f0 3f 00 00 00 00
+ // big endian: 3f f0 00 00 00 00 00 00
+ // little endian: 00 00 00 00 00 00 f0 3f
double d = 1.0;
byte *b = (byte*)&d;
return (b [0] == 0);
}
- static unsafe bool DoubleWordsAreSwapped ()
- {
- // binary representations of 1.0:
- // big endian: 3f f0 00 00 00 00 00 00
- // little endian: 00 00 00 00 00 00 f0 3f
- // arm fpa little endian: 00 00 f0 3f 00 00 00 00
- double d = 1.0;
- byte *b = (byte*)&d;
- return b [2] == 0xf0;
- }
-
public unsafe static long DoubleToInt64Bits (double value)
{
return *(long *) &value;
return *(double *) &value;
}
- internal static double InternalInt64BitsToDouble (long value)
- {
- return SwappableToDouble (GetBytes (value), 0);
- }
-
unsafe static byte[] GetBytes (byte *ptr, int count)
{
byte [] ret = new byte [count];
unsafe public static byte[] GetBytes (double value)
{
- if (SwappedWordsInDouble) {
- byte[] data = new byte [8];
- byte *p = (byte*)&value;
- data [0] = p [4];
- data [1] = p [5];
- data [2] = p [6];
- data [3] = p [7];
- data [4] = p [0];
- data [5] = p [1];
- data [6] = p [2];
- data [7] = p [3];
- return data;
- } else {
- return GetBytes ((byte *) &value, 8);
- }
+ return GetBytes ((byte *) &value, 8);
}
unsafe static void PutBytes (byte *dst, byte[] src, int start_index, int count)
{
double ret;
- if (SwappedWordsInDouble) {
- byte* p = (byte*)&ret;
- if (value == null)
- throw new ArgumentNullException ("value");
-
- if (startIndex < 0 || (startIndex > value.Length - 1))
- throw new ArgumentOutOfRangeException ("startIndex", "Index was"
- + " out of range. Must be non-negative and less than the"
- + " size of the collection.");
-
- // avoid integer overflow (with large pos/neg start_index values)
- if (value.Length - 8 < startIndex)
- throw new ArgumentException ("Destination array is not long"
- + " enough to copy all the items in the collection."
- + " Check array index and length.");
-
- p [0] = value [startIndex + 4];
- p [1] = value [startIndex + 5];
- p [2] = value [startIndex + 6];
- p [3] = value [startIndex + 7];
- p [4] = value [startIndex + 0];
- p [5] = value [startIndex + 1];
- p [6] = value [startIndex + 2];
- p [7] = value [startIndex + 3];
-
- return ret;
- }
-
PutBytes ((byte *) &ret, value, startIndex, 8);
return ret;
}
- unsafe internal static double SwappableToDouble (byte[] value, int startIndex)
- {
- double ret;
-
- if (SwappedWordsInDouble) {
- byte* p = (byte*)&ret;
- if (value == null)
- throw new ArgumentNullException ("value");
-
- if (startIndex < 0 || (startIndex > value.Length - 1))
- throw new ArgumentOutOfRangeException ("startIndex", "Index was"
- + " out of range. Must be non-negative and less than the"
- + " size of the collection.");
-
- // avoid integer overflow (with large pos/neg start_index values)
- if (value.Length - 8 < startIndex)
- throw new ArgumentException ("Destination array is not long"
- + " enough to copy all the items in the collection."
- + " Check array index and length.");
-
- p [0] = value [startIndex + 4];
- p [1] = value [startIndex + 5];
- p [2] = value [startIndex + 6];
- p [3] = value [startIndex + 7];
- p [4] = value [startIndex + 0];
- p [5] = value [startIndex + 1];
- p [6] = value [startIndex + 2];
- p [7] = value [startIndex + 3];
-
- return ret;
- } else if (!IsLittleEndian) {
- byte* p = (byte*)&ret;
- if (value == null)
- throw new ArgumentNullException ("value");
-
- if (startIndex < 0 || (startIndex > value.Length - 1))
- throw new ArgumentOutOfRangeException ("startIndex", "Index was"
- + " out of range. Must be non-negative and less than the"
- + " size of the collection.");
-
- // avoid integer overflow (with large pos/neg start_index values)
- if (value.Length - 8 < startIndex)
- throw new ArgumentException ("Destination array is not long"
- + " enough to copy all the items in the collection."
- + " Check array index and length.");
-
- p [0] = value [startIndex + 7];
- p [1] = value [startIndex + 6];
- p [2] = value [startIndex + 5];
- p [3] = value [startIndex + 4];
- p [4] = value [startIndex + 3];
- p [5] = value [startIndex + 2];
- p [6] = value [startIndex + 1];
- p [7] = value [startIndex + 0];
-
- return ret;
- }
-
- PutBytes ((byte *) &ret, value, startIndex, 8);
-
- return ret;
- }
-
public static string ToString (byte[] value)
{
if (value == null)
//
// (C) Ximian, Inc. http://www.ximian.com
// (C) 2004,2005 Novell, Inc. (http://www.novell.com)
-//
+// Copyright 2013 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
namespace System
{
- public static class Console
+ public static partial class Console
{
#if !NET_2_1
private class WindowsConsole
stdin = new CStreamReader (OpenStandardInput (0), inputEncoding);
} else {
#endif
+// FULL_AOT_RUNTIME is used (instead of MONOTOUCH) since we only want this code when running on
+// iOS (simulator or devices) and *not* when running tools (e.g. btouch #12179) that needs to use
+// the mscorlib.dll shipped with Xamarin.iOS
#if FULL_AOT_RUNTIME
- Type nslogwriter = Type.GetType ("MonoTouch.Foundation.NSLogWriter, monotouch, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
- stdout = (TextWriter) Activator.CreateInstance (nslogwriter);
+ stdout = new NSLogWriter ();
#else
stdout = new UnexceptionalStreamWriter (OpenStandardOutput (0), outputEncoding);
((StreamWriter)stdout).AutoFlush = true;
stdout = TextWriter.Synchronized (stdout, true);
#if FULL_AOT_RUNTIME
- stderr = (TextWriter) Activator.CreateInstance (nslogwriter);
+ stderr = new NSLogWriter ();
#else
stderr = new UnexceptionalStreamWriter (OpenStandardError (0), outputEncoding);
((StreamWriter)stderr).AutoFlush = true;
--- /dev/null
+//
+// Helper for Console to allow indirect access to `stdout` using NSLog
+//
+// Authors:
+// Sebastien Pouliot <sebastien@xamarin.com>
+//
+// Copyright 2012-2013 Xamarin Inc. All rights reserved.
+//
+
+#if FULL_AOT_RUNTIME
+
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace System {
+
+ public static partial class Console {
+
+ class NSLogWriter : TextWriter {
+
+ [DllImport ("__Internal", CharSet=CharSet.Unicode)]
+ extern static void monotouch_log (string s);
+
+ StringBuilder sb;
+
+ public NSLogWriter ()
+ {
+ sb = new StringBuilder ();
+ }
+
+ public override System.Text.Encoding Encoding {
+ get { return System.Text.Encoding.UTF8; }
+ }
+
+ public override void Flush ()
+ {
+ try {
+ monotouch_log (sb.ToString ());
+ sb.Length = 0;
+ }
+ catch (Exception) {
+ }
+ }
+
+ // minimum to override - see http://msdn.microsoft.com/en-us/library/system.io.textwriter.aspx
+ public override void Write (char value)
+ {
+ try {
+ sb.Append (value);
+ }
+ catch (Exception) {
+ }
+ }
+
+ // optimization (to avoid concatening chars)
+ public override void Write (string value)
+ {
+ try {
+ sb.Append (value);
+ if (value != null && value.Length >= CoreNewLine.Length && EndsWithNewLine (value))
+ Flush ();
+ }
+ catch (Exception) {
+ }
+ }
+
+ bool EndsWithNewLine (string value)
+ {
+ for (int i = 0, v = value.Length - CoreNewLine.Length; i < CoreNewLine.Length; ++i, ++v) {
+ if (value [v] != CoreNewLine [i])
+ return false;
+ }
+
+ return true;
+ }
+
+ public override void WriteLine ()
+ {
+ try {
+ Flush ();
+ }
+ catch (Exception) {
+ }
+ }
+ }
+ }
+}
+
+#endif
\ No newline at end of file
public override string ToString ()
{
- return ToString ("G");
+ return Format (GetType (), Value, "G");
}
[Obsolete("Provider is ignored, just use ToString")]
private static string FormatSpecifier_X (Type enumType, object value, bool upper)
{
switch (Type.GetTypeCode (enumType)) {
- case TypeCode.SByte:
- return ((sbyte)value).ToString (upper ? "X2" : "x2");
- case TypeCode.Byte:
- return ((byte)value).ToString (upper ? "X2" : "x2");
- case TypeCode.Int16:
- return ((short)value).ToString (upper ? "X4" : "x4");
- case TypeCode.UInt16:
- return ((ushort)value).ToString (upper ? "X4" : "x4");
- case TypeCode.Int32:
- return ((int)value).ToString (upper ? "X8" : "x8");
- case TypeCode.UInt32:
- return ((uint)value).ToString (upper ? "X8" : "x8");
- case TypeCode.Int64:
- return ((long)value).ToString (upper ? "X16" : "x16");
- case TypeCode.UInt64:
- return ((ulong)value).ToString (upper ? "X16" : "x16");
- default:
- throw new Exception ("Invalid type code for enumeration.");
+ case TypeCode.SByte:
+ return NumberFormatter.NumberToString (upper ? "X2" : "x2", ((sbyte)value), null);
+ case TypeCode.Byte:
+ return NumberFormatter.NumberToString (upper ? "X2" : "x2", ((byte)value), null);
+ case TypeCode.Int16:
+ return NumberFormatter.NumberToString (upper ? "X4" : "x4", ((short)value), null);
+ case TypeCode.UInt16:
+ return NumberFormatter.NumberToString (upper ? "X4" : "x4", ((ushort)value), null);
+ case TypeCode.Int32:
+ return NumberFormatter.NumberToString (upper ? "X8" : "x8", ((int)value), null);
+ case TypeCode.UInt32:
+ return NumberFormatter.NumberToString (upper ? "X8" : "x8", ((uint)value), null);
+ case TypeCode.Int64:
+ return NumberFormatter.NumberToString (upper ? "X16" : "x16", ((long)value), null);
+ case TypeCode.UInt64:
+ return NumberFormatter.NumberToString (upper ? "X16" : "x16", ((ulong)value), null);
+ default:
+ throw new Exception ("Invalid type code for enumeration.");
}
}
char hexDigit;
// Number stuff
- do {
+ while (pos < s.Length) {
if (!ValidDigit (s [pos], AllowHexSpecifier)) {
if (AllowThousands &&
exc = new OverflowException ("Value too large or too small.");
return false;
}
- } while (pos < s.Length);
+ }
// Post number stuff
if (nDigits == 0) {
char hexDigit;
// Number stuff
- do {
+ while (pos < s.Length) {
if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
if (AllowThousands &&
exc = new OverflowException ("Value too large or too small.");
return false;
}
- } while (pos < s.Length);
+ }
// Post number stuff
if (nDigits == 0) {
public string ToString (string format)
{
if (Size == 4)
- return ((int) m_value).ToString (format);
+ return ((int) m_value).ToString (format, null);
else
- return ((long) m_value).ToString (format);
+ return ((long) m_value).ToString (format, null);
}
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
int[] lens = new int [3];
int index = 0;
int lastPos = 0;
- char literal = '\0';
+ bool quoted = false;
+
for (int i = 0; i < format.Length; i++) {
char c = format [i];
- if (c == literal || (literal == '\0' && (c == '\"' || c == '\''))) {
- if (literal == '\0')
- literal = c;
- else
- literal = '\0';
+ if (c == '\"' || c == '\'') {
+ if (i == 0 || format [i - 1] != '\\')
+ quoted = !quoted;
+
continue;
}
- if (literal == '\0' && format [i] == ';' && (i == 0 || format [i - 1] != '\\')) {
+ if (c == ';' && !quoted && (i == 0 || format [i - 1] != '\\')) {
lens [index++] = i - lastPos;
lastPos = i + 1;
if (index == 3)
// Number stuff
// Just the same as Int32, but this one adds instead of substract
- do {
+ while (pos < s.Length) {
if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
if (AllowThousands &&
exc = new OverflowException (Locale.GetText ("Value too large or too small."));
return false;
}
- } while (pos < s.Length);
+ }
// Post number stuff
if (nDigits == 0) {
// Number stuff
// Just the same as Int32, but this one adds instead of substract
- do {
+ while (pos < s.Length) {
if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
if (AllowThousands &&
exc = new OverflowException (Locale.GetText ("Value too large or too small."));
return false;
}
- } while (pos < s.Length);
+ }
// Post number stuff
if (nDigits == 0) {
}
}
+ public static object GetValueAt(int vt, IntPtr addr)
+ {
+ object obj = null;
+ switch ((VarEnum)vt)
+ {
+ case VarEnum.VT_I1:
+ obj = (sbyte)Marshal.ReadByte(addr);
+ break;
+ case VarEnum.VT_UI1:
+ obj = Marshal.ReadByte(addr);
+ break;
+ case VarEnum.VT_I2:
+ obj = Marshal.ReadInt16(addr);
+ break;
+ case VarEnum.VT_UI2:
+ obj = (ushort)Marshal.ReadInt16(addr);
+ break;
+ case VarEnum.VT_I4:
+ obj = Marshal.ReadInt32(addr);
+ break;
+ case VarEnum.VT_UI4:
+ obj = (uint)Marshal.ReadInt32(addr);
+ break;
+ case VarEnum.VT_I8:
+ obj = Marshal.ReadInt64(addr);
+ break;
+ case VarEnum.VT_UI8:
+ obj = (ulong)Marshal.ReadInt64(addr);
+ break;
+ case VarEnum.VT_R4:
+ obj = Marshal.PtrToStructure(addr, typeof(float));
+ break;
+ case VarEnum.VT_R8:
+ obj = Marshal.PtrToStructure(addr, typeof(double));
+ break;
+ case VarEnum.VT_BOOL:
+ obj = !(Marshal.ReadInt16(addr) == 0);
+ break;
+ case VarEnum.VT_BSTR:
+ obj = Marshal.PtrToStringBSTR(Marshal.ReadIntPtr(addr));
+ break;
+// GetObjectForIUnknown is excluded from Marshal using FULL_AOT_RUNTIME
+#if !MONOTOUCH
+ case VarEnum.VT_UNKNOWN:
+ case VarEnum.VT_DISPATCH:
+ {
+ IntPtr ifaceaddr = Marshal.ReadIntPtr(addr);
+ if (ifaceaddr != IntPtr.Zero)
+ obj = Marshal.GetObjectForIUnknown(ifaceaddr);
+ break;
+ }
+#endif
+ }
+ return obj;
+ }
+
public object GetValue() {
object obj = null;
switch ((VarEnum)vt)
obj = Marshal.GetObjectForIUnknown(pdispVal);
break;
#endif
+ default:
+ if (((VarEnum)vt & VarEnum.VT_BYREF) == VarEnum.VT_BYREF &&
+ pdispVal != IntPtr.Zero)
+ {
+ obj = GetValueAt(vt & ~(short)VarEnum.VT_BYREF, pdispVal);
+ }
+ break;
}
return obj;
}
}
[Test]
+ // This can fail on systems where CultureInfo.CurrentCulture==null
+ [Category ("NotWorking")]
public void CurrentRegion ()
{
Assert.IsNotNull (RegionInfo.CurrentRegion, "CurrentRegion");
Assert.AreEqual (1, ms.Length);
}
+ [Test]
+ public void WriteAsync ()
+ {
+ var m = new MockStream(true, false, true);
+ var w = new StreamWriter (m);
+
+ var t = w.WriteAsync ("v");
+ Assert.IsTrue (t.Wait (1000), "#1");
+
+ t = w.WriteAsync ((string) null);
+ Assert.IsTrue (t.Wait (1000), "#2");
+
+ t = w.WriteLineAsync ("line");
+ Assert.IsTrue (t.Wait (1000), "#3");
+
+ t = w.WriteLineAsync ((string) null);
+ Assert.IsTrue (t.Wait (1000), "#4");
+
+ t = w.WriteLineAsync ('c');
+ Assert.IsTrue (t.Wait (1000), "#5");
+ }
+
#endif
// TODO - Write - test errors, functionality tested in TestFlush.
Throws (typeof (ArgumentNullException), () => new AggregateException ((Exception[])null));
}
+ [Test]
+ [ExpectedException (typeof (ArgumentNullException))]
+ public void Handle_Invalid ()
+ {
+ e.Handle (null);
+ }
+
+ [Test]
+ public void Handle_AllHandled ()
+ {
+ e.Handle (l => true);
+ }
+
+ [Test]
+ public void Handle_Unhandled ()
+ {
+ try {
+ e.Handle (l => l is AggregateException);
+ Assert.Fail ();
+ } catch (AggregateException e) {
+ Assert.AreEqual (1, e.InnerExceptions.Count);
+ }
+ }
+
static void Throws (Type t, Action action)
{
Exception e = null;
Assert.AreEqual (true, Int32.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
Assert.AreEqual (-1, result);
Assert.AreEqual (false, Int32.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.IsFalse (int.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+ Assert.IsFalse (int.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
}
[Test]
}
}
+ [Test]
+ public void TestTryParse()
+ {
+ long result;
+
+ Assert.AreEqual (true, long.TryParse (MyString1, out result));
+ Assert.AreEqual (MyInt64_1, result);
+ Assert.AreEqual (true, long.TryParse (MyString2, out result));
+ Assert.AreEqual (MyInt64_2, result);
+ Assert.AreEqual (true, long.TryParse (MyString3, out result));
+ Assert.AreEqual (MyInt64_3, result);
+
+ Assert.AreEqual (true, long.TryParse ("1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, long.TryParse (" 1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, long.TryParse (" 1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, long.TryParse ("1 ", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, long.TryParse ("+1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, long.TryParse ("-1", out result));
+ Assert.AreEqual (-1, result);
+ Assert.AreEqual (true, long.TryParse (" -1", out result));
+ Assert.AreEqual (-1, result);
+ Assert.AreEqual (true, long.TryParse (" -1 ", out result));
+ Assert.AreEqual (-1, result);
+ Assert.AreEqual (true, long.TryParse (" -1 ", out result));
+ Assert.AreEqual (-1, result);
+
+ result = 1;
+ Assert.AreEqual (false, long.TryParse (null, out result));
+ Assert.AreEqual (0, result);
+
+ Assert.AreEqual (false, long.TryParse ("not-a-number", out result));
+
+ double OverInt = (double)long.MaxValue + 1;
+ Assert.AreEqual (false, long.TryParse (OverInt.ToString (), out result));
+ Assert.AreEqual (false, long.TryParse (OverInt.ToString (), NumberStyles.None, CultureInfo.InvariantCulture, out result));
+
+ Assert.AreEqual (false, long.TryParse ("$42", NumberStyles.Integer, null, out result));
+ Assert.AreEqual (false, long.TryParse ("%42", NumberStyles.Integer, Nfi, out result));
+ Assert.AreEqual (false, long.TryParse ("$42", NumberStyles.Integer, Nfi, out result));
+ Assert.AreEqual (false, long.TryParse (" - 1 ", out result));
+ Assert.AreEqual (false, long.TryParse (" - ", out result));
+ Assert.AreEqual (true, long.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (true, long.TryParse ("10000000000", out result));
+ Assert.AreEqual (true, long.TryParse ("-10000000000", out result));
+ Assert.AreEqual (true, long.TryParse ("7fffffff", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (int.MaxValue, result);
+ Assert.AreEqual (true, long.TryParse ("80000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (2147483648, result);
+ Assert.AreEqual (true, long.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (uint.MaxValue, result);
+ Assert.AreEqual (true, long.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.IsFalse (long.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+ Assert.IsFalse (long.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
+ }
+
[Test]
public void TestToString()
{
{
Assert.AreEqual ("", 0.0.ToString ("X99", _nfi) , "#01");
}
+
+ [Test]
+ public void Test18000 ()
+ {
+ string formatString = "p 00.0000\\';n 0000.00\\';0.#\\'";
+
+ Assert.AreEqual ("p 08.3266'", 8.32663472.ToString (formatString, CultureInfo.InvariantCulture), "#1");
+ Assert.AreEqual ("n 0001.13'", (-1.1345343).ToString (formatString, CultureInfo.InvariantCulture), "#2");
+ Assert.AreEqual ("0'", 0.0.ToString (formatString, CultureInfo.InvariantCulture), "#3");
+ }
}
}
}
}
+ [Test]
+ public void TestTryParse()
+ {
+ uint result;
+
+ Assert.AreEqual (true, UInt32.TryParse (MyString1, out result));
+ Assert.AreEqual (MyUInt32_1, result);
+ Assert.AreEqual (true, UInt32.TryParse (MyString2, out result));
+ Assert.AreEqual (MyUInt32_2, result);
+ Assert.AreEqual (true, UInt32.TryParse (MyString3, out result));
+ Assert.AreEqual (MyUInt32_3, result);
+
+ Assert.AreEqual (true, UInt32.TryParse ("1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, UInt32.TryParse (" 1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, UInt32.TryParse (" 1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, UInt32.TryParse ("1 ", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, UInt32.TryParse ("+1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (false, UInt32.TryParse ("-1", out result));
+ Assert.AreEqual (false, UInt32.TryParse (" -1", out result));
+ Assert.AreEqual (false, UInt32.TryParse (" -1 ", out result));
+ Assert.AreEqual (false, UInt32.TryParse (" -1 ", out result));
+
+ result = 1;
+ Assert.AreEqual (false, UInt32.TryParse (null, out result));
+ Assert.AreEqual (0, result);
+
+ Assert.AreEqual (false, UInt32.TryParse ("not-a-number", out result));
+
+ double OverInt = (double)UInt32.MaxValue + 1;
+ Assert.AreEqual (false, UInt32.TryParse (OverInt.ToString (), out result));
+ Assert.AreEqual (false, UInt32.TryParse (OverInt.ToString (), NumberStyles.None, CultureInfo.InvariantCulture, out result));
+
+ Assert.AreEqual (false, UInt32.TryParse ("$42", NumberStyles.Integer, null, out result));
+ Assert.AreEqual (false, UInt32.TryParse ("%42", NumberStyles.Integer, Nfi, out result));
+ Assert.AreEqual (false, UInt32.TryParse ("$42", NumberStyles.Integer, Nfi, out result));
+ Assert.AreEqual (false, UInt32.TryParse (" - 1 ", out result));
+ Assert.AreEqual (false, UInt32.TryParse (" - ", out result));
+ Assert.AreEqual (true, UInt32.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (false, UInt32.TryParse ("10000000000", out result));
+ Assert.AreEqual (false, UInt32.TryParse ("-10000000000", out result));
+ Assert.AreEqual (true, UInt32.TryParse ("7fffffff", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (Int32.MaxValue, result);
+ Assert.AreEqual (true, UInt32.TryParse ("80000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (Int32.MaxValue + (uint)1, result);
+ Assert.AreEqual (true, UInt32.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (uint.MaxValue, result);
+ Assert.AreEqual (true, UInt32.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.IsFalse (uint.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+ Assert.IsFalse (uint.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
+ }
+
[Test]
public void TestToString()
{
}
}
+ [Test]
+ public void TestTryParse()
+ {
+ ulong result;
+
+ Assert.AreEqual (true, ulong.TryParse (MyString1, out result));
+ Assert.AreEqual (MyUInt64_1, result);
+ Assert.AreEqual (true, ulong.TryParse (MyString2, out result));
+ Assert.AreEqual (MyUInt64_2, result);
+ Assert.AreEqual (true, ulong.TryParse (MyString3, out result));
+ Assert.AreEqual (MyUInt64_3, result);
+
+ Assert.AreEqual (true, ulong.TryParse ("1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, ulong.TryParse (" 1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, ulong.TryParse (" 1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, ulong.TryParse ("1 ", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (true, ulong.TryParse ("+1", out result));
+ Assert.AreEqual (1, result);
+ Assert.AreEqual (false, ulong.TryParse ("-1", out result));
+ Assert.AreEqual (false, ulong.TryParse (" -1", out result));
+ Assert.AreEqual (false, ulong.TryParse (" -1 ", out result));
+ Assert.AreEqual (false, ulong.TryParse (" -1 ", out result));
+
+ result = 1;
+ Assert.AreEqual (false, ulong.TryParse (null, out result));
+ Assert.AreEqual (0, result);
+
+ Assert.AreEqual (false, ulong.TryParse ("not-a-number", out result));
+
+ double OverInt = (double)ulong.MaxValue + 1;
+ Assert.AreEqual (false, ulong.TryParse (OverInt.ToString (), out result));
+ Assert.AreEqual (false, ulong.TryParse (OverInt.ToString (), NumberStyles.None, CultureInfo.InvariantCulture, out result));
+
+ Assert.AreEqual (false, ulong.TryParse ("$42", NumberStyles.Integer, null, out result));
+ Assert.AreEqual (false, ulong.TryParse ("%42", NumberStyles.Integer, Nfi, out result));
+ Assert.AreEqual (false, ulong.TryParse ("$42", NumberStyles.Integer, Nfi, out result));
+ Assert.AreEqual (false, ulong.TryParse (" - 1 ", out result));
+ Assert.AreEqual (false, ulong.TryParse (" - ", out result));
+ Assert.AreEqual (true, ulong.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (true, ulong.TryParse ("10000000000", out result));
+ Assert.AreEqual (false, ulong.TryParse ("-10000000000", out result));
+ Assert.AreEqual (true, ulong.TryParse ("7fffffff", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (int.MaxValue, result);
+ Assert.AreEqual (true, ulong.TryParse ("80000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (2147483648, result);
+ Assert.AreEqual (true, ulong.TryParse ("ffffffff", NumberStyles.HexNumber, Nfi, out result));
+ Assert.AreEqual (uint.MaxValue, result);
+ Assert.AreEqual (true, ulong.TryParse ("100000000", NumberStyles.HexNumber, Nfi, out result));
+ Assert.IsFalse (ulong.TryParse ("-", NumberStyles.AllowLeadingSign, Nfi, out result));
+ Assert.IsFalse (ulong.TryParse (Nfi.CurrencySymbol + "-", NumberStyles.AllowLeadingSign | NumberStyles.AllowCurrencySymbol, Nfi, out result));
+ }
+
[Test]
public void TestToString()
{
System/CStreamReader.cs
System/CStreamWriter.cs
System/Console.cs
+System/Console.iOS.cs
System/ConsoleCancelEventArgs.cs
System/ConsoleCancelEventHandler.cs
System/ConsoleColor.cs
$(IMAGES)
EXTRA_DISTFILES = \
+ jay.sh \
monodoc.dll.config.in \
$(RESOURCE_FILES) \
Monodoc.Ecma/EcmaUrlParser.jay \
/r:System.Xml.Linq.dll \
/r:System.Configuration.dll
-TEST_MCS_FLAGS = /r:System.dll /r:System.Core.dll /r:System.Xml.dll /r:AgilityPack.dll
+TEST_MCS_FLAGS = /r:System.dll /r:System.Core.dll /r:System.Xml.dll
DOC_SOURCE_DIRS = \
../../docs \
all-local: $(the_lib).config Monodoc.Ecma/EcmaUrlParser.cs
-run-test-local: AgilityPack.dll
-
-test-local: setup-doc-sources AgilityPack.dll
+test-local: setup-doc-sources
dist-local: Monodoc.Ecma/EcmaUrlParser.cs
$(the_lib).config: Makefile monodoc.dll.config.in
sed 's,@monodoc_refdir@,$(mono_libdir)/monodoc,g' monodoc.dll.config.in > $@
-Monodoc.Ecma/EcmaUrlParser.cs: Monodoc.Ecma/EcmaUrlParser.jay $(topdir)/jay/skeleton.cs
- $(topdir)/jay/jay $(JAY_FLAGS) < $(topdir)/jay/skeleton.cs $< > jay-tmp.out && mv jay-tmp.out $@
+Monodoc.Ecma/EcmaUrlParser.cs: Monodoc.Ecma/EcmaUrlParser.jay $(topdir)/jay/skeleton.cs jay.sh
+ $(topdir)/$(thisdir)/jay.sh $(topdir) $< $@ $(JAY_FLAGS)
parser.exe: Monodoc.Ecma/EcmaUrlParser.cs Monodoc.Ecma/EcmaUrlTokenizer.cs Monodoc.Ecma/EcmaUrlParserDriver.cs Monodoc.Ecma/EcmaDesc.cs
mcs /out:$@ /debug $^
setup-doc-sources: $(DOC_SOURCES)
mkdir -p ./Test/monodoc_test/sources/
cp $(DOC_SOURCES) ./Test/monodoc_test/sources/
-
-AgilityPack.dll:
- cp $(topdir)/../docs/$(@) .
yield return indexDirectory;
yield return Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "monodoc");
}
+
+ [Obsolete]
+ public string GetTitle (string url)
+ {
+ return "Mono Documentation";
+ }
}
}
public string Export (Stream stream, Dictionary<string, string> extraArgs)
{
- return Htmlize (XmlReader.Create (stream), extraArgs);
+ return Htmlize (XmlReader.Create (WrapStream (new StreamReader (stream), extraArgs)), extraArgs);
}
public string Export (string input, Dictionary<string, string> extraArgs)
{
- return Htmlize (XmlReader.Create (new StringReader (input)), extraArgs);
+ return Htmlize (XmlReader.Create (WrapStream (new StringReader (input), extraArgs)), extraArgs);
+ }
+
+ TextReader WrapStream (TextReader initialReader, Dictionary<string, string> renderArgs)
+ {
+ string show;
+ if (renderArgs.TryGetValue ("show", out show) && show == "namespace")
+ return new AvoidCDataTextReader (initialReader);
+ return initialReader;
}
static void EnsureTransform ()
}
}
}
+
+ public class AvoidCDataTextReader : TextReader
+ {
+ static readonly char[] CDataPattern = new[] {
+ '<', '!', '[', 'C', 'D', 'A', 'T', 'A', '['
+ };
+ static readonly char[] CDataClosingPattern = new[] {
+ ']', ']', '>'
+ };
+ TextReader wrappedReader;
+ char[] backingArray = new char[9]; // "<![CDATA[".Length
+ int currentIndex = -1;
+ int eofIndex = -1;
+ bool inCData;
+
+ public AvoidCDataTextReader (TextReader wrappedReader)
+ {
+ this.wrappedReader = wrappedReader;
+ }
+
+ public override int Peek ()
+ {
+ if (!EnsureBuffer ())
+ return -1;
+ return (int)backingArray[currentIndex];
+ }
+
+ public override int Read ()
+ {
+ if (!EnsureBuffer ())
+ return -1;
+ var result = (int)backingArray[currentIndex];
+ var next = wrappedReader.Read ();
+ if (next == -1 && eofIndex == -1)
+ eofIndex = currentIndex;
+ else
+ backingArray[currentIndex] = (char)next;
+ currentIndex = (currentIndex + 1) % backingArray.Length;
+ return result;
+ }
+
+ void ReadLength (int length)
+ {
+ for (int i = 0; i < length; i++)
+ Read ();
+ }
+
+ bool EnsureBuffer ()
+ {
+ if (currentIndex == -1) {
+ currentIndex = 0;
+ var read = wrappedReader.ReadBlock (backingArray, 0, backingArray.Length);
+ if (read < backingArray.Length)
+ eofIndex = read;
+ return read > 0;
+ } else if (currentIndex == eofIndex) {
+ return false;
+ }
+ if (!inCData && PatternDetect (CDataPattern)) {
+ inCData = true;
+ ReadLength (CDataPattern.Length);
+ return EnsureBuffer ();
+ }
+ if (inCData && PatternDetect (CDataClosingPattern)) {
+ inCData = false;
+ ReadLength (CDataClosingPattern.Length);
+ return EnsureBuffer ();
+ }
+
+ return true;
+ }
+
+ bool PatternDetect (char[] pattern)
+ {
+ return backingArray[currentIndex] == pattern[0] && Enumerable.Range (1, pattern.Length - 1).All (i => backingArray[(currentIndex + i) % backingArray.Length] == pattern[i]);
+ }
+ }
}
var fullName = reader.GetAttribute ("FullName");
reader.ReadToFollowing ("AssemblyName");
var assemblyName = reader.ReadElementString ();
- reader.ReadToFollowing ("summary");
- var summary = reader.ReadInnerXml ();
- reader.ReadToFollowing ("remarks");
- var remarks = reader.ReadInnerXml ();
+ var summary = reader.ReadToFollowing ("summary") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("summary");
+ var remarks = reader.ReadToFollowing ("remarks") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("remarks");
return new XElement ("class",
new XAttribute ("name", name ?? string.Empty),
new XAttribute ("fullname", fullName ?? string.Empty),
new XAttribute ("assembly", assemblyName ?? string.Empty),
- new XElement ("summary", new XCData (summary)),
- new XElement ("remarks", new XCData (remarks)));
+ summary,
+ remarks);
}
}
}
using (var reader = XmlReader.Create (nsFile)) {
reader.ReadToFollowing ("Namespace");
var name = reader.GetAttribute ("Name");
- reader.ReadToFollowing ("summary");
- var summary = reader.ReadInnerXml ();
- reader.ReadToFollowing ("remarks");
- var remarks = reader.ReadInnerXml ();
+ var summary = reader.ReadToFollowing ("summary") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("summary");
+ var remarks = reader.ReadToFollowing ("remarks") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("remarks");
return new XElement ("namespace",
new XAttribute ("ns", name ?? string.Empty),
- new XElement ("summary", new XCData (summary)),
- new XElement ("remarks", new XCData (remarks)));
+ summary,
+ remarks);
}
}
--- /dev/null
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Collections.Generic;
+
+using NUnit.Framework;
+
+using Monodoc;
+using Monodoc.Generators;
+using Monodoc.Generators.Html;
+
+namespace MonoTests.Monodoc.Generators
+{
+ [TestFixture]
+ public class AvoidCDataTextReaderTest
+ {
+ void AssertSameInputOutput (string expected, string input)
+ {
+ var processed = new AvoidCDataTextReader (new StringReader (input)).ReadToEnd ();
+ Assert.AreEqual (expected, processed);
+ }
+
+ [Test]
+ public void NoCDataXmlTest ()
+ {
+ var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+ Provides access to the system Address Book.
+ </summary></class></elements>";
+
+ AssertSameInputOutput (input, input);
+ }
+
+ [Test]
+ public void WithCDataXmlTest ()
+ {
+ var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary><![CDATA[
+ Provides access to the system Address Book.]]>
+ </summary></class></elements>";
+
+ AssertSameInputOutput (input.Replace ("<![CDATA[", string.Empty).Replace ("]]>", string.Empty), input);
+ }
+
+ [Test]
+ public void PartialCDataXmlTest ()
+ {
+ var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary><![CDA[
+ Provides access to the system Address Book.]]>
+ </summary></class></elements>";
+
+ AssertSameInputOutput (input, input);
+ }
+
+ [Test]
+ public void FinishWithPartialCDataXmlTest ()
+ {
+ var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+ Provides access to the system Address Book.
+ </summary></class></elements><![CDA[";
+
+ AssertSameInputOutput (input, input);
+ }
+
+ [Test]
+ public void FinishWithCDataXmlTest ()
+ {
+ var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+ Provides access to the system Address Book.
+ </summary></class></elements><![CDATA[";
+
+ AssertSameInputOutput (input.Replace ("<![CDATA[", string.Empty), input);
+ }
+
+ [Test]
+ public void EmptyInputTest ()
+ {
+ AssertSameInputOutput (string.Empty, string.Empty);
+ }
+
+ [Test]
+ public void LimitedInputTest ()
+ {
+ AssertSameInputOutput ("foo", "foo");
+ }
+ }
+}
using Monodoc;
using Monodoc.Generators;
-using HtmlAgilityPack;
+// Used by ReachabilityWithCrefsTest
+// using HtmlAgilityPack;
namespace MonoTests.Monodoc
{
Assert.IsTrue (rootTree.RenderUrl ("T:System.IComparable{T}", generator, out result), "#6");
}
+ /*
[Test, Ignore ("Mono documentation is full of syntax errors so we can't use it reliably for this test")]
public void ReachabilityWithCrefsTest ()
{
}
Assert.AreEqual (0, errorCount, errorCount + " / " + crefs.Count);
- }
+ }*/
}
}
--- /dev/null
+#!/bin/sh
+
+TOPDIR=$1
+INPUT=$2
+OUTPUT=$3
+FLAGS=$4
+
+TEMPFILE=jay-tmp-$RANDOM.out
+
+$TOPDIR/jay/jay $FLAGS < $TOPDIR/jay/skeleton.cs $INPUT > $TEMPFILE && mv $TEMPFILE $OUTPUT
Monodoc.Generators/RawGeneratorTests.cs
Monodoc/NodeTest.cs
Monodoc/RootTreeTest.cs
+Monodoc.Generators/AvoidCDataTextReaderTests.cs
<OutputType>Library</OutputType>
<RootNamespace>System.Reactive</RootNamespace>
<AssemblyName>ASSEMBLY_NAME_GOES_HERE</AssemblyName>
- <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;SIGNED;NUNIT;MONODROID</DefineConstants>
- SIGNING_SPEC_GOES_HERE
+ <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;HAS_AWAIT;NUNIT;MONODROID;$(SignAssemblySpec)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<WarningLevel>4</WarningLevel>
<AndroidLinkMode>None</AndroidLinkMode>
<ConsolePause>False</ConsolePause>
+ <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;HAS_AWAIT;NUNIT;MONODROID;$(SignAssemblySpec)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>ASSEMBLY_NAME_GOES_HERE</AssemblyName>
<ProductSignAssembly>true</ProductSignAssembly>
- <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;NUNIT;SIGNED</DefineConstants>
- SIGNING_SPEC_GOES_HERE
+ <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;HAS_AWAIT;NUNIT;$(SignAssemblySpec)</DefineConstants>
<additionalargs>-delaySign</additionalargs>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug</OutputPath>
<ConsolePause>False</ConsolePause>
<WarningLevel>4</WarningLevel>
- <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;NUNIT;SIGNED</DefineConstants>
+ <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;HAS_AWAIT;NUNIT;$(SignAssemblySpec)</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
--- /dev/null
+// CS0534: `C' does not implement inherited abstract member `B.Foo()'
+// Line: 16
+
+class A
+{
+ public virtual void Foo ()
+ {
+ }
+}
+
+abstract class B : A
+{
+ public abstract override void Foo ();
+}
+
+class C : B
+{
+}
\ No newline at end of file
-// CS0534: `C' does not implement inherited abstract member `A.Foo(string)'
+// CS0534: `C' does not implement inherited abstract member `B.Foo(string)'
// Line: 13
public abstract class A
--- /dev/null
+// CS1534: Overloaded binary operator `+' takes two parameters
+// Line: 6
+
+class C
+{
+ public static C operator +()
+ {
+ return null;
+ }
+}
--- /dev/null
+// CS1705: Assembly `CS1705-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' references `CS1705-lib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=36f3ae7e947792e3' which has a higher version number than imported assembly `CS1705-lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=36f3ae7e947792e3'
+// Line: 0
+// Compiler options: -r:CS1705-lib.dll -r:dlls/second/CS1705-lib.dll -keyfile:key.snk
+
+class C
+{
+ public static void Main ()
+ {
+ A.Test (new B ());
+ }
+}
case MiscInstr.ldc_r8:\r
fpdata = (byte []) $2;\r
if (!BitConverter.IsLittleEndian) {\r
- // FIXME: handle the stupid ARM FPA format\r
System.Array.Reverse (fpdata, 0, 8);\r
}\r
double d = BitConverter.ToDouble (fpdata, 0);\r
}
var li_other = LocalVariable.CreateCompilerGenerated (CurrentType, equals_block, loc);
- equals_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_other.Type, loc), li_other));
+ equals_block.AddStatement (new BlockVariable (new TypeExpression (li_other.Type, loc), li_other));
var other_variable = new LocalVariableReference (li_other, loc);
MemberAccess system_collections_generic = new MemberAccess (new MemberAccess (
hashcode_top.AddStatement (new Unchecked (hashcode_block, loc));
var li_hash = LocalVariable.CreateCompilerGenerated (Compiler.BuiltinTypes.Int, hashcode_top, loc);
- hashcode_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_hash.Type, loc), li_hash));
+ hashcode_block.AddStatement (new BlockVariable (new TypeExpression (li_hash.Type, loc), li_hash));
LocalVariableReference hash_variable_assign = new LocalVariableReference (li_hash, loc);
hashcode_block.AddStatement (new StatementExpression (
new SimpleAssign (hash_variable_assign, rs_hashcode)));
//
// Copyright 2001, 2002, 2003 Ximian, Inc.
// Copyright 2004-2011 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
//
Dictionary<ITypeDefinition, Attribute> emitted_forwarders;
AssemblyAttributesPlaceholder module_target_attrs;
+ // Win32 version info values
+ string vi_product, vi_product_version, vi_company, vi_copyright, vi_trademark;
+
protected AssemblyDefinition (ModuleContainer module, string name)
{
this.module = module;
} else if (a.Type == pa.RuntimeCompatibility) {
wrap_non_exception_throws_custom = true;
} else if (a.Type == pa.AssemblyFileVersion) {
- string value = a.GetString ();
- if (string.IsNullOrEmpty (value) || IsValidAssemblyVersion (value, false) == null) {
+ vi_product_version = a.GetString ();
+ if (string.IsNullOrEmpty (vi_product_version) || IsValidAssemblyVersion (vi_product_version, false) == null) {
Report.Warning (1607, 1, a.Location, "The version number `{0}' specified for `{1}' is invalid",
- value, a.Name);
+ vi_product_version, a.Name);
return;
}
+ } else if (a.Type == pa.AssemblyProduct) {
+ vi_product = a.GetString ();
+ } else if (a.Type == pa.AssemblyCompany) {
+ vi_company = a.GetString ();
+ } else if (a.Type == pa.AssemblyDescription) {
+ // TODO: Needs extra api
+ } else if (a.Type == pa.AssemblyCopyright) {
+ vi_copyright = a.GetString ();
+ } else if (a.Type == pa.AssemblyTrademark) {
+ vi_trademark = a.GetString ();
}
-
SetCustomAttribute (ctor, cdata);
}
// no working SRE API
foreach (var entry in Importer.Assemblies) {
var a = entry as ImportedAssemblyDefinition;
- if (a == null)
+ if (a == null || a.IsMissing)
continue;
if (public_key != null && !a.HasStrongName) {
if (Compiler.Settings.Win32ResourceFile != null) {
Builder.DefineUnmanagedResource (Compiler.Settings.Win32ResourceFile);
} else {
- Builder.DefineVersionInfoResource ();
+ Builder.DefineVersionInfoResource (vi_product, vi_product_version, vi_company, vi_copyright, vi_trademark);
}
if (Compiler.Settings.Win32IconFile != null) {
//
-// attribute.cs: Attribute Handler
+// attribute.cs: Attributes handling
//
// Author: Ravi Pratap (ravi@ximian.com)
-// Marek Safar (marek.safar@seznam.cz)
+// Marek Safar (marek.safar@gmail.com)
//
// Dual licensed under the terms of the MIT X11 or GNU GPL
//
// Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
// Copyright 2003-2008 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
//
using System;
public readonly PredefinedDecimalAttribute DecimalConstant;
public readonly PredefinedAttribute StructLayout;
public readonly PredefinedAttribute FieldOffset;
+ public readonly PredefinedAttribute AssemblyProduct;
+ public readonly PredefinedAttribute AssemblyCompany;
+ public readonly PredefinedAttribute AssemblyDescription;
+ public readonly PredefinedAttribute AssemblyCopyright;
+ public readonly PredefinedAttribute AssemblyTrademark;
public readonly PredefinedAttribute CallerMemberNameAttribute;
public readonly PredefinedAttribute CallerLineNumberAttribute;
public readonly PredefinedAttribute CallerFilePathAttribute;
DecimalConstant = new PredefinedDecimalAttribute (module, "System.Runtime.CompilerServices", "DecimalConstantAttribute");
StructLayout = new PredefinedAttribute (module, "System.Runtime.InteropServices", "StructLayoutAttribute");
FieldOffset = new PredefinedAttribute (module, "System.Runtime.InteropServices", "FieldOffsetAttribute");
+ AssemblyProduct = new PredefinedAttribute (module, "System.Reflection", "AssemblyProductAttribute");
+ AssemblyCompany = new PredefinedAttribute (module, "System.Reflection", "AssemblyCompanyAttribute");
+ AssemblyDescription = new PredefinedAttribute (module, "System.Reflection", "AssemblyDescriptionAttribute");
+ AssemblyCopyright = new PredefinedAttribute (module, "System.Reflection", "AssemblyCopyrightAttribute");
+ AssemblyTrademark = new PredefinedAttribute (module, "System.Reflection", "AssemblyTrademarkAttribute");
AsyncStateMachine = new PredefinedStateMachineAttribute (module, "System.Runtime.CompilerServices", "AsyncStateMachineAttribute");
//
// Handle all parameter-less attributes as optional
//
- if (!IsDefined)
+ if (!Define ())
return false;
ctor = (MethodSpec) MemberCache.FindMember (type, MemberFilter.Constructor (ParametersCompiled.EmptyReadOnlyParameters), BindingRestriction.DeclaredOnly);
}
}
- public virtual void AddBasesForPart (List<FullNamedExpression> bases)
+ public virtual void SetBaseTypes (List<FullNamedExpression> baseTypes)
{
- type_bases = bases;
+ type_bases = baseTypes;
}
/// <summary>
visitor.Visit (this);
}
- public override void AddBasesForPart (List<FullNamedExpression> bases)
+ public override void SetBaseTypes (List<FullNamedExpression> baseTypes)
{
var pmn = MemberName;
if (pmn.Name == "Object" && !pmn.IsGeneric && Parent.MemberName.Name == "System" && Parent.MemberName.Left == null)
Report.Error (537, Location,
"The class System.Object cannot have a base class or implement an interface.");
- base.AddBasesForPart (bases);
+ base.SetBaseTypes (baseTypes);
}
public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
public LocationsBag LocationsBag { get; set; }
public bool UseJayGlobalArrays { get; set; }
- public Tokenizer.LocatedToken[] LocatedTokens { get; set; }
+ public LocatedToken[] LocatedTokens { get; set; }
public MD5 GetChecksumAlgorithm ()
{
/// </summary>
Block current_block;
- BlockVariableDeclaration current_variable;
+ BlockVariable current_variable;
Delegate current_delegate;
extern_alias_directive
: EXTERN_ALIAS IDENTIFIER IDENTIFIER SEMICOLON
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
string s = lt.Value;
if (s != "alias") {
syntax_error (lt.Location, "`alias' expected");
if (lang_version == LanguageVersion.ISO_1)
FeatureIsNotAvailable (lt.Location, "external alias");
- lt = (Tokenizer.LocatedToken) $3;
+ lt = (LocatedToken) $3;
if (lt.Value == QualifiedAliasMember.GlobalAlias) {
RootNamespace.Error_GlobalNamespaceRedefined (report, lt.Location);
}
}
| USING IDENTIFIER ASSIGN namespace_or_type_expr SEMICOLON
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") {
report.Warning (440, 2, lt.Location,
"An alias named `global' will not be used when resolving `global::'. The global namespace will be used instead");
namespace_name
: IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new MemberName (lt.Value, lt.Location);
}
| namespace_name DOT IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberName ((MemberName) $1, lt.Value, lt.Location);
}
| error
{
Error_SyntaxError (yyToken);
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
var tne = new SimpleName (lt.Value, null, lt.Location);
$$ = new List<Attribute> () {
attribute_target
: IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = CheckAttributeTarget (lt.Value, lt.Location);
}
| EVENT { $$ = "event"; }
expression
{
--lexer.parsing_block;
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new NamedArgument (lt.Value, lt.Location, (Expression) $4);
lbag.AddLocation ($$, GetLocation($2));
}
// Avoid boxing in common case (no modifier)
var arg_mod = $3 == null ? Argument.AType.None : (Argument.AType) $3;
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new NamedArgument (lt.Value, lt.Location, (Expression) $4, arg_mod);
lbag.AddLocation ($$, GetLocation($2));
}
opt_modifiers
CONST type IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $5;
+ var lt = (LocatedToken) $5;
var mod = (Modifiers) $2;
current_field = new Const (current_type, (FullNamedExpression) $4, mod, new MemberName (lt.Value, lt.Location), (Attributes) $1);
current_type.AddMember (current_field);
constant_declarator
: COMMA IDENTIFIER constant_initializer
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) $3);
lbag.AddLocation ($$, GetLocation ($1));
}
if (type.Type != null && type.Type.Kind == MemberKind.Void)
report.Error (670, GetLocation ($3), "Fields cannot have void type");
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
current_field = new Field (current_type, type, (Modifiers) $2, new MemberName (lt.Value, lt.Location), (Attributes) $1);
current_type.AddField (current_field);
$$ = current_field;
if (lang_version < LanguageVersion.ISO_2)
FeatureIsNotAvailable (GetLocation ($3), "fixed size buffers");
- var lt = (Tokenizer.LocatedToken) $5;
+ var lt = (LocatedToken) $5;
current_field = new FixedField (current_type, (FullNamedExpression) $4, (Modifiers) $2,
new MemberName (lt.Value, lt.Location), (Attributes) $1);
field_declarator
: COMMA IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null);
lbag.AddLocation ($$, GetLocation ($1));
}
variable_initializer
{
--lexer.parsing_block;
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (Expression) $5);
lbag.AddLocation ($$, GetLocation ($1), GetLocation ($3));
}
fixed_field_declarator
: COMMA IDENTIFIER fixed_field_size
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) $3);
lbag.AddLocation ($$, GetLocation ($1));
}
parameter_type
identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
$$ = new Parameter ((FullNamedExpression) $3, lt.Value, (Parameter.Modifier) $2, (Attributes) $1, lt.Location);
}
| opt_attributes
parameter_type
identifier_inside_body OPEN_BRACKET CLOSE_BRACKET
{
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name");
$$ = new Parameter ((FullNamedExpression) $3, lt.Value, (Parameter.Modifier) $2, (Attributes) $1, lt.Location);
}
if ((valid_param_mod & ParameterModifierType.DefaultValue) == 0)
report.Error (1065, GetLocation ($5), "Optional parameter is not valid in this context");
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
$$ = new Parameter ((FullNamedExpression) $3, lt.Value, mod, (Attributes) $1, lt.Location);
lbag.AddLocation ($$, GetLocation ($5));
parameter_array
: opt_attributes params_modifier type IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
$$ = new ParamsParameter ((FullNamedExpression) $3, lt.Value, (Attributes) $1, lt.Location);
}
| opt_attributes params_modifier type IDENTIFIER ASSIGN constant_expression
{
report.Error (1751, GetLocation ($2), "Cannot specify a default value for a parameter array");
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
$$ = new ParamsParameter ((FullNamedExpression) $3, lt.Value, (Attributes) $1, lt.Location);
}
| opt_attributes params_modifier type error
Operator.GetName (op));
}
} else {
- if (p_count > 2) {
+ if (p_count == 1) {
+ report.Error (1019, loc, "Overloadable unary operator expected");
+ } else if (p_count != 2) {
report.Error (1534, loc, "Overloaded binary operator `{0}' takes two parameters",
Operator.GetName (op));
- } else if (p_count != 2) {
- report.Error (1019, loc, "Overloadable unary operator expected");
}
}
valid_param_mod = 0;
current_local_parameters = (ParametersCompiled) $6;
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
var mods = (Modifiers) $2;
var c = new Constructor (current_type, lt.Value, mods, (Attributes) $1, current_local_parameters, lt.Location);
}
IDENTIFIER OPEN_PARENS CLOSE_PARENS method_body
{
- var lt = (Tokenizer.LocatedToken) $5;
+ var lt = (LocatedToken) $5;
if (lt.Value != current_container.MemberName.Name){
report.Error (574, lt.Location, "Name of destructor must match name of class");
} else if (current_container.Kind != MemberKind.Class){
event_declarator
: COMMA IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null);
lbag.AddLocation ($$, GetLocation ($1));
}
event_variable_initializer
{
--lexer.parsing_block;
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (Expression) $5);
lbag.AddLocation ($$, GetLocation ($1), GetLocation ($3));
}
enum_member_declaration
: opt_attributes IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) $1);
((Enum) current_type).AddEnumMember (em);
{
--lexer.parsing_block;
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) $1);
em.Initializer = new ConstInitializer (em, (Expression) $5, GetLocation ($4));
((Enum) current_type).AddEnumMember (em);
{
Error_SyntaxError (yyToken);
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var em = new EnumMember ((Enum) current_type, new MemberName (lt.Value, lt.Location), (Attributes) $1);
((Enum) current_type).AddEnumMember (em);
: member_name
| qualified_alias_member IDENTIFIER opt_type_argument_list
{
- var lt1 = (Tokenizer.LocatedToken) $1;
- var lt2 = (Tokenizer.LocatedToken) $2;
+ var lt1 = (LocatedToken) $1;
+ var lt2 = (LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($2));
: simple_name_expr
| namespace_or_type_expr DOT IDENTIFIER opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
simple_name_expr
: IDENTIFIER opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new SimpleName (lt.Value, (TypeArguments)$2, lt.Location);
}
;
opt_type_parameter_list
{
lexer.parsing_generic_declaration = false;
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new MemberName (lt.Value, (TypeParameters)$3, lt.Location);
}
;
| explicit_interface IDENTIFIER opt_type_parameter_list
{
lexer.parsing_generic_declaration = false;
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new MemberName (lt.Value, (TypeParameters) $3, (ATypeNameExpression) $1, lt.Location);
}
;
explicit_interface
: IDENTIFIER opt_type_argument_list DOT
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new SimpleName (lt.Value, (TypeArguments) $2, lt.Location);
lbag.AddLocation ($$, GetLocation ($3));
}
| qualified_alias_member IDENTIFIER opt_type_argument_list DOT
{
- var lt1 = (Tokenizer.LocatedToken) $1;
- var lt2 = (Tokenizer.LocatedToken) $2;
+ var lt1 = (LocatedToken) $1;
+ var lt2 = (LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($4));
}
| explicit_interface IDENTIFIER opt_type_argument_list DOT
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new MemberAccess ((ATypeNameExpression) $1, lt.Value, (TypeArguments) $3, lt.Location);
lbag.AddLocation ($$, GetLocation ($4));
}
type_parameter
: opt_attributes opt_type_parameter_variance IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken)$3;
+ var lt = (LocatedToken)$3;
$$ = new TypeParameter (new MemberName (lt.Value, lt.Location), (Attributes)$1, (Variance) $2);
}
| error
primary_expression_or_type
: IDENTIFIER opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new SimpleName (lt.Value, (TypeArguments)$2, lt.Location);
}
| IDENTIFIER GENERATE_COMPLETION {
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location);
}
| member_access
member_access
: primary_expression DOT identifier_inside_body opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
| builtin_types DOT identifier_inside_body opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
| BASE DOT identifier_inside_body opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess (new BaseThis (GetLocation ($1)), lt.Value, (TypeArguments) $4, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
| qualified_alias_member identifier_inside_body opt_type_argument_list
{
- var lt1 = (Tokenizer.LocatedToken) $1;
- var lt2 = (Tokenizer.LocatedToken) $2;
+ var lt1 = (LocatedToken) $1;
+ var lt2 = (LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($2));
$$ = new CompletionMemberAccess ((Expression) $1, null,GetLocation ($3));
}
| primary_expression DOT IDENTIFIER GENERATE_COMPLETION {
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new CompletionMemberAccess ((Expression) $1, lt.Value, lt.Location);
}
| builtin_types DOT GENERATE_COMPLETION
$$ = new CompletionMemberAccess ((Expression) $1, null, lexer.Location);
}
| builtin_types DOT IDENTIFIER GENERATE_COMPLETION {
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new CompletionMemberAccess ((Expression) $1, lt.Value, lt.Location);
}
;
member_initializer
: IDENTIFIER ASSIGN initializer_value
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new ElementInitializer (lt.Value, (Expression)$3, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
| AWAIT ASSIGN initializer_value
{
- var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1);
+ var lt = (LocatedToken) Error_AwaitAsIdentifier ($1);
$$ = new ElementInitializer (lt.Value, (Expression)$3, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
anonymous_type_parameter
: identifier_inside_body ASSIGN variable_initializer
{
- var lt = (Tokenizer.LocatedToken)$1;
+ var lt = (LocatedToken)$1;
$$ = new AnonymousTypeParameter ((Expression)$3, lt.Value, lt.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
| identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken)$1;
+ var lt = (LocatedToken)$1;
$$ = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location),
lt.Value, lt.Location);
}
unbound_type_name
: identifier_inside_body generic_dimension
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new SimpleName (lt.Value, (int) $2, lt.Location);
}
| qualified_alias_member identifier_inside_body generic_dimension
{
- var lt1 = (Tokenizer.LocatedToken) $1;
- var lt2 = (Tokenizer.LocatedToken) $2;
+ var lt1 = (LocatedToken) $1;
+ var lt2 = (LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (int) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($2));
}
| unbound_type_name DOT identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess ((Expression) $1, lt.Value, lt.Location);
}
| unbound_type_name DOT identifier_inside_body generic_dimension
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess ((Expression) $1, lt.Value, (int) $4, lt.Location);
}
if (tne.HasTypeArguments)
Error_TypeExpected (GetLocation ($4));
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess (tne, lt.Value, (int) $4, lt.Location);
}
;
qualified_alias_member
: IDENTIFIER DOUBLE_COLON
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
if (lang_version == LanguageVersion.ISO_1)
FeatureIsNotAvailable (lt.Location, "namespace alias qualifier");
pointer_member_access
: primary_expression OP_PTR IDENTIFIER opt_type_argument_list
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberAccess (new Indirection ((Expression) $1, GetLocation ($2)), lt.Value, (TypeArguments) $4, lt.Location);
}
;
lambda_parameter
: parameter_modifier parameter_type identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new Parameter ((FullNamedExpression) $2, lt.Value, (Parameter.Modifier) $1, null, lt.Location);
}
| parameter_type identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new Parameter ((FullNamedExpression) $1, lt.Value, Parameter.Modifier.NONE, null, lt.Location);
}
| IDENTIFIER
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
$$ = new ImplicitLambdaParameter (lt.Value, lt.Location);
}
| AWAIT
{
- var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1);
+ var lt = (LocatedToken) Error_AwaitAsIdentifier ($1);
$$ = new ImplicitLambdaParameter (lt.Value, lt.Location);
}
;
lambda_expression
: IDENTIFIER ARROW
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
start_anonymous (true, new ParametersCompiled (p), false, lt.Location);
}
}
| AWAIT ARROW
{
- var lt = (Tokenizer.LocatedToken) Error_AwaitAsIdentifier ($1);
+ var lt = (LocatedToken) Error_AwaitAsIdentifier ($1);
Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
start_anonymous (true, new ParametersCompiled (p), false, lt.Location);
}
}
| ASYNC identifier_inside_body ARROW
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
start_anonymous (true, new ParametersCompiled (p), true, lt.Location);
}
: /* empty */
| COLON type_list
{
- current_type.AddBasesForPart ((List<FullNamedExpression>) $2);
+ current_type.SetBaseTypes ((List<FullNamedExpression>) $2);
}
| COLON type_list error
{
Error_SyntaxError (yyToken);
- current_type.AddBasesForPart ((List<FullNamedExpression>) $2);
+ current_type.SetBaseTypes ((List<FullNamedExpression>) $2);
}
;
type_parameter_constraints_clause
: WHERE IDENTIFIER COLON type_parameter_constraints
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List<FullNamedExpression>) $4, GetLocation ($1));
lbag.AddLocation ($$, GetLocation ($3));
}
{
Error_SyntaxError (yyToken);
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new Constraints (new SimpleMemberName (lt.Value, lt.Location), null, GetLocation ($1));
}
;
labeled_statement
: identifier_inside_body COLON
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location);
lbag.AddLocation (labeled, GetLocation ($2));
current_block.AddLabel (labeled);
block_variable_declaration
: variable_type identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var li = new LocalVariable (current_block, lt.Value, lt.Location);
current_block.AddLocalName (li);
- current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
+ current_variable = new BlockVariable ((FullNamedExpression) $1, li);
}
opt_local_variable_initializer opt_variable_declarators SEMICOLON
{
}
| CONST variable_type identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
current_block.AddLocalName (li);
- current_variable = new BlockConstantDeclaration ((FullNamedExpression) $2, li);
+ current_variable = new BlockConstant ((FullNamedExpression) $2, li);
}
const_variable_initializer opt_const_declarators SEMICOLON
{
variable_declarator
: COMMA identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
- var d = new BlockVariableDeclaration.Declarator (li, null);
+ var d = new BlockVariableDeclarator (li, null);
current_variable.AddDeclarator (d);
current_block.AddLocalName (li);
lbag.AddLocation (d, GetLocation ($1));
}
| COMMA identifier_inside_body ASSIGN block_variable_initializer
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
- var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+ var d = new BlockVariableDeclarator (li, (Expression) $4);
current_variable.AddDeclarator (d);
current_block.AddLocalName (li);
lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
const_declarator
: COMMA identifier_inside_body ASSIGN constant_initializer_expr
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
- var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+ var d = new BlockVariableDeclarator (li, (Expression) $4);
current_variable.AddDeclarator (d);
current_block.AddLocalName (li);
lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
for_initializer
: variable_type identifier_inside_body
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var li = new LocalVariable (current_block, lt.Value, lt.Location);
current_block.AddLocalName (li);
- current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
+ current_variable = new BlockVariable ((FullNamedExpression) $1, li);
}
opt_local_variable_initializer opt_variable_declarators
{
start_block (GetLocation ($2));
current_block.IsCompilerGenerated = true;
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location);
current_block.AddLocalName (li);
start_block (GetLocation ($2));
current_block.IsCompilerGenerated = true;
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location);
current_block.AddLocalName (li);
$$ = li;
goto_statement
: GOTO identifier_inside_body SEMICOLON
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
$$ = new Goto (lt.Value, GetLocation ($1));
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($3));
}
yield_statement
: identifier_inside_body RETURN opt_expression SEMICOLON
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
string s = lt.Value;
if (s != "yield"){
report.Error (1003, lt.Location, "; expected");
{
Error_SyntaxError (yyToken);
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
string s = lt.Value;
if (s != "yield"){
report.Error (1003, lt.Location, "; expected");
}
| identifier_inside_body BREAK SEMICOLON
{
- var lt = (Tokenizer.LocatedToken) $1;
+ var lt = (LocatedToken) $1;
string s = lt.Value;
if (s != "yield"){
report.Error (1003, lt.Location, "; expected");
c.TypeExpression = (FullNamedExpression) $3;
if ($4 != null) {
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
c.Variable = new LocalVariable (current_block, lt.Value, lt.Location);
current_block.AddLocalName (c.Variable);
}
c.TypeExpression = (FullNamedExpression) $3;
if ($4 != null) {
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
c.Variable = new LocalVariable (current_block, lt.Value, lt.Location);
}
start_block (GetLocation ($2));
current_block.IsCompilerGenerated = true;
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.FixedVariable | LocalVariable.Flags.Used, lt.Location);
current_block.AddLocalName (li);
current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) $3, li);
start_block (GetLocation ($2));
current_block.IsCompilerGenerated = true;
- var lt = (Tokenizer.LocatedToken) $4;
+ var lt = (LocatedToken) $4;
var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.UsingVariable | LocalVariable.Flags.Used, lt.Location);
current_block.AddLocalName (li);
current_variable = new Using.VariableDeclaration ((FullNamedExpression) $3, li);
{
current_block = new Linq.QueryBlock (current_block, lexer.Location);
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
}
{
current_block = new Linq.QueryBlock (current_block, lexer.Location);
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryExpression (
new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
{
current_block = new Linq.QueryBlock (current_block, lexer.Location);
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
}
{
current_block = new Linq.QueryBlock (current_block, lexer.Location);
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryExpression (
new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
}
expression_or_error
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var sn = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$5, GetLocation ($1));
}
expression_or_error
{
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
var sn = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$6, GetLocation ($1)) {
}
expression_or_error
{
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var sn = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)$5, GetLocation ($1));
lbag.AddLocation ($$, GetLocation ($3));
var outer_selector = linq_clause_blocks.Pop ();
var block = linq_clause_blocks.Pop ();
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var sn = new Linq.RangeVariable (lt.Value, lt.Location);
Linq.RangeVariable into;
((Linq.QueryBlock)current_block).AddRangeVariable (sn);
- lt = (Tokenizer.LocatedToken) $12;
+ lt = (LocatedToken) $12;
into = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.GroupJoin (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1));
var outer_selector = linq_clause_blocks.Pop ();
var block = linq_clause_blocks.Pop ();
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
var sn = new Linq.RangeVariable (lt.Value, lt.Location);
Linq.RangeVariable into;
((Linq.QueryBlock)current_block).AddRangeVariable (sn);
- lt = (Tokenizer.LocatedToken) $13;
+ lt = (LocatedToken) $13;
into = new Linq.RangeVariable (lt.Value, lt.Location); // TODO:
$$ = new Linq.GroupJoin (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1)) {
query_body
{
var current_block = linq_clause_blocks.Pop ();
- var lt = (Tokenizer.LocatedToken) $2;
+ var lt = (LocatedToken) $2;
var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, null, rv, GetLocation ($1)) {
next = (Linq.AQueryClause)$4
{
module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)$1;
module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)$4;
- var lt = (Tokenizer.LocatedToken) $3;
+ var lt = (LocatedToken) $3;
$$ = new MemberName (lt.Value);
}
| doc_type_declaration_name DOT THIS
{
if (async_block) {
report.Error (4003, GetLocation (token), "`await' cannot be used as an identifier within an async method or lambda expression");
- return new Tokenizer.LocatedToken ("await", GetLocation (token));
+ return new LocatedToken ("await", GetLocation (token));
}
return token;
Location GetLocation (object obj)
{
- var lt = obj as Tokenizer.LocatedToken;
+ var lt = obj as LocatedToken;
if (lt != null)
return lt.Location;
retval = current_anonymous_method;
async_block = (bool) oob_stack.Pop ();
- current_variable = (BlockVariableDeclaration) oob_stack.Pop ();
+ current_variable = (BlockVariable) oob_stack.Pop ();
current_local_parameters = (ParametersCompiled) oob_stack.Pop ();
current_anonymous_method = (AnonymousMethodExpression) oob_stack.Pop ();
case Token.LITERAL:
return ((Constant)lexer.Value).GetValue ().ToString ();
case Token.IDENTIFIER:
- return ((Tokenizer.LocatedToken)lexer.Value).Value;
+ return ((LocatedToken)lexer.Value).Value;
case Token.BOOL:
return "bool";
namespace Mono.CSharp
{
+ //
+ // This class has to be used by parser only, it reuses token
+ // details once a file is parsed
+ //
+ public class LocatedToken
+ {
+ public int row, column;
+ public string value;
+ public SourceFile file;
+
+ public LocatedToken ()
+ {
+ }
+
+ public LocatedToken (string value, Location loc)
+ {
+ this.value = value;
+ file = loc.SourceFile;
+ row = loc.Row;
+ column = loc.Column;
+ }
+
+ public override string ToString ()
+ {
+ return string.Format ("Token '{0}' at {1},{2}", Value, row, column);
+ }
+
+ public Location Location
+ {
+ get { return new Location (file, row, column); }
+ }
+
+ public string Value
+ {
+ get { return value; }
+ }
+ }
+
/// <summary>
/// Tokenizer for C# source code.
/// </summary>
-
public class Tokenizer : yyParser.yyInput
{
class KeywordEntry<T>
}
}
- //
- // This class has to be used by parser only, it reuses token
- // details after each file parse completion
- //
- public class LocatedToken
- {
- public int row, column;
- public string value;
- public SourceFile file;
-
- public LocatedToken ()
- {
- }
-
- public LocatedToken (string value, Location loc)
- {
- this.value = value;
- file = loc.SourceFile;
- row = loc.Row;
- column = loc.Column;
- }
-
- public override string ToString ()
- {
- return string.Format ("Token '{0}' at {1},{2}", Value, row, column);
- }
-
- public Location Location {
- get { return new Location (file, row, column); }
- }
-
- public string Value {
- get { return value; }
- }
- }
-
public class LocatedTokenBuffer
{
readonly LocatedToken[] buffer;
var session = new ParserSession () {
UseJayGlobalArrays = true,
- LocatedTokens = new Tokenizer.LocatedToken[15000]
+ LocatedTokens = new LocatedToken[15000]
};
for (int i = 0; i < sources.Count; ++i) {
}
}
- public override Constant ConvertExplicitly(bool in_checked_context, TypeSpec target_type)
+ public override Constant ConvertExplicitly (bool in_checked_context, TypeSpec target_type)
{
if (Child.Type == target_type)
return Child;
}
}
- public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext ec)
+ public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext mc)
{
- FullNamedExpression fne = ec.LookupNamespaceOrType (Name, Arity, LookupMode.Normal, loc);
+ FullNamedExpression fne = mc.LookupNamespaceOrType (Name, Arity, LookupMode.Normal, loc);
if (fne != null) {
if (fne.Type != null && Arity > 0) {
if (HasTypeArguments) {
GenericTypeExpr ct = new GenericTypeExpr (fne.Type, targs, loc);
- if (ct.ResolveAsType (ec) == null)
+ if (ct.ResolveAsType (mc) == null)
return null;
return ct;
return fne;
}
- if (Arity == 0 && Name == "dynamic" && ec.Module.Compiler.Settings.Version > LanguageVersion.V_3) {
- if (!ec.Module.PredefinedAttributes.Dynamic.IsDefined) {
- ec.Module.Compiler.Report.Error (1980, Location,
+ if (Arity == 0 && Name == "dynamic" && mc.Module.Compiler.Settings.Version > LanguageVersion.V_3) {
+ if (!mc.Module.PredefinedAttributes.Dynamic.IsDefined) {
+ mc.Module.Compiler.Report.Error (1980, Location,
"Dynamic keyword requires `{0}' to be defined. Are you missing System.Core.dll assembly reference?",
- ec.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
+ mc.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
}
fne = new DynamicTypeExpr (loc);
- fne.ResolveAsType (ec);
+ fne.ResolveAsType (mc);
}
if (fne != null)
return fne;
- Error_TypeOrNamespaceNotFound (ec);
+ Error_TypeOrNamespaceNotFound (mc);
return null;
}
new TypeExpression (base_class_imported, host.Location)
};
- host.AddBasesForPart (baseclass_list);
+ host.SetBaseTypes (baseclass_list);
host.CreateContainer ();
host.DefineContainer ();
public class ArrayInitializer : Expression
{
List<Expression> elements;
- BlockVariableDeclaration variable;
+ BlockVariable variable;
public ArrayInitializer (List<Expression> init, Location loc)
{
}
}
- public BlockVariableDeclaration VariableDeclaration {
+ public BlockVariable VariableDeclaration {
get {
return variable;
}
public Expression Initializer { get; private set; }
#endregion
+
+ public virtual FullNamedExpression GetFieldTypeExpression (FieldBase field)
+ {
+ return new TypeExpression (field.MemberType, Name.Location);
+ }
}
//
"`{0}': Fixed size buffers type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double",
GetSignatureForError ());
} else if (declarators != null) {
- var t = new TypeExpression (MemberType, TypeExpression.Location);
foreach (var d in declarators) {
- var f = new FixedField (Parent, t, ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
+ var f = new FixedField (Parent, d.GetFieldTypeExpression (this), ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
f.initializer = d.Initializer;
((ConstInitializer) f.initializer).Name = d.Name.Value;
f.Define ();
if (declarators != null) {
foreach (var d in declarators) {
- var t = new TypeExpression (MemberType, d.Name.Location);
- var f = new Field (Parent, t, ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
+ var f = new Field (Parent, d.GetFieldTypeExpression (this), ModFlags, new MemberName (d.Name.Value, d.Name.Location), OptAttributes);
if (d.Initializer != null)
f.initializer = d.Initializer;
return ac;
}
+ if (type.Kind == MemberKind.MissingType)
+ return type;
+
//
// When inflating a nested type, inflate its parent first
// in case it's using same type parameters (was inflated within the type)
while (true) {
foreach (var entry in abstract_type.MemberCache.member_hash) {
foreach (var name_entry in entry.Value) {
- if ((name_entry.Modifiers & (Modifiers.ABSTRACT | Modifiers.OVERRIDE)) != Modifiers.ABSTRACT)
+ if ((name_entry.Modifiers & Modifiers.ABSTRACT) == 0)
continue;
- if (name_entry.Kind != MemberKind.Method)
+ var ms = name_entry as MethodSpec;
+ if (ms == null)
continue;
- abstract_methods.Add ((MethodSpec) name_entry);
+ abstract_methods.Add (ms);
}
}
return mod;
}
- for (i = 1; i <= (int) Modifiers.TOP; i <<= 1) {
+ for (i = 1; i < (int) Modifiers.TOP; i <<= 1) {
if ((i & invalid_flags) == 0)
continue;
public Namespace AddNamespace (MemberName name)
{
- Namespace ns_parent;
- if (name.Left != null) {
- if (parent != null)
- ns_parent = parent.AddNamespace (name.Left);
- else
- ns_parent = AddNamespace (name.Left);
- } else {
- ns_parent = this;
- }
-
+ var ns_parent = name.Left == null ? this : AddNamespace (name.Left);
return ns_parent.TryAddNamespace (name.Basename);
}
public CompilerSettings ParseArguments (string[] args)
{
CompilerSettings settings = new CompilerSettings ();
+ if (!ParseArguments (settings, args))
+ return null;
+
+ return settings;
+ }
+
+ public bool ParseArguments (CompilerSettings settings, string[] args)
+ {
+ if (settings == null)
+ throw new ArgumentNullException ("settings");
+
List<string> response_file_list = null;
bool parsing_options = true;
stop_argument = false;
if (response_file_list.Contains (response_file)) {
report.Error (1515, "Response file `{0}' specified multiple times", response_file);
- return null;
+ return false;
}
response_file_list.Add (response_file);
extra_args = LoadArgs (response_file);
if (extra_args == null) {
report.Error (2011, "Unable to open response file: " + response_file);
- return null;
+ return false;
}
args = AddArgs (args, extra_args);
continue;
case ParseResult.Stop:
stop_argument = true;
- return settings;
+ return true;
case ParseResult.UnknownOption:
if (UnknownOptionHandler != null) {
var ret = UnknownOptionHandler (args, i);
}
Error_WrongOption (arg);
- return null;
+ return false;
case ParseResult.Stop:
stop_argument = true;
- return settings;
+ return true;
}
}
}
ProcessSourceFiles (arg, false, settings.SourceFiles);
}
- if (report.Errors > 0)
- return null;
-
- return settings;
+ return report.Errors == 0;
}
void ProcessSourceFiles (string spec, bool recurse, List<SourceFile> sourceFiles)
Location Location { get; }
}
- public class BlockVariableDeclaration : Statement
+ public class BlockVariableDeclarator
{
- public class Declarator
+ LocalVariable li;
+ Expression initializer;
+
+ public BlockVariableDeclarator (LocalVariable li, Expression initializer)
{
- LocalVariable li;
- Expression initializer;
+ if (li.Type != null)
+ throw new ArgumentException ("Expected null variable type");
- public Declarator (LocalVariable li, Expression initializer)
- {
- if (li.Type != null)
- throw new ArgumentException ("Expected null variable type");
+ this.li = li;
+ this.initializer = initializer;
+ }
- this.li = li;
- this.initializer = initializer;
- }
+ #region Properties
- public Declarator (Declarator clone, Expression initializer)
- {
- this.li = clone.li;
- this.initializer = initializer;
+ public LocalVariable Variable {
+ get {
+ return li;
}
+ }
- #region Properties
-
- public LocalVariable Variable {
- get {
- return li;
- }
+ public Expression Initializer {
+ get {
+ return initializer;
}
-
- public Expression Initializer {
- get {
- return initializer;
- }
- set {
- initializer = value;
- }
+ set {
+ initializer = value;
}
+ }
- #endregion
+ #endregion
+
+ public virtual BlockVariableDeclarator Clone (CloneContext cloneCtx)
+ {
+ var t = (BlockVariableDeclarator) MemberwiseClone ();
+ if (initializer != null)
+ t.initializer = initializer.Clone (cloneCtx);
+
+ return t;
}
+ }
+ public class BlockVariable : Statement
+ {
Expression initializer;
protected FullNamedExpression type_expr;
protected LocalVariable li;
- protected List<Declarator> declarators;
+ protected List<BlockVariableDeclarator> declarators;
TypeSpec type;
- public BlockVariableDeclaration (FullNamedExpression type, LocalVariable li)
+ public BlockVariable (FullNamedExpression type, LocalVariable li)
{
this.type_expr = type;
this.li = li;
this.loc = type_expr.Location;
}
- protected BlockVariableDeclaration (LocalVariable li)
+ protected BlockVariable (LocalVariable li)
{
this.li = li;
}
#region Properties
- public List<Declarator> Declarators {
+ public List<BlockVariableDeclarator> Declarators {
get {
return declarators;
}
#endregion
- public void AddDeclarator (Declarator decl)
+ public void AddDeclarator (BlockVariableDeclarator decl)
{
if (declarators == null)
- declarators = new List<Declarator> ();
+ declarators = new List<BlockVariableDeclarator> ();
declarators.Add (decl);
}
protected override void CloneTo (CloneContext clonectx, Statement target)
{
- BlockVariableDeclaration t = (BlockVariableDeclaration) target;
+ BlockVariable t = (BlockVariable) target;
if (type_expr != null)
t.type_expr = (FullNamedExpression) type_expr.Clone (clonectx);
if (declarators != null) {
t.declarators = null;
foreach (var d in declarators)
- t.AddDeclarator (new Declarator (d, d.Initializer == null ? null : d.Initializer.Clone (clonectx)));
+ t.AddDeclarator (d.Clone (clonectx));
}
}
}
}
- public class BlockConstantDeclaration : BlockVariableDeclaration
+ public class BlockConstant : BlockVariable
{
- public BlockConstantDeclaration (FullNamedExpression type, LocalVariable li)
+ public BlockConstant (FullNamedExpression type, LocalVariable li)
: base (type, li)
{
}
}
}
- public class VariableDeclaration : BlockVariableDeclaration
+ public class VariableDeclaration : BlockVariable
{
public VariableDeclaration (FullNamedExpression type, LocalVariable li)
: base (type, li)
}
}
- public BlockVariableDeclaration Variables {
+ public BlockVariable Variables {
get {
return decl;
}
public class Using : TryFinallyBlock
{
- public class VariableDeclaration : BlockVariableDeclaration
+ public class VariableDeclaration : BlockVariable
{
Statement dispose_call;
}
}
- public BlockVariableDeclaration Variables {
+ public BlockVariable Variables {
get {
return decl;
}
readonly MemberKind kind;
protected readonly ModuleContainer module;
protected TypeSpec type;
+ bool defined;
public PredefinedType (ModuleContainer module, MemberKind kind, string ns, string name, int arity)
: this (module, kind, ns, name)
if (type != null)
return true;
- type = Resolve (module, kind, ns, name, arity, false, false);
+ if (!defined) {
+ defined = true;
+ type = Resolve (module, kind, ns, name, arity, false, false);
+ }
+
return type != null;
}
// fake namespaces when type is optional and does not exist (e.g. System.Linq).
//
Namespace type_ns = module.GlobalRootNamespace.GetNamespace (ns, required);
+
IList<TypeSpec> found = null;
if (type_ns != null)
found = type_ns.GetAllTypes (name);
if (found == null) {
- if (reportErrors )
+ if (reportErrors)
module.Compiler.Report.Error (518, "The predefined type `{0}.{1}' is not defined or imported", ns, name);
return null;
return null;
}
- public virtual object Visit (BlockVariableDeclaration blockVariableDeclaration)
+ public virtual object Visit (BlockVariable blockVariableDeclaration)
{
return null;
}
- public virtual object Visit (BlockConstantDeclaration blockConstantDeclaration)
+ public virtual object Visit (BlockConstant blockConstantDeclaration)
{
return null;
}
--- /dev/null
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'missing-lib'
+{
+}
+
+.assembly 'gtest-583-lib'
+{
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+
+.module 'gtest-583-lib.dll'
+
+.class public auto ansi beforefieldinit C`1<T>
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ ldarg.0
+ call instance void [mscorlib]System.Object::.ctor()
+ ret
+ }
+
+ .method public hidebysig instance int32
+ Join(class [mscorlib]System.Collections.Generic.List`1<class ['missing-lib']N/M> arg) cil managed
+ {
+ ldc.i4.1
+ ret
+ }
+}
--- /dev/null
+// Compiler options: -r:gtest-583-lib.dll
+
+public class Test
+{
+ public static void Main ()
+ {
+ new C<short> ();
+ }
+}
--- /dev/null
+using System.Diagnostics;
+using System.Reflection;
+
+[assembly: AssemblyProduct ("Product")]
+[assembly: AssemblyCompany ("Company")]
+[assembly: AssemblyDescription ("Description")]
+[assembly: AssemblyCopyright ("Copyright")]
+[assembly: AssemblyTrademark ("Trademark")]
+[assembly: AssemblyVersion ("5.4.3.1")]
+[assembly: AssemblyFileVersion ("8.9")]
+
+class C
+{
+ public static int Main ()
+ {
+ var loc = Assembly.GetExecutingAssembly ().Location;
+ var fv = FileVersionInfo.GetVersionInfo (loc);
+
+ if (fv.ProductName != "Product")
+ return 1;
+
+ if (fv.CompanyName != "Company")
+ return 2;
+
+// if (fv.Comments != "Description")
+// return 3;
+
+ if (fv.LegalCopyright != "Copyright")
+ return 4;
+
+ if (fv.LegalTrademarks != "Trademark")
+ return 5;
+
+ if (fv.ProductVersion != "8.9")
+ return 6;
+
+ return 0;
+ }
+}
\ No newline at end of file
--- /dev/null
+using System;
+
+namespace TestPartialOverride.BaseNamespace
+{
+ public abstract class Base
+ {
+ protected virtual void OverrideMe ()
+ {
+ Console.Out.WriteLine ("OverrideMe");
+ }
+ }
+}
+
+namespace TestPartialOverride.Outer.Nested.Namespace
+{
+ internal partial class Inherits
+ {
+ protected override void OverrideMe ()
+ {
+ Console.Out.WriteLine ("Overridden");
+ }
+ }
+}
+
+namespace TestPartialOverride.Outer
+{
+ namespace Nested.Namespace
+ {
+ internal partial class Inherits : TestPartialOverride.BaseNamespace.Base
+ {
+ public void DoesSomethignElse ()
+ {
+ OverrideMe ();
+ }
+ }
+ }
+
+ public class C
+ {
+ public static void Main ()
+ {
+ new TestPartialOverride.Outer.Nested.Namespace.Inherits ().DoesSomethignElse ();
+ }
+ }
+}
</method>\r
</type>\r
</test>\r
+ <test name="gtest-583.cs">\r
+ <type name="Test">\r
+ <method name="Void Main()" attrs="150">\r
+ <size>8</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6278">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ </test>\r
<test name="gtest-anontype-01.cs">\r
<type name="Test">\r
<method name="Int32 Main()" attrs="150">\r
</method>\r
</type>\r
</test>\r
+ <test name="test-868.cs">\r
+ <type name="C">\r
+ <method name="Int32 Main()" attrs="150">\r
+ <size>168</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6278">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ </test>\r
<test name="test-87.cs">\r
<type name="Top">\r
<method name="Int32 Main()" attrs="150">\r
</method>\r
</type>\r
</test>\r
+ <test name="test-partial-31.cs">\r
+ <type name="TestPartialOverride.BaseNamespace.Base">\r
+ <method name="Void OverrideMe()" attrs="452">\r
+ <size>17</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6276">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ <type name="TestPartialOverride.Outer.Nested.Namespace.Inherits">\r
+ <method name="Void OverrideMe()" attrs="196">\r
+ <size>17</size>\r
+ </method>\r
+ <method name="Void DoesSomethignElse()" attrs="134">\r
+ <size>8</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6278">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ <type name="TestPartialOverride.Outer.C">\r
+ <method name="Void Main()" attrs="150">\r
+ <size>12</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6278">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ </test>\r
<test name="test-var-01.cs">\r
<type name="Test">\r
<method name="Int32 Main()" attrs="150">\r
var cmd = new CommandLineParser (Console.Out);
cmd.UnknownOptionHandler += HandleExtraArguments;
- var settings = cmd.ParseArguments (args);
- if (settings == null)
+ // Enable unsafe code by default
+ var settings = new CompilerSettings () {
+ Unsafe = true
+ };
+
+ if (!cmd.ParseArguments (settings, args))
return 1;
+
var startup_files = new string [settings.SourceFiles.Count];
int i = 0;
foreach (var source in settings.SourceFiles)
Annotations.Mark (provider);
}
+ protected virtual void MarkSerializable (TypeDefinition type)
+ {
+ if (!type.HasMethods)
+ return;
+
+ MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
+ MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
+ }
+
protected virtual TypeDefinition MarkType (TypeReference reference)
{
if (reference == null)
MarkMethodCollection (type.Methods);
}
- if (IsSerializable (type) && type.HasMethods) {
- MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
- MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
- }
+ if (IsSerializable (type))
+ MarkSerializable (type);
MarkTypeSpecialCustomAttributes (type);
static bool IsDefaultConstructor (MethodDefinition method)
{
- return IsConstructor (method) && method.Parameters.Count == 0;
+ return IsConstructor (method) && !method.HasParameters;
}
static bool IsConstructor (MethodDefinition method)
}
};
-#if NET_4_5
+ //#if NET_4_5
+#if FALSE
Parallel.ForEach (files, body);
#else
foreach (var url in files)
buffer = (Bytef *) malloc (real_size);
result = my_inflate ((*ptr)->assembly.data, zsize, buffer, real_size);
if (result != 0) {
- fprintf (stderr, "Error %d decompresing data for %s\n", result, (*ptr)->assembly.name);
+ fprintf (stderr, "mkbundle: Error %d decompressing data for %s\n", result, (*ptr)->assembly.name);
exit (1);
}
(*ptr)->assembly.data = buffer;
} else {
service = services [0];
}
-
+
+ if (service.ExitCode != 0) {
+ //likely due to a previous execution, so we need to reset it to default
+ service.ExitCode = 0;
+ }
call (service, "OnStart", args);
info (logname, "Service {0} started", service.ServiceName);
term.Reset ();
info (logname, "Stopping service {0}", service.ServiceName);
call (service, "OnStop", null);
+ if (service.ExitCode != 0)
+ error (logname, "Service stopped with a non-zero ExitCode: {0}", service.ExitCode);
running = false;
}
else if (usr1.IsSet && service.CanPauseAndContinue) {
PORTABLE_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Portable
EXTRAS_DIR = $(mono_libdir)/mono/$(INSTALL_FRAMEWORK_VERSION)
install-extras:
- $(MKINSTALLDIRS) $(DESTDIR)$(EXTRAS_DIR) $(DESTDIR)$(REDISTLIST_DIR) $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v3.0/RedistList $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v4.0/RedistList
+ $(MKINSTALLDIRS) $(DESTDIR)$(EXTRAS_DIR) $(DESTDIR)$(REDISTLIST_DIR) $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v3.0/RedistList $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v4.0/RedistList $(DESTDIR)$(mono_libdir)/mono/3.5
$(INSTALL_DATA) xbuild/xbuild.rsp $(DESTDIR)$(mono_libdir)/mono/$(FRAMEWORK_VERSION)
- $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(EXTRAS_DIR)
+ $(INSTALL_DATA) xbuild/$(INSTALL_FRAMEWORK_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(EXTRAS_DIR)
+ $(INSTALL_DATA) xbuild/$(INSTALL_FRAMEWORK_VERSION)/Microsoft.Common.targets $(DESTDIR)$(EXTRAS_DIR)
$(INSTALL_DATA) xbuild/Microsoft.Build.xsd $(DESTDIR)$(EXTRAS_DIR)
- $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/Microsoft.Common.targets $(DESTDIR)$(EXTRAS_DIR)
+ $(INSTALL_DATA) xbuild/2.0/Microsoft.Common.targets $(DESTDIR)$(mono_libdir)/mono/2.0
+ $(INSTALL_DATA) xbuild/3.5/Microsoft.Common.targets $(DESTDIR)$(mono_libdir)/mono/3.5
$(INSTALL_DATA) xbuild/Microsoft.CSharp.targets $(DESTDIR)$(EXTRAS_DIR)
$(INSTALL_DATA) xbuild/Microsoft.VisualBasic.targets $(DESTDIR)$(EXTRAS_DIR)
$(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/FrameworkList.xml $(DESTDIR)$(REDISTLIST_DIR)
xbuild/2.0/Microsoft.Common.tasks \
xbuild/3.5/Microsoft.Common.tasks \
xbuild/4.0/Microsoft.Common.tasks \
- xbuild/4.5/Microsoft.Common.tasks \
xbuild/2.0/Microsoft.Common.targets \
xbuild/3.5/Microsoft.Common.targets \
xbuild/4.0/Microsoft.Common.targets \
- xbuild/4.5/Microsoft.Common.targets \
xbuild/2.0/FrameworkList.xml \
xbuild/3.5/FrameworkList.xml \
xbuild/4.0/FrameworkList.xml \
<TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
<KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
+ <TargetingClr2Framework Condition="('$(TargetFrameworkIdentifier)' == '.NETFramework') and ('$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5')">true</TargetingClr2Framework>
</PropertyGroup>
<Target Name="_ValidateEssentialProperties">
Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
DependsOnTargets="$(GetFrameworkPathsDependsOn)">
<GetFrameworkPath>
+ <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5'"
+ TaskParameter="FrameworkVersion45Path"
+ ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
<Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
TaskParameter="FrameworkVersion40Path"
ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
</CreateProperty>
<Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
- Condition="'$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+ Condition="'$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
</Target>
<PropertyGroup>
+++ /dev/null
-<Project DefaultTargets="Build" InitialTargets="_ValidateEssentialProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <ImportByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCommonTargets>
- <ImportByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportByWildcardAfterMicrosoftCommonTargets>
- </PropertyGroup>
-
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*"
- Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
-
- <PropertyGroup>
- <TargetExt Condition="'$(OutputType)' == 'Winexe'">.exe</TargetExt>
- <TargetExt Condition="'$(OutputType)' == 'Exe'">.exe</TargetExt>
- <TargetExt Condition="'$(OutputType)' == 'Library'">.dll</TargetExt>
- <TargetExt Condition="'$(OutputType)' == 'Netmodule'">.netmodule</TargetExt>
- </PropertyGroup>
-
- <PropertyGroup>
- <ProjectDir Condition="'$(ProjectDir)' == ''">$(MSBuildProjectDirectory)\</ProjectDir>
- </PropertyGroup>
-
- <PropertyGroup>
- <AssemblyName Condition="'$(AssemblyName)' == ''">$(RootNamespace)</AssemblyName>
- <OutputPath Condition="'$(OutputPath)' != '' and !HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>
- <OutputPath Condition=" '$(Platform)'=='' and '$(Configuration)'=='' and '$(OutputPath)'=='' ">bin\Debug\</OutputPath>
- <WarningLevel Condition="'$(WarningLevel)' == ''" >2</WarningLevel>
-
- <TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
- <TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.0</TargetFrameworkVersion>
-
- <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$(TargetFrameworkProfile)' != ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
- <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
- </PropertyGroup>
-
- <PropertyGroup>
- <OutDir Condition="'$(OutDir)' == ''">$(OutputPath)</OutDir>
- <OutDir Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')">$(OutDir)\</OutDir>
-
- <_OriginalConfiguration>$(Configuration)</_OriginalConfiguration>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <ConfigurationName Condition="'$(ConfigurationName)' == ''">$(Configuration)</ConfigurationName>
-
- <_OriginalPlatform>$(Platform)</_OriginalPlatform>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
-
- <AddAdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == ''">true</AddAdditionalExplicitAssemblyReferences>
- <AdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == 'true' and '$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.0'">System.Core;$(AdditionalExplicitAssemblyReferences)</AdditionalExplicitAssemblyReferences>
- </PropertyGroup>
-
- <PropertyGroup>
- <SkipCopyUnchangedFiles Condition="'$(SkipCopyUnchangedFiles)' == ''">true</SkipCopyUnchangedFiles>
- </PropertyGroup>
-
- <PropertyGroup>
- <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
- <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
- <CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FilesWrittenAbsolute.txt</CleanFile>
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(IntermediateOutputPath)' == ''">
- <IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU'">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
- <IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
- </PropertyGroup>
-
- <PropertyGroup>
- <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
- </PropertyGroup>
-
- <ItemGroup>
- <IntermediateAssembly Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt)" />
-
- <!-- creating this as a item to use FullPath on it, to build TargetPath -->
- <_OutDirItem Include="$(OutDir)"/>
- </ItemGroup>
-
- <PropertyGroup>
- <TargetName Condition="'$(TargetName)' == '' ">$(AssemblyName)</TargetName>
- <TargetFileName Condition="'$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
- <TargetDir Condition=" '$(TargetDir)' == '' ">@(_OutDirItem->'%(FullPath)')</TargetDir>
- <TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
- <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
- <KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
- </PropertyGroup>
-
- <Target Name="_ValidateEssentialProperties">
- <Error Condition=" '$(OutputPath)' == '' and '$(SkipInvalidConfigurations)' != 'true'"
- Text="'OutputPath' property is not set for this project. Usually this is caused by invalid Configuration/Platform combination. Original values: Configuration: $(_OriginalConfiguration) Platform: $(_OriginalPlatform)."/>
-
- <Warning Condition=" '$(OutputPath)' == '' and '$(SkipInvalidConfigurations)' == 'true'"
- Text="'OutputPath' property is not set for this project. Usually this is caused by invalid Configuration/Platform combination. Original values: Configuration: $(_OriginalConfiguration) Platform: $(_OriginalPlatform)."/>
-
- <!-- If OutDir is specified via the command line, then the earlier check
- to add a trailing slash won't have any affect, so error here. -->
- <Error
- Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')"
- Text="OutDir property must end with a slash."/>
- </Target>
-
- <Target Name="PrepareForBuild">
- <Message Importance="High" Text="Configuration: $(Configuration) Platform: $(Platform)"/>
-
- <!-- Look for app.config, if $(AppConfig) is specified, then use that. Else look in
- @(None) and @(Content) -->
- <CreateItem Include="$(AppConfig)" Condition="'$(AppConfig)' != ''"
- AdditionalMetadata="TargetPath=$(TargetFileName).config">
- <Output TaskParameter="Include" ItemName="AppConfigWithTargetPath" />
- </CreateItem>
-
- <FindAppConfigFile PrimaryList="@(None)" SecondaryList="@(Content)" TargetPath="$(TargetFileName).config"
- Condition="'$(AppConfig)' == ''">
- <Output TaskParameter="AppConfigFile" ItemName="AppConfigWithTargetPath"/>
- </FindAppConfigFile>
-
- <MakeDir
- Directories="$(OutDir);$(IntermediateOutputPath);@(DocFileItem->'%(RelativeDir)')"
- />
- </Target>
-
- <PropertyGroup>
- <GetFrameworkPathsDependsOn />
- </PropertyGroup>
- <Target Name="GetFrameworkPaths"
- Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
- DependsOnTargets="$(GetFrameworkPathsDependsOn)">
- <GetFrameworkPath>
- <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5'"
- TaskParameter="FrameworkVersion45Path"
- ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
- <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
- TaskParameter="FrameworkVersion40Path"
- ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
- <Output Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
- TaskParameter="FrameworkVersion35Path"
- ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
- <Output Condition="'$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'"
- TaskParameter="FrameworkVersion30Path"
- ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
- <Output Condition="'$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'"
- TaskParameter="FrameworkVersion20Path"
- ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
- </GetFrameworkPath>
- <CreateProperty Value="@(_CombinedTargetFrameworkDirectoriesItem)">
- <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
- </CreateProperty>
-
- <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
- Condition="'$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
- </Target>
-
- <PropertyGroup>
- <GetReferenceAssemblyPathsDependsOn />
- </PropertyGroup>
- <Target Name="GetReferenceAssemblyPaths" DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn)">
- <!-- in case of .NETFramework, $(TargetFrameworkDirectory) would have been set by
- GetFrameworkPaths, if it hasn't been changed, then clear it, to avoid duplicates -->
- <CreateProperty Value="" Condition="'@(_CombinedTargetFrameworkDirectoriesItem)' == '$(TargetFrameworkDirectory)'">
- <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
- </CreateProperty>
-
- <GetReferenceAssemblyPaths
- Condition="'$(TargetFrameworkMoniker)' != '' and '$(_TargetFrameworkDirectories)' == ''"
- TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
- RootPath="$(TargetFrameworkRootPath)">
-
- <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories"/>
- <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
- <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName"/>
- </GetReferenceAssemblyPaths>
-
- <CreateProperty Value="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)">
- <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
- </CreateProperty>
- </Target>
-
- <PropertyGroup>
- <AllowedReferenceAssemblyFileExtensions Condition=" '$(AllowedReferenceAssemblyFileExtensions)' == '' ">
- .exe;
- .dll
- </AllowedReferenceAssemblyFileExtensions>
-
- <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
- .mdb
- </AllowedReferenceRelatedFileExtensions>
-
- <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
- {CandidateAssemblyFiles};
- $(ReferencePath);
- {HintPathFromItem};
- {TargetFrameworkDirectory};
- {PkgConfig};
- {GAC};
- {RawFileName};
- $(OutDir)
- </AssemblySearchPaths>
-
- <ResolveReferencesDependsOn>
- BeforeResolveReferences;
- ResolveProjectReferences;
- ResolveAssemblyReferences;
- AfterResolveReferences
- </ResolveReferencesDependsOn>
-
- <ResolveAssemblyReferencesDependsOn>
- GetFrameworkPaths;
- GetReferenceAssemblyPaths;
- PrepareForBuild
- </ResolveAssemblyReferencesDependsOn>
- </PropertyGroup>
-
- <Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"/>
-
- <Target Name="BeforeResolveReferences" />
- <Target Name="AfterResolveReferences" />
-
- <Target Name="ResolveAssemblyReferences" DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)">
- <CreateItem Include="@(Reference)" Exclude="$(AdditionalExplicitAssemblyReferences)">
- <Output TaskParameter="Include" ItemName="_Reference"/>
- </CreateItem>
-
- <CreateItem Include="$(AdditionalExplicitAssemblyReferences)">
- <Output TaskParameter="Include" ItemName="_Reference"/>
- </CreateItem>
-
- <ResolveAssemblyReference
- Assemblies="@(_Reference)"
- AssemblyFiles="@(ChildProjectReferences)"
- SearchPaths="$(AssemblySearchPaths)"
- CandidateAssemblyFiles="@(Content);@(None)"
- TargetFrameworkDirectories="$(TargetFrameworkDirectory)"
- AllowedAssemblyExtensions="$(AllowedReferenceAssemblyFileExtensions)"
- AllowedRelatedFileExtensions="$(AllowedReferenceRelatedFileExtensions)"
- FindDependencies="true"
- FindSatellites="true"
- FindRelatedFiles="true"
- TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
- TargetFrameworkMonikerDisplayName="$(TargetFrameworkMonikerDisplayName)"
- TargetFrameworkVersion="$(TargetFrameworkVersion)"
- >
- <Output TaskParameter="ResolvedFiles" ItemName="ResolvedFiles"/>
- <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
- <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
- <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths"/>
- <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
- <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
- </ResolveAssemblyReference>
- </Target>
-
- <Target
- Name="AssignProjectConfigurations"
- Condition="'@(ProjectReference)' != ''">
-
- <!-- assign configs if building a solution file -->
- <AssignProjectConfiguration
- ProjectReferences = "@(ProjectReference)"
- SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
- Condition="'$(BuildingSolutionFile)' == 'true'">
-
- <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
- </AssignProjectConfiguration>
-
- <!-- Else, just -->
- <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true'">
- <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
- </CreateItem>
-
- </Target>
-
- <!-- Split projects into 2 lists
- ProjectReferenceWithConfigurationExistent: Projects existent on disk
- ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
-
- <Target Name="SplitProjectReferencesByExistent"
- DependsOnTargets="AssignProjectConfigurations">
-
- <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
- <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
- Condition="Exists ('%(ProjectReferenceWithConfiguration.Identity)')"/>
-
- <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationNonExistent"
- Condition="!Exists ('%(ProjectReferenceWithConfiguration.Identity)')"/>
- </CreateItem>
- </Target>
-
- <Target
- Name="ResolveProjectReferences"
- DependsOnTargets="SplitProjectReferencesByExistent"
- >
- <!-- If building from a .sln.proj or from IDE, then referenced projects have already
- been built, so just get the target paths -->
- <MSBuild
- Projects="@(ProjectReferenceWithConfigurationExistent)"
- Targets="GetTargetPath"
- Properties="%(ProjectReferenceWithConfigurationExistent.SetConfiguration); %(ProjectReferenceWithConfigurationExistent.SetPlatform)"
- Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
-
- <Output TaskParameter="TargetOutputs" ItemName="ChildProjectReferences" />
- </MSBuild>
-
- <!-- Building a project directly, build the referenced the projects also -->
- <MSBuild
- Projects="@(ProjectReferenceWithConfigurationExistent)"
- Properties="%(ProjectReferenceWithConfigurationExistent.SetConfiguration); %(ProjectReferenceWithConfigurationExistent.SetPlatform)"
- Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' ">
-
- <Output TaskParameter="TargetOutputs" ItemName="ChildProjectReferences" />
- </MSBuild>
-
- <Warning Text="Referenced Project %(ProjectReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
- Condition="'@(ProjectReferenceWithConfigurationNonExistent)' != ''"/>
- </Target>
-
- <Target Name = "CopyFilesMarkedCopyLocal">
- <Copy
- SourceFiles="@(ReferenceCopyLocalPaths)"
- DestinationFiles="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')"
- SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
- <Output TaskParameter = "DestinationFiles" ItemName = "FileWritesShareable"/>
- </Copy>
- </Target>
-
- <Target Name="_ComputeNonExistentFileProperty" Condition='false'>
- <CreateProperty Value="__NonExistentSubDir__\__NonExistentFile__">
- <Output TaskParameter="Value" PropertyName="NonExistentFile"/>
- </CreateProperty>
- </Target>
-
- <PropertyGroup>
- <BuildDependsOn>
- BeforeBuild;
- CoreBuild;
- AfterBuild
- </BuildDependsOn>
- </PropertyGroup>
-
- <Target Name="BeforeBuild"/>
- <Target Name="AfterBuild"/>
-
- <Target Name="Build" DependsOnTargets="$(BuildDependsOn)" Outputs="$(TargetPath)"/>
-
- <PropertyGroup>
- <CoreBuildDependsOn>
- PrepareForBuild;
- GetFrameworkPaths;
- GetReferenceAssemblyPaths;
- PreBuildEvent;
- ResolveReferences;
- CopyFilesMarkedCopyLocal;
- PrepareResources;
- Compile;
- PrepareForRun;
- DeployOutputFiles;
- _RecordCleanFile;
- PostBuildEvent
- </CoreBuildDependsOn>
- </PropertyGroup>
-
- <Target
- Name="CoreBuild"
- DependsOnTargets="$(CoreBuildDependsOn)"
- Outputs="$(OutDir)$(AssemblyName)$(TargetExt)">
-
- <OnError ExecuteTargets="_TimestampAfterCompile;PostBuildEvent"
- Condition=" '$(RunPostBuildEvent)' == 'Always' or '$(RunPostBuildEvent)' == 'OnOutputUpdated'"/>
-
- <OnError ExecuteTargets="_RecordCleanFile" />
- </Target>
-
- <PropertyGroup>
- <CompileDependsOn>
- ResolveReferences;
- BeforeCompile;
- _TimestampBeforeCompile;
- CoreCompile;
- _TimestampAfterCompile;
- AfterCompile
- </CompileDependsOn>
- </PropertyGroup>
-
- <Target Name="BeforeCompile" />
- <Target Name="AfterCompile" />
-
- <Target Name="Compile" DependsOnTargets="$(CompileDependsOn)"/>
-
- <PropertyGroup>
- <PrepareForRunDependsOn>
- DeployOutputFiles
- </PrepareForRunDependsOn>
- </PropertyGroup>
- <Target Name="PrepareForRun" DependsOnTargets="$(PrepareForRunDependsOn)"/>
-
- <PropertyGroup>
- <PrepareResourcesDependsOn>
- AssignTargetPaths;
- SplitResourcesByCulture;
- CreateManifestResourceNames;
- CopyNonResxEmbeddedResources;
- GenerateResources;
- GenerateSatelliteAssemblies;
- CompileLicxFiles
- </PrepareResourcesDependsOn>
- </PropertyGroup>
- <Target Name="PrepareResources" DependsOnTargets="$(PrepareResourcesDependsOn)" />
-
- <Target Name="SplitResourcesByCulture" DependsOnTargets="AssignTargetPaths">
- <!-- Extract .licx files into @(LicxFiles) -->
- <CreateItem Include="@(EmbeddedResourceWithTargetPath)" Condition="'%(Extension)' == '.licx'">
- <Output TaskParameter="Include" ItemName="LicxFiles"/>
- </CreateItem>
-
- <!-- Split *remaining* resource files into various groups.. -->
- <AssignCulture Files="@(EmbeddedResourceWithTargetPath)" Condition="'%(Extension)' != '.licx'">
- <Output TaskParameter="AssignedFilesWithNoCulture" ItemName="ResourcesWithNoCulture"/>
- <Output TaskParameter="AssignedFilesWithCulture" ItemName="ResourcesWithCulture"/>
- </AssignCulture>
-
- <CreateItem Include="@(ResourcesWithNoCulture)" Condition="'%(Extension)' == '.resx'">
- <Output TaskParameter="Include" ItemName="ResxWithNoCulture"/>
- </CreateItem>
-
- <CreateItem Include="@(ResourcesWithNoCulture)" Condition="'%(Extension)' != '.resx'">
- <Output TaskParameter="Include" ItemName="NonResxWithNoCulture"/>
- </CreateItem>
-
- <CreateItem Include="@(ResourcesWithCulture)" Condition="'%(Extension)' == '.resx'">
- <Output TaskParameter="Include" ItemName="ResxWithCulture"/>
- </CreateItem>
-
- <CreateItem Include="@(ResourcesWithCulture)" Condition="'%(Extension)' != '.resx'">
- <Output TaskParameter="Include" ItemName="NonResxWithCulture"/>
- </CreateItem>
- </Target>
-
- <!-- Copy non-resx resources to their manifest resource names, this is what the compiler expects -->
- <Target Name = "CopyNonResxEmbeddedResources"
- Condition = "'@(NonResxWithCulture)' != '' or '@(NonResxWithNoCulture)' != '' or '@(ManifestNonResxWithCulture)' != '' or '@(ManifestNonResxWithNoCulture)' != ''">
-
- <MakeDir Directories="$(IntermediateOutputPath)%(ManifestNonResxWithCulture.Culture)"/>
- <Copy SourceFiles = "@(NonResxWithCulture)"
- DestinationFiles = "@(ManifestNonResxWithCulture->'$(IntermediateOutputPath)%(Identity)')"
- SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
- <Output TaskParameter = "DestinationFiles" ItemName = "ManifestNonResxWithCultureOnDisk"/>
- <Output TaskParameter = "DestinationFiles" ItemName = "FileWrites"/>
- </Copy>
-
- <Copy SourceFiles = "@(NonResxWithNoCulture)"
- DestinationFiles = "@(ManifestNonResxWithNoCulture->'$(IntermediateOutputPath)%(Identity)')"
- SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
- <Output TaskParameter = "DestinationFiles" ItemName = "ManifestNonResxWithNoCultureOnDisk"/>
- <Output TaskParameter = "DestinationFiles" ItemName = "FileWrites"/>
- </Copy>
- </Target>
-
- <Target Name = "GenerateResources">
- <GenerateResource
- Sources = "@(ResxWithNoCulture)"
- UseSourcePath = "true"
- OutputResources = "@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
- Condition = "'@(ResxWithNoCulture)' != '' ">
-
- <Output TaskParameter = "OutputResources" ItemName = "ManifestResourceWithNoCulture"/>
- <Output TaskParameter = "FilesWritten" ItemName = "FileWrites"/>
- </GenerateResource>
-
- <GenerateResource
- Sources = "@(ResxWithCulture)"
- UseSourcePath = "true"
- OutputResources = "@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
- Condition = "'@(ResxWithCulture)' != '' ">
-
- <Output TaskParameter = "OutputResources" ItemName = "ManifestResourceWithCulture"/>
- <Output TaskParameter = "FilesWritten" ItemName = "FileWrites"/>
- </GenerateResource>
- </Target>
-
- <Target Name="GenerateSatelliteAssemblies"
- Inputs="@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
- Outputs="$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll" >
- <!-- @(NonResxWithCulture) - rename files to ManifestNon.. and then use for AL -->
- <MakeDir Directories = "$(IntermediateOutputPath)%(ManifestResourceWithCulture.Culture)" Condition = "'@(ManifestResourceWithCulture)' != ''" />
- <MakeDir Directories = "$(IntermediateOutputPath)%(ManifestNonResxWithCultureOnDisk.Culture)" Condition = "'@(ManifestNonResxWithCultureOnDisk)' != ''" />
-
- <AL
- Culture = "%(Culture)"
- DelaySign="$(DelaySign)"
- EmbedResources = "@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
- KeyFile="$(KeyOriginatorFile)"
- ToolExe="$(AlToolExe)"
- ToolPath="$(AlToolPath)"
- OutputAssembly = "$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll" >
- <Output TaskParameter="OutputAssembly" ItemName="FileWrites"/>
- </AL>
-
-
- <CreateItem
- Include = "$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll"
- AdditionalMetadata = "Culture=%(Culture)"
- Condition = "'@(ManifestResourceWithCulture)' != '' or '@(ManifestNonResxWithCultureOnDisk)' != ''">
- <Output TaskParameter = "Include" ItemName = "IntermediateSatelliteAssemblies" />
- </CreateItem>
- </Target>
-
- <PropertyGroup>
- <CompileLicxFilesDependsOn></CompileLicxFilesDependsOn>
- </PropertyGroup>
-
- <Target Name = "CompileLicxFiles"
- Condition = "'@(LicxFiles)' != ''"
- DependsOnTargets = "$(CompileLicxFilesDependsOn)"
- Outputs = "$(IntermediateOutputPath)$(TargetFileName).licenses">
- <LC
- Sources = "@(LicxFiles)"
- LicenseTarget = "$(TargetFileName)"
- OutputDirectory = "$(IntermediateOutputPath)"
- OutputLicense = "$(IntermediateOutputPath)$(TargetFileName).licenses"
- ReferencedAssemblies = "@(ReferencePath);@(_ResolvedDependencyFiles)"
- ToolPath = "$(LCToolPath)"
- ToolExe = "$(LCToolExe)">
-
- <Output TaskParameter="OutputLicense" ItemName="CompiledLicenseFile"/>
- <Output TaskParameter="OutputLicense" ItemName="FileWrites"/>
- </LC>
- </Target>
-
- <!-- Assign target paths to files that will need to be copied along with the project -->
- <Target Name = "AssignTargetPaths">
- <AssignTargetPath Files="@(None)" RootFolder="$(MSBuildProjectDirectory)">
- <Output TaskParameter="AssignedFiles" ItemName="NoneWithTargetPath"/>
- </AssignTargetPath>
-
- <AssignTargetPath Files="@(Content)" RootFolder="$(MSBuildProjectDirectory)">
- <Output TaskParameter="AssignedFiles" ItemName="ContentWithTargetPath"/>
- </AssignTargetPath>
-
- <AssignTargetPath Files="@(EmbeddedResource)" RootFolder="$(MSBuildProjectDirectory)">
- <Output TaskParameter="AssignedFiles" ItemName="EmbeddedResourceWithTargetPath"/>
- </AssignTargetPath>
- </Target>
-
- <Target Name="DeployOutputFiles"
- DependsOnTargets="PrepareResources;CoreCompile;_CopyDeployFilesToOutputDirectory;_CopyAppConfigFile">
-
- <Copy
- SourceFiles="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb"
- Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')"
- DestinationFolder="$(OutDir)"
- SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
- <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
- </Copy>
-
- <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
- <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
- </Copy>
-
- <Copy
- SourceFiles = "@(IntermediateSatelliteAssemblies)"
- DestinationFiles = "@(IntermediateSatelliteAssemblies->'$(OutDir)\%(Culture)\$(AssemblyName).resources.dll')"
- Condition = "'@(IntermediateSatelliteAssemblies)' != ''"
- SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
- <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
- </Copy>
- </Target>
-
- <Target Name="_CopyDeployFilesToOutputDirectory"
- DependsOnTargets="GetCopyToOutputDirectoryItems;
- _CopyDeployFilesToOutputDirectoryAlways;
- _CopyDeployFilesToOutputDirectoryPreserveNewest"/>
-
- <Target Name="_CopyDeployFilesToOutputDirectoryPreserveNewest"
- Condition="'@(ItemsToCopyToOutputDirectoryPreserveNewest)' != ''"
- Inputs="@(ItemsToCopyToOutputDirectoryPreserveNewest)"
- Outputs="@(ItemsToCopyToOutputDirectoryPreserveNewest->'$(OutDir)%(TargetPath)')">
-
- <Copy SourceFiles="@(ItemsToCopyToOutputDirectoryPreserveNewest)"
- DestinationFiles="@(ItemsToCopyToOutputDirectoryPreserveNewest->'$(OutDir)%(TargetPath)')"
- SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
- <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
- </Copy>
- </Target>
-
- <!-- Copy if newer -->
- <Target Name="_CopyDeployFilesToOutputDirectoryAlways"
- Condition="'@(ItemsToCopyToOutputDirectoryAlways)' != ''">
-
- <Copy SourceFiles="@(ItemsToCopyToOutputDirectoryAlways)"
- DestinationFiles="@(ItemsToCopyToOutputDirectoryAlways->'$(OutDir)%(TargetPath)')">
- <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
- </Copy>
- </Target>
-
-
- <Target Name="_CopyAppConfigFile" Condition="'@(AppConfigWithTargetPath)' != ''"
- Inputs="@(AppConfigWithTargetPath)"
- Outputs="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">
-
- <Copy SourceFiles="@(AppConfigWithTargetPath)"
- DestinationFiles="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">
- <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
- </Copy>
- </Target>
-
- <Target Name="GetTargetPath" Outputs="$(TargetPath)"/>
-
- <Target Name="GetCopyToOutputDirectoryItems"
- Outputs="@(AllItemsFullPathWithTargetPath)"
- DependsOnTargets="AssignTargetPaths;SplitProjectReferencesByExistent">
-
- <!-- FIXME: handle .vcproj
- FIXME: Private ProjectReferences are honored only in 3.5
- -->
- <MSBuild
- Projects="@(ProjectReferenceWithConfigurationExistent)"
- Targets="GetCopyToOutputDirectoryItems"
- Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and '%(ProjectReferenceWithConfigurationExistent.Private)' != 'false'">
-
- <Output TaskParameter="TargetOutputs" ItemName="AllChildProjectItemsWithTargetPath"/>
- </MSBuild>
-
- <!-- Process items from child project. The outputs need to have full path
- as they'll be used from other projects -->
-
- <CreateItem
- Include="@(AllChildProjectItemsWithTargetPath->'%(FullPath)')"
- Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-
- <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
- Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
- Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-
- </CreateItem>
-
- <!-- Process _this_ project's items -->
-
- <CreateItem
- Include="@(NoneWithTargetPath->'%(FullPath)')"
- Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(NoneWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
- <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
- Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
- Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
- </CreateItem>
-
- <CreateItem
- Include="@(ContentWithTargetPath->'%(FullPath)')"
- Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(ContentWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
- <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
- Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
- Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
- </CreateItem>
-
- <CreateItem
- Include="@(EmbeddedResourceWithTargetPath->'%(FullPath)')"
- Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
- <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
- Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
- <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
- Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
- </CreateItem>
-
- </Target>
-
- <!-- Pre/Post BuildEvents -->
- <PropertyGroup>
- <PreBuildEventDependsOn />
- </PropertyGroup>
-
- <Target Name="PreBuildEvent"
- Condition="'$(PreBuildEvent)' != ''"
- DependsOnTargets="$(PreBuildEventDependsOn)">
-
- <Exec WorkingDirectory="$(OutDir)" Command="$(PreBuildEvent)" />
- </Target>
-
- <!-- PostBuildEvent depends on $(RunPostBuildEvent)
-
- Default: OnBuildSuccess
- OnBuildSuccess: Run after a successful build
- OnOutputUpdated: Run only if the output assembly got updates
- Always: Run always
- -->
- <PropertyGroup>
- <PostBuildEventDependsOn />
- </PropertyGroup>
-
- <!-- this gets invoked in two cases, from CoreBuildDependsOn, if the build completes
- successfully, OR from OnError in CoreBuild, if the build failed and $(RunPostBuildEvent)
- is 'Always' or 'OnOutputUpdated'. Invoke $(PostBuildEvent) if its either Empty (== OnBuildSuccess)
- or OnBuildSuccess or Always OR (OnOutputUpdated and output assembly got updated) -->
- <Target Name="PostBuildEvent"
- Condition="'$(PostBuildEvent)' != '' and
- ('$(RunPostBuildEvent)' != 'OnOutputUpdated' or
- '$(_AssemblyModifiedTimeBeforeCompile)' != '$(_AssemblyModifiedTimeAfterCompile)')"
- DependsOnTargets="$(PostBuildEventDependsOn)">
-
- <Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
- </Target>
-
- <!-- Timestamp the output assemblies, required for PostBuildEvent -->
- <Target Name="_TimestampBeforeCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'">
- <CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
- <Output TaskParameter="Include" PropertyName="_AssemblyModifiedTimeBeforeCompile" />
- </CreateItem>
- </Target>
- <Target Name="_TimestampAfterCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'">
- <CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
- <Output TaskParameter="Include" PropertyName="_AssemblyModifiedTimeAfterCompile" />
- </CreateItem>
- </Target>
-
- <!-- Rebuild -->
- <PropertyGroup>
- <RebuildDependsOn>
- BeforeRebuild;
- Clean;
- $(MSBuildProjectDefaultTargets);
- AfterRebuild;
- </RebuildDependsOn>
-
- <RebuildDependsOn Condition="'$(MSBuildProjectDefaultTargets)' == 'Rebuild'">
- BeforeRebuild;
- Clean;
- Build;
- AfterRebuild;
- </RebuildDependsOn>
- </PropertyGroup>
-
- <Target Name="BeforeRebuild" />
- <Target Name="AfterRebuild" />
-
- <Target Name="Rebuild"
- DependsOnTargets="$(RebuildDependsOn)"
- Outputs="$(TargetPath)"/>
-
- <!-- Clean -->
- <Target Name="_RecordCleanFile"
- DependsOnTargets="_GetCompileOutputsForClean">
-
- <!-- add to list of previous writes for this platform/config -->
-
- <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
- <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
- </ReadLinesFromFile>
-
- <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
- <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
- </RemoveDuplicates>
-
- <!-- CopyLocal files: In case all the projects build to common output
- directory, then other projects might depend on some of these
- CopyLocal files, so delete only the ones under *this* project
- directory -->
- <FindUnderPath Path="$(MSBuildProjectDirectory)" Files="@(FileWritesShareable)">
- <Output TaskParameter="InPath" ItemName="FileWrites"/>
- </FindUnderPath>
-
- <WriteLinesToFile
- File="$(IntermediateOutputPath)$(CleanFile)"
- Lines="@(CombinedFileWrites)"
- Overwrite="true"/>
- </Target>
-
- <PropertyGroup>
- <CleanDependsOn>
- BeforeClean;
- CleanReferencedProjects;
- CoreClean;
- AfterClean
- </CleanDependsOn>
- </PropertyGroup>
-
- <Target Name="_GetCompileOutputsForClean">
- <!-- assembly and debug file in the *intermediate output path* -->
- <CreateItem Include="@(IntermediateAssembly)" Condition="Exists('@(IntermediateAssembly)')">
- <Output TaskParameter="Include" ItemName="FileWrites"/>
- </CreateItem>
-
- <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb"
- Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
- <Output TaskParameter="Include" ItemName="FileWrites"/>
- </CreateItem>
- </Target>
-
- <!-- Get the list of files written, for clean -->
- <Target Name="_GetCleanFileWrites"
- DependsOnTargets="_GetCompileOutputsForClean">
- <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
- <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
- </ReadLinesFromFile>
- </Target>
-
- <Target Name="CleanReferencedProjects"
- DependsOnTargets="AssignProjectConfigurations">
-
- <!-- If building from .sln.proj or from IDE, clean will get handled by them,
- else we are building a project directly, from the command line, so
- clean the referenced projects -->
- <MSBuild Projects="@(ProjectReferenceWithConfigurationExistent)"
- Targets="Clean"
- Condition=" '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' and '@(ProjectReferenceWithConfigurationExistent)' != ''" />
-
- </Target>
-
- <Target Name="Clean" DependsOnTargets="$(CleanDependsOn)"/>
-
- <!-- Override in project to run before/after clean tasks -->
- <Target Name="BeforeClean" />
- <Target Name="AfterClean" />
-
- <Target Name="CoreClean" DependsOnTargets="_GetCleanFileWrites">
- <Delete Files="@(PreviousFileWrites);@(FileWrites)" TreatErrorsAsWarnings="true"/>
-
- <!-- all previous files written for this platform/config have been deleted,
- we can safely remove the file list now -->
- <Delete Files="$(IntermediateOutputPath)$(CleanFile)" TreatErrorsAsWarnings="true" />
- </Target>
-
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter\*"
- Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter')"/>
-</Project>
+++ /dev/null
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
- <UsingTask TaskName="Microsoft.Build.Tasks.AL" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.AssignTargetPath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.AssignCulture" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.AssignProjectConfiguration" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.CallTarget" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Copy" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
- <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Csc" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Delete" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Error" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Exec" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.FindAppConfigFile" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.FindUnderPath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.GenerateResource" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.GetFrameworkPath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.GetFrameworkSdkPath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.GetReferenceAssemblyPaths" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.LC" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.MakeDir" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Message" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.MSBuild" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.ReadLinesFromFile" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.RemoveDir" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.RemoveDuplicates" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.ResolveAssemblyReference" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.SignFile" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Touch" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Vbc" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.Warning" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <UsingTask TaskName="Microsoft.Build.Tasks.WriteLinesToFile" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-</Project>
%_prefix/lib/mono/4.5/System.dll
%_prefix/lib/mono/4.5/cscompmgd.dll
%_prefix/lib/mono/4.5/mscorlib.dll*
+%_prefix/lib/mono/4.5/Facades/*.dll
+%_prefix/lib/mono/4.5/Facades/*.dll.mdb
%_prefix/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll
%_prefix/lib/mono/gac/Commons.Xml.Relaxng
%_prefix/lib/mono/gac/CustomMarshalers
noinst_LTLIBRARIES = libmonoarch-arm.la
-BUILT_SOURCES = arm_dpimacros.h arm_fpamacros.h arm_vfpmacros.h
+BUILT_SOURCES = arm_dpimacros.h arm_vfpmacros.h
libmonoarch_arm_la_SOURCES = $(BUILT_SOURCES) \
(cd $(srcdir); bash ./dpiops.sh) > $@t
mv $@t $@
-arm_fpamacros.h: fpaops.sh fpam_macros.th fpa_macros.th
- (cd $(srcdir); bash ./fpaops.sh) > $@t
- mv $@t $@
-
arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
(cd $(srcdir); bash ./vfpops.sh) > $@t
mv $@t $@
CLEANFILES = $(BUILT_SOURCES)
EXTRA_DIST = dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
- fpam_macros.th fpa_macros.th arm-fpa-codegen.h fpaops.sh \
vfpm_macros.th vfp_macros.th arm-vfp-codegen.h vfpops.sh
#define ARM_INC(p, reg) ARM_ADD_REG_IMM8(p, reg, reg, 1)
#define ARM_DEC(p, reg) ARM_SUB_REG_IMM8(p, reg, reg, 1)
+#define ARM_MLS(p, rd, rn, rm, ra) ARM_EMIT((p), (ARMCOND_AL << 28) | (0x6 << 20) | ((rd) << 16) | ((ra) << 12) | ((rm) << 8) | (0x9 << 4) | ((rn) << 0))
/* ARM V5 */
#define ARM_MCR(p, coproc, opc1, rt, crn, crm, opc2) \
ARM_MCR_COND ((p), (coproc), (opc1), (rt), (crn), (crm), (opc2), ARMCOND_AL)
+/* ARMv7VE */
+#define ARM_SDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x1 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0)))
+#define ARM_SDIV(p, rd, rn, rm) ARM_SDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL)
+
+#define ARM_UDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x3 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0)))
+#define ARM_UDIV(p, rd, rn, rm) ARM_UDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL)
+
#ifdef __cplusplus
}
#endif
+++ /dev/null
-/*
- * Copyright 2005 Novell Inc
- * Copyright 2011 Xamarin Inc
- */
-
-#ifndef __MONO_ARM_FPA_CODEGEN_H__
-#define __MONO_ARM_FPA_CODEGEN_H__
-
-#include "arm-codegen.h"
-
-enum {
- /* FPA registers */
- ARM_FPA_F0,
- ARM_FPA_F1,
- ARM_FPA_F2,
- ARM_FPA_F3,
- ARM_FPA_F4,
- ARM_FPA_F5,
- ARM_FPA_F6,
- ARM_FPA_F7,
-
- /* transfer length for LDF/STF (T0/T1), already shifted */
- ARM_FPA_SINGLE = 0,
- ARM_FPA_DOUBLE = 1 << 15,
-
- ARM_FPA_ADF = 0 << 20,
- ARM_FPA_MUF = 1 << 20,
- ARM_FPA_SUF = 2 << 20,
- ARM_FPA_RSF = 3 << 20,
- ARM_FPA_DVF = 4 << 20,
- ARM_FPA_RDF = 5 << 20,
- ARM_FPA_POW = 6 << 20,
- ARM_FPA_RPW = 7 << 20,
- ARM_FPA_RMF = 8 << 20,
- ARM_FPA_FML = 9 << 20,
- ARM_FPA_FDV = 10 << 20,
- ARM_FPA_FRD = 11 << 20,
- ARM_FPA_POL = 12 << 20,
-
- /* monadic */
- ARM_FPA_MVF = (0 << 20) | (1 << 15),
- ARM_FPA_MNF = (1 << 20) | (1 << 15),
- ARM_FPA_ABS = (2 << 20) | (1 << 15),
- ARM_FPA_RND = (3 << 20) | (1 << 15),
- ARM_FPA_SQT = (4 << 20) | (1 << 15),
- ARM_FPA_LOG = (5 << 20) | (1 << 15),
- ARM_FPA_LGN = (6 << 20) | (1 << 15),
- ARM_FPA_EXP = (7 << 20) | (1 << 15),
- ARM_FPA_SIN = (8 << 20) | (1 << 15),
- ARM_FPA_COS = (9 << 20) | (1 << 15),
- ARM_FPA_TAN = (10 << 20) | (1 << 15),
- ARM_FPA_ASN = (11 << 20) | (1 << 15),
- ARM_FPA_ACS = (12 << 20) | (1 << 15),
- ARM_FPA_ATN = (13 << 20) | (1 << 15),
- ARM_FPA_URD = (14 << 20) | (1 << 15),
- ARM_FPA_NRM = (15 << 20) | (1 << 15),
-
- /* round modes */
- ARM_FPA_ROUND_NEAREST = 0,
- ARM_FPA_ROUND_PINF = 1,
- ARM_FPA_ROUND_MINF = 2,
- ARM_FPA_ROUND_ZERO = 3,
-
- /* round precision */
- ARM_FPA_ROUND_SINGLE = 0,
- ARM_FPA_ROUND_DOUBLE = 1,
-
- /* constants */
- ARM_FPA_CONST_0 = 8,
- ARM_FPA_CONST_1_0 = 9,
- ARM_FPA_CONST_2_0 = 10,
- ARM_FPA_CONST_3_0 = 11,
- ARM_FPA_CONST_4_0 = 12,
- ARM_FPA_CONST_5_0 = 13,
- ARM_FPA_CONST_0_5 = 14,
- ARM_FPA_CONST_10 = 15,
-
- /* compares */
- ARM_FPA_CMF = 4,
- ARM_FPA_CNF = 5,
- ARM_FPA_CMFE = 6,
- ARM_FPA_CNFE = 7,
-
- /* CPRT ops */
- ARM_FPA_FLT = 0,
- ARM_FPA_FIX = 1,
- ARM_FPA_WFS = 2,
- ARM_FPA_RFS = 3,
- ARM_FPA_WFC = 4,
- ARM_FPA_RFC = 5
-};
-
-#define ARM_DEF_FPA_LDF_STF(cond,post,ls,fptype,wback,basereg,fdreg,offset) \
- ((offset) >= 0? (offset)>>2: -(offset)>>2) | \
- ((1 << 8) | (fptype)) | \
- ((fdreg) << 12) | \
- ((basereg) << 16) | \
- ((ls) << 20) | \
- ((wback) << 21) | \
- (((offset) >= 0) << 23) | \
- ((wback) << 21) | \
- ((post) << 24) | \
- (6 << 25) | \
- ARM_DEF_COND(cond)
-
-/* FP load and stores */
-#define ARM_FPA_LDFS_COND(p,freg,base,offset,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_LDR,ARM_FPA_SINGLE,0,(base),(freg),(offset)))
-#define ARM_FPA_LDFS(p,freg,base,offset) \
- ARM_FPA_LDFS_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_LDFD_COND(p,freg,base,offset,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_LDR,ARM_FPA_DOUBLE,0,(base),(freg),(offset)))
-#define ARM_FPA_LDFD(p,freg,base,offset) \
- ARM_FPA_LDFD_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_STFS_COND(p,freg,base,offset,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_STR,ARM_FPA_SINGLE,0,(base),(freg),(offset)))
-#define ARM_FPA_STFS(p,freg,base,offset) \
- ARM_FPA_STFS_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_STFD_COND(p,freg,base,offset,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_STR,ARM_FPA_DOUBLE,0,(base),(freg),(offset)))
-#define ARM_FPA_STFD(p,freg,base,offset) \
- ARM_FPA_STFD_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_DEF_FPA_CPDO_MONADIC(cond,op,dreg,sreg,round,prec) \
- (1 << 8) | (14 << 24) | \
- (op) | \
- ((sreg) << 0) | \
- ((round) << 5) | \
- ((dreg) << 12) | \
- ((prec) << 7) | \
- ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CPDO_DYADIC(cond,op,dreg,sreg1,sreg2,round,prec) \
- (1 << 8) | (14 << 24) | \
- (op) | \
- ((sreg1) << 16) | \
- ((sreg2) << 0) | \
- ((round) << 5) | \
- ((dreg) << 12) | \
- ((prec) << 7) | \
- ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CMP(cond,op,sreg1,sreg2) \
- (1 << 4) | (1 << 8) | (15 << 12) | \
- (1 << 20) | (14 << 24) | \
- (op) << 21 | \
- (sreg1) << 16 | \
- (sreg2) | \
- ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CPRT(cond,op,fn,fm,rd,ftype,round) \
- (1 << 4) | (1 << 8) | (14 << 24) | \
- (op) << 20 | \
- (fm) | \
- (fn) << 16 | \
- (rd) << 12 | \
- ((round) << 5) | \
- ((ftype) << 7) | \
- ARM_DEF_COND(cond)
-
-
-#include "arm_fpamacros.h"
-
-#define ARM_FPA_RNDDZ_COND(p,dreg,sreg,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_RND,(dreg),(sreg),ARM_FPA_ROUND_ZERO,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_RNDDZ(p,dreg,sreg) ARM_FPA_RNDD_COND(p,dreg,sreg,ARMCOND_AL)
-
-/* compares */
-#define ARM_FPA_FCMP_COND(p,op,sreg1,sreg2,cond) \
- ARM_EMIT(p, ARM_DEF_FPA_CMP(cond,op,sreg1,sreg2))
-#define ARM_FPA_FCMP(p,op,sreg1,sreg2) ARM_FPA_FCMP_COND(p,op,sreg1,sreg2,ARMCOND_AL)
-
-/* coprocessor register transfer */
-#define ARM_FPA_FLTD(p,fn,rd) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FLT,(fn),0,(rd),ARM_FPA_ROUND_DOUBLE,ARM_FPA_ROUND_NEAREST))
-#define ARM_FPA_FLTS(p,fn,rd) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FLT,(fn),0,(rd),ARM_FPA_ROUND_SINGLE,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_FIXZ(p,rd,fm) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FIX,0,(fm),(rd),0,ARM_FPA_ROUND_ZERO))
-
-#define ARM_FPA_WFS(p,rd) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_WFS,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_RFS(p,rd) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_RFS,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_WFC(p,rd) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_WFC,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_RFC(p,rd) \
- ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_RFC,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#endif /* __MONO_ARM_FPA_CODEGEN_H__ */
-
#include "arm-codegen.h"
enum {
- /* FPA registers */
+ /* VFP registers */
ARM_VFP_F0,
ARM_VFP_F1,
ARM_VFP_F2,
+++ /dev/null
-/* -- <Op> -- */
-
-
-/* Fd := Rn <Op> Rm */
-#define ARM_FPA_<Op>D_COND(p, rd, rn, rm, cond) \
- ARM_EMIT((p), ARM_DEF_FPA_CPDO_DYADIC(cond,ARM_FPA_<Op>,rd,rn,rm,ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_<Op>D(p, rd, rn, rm) \
- ARM_FPA_<Op>D_COND(p, rd, rn, rm, ARMCOND_AL)
-
-#define ARM_FPA_<Op>S_COND(p, rd, rn, rm, cond) \
- ARM_EMIT((p), ARM_DEF_FPA_CPDO_DYADIC(cond,ARM_FPA_<Op>,rd,rn,rm,ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_SINGLE))
-#define ARM_FPA_<Op>S(p, rd, rn, rm) \
- ARM_FPA_<Op>S_COND(p, rd, rn, rm, ARMCOND_AL)
-
-
+++ /dev/null
-/* -- <Op> -- */
-
-
-/* Fd := <Op> Rm */
-
-#define ARM_FPA_<Op>D_COND(p,dreg,sreg,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_<Op>,(dreg),(sreg),ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_<Op>D(p,dreg,sreg) ARM_FPA_<Op>D_COND(p,dreg,sreg,ARMCOND_AL)
-
-#define ARM_FPA_<Op>S_COND(p,dreg,sreg,cond) \
- ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_<Op>,(dreg),(sreg),ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_SINGLE))
-#define ARM_FPA_<Op>S(p,dreg,sreg) ARM_FPA_<Op>S_COND(p,dreg,sreg,ARMCOND_AL)
-
-
+++ /dev/null
-#!/bin/sh
-
-DYADIC="ADF MUF SUF RSF DVF RDF POW RPW RMF FML FDV FRD POL"
-MONADIC="MVF MNF ABS RND SQT LOG EXP SIN COS TAN ASN ACS ATN URD NRM"
-
-# $1: opcode list
-# $2: template
-gen() {
- for i in $1; do
- sed "s/<Op>/$i/g" $2.th
- done
-}
-
-echo -e "/* Macros for FPA ops, auto-generated from template */\n"
-
-echo -e "\n/* dyadic */\n"
-gen "$DYADIC" fpa_macros
-
-echo -e "\n/* monadic */\n"
-gen "$MONADIC" fpam_macros
-
-echo -e "\n\n"
-
-echo -e "\n/* end generated */\n"
#define s390_basr(c, r1, r2) S390_RR(c, 0x0d, r1, r2)
#define s390_bctr(c, r1, r2) S390_RR(c, 0x06, r1, r2)
#define s390_bctrg(c, r1, r2) S390_RRE(c, 0xb946, r1, r2)
+#define s390_bnzr(c, r) S390_RR(c, 0x07, 0x07, r)
#define s390_bras(c, r, o) S390_RI(c, 0xa75, r, o)
#define s390_brasl(c, r, o) S390_RIL_1(c, 0xc05, r, o)
#define s390_brc(c, m, d) S390_RI(c, 0xa74, m, d)
+#define s390_brcl(c, m, d) S390_RIL_2(c, 0xc04, m, d)
#define s390_br(c, r) S390_RR(c, 0x07, 0xf, r)
#define s390_break(c) S390_RR(c, 0, 0, 0)
+#define s390_bzr(c, r) S390_RR(c, 0x07, 0x08, r)
#define s390_c(c, r, x, b, d) S390_RX(c, 0x59, r, x, b, d)
#define s390_cdb(c, r, x, b, d) S390_RXE(c, 0xed19, r, x, b, d)
#define s390_cdbr(c, r1, r2) S390_RRE(c, 0xb319, r1, r2)
#define s390_icy(c, r, x, b, d) S390_RXY(c, 0xe373, r, x, b, d)
#define s390_j(c,d) s390_brc(c, S390_CC_UN, d)
#define s390_jc(c, m, d) s390_brc(c, m, d)
-#define s390_jcl(c, m, d) S390_RIL_2(c, 0xc04, m, d)
+#define s390_jcl(c, m, d) s390_brcl(c, m, d)
#define s390_jcy(c, d) s390_brc(c, S390_CC_CY, d)
#define s390_je(c, d) s390_brc(c, S390_CC_EQ, d)
#define s390_jeo(c, d) s390_brc(c, S390_CC_ZR|S390_CC_OV, d)
#define s390_jno(c, d) s390_brc(c, S390_CC_NO, d)
#define s390_jp(c, d) s390_brc(c, S390_CC_GT, d)
#define s390_jz(c, d) s390_brc(c, S390_CC_ZR, d)
+#define s390_jg(c,d) s390_brcl(c, S390_CC_UN, d)
+#define s390_jgcy(c, d) s390_brcl(c, S390_CC_CY, d)
+#define s390_jge(c, d) s390_brcl(c, S390_CC_EQ, d)
+#define s390_jgeo(c, d) s390_brcl(c, S390_CC_ZR|S390_CC_OV, d)
+#define s390_jgh(c, d) s390_brcl(c, S390_CC_GT, d)
+#define s390_jgho(c, d) s390_brcl(c, S390_CC_GT|S390_CC_OV, d)
+#define s390_jgl(c, d) s390_brcl(c, S390_CC_LT, d)
+#define s390_jglo(c, d) s390_brcl(c, S390_CC_LT|S390_CC_OV, d)
+#define s390_jgm(c, d) s390_brcl(c, S390_CC_LT, d)
+#define s390_jgnc(c, d) s390_brcl(c, S390_CC_NC, d)
+#define s390_jgne(c, d) s390_brcl(c, S390_CC_NZ, d)
+#define s390_jgnh(c, d) s390_brcl(c, S390_CC_LE, d)
+#define s390_jgnl(c, d) s390_brcl(c, S390_CC_GE, d)
+#define s390_jgnz(c, d) s390_brcl(c, S390_CC_NZ, d)
+#define s390_jgo(c, d) s390_brcl(c, S390_CC_OV, d)
+#define s390_jgno(c, d) s390_brcl(c, S390_CC_NO, d)
+#define s390_jgp(c, d) s390_brcl(c, S390_CC_GT, d)
+#define s390_jgz(c, d) s390_brcl(c, S390_CC_ZR, d)
#define s390_l(c, r, x, b, d) S390_RX(c, 0x58, r, x, b, d)
#define s390_ly(c, r, x, b, d) S390_RXY(c, 0xe358, r, x, b, d)
#define s390_la(c, r, x, b, d) S390_RX(c, 0x41, r, x, b, d)
gboolean
mono_method_can_access_field_full (MonoMethod *method, MonoClassField *field, MonoClass *context_klass) MONO_INTERNAL;
+gboolean
+mono_class_can_access_class (MonoClass *access_class, MonoClass *target_class) MONO_INTERNAL;
+
MonoClass *
mono_class_get_generic_type_definition (MonoClass *klass) MONO_INTERNAL;
return TRUE;
}
+/*
+ * mono_class_can_access_class:
+ * @source_class: The source class
+ * @target_class: The accessed class
+ *
+ * This function returns is @target_class is visible to @source_class
+ *
+ * Returns: TRUE if source have proper visibility and acessibility to target
+ */
+gboolean
+mono_class_can_access_class (MonoClass *source_class, MonoClass *target_class)
+{
+ return can_access_type (source_class, target_class);
+}
+
/**
* mono_type_is_valid_enum_basetype:
* @type: The MonoType to check
g_free (class_nspace);
return NULL;
}
- *method_name++ = 0;
/* allow two :: to separate the method name */
- if (*method_name == ':')
- method_name++;
+ if (method_name [-1] == ':')
+ method_name [-1] = 0;
+ *method_name++ = 0;
class_name = strrchr (class_nspace, '.');
if (class_name) {
*class_name++ = 0;
PRECONDITION(sign == 0 || sign == 1);
*p = (((guint64)sign) << 63) | (((guint64)((1023+texp)&0x7ff)) << 52) | mantisse;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- {
- guint32 temp;
- guint32 *t = (guint32*)p;
- temp = t [0];
- t [0] = t [1];
- t [1] = temp;
- }
-#endif
-#endif
}
double mono_decimal2double(/*[In]*/decimal_repr* pA)
return (MonoException*)ex;
}
+static gboolean
+append_frame_and_continue (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data)
+{
+ MonoDomain *domain = mono_domain_get ();
+ GString *text = (GString*)user_data;
+
+ if (method) {
+ char *msg = mono_debug_print_stack_frame (method, native_offset, domain);
+ g_string_append_printf (text, "%s\n", msg);
+ g_free (msg);
+ } else {
+ g_string_append_printf (text, "<unknown native frame 0x%x>\n", ip);
+ }
+
+ return FALSE;
+}
+
+char *
+mono_exception_get_managed_backtrace (MonoException *exc)
+{
+ GString *text;
+
+ text = g_string_new_len (NULL, 20);
+
+ if (!mono_get_eh_callbacks ()->mono_exception_walk_trace (exc, append_frame_and_continue, text))
+ g_string_append (text, "managed backtrace not available\n");
+
+ return g_string_free (text, FALSE);
+}
+
char *
mono_exception_get_native_backtrace (MonoException *exc)
{
ICALL_TYPE(ACTS, "System.Runtime.Remoting.Activation.ActivationServices", ACTS_1)
ICALL(ACTS_1, "AllocateUninitializedClassInstance", ves_icall_System_Runtime_Activation_ActivationServices_AllocateUninitializedClassInstance)
-#ifndef DISABLE_REMOTING
ICALL(ACTS_2, "EnableProxyActivation", ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation)
-#endif
ICALL_TYPE(MONOMM, "System.Runtime.Remoting.Messaging.MonoMethodMessage", MONOMM_1)
ICALL(MONOMM_1, "InitMessage", ves_icall_MonoMethodMessage_InitMessage)
}
#else
memcpy (mono_array_addr (array, char, 0), field_data, size);
-#ifdef ARM_FPU_FPA
- if (klass->element_class->byval_arg.type == MONO_TYPE_R8) {
- gint i;
- double tmp;
- double *data = (double*)mono_array_addr (array, double, 0);
-
- for (i = 0; i < size; i++, data++) {
- readr8 (data, &tmp);
- *data = tmp;
- }
- }
-#endif
#endif
}
mono_vtable_set_is_remote (vtable, enable);
}
+
+#else /* DISABLE_REMOTING */
+
+ICALL_EXPORT void
+ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (MonoReflectionType *type, MonoBoolean enable)
+{
+ g_assert_not_reached ();
+}
+
#endif
ICALL_EXPORT MonoObject *
mono_mb_emit_byte (mb, CEE_LDIND_REF);
}
break;
+ case MONO_TYPE_VAR:
+ case MONO_TYPE_MVAR:
+ mono_mb_emit_op (mb, CEE_LDOBJ, klass);
+ break;
default:
g_warning ("type %x not implemented", type->type);
g_assert_not_reached ();
mono_mb_emit_op (mb, CEE_STOBJ, klass);
break;
case MONO_TYPE_GENERICINST:
+ case MONO_TYPE_VAR:
+ case MONO_TYPE_MVAR:
mono_mb_emit_op (mb, CEE_STOBJ, klass);
break;
default:
*
* Returns: the 1-based index into the TypeDef table of the type
* where the type described by @index is nested.
- * Retruns 0 if @index describes a non-nested type.
+ * Returns 0 if @index describes a non-nested type.
*/
guint32
mono_metadata_nested_in_typedef (MonoImage *meta, guint32 index)
unsigned char cval [8];
} mono_rdouble;
-#ifdef ARM_FPU_FPA
-#define MONO_DOUBLE_ASSERT_ENDIANITY(dbl_ptr) \
- do { \
- mono_rdouble r; \
- r.fval = *dbl_ptr; \
- r.ival = (guint64) *((guint32 *) r.cval) << 32 | \
- *((guint32 *) (r.cval + 4)); \
- *dbl_ptr = r.fval; \
- } while (0)
-#else
-#define MONO_DOUBLE_ASSERT_ENDIANITY(dbl_ptr)
-#endif
-
#if NO_UNALIGNED_ACCESS
guint16 mono_read16 (const unsigned char *x);
do { \
mono_rdouble mf; \
mf.ival = read64 ((x)); \
- MONO_DOUBLE_ASSERT_ENDIANITY (&mf.fval); \
*(dest) = mf.fval; \
} while (0)
gpointer android_tid;
gpointer thread_pinning_ref;
gint32 ignore_next_signal;
+ MonoMethod *async_invoke_method;
/*
* These fields are used to avoid having to increment corlib versions
* when a new field is added to this structure.
* Please synchronize any changes with InternalThread in Thread.cs, i.e. add the
* same field there.
*/
- gpointer unused0;
gpointer unused1;
gpointer unused2;
};
} MonoRuntimeCallbacks;
typedef gboolean (*MonoInternalStackWalk) (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data);
+typedef gboolean (*MonoInternalExceptionFrameWalk) (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data);
typedef struct {
void (*mono_walk_stack_with_ctx) (MonoInternalStackWalk func, MonoContext *ctx, MonoUnwindOptions options, void *user_data);
void (*mono_walk_stack_with_state) (MonoInternalStackWalk func, MonoThreadUnwindState *state, MonoUnwindOptions options, void *user_data);
void (*mono_raise_exception) (MonoException *ex);
void (*mono_raise_exception_with_ctx) (MonoException *ex, MonoContext *ctx);
+ gboolean (*mono_exception_walk_trace) (MonoException *ex, MonoInternalExceptionFrameWalk func, gpointer user_data);
gboolean (*mono_install_handler_block_guard) (MonoThreadUnwindState *unwind_state);
} MonoRuntimeExceptionHandlingCallbacks;
MonoString *
ves_icall_Mono_Runtime_GetNativeStackTrace (MonoException *exc) MONO_INTERNAL;
+char *
+mono_exception_get_managed_backtrace (MonoException *exc) MONO_INTERNAL;
+
#endif /* __MONO_OBJECT_INTERNALS_H__ */
MonoObject *other_exc = NULL;
str = mono_object_to_string (exc, &other_exc);
if (other_exc) {
- message = g_strdup ("Nested exception, bailing out");
+ char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
+ char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other_exc);
+
+ message = g_strdup_printf ("Nested exception detected.\nOriginal Exception: %s\nNested exception:%s\n",
+ original_backtrace, nested_backtrace);
+
+ g_free (original_backtrace);
+ g_free (nested_backtrace);
+ free_message = TRUE;
} else if (str) {
message = mono_string_to_utf8_checked (str, &error);
if (!mono_error_ok (&error)) {
assembly->in_gac = FALSE;
assembly->image = image;
image->assembly = assembly;
+ mono_assembly_fill_assembly_name (image, &assembly->aname);
/*Finish initializing the runtime*/
mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
char *p, *box_val;
char* buf;
guint32 idx = 0, len = 0, dummy = 0;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- guint32 fpa_double [2];
- guint32 *fpa_p;
-#endif
-#endif
-
+
p = buf = g_malloc (64);
if (!val) {
*ret_type = MONO_TYPE_CLASS;
break;
case MONO_TYPE_R8:
len = 8;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- fpa_p = (guint32*)box_val;
- fpa_double [0] = fpa_p [1];
- fpa_double [1] = fpa_p [0];
- box_val = (char*)fpa_double;
-#endif
-#endif
break;
case MONO_TYPE_VALUETYPE: {
MonoClass *klass = val->vtable->klass;
p += 4;
break;
case MONO_TYPE_R8:
-#if defined(ARM_FPU_FPA) && G_BYTE_ORDER == G_LITTLE_ENDIAN
- p [0] = argval [4];
- p [1] = argval [5];
- p [2] = argval [6];
- p [3] = argval [7];
- p [4] = argval [0];
- p [5] = argval [1];
- p [6] = argval [2];
- p [7] = argval [3];
-#else
swap_with_size (p, argval, 8, 1);
-#endif
p += 8;
break;
case MONO_TYPE_U8:
dyn_array_int_init (&merge_array);
current_time = 0;
+ /*
+ First we insert all bridges into the hash table and then we do dfs1.
+
+ It must be done in 2 steps since the bridge arrays doesn't come in reverse topological order,
+ which means that we can have entry N pointing to entry N + 1.
+
+ If we dfs1 entry N before N + 1 is registered we'll not consider N + 1 for this bridge
+ pass and not create the required xref between the two.
+ */
+ for (i = 0; i < registered_bridges.size; ++i)
+ register_bridge_object (DYN_ARRAY_PTR_REF (®istered_bridges, i));
+
for (i = 0; i < registered_bridges.size; ++i)
- dfs1 (register_bridge_object (DYN_ARRAY_PTR_REF (®istered_bridges, i)), NULL);
+ dfs1 (get_hash_entry (DYN_ARRAY_PTR_REF (®istered_bridges, i), NULL), NULL);
SGEN_TV_GETTIME (atv);
step_2 = SGEN_TV_ELAPSED (btv, atv);
g_assert (info->doing_handshake);
info->doing_handshake = FALSE;
}
- result = pthread_kill (mono_thread_info_get_tid (info), signum);
+ result = mono_threads_pthread_kill (info, signum);
if (result == 0) {
count++;
} else {
static GPtrArray *wsqs;
CRITICAL_SECTION wsqs_lock;
+static gboolean suspended;
/* Hooks */
static MonoThreadPoolFunc tp_start_func;
MonoObject *res, *exc = NULL;
MonoArray *out_args = NULL;
HANDLE wait_event = NULL;
+ MonoInternalThread *thread = mono_thread_internal_current ();
if (ares->execution_context) {
/* use captured ExecutionContext (if available) */
if (ac == NULL) {
/* Fast path from ThreadPool.*QueueUserWorkItem */
void *pa = ares->async_state;
+ /* The debugger needs this */
+ thread->async_invoke_method = ((MonoDelegate*)ares->async_delegate)->method;
res = mono_runtime_delegate_invoke (ares->async_delegate, &pa, &exc);
+ thread->async_invoke_method = NULL;
} else {
MonoObject *cb_exc = NULL;
if (ac != NULL && ac->cb_method) {
void *pa = &ares;
cb_exc = NULL;
+ thread->async_invoke_method = ac->cb_method;
mono_runtime_invoke (ac->cb_method, ac->cb_target, pa, &cb_exc);
+ thread->async_invoke_method = NULL;
exc = cb_exc;
} else {
exc = NULL;
ves_icall_System_Threading_Thread_SetName_internal (thread, mono_string_new (mono_domain_get (), "Threadpool monitor"));
while (1) {
ms = 500;
+ i = 10; //number of spurious awakes we tolerate before doing a round of rebalancing.
do {
guint32 ts;
ts = mono_msec_ticks ();
break;
if (THREAD_WANTS_A_BREAK (thread))
mono_thread_interruption_checkpoint ();
- } while (ms > 0);
+ } while (ms > 0 && i--);
if (mono_runtime_is_shutting_down ())
break;
+ if (suspended)
+ continue;
+
for (i = 0; i < 2; i++) {
ThreadPool *tp;
tp = pools [i];
mono_thread_internal_reset_abort (mono_thread_internal_current ());
}
}
+
+/*
+ * Suspend creation of new threads.
+ */
+void
+mono_thread_pool_suspend (void)
+{
+ suspended = TRUE;
+}
+
+/*
+ * Resume creation of new threads.
+ */
+void
+mono_thread_pool_resume (void)
+{
+ suspended = FALSE;
+}
gboolean mono_thread_pool_remove_domain_jobs (MonoDomain *domain, int timeout) MONO_INTERNAL;
+void mono_thread_pool_suspend (void) MONO_INTERNAL;
+void mono_thread_pool_resume (void) MONO_INTERNAL;
+
void
ves_icall_System_Threading_ThreadPool_GetAvailableThreads (int *workerThreads,
int *completionPortThreads) MONO_INTERNAL;
MonoThread *
mono_thread_attach (MonoDomain *domain)
{
+ MonoThreadInfo *info;
MonoInternalThread *thread;
MonoThread *current_thread;
HANDLE thread_handle;
THREAD_DEBUG (g_message ("%s: Attached thread ID %"G_GSIZE_FORMAT" (handle %p)", __func__, tid, thread_handle));
+ info = mono_thread_info_current ();
+ g_assert (info);
+ thread->thread_info = info;
+
current_thread = new_thread_with_internal (domain, thread);
if (!handle_store (current_thread)) {
g_return_if_fail (thread != NULL);
THREAD_DEBUG (g_message ("%s: mono_thread_detach for %p (%"G_GSIZE_FORMAT")", __func__, thread, (gsize)thread->internal_thread->tid));
-
- mono_profiler_thread_end (thread->internal_thread->tid);
thread_cleanup (thread->internal_thread);
LeaveCriticalSection (thread->synch_cs);
return TRUE;
}
+
+
+/*
+ * mono_thread_is_foreign:
+ * @thread: the thread to query
+ *
+ * This function allows one to determine if a thread was created by the mono runtime and has
+ * a well defined lifecycle or it's a foreigh one, created by the native environment.
+ *
+ * Returns: true if @thread was not created by the runtime.
+ */
+mono_bool
+mono_thread_is_foreign (MonoThread *thread)
+{
+ MonoThreadInfo *info = thread->internal_thread->thread_info;
+ return info->runtime_thread == FALSE;
+}
void mono_threads_request_thread_dump (void);
+mono_bool mono_thread_is_foreign (MonoThread *thread);
+
MONO_END_DECLS
#endif /* _MONO_METADATA_THREADS_H_ */
if (mono_class_has_variant_generic_params (target)) {
if (MONO_CLASS_IS_INTERFACE (target)) {
+ if (MONO_CLASS_IS_INTERFACE (candidate) && mono_class_is_variant_compatible (target, candidate, TRUE))
+ return TRUE;
+
if (candidate->rank == 1) {
if (verifier_inflate_and_check_compat (target, mono_defaults.generic_ilist_class, candidate->element_class))
return TRUE;
merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean start, gboolean external)
{
MonoError error;
- int i, j, k;
+ int i, j;
stack_init (ctx, to);
if (start) {
continue;
}
+ /*Both slots are the same boxed valuetype. Simply copy it.*/
+ if (stack_slot_is_boxed_value (old_slot) &&
+ stack_slot_is_boxed_value (new_slot) &&
+ mono_metadata_type_equal (old_type, new_type)) {
+ copy_stack_value (new_slot, old_slot);
+ continue;
+ }
+
if (mono_type_is_generic_argument (old_type) || mono_type_is_generic_argument (new_type)) {
char *old_name = stack_slot_full_name (old_slot);
char *new_name = stack_slot_full_name (new_slot);
goto end_verify;
}
- for (j = 0; j < old_class->interface_count; ++j) {
- for (k = 0; k < new_class->interface_count; ++k) {
- if (mono_metadata_type_equal (&old_class->interfaces [j]->byval_arg, &new_class->interfaces [k]->byval_arg)) {
- match_class = old_class->interfaces [j];
- goto match_found;
- }
- }
- }
-
/* if old class is an interface that new class implements */
if (old_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
if (verifier_class_is_assignable_from (old_class, new_class)) {
MonoClass *ctr = *constraints;
MonoType *constraint_type = &ctr->byval_arg;
+ if (!mono_class_can_access_class (class, ctr))
+ goto fail;
+
if (!mono_type_is_valid_type_in_context (constraint_type, &gc->context))
goto fail;
endif
if ARM
-# pick up arm_dpimacros.h and arm_fpamacros.h
+# pick up arm_dpimacros.h
ARCH_CFLAGS = -I../arch/arm
arch_sources = $(arm_sources)
arch_built=cpu-arm.h
return add_method_full (acfg, method, FALSE, 0);
}
-static void
-add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
-{
- add_method_full (acfg, method, TRUE, 0);
-}
-
static void
add_extra_method_with_depth (MonoAotCompile *acfg, MonoMethod *method, int depth)
{
+ if (mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE))
+ method = mini_get_shared_method (method);
+
if (acfg->aot_opts.log_generics)
printf ("%*sAdding method %s.\n", depth, "", mono_method_full_name (method, TRUE));
add_method_full (acfg, method, TRUE, depth);
}
+static void
+add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
+{
+ add_extra_method_with_depth (acfg, method, 0);
+}
+
static void
add_jit_icall_wrapper (gpointer key, gpointer value, gpointer user_data)
{
iter = NULL;
while ((method = mono_class_get_methods (klass, &iter))) {
- if (mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE))
+ if (mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE))
/* Already added */
continue;
* If the method is fully sharable, it was already added in place of its
* generic definition.
*/
- if (mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE))
+ if (mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE))
continue;
/*
MonoMethod *m = patch_info->data.method;
if (m->is_inflated) {
if (!(mono_class_generic_sharing_enabled (m->klass) &&
- mono_method_is_generic_sharable_impl_full (m, FALSE, FALSE, FALSE)) &&
+ mono_method_is_generic_sharable_full (m, FALSE, FALSE, FALSE)) &&
!method_has_type_vars (m)) {
if (m->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) {
if (acfg->aot_opts.full_aot)
emit_section_change (acfg, ".text", 0);
emit_alignment (acfg, 8);
emit_label (acfg, symbol);
+ /* To distinguish it from the next symbol */
+ emit_int32 (acfg, 0);
/*
* Add .no_dead_strip directives for all LLVM methods to prevent the OSX linker
if (acfg->direct_method_addresses) {
acfg->flags |= MONO_AOT_FILE_FLAG_DIRECT_METHOD_ADDRESSES;
+ /*
+ * To work around linker issues, we emit a table of branches, and disassemble them at runtime.
+ * This is PIE code, and the linker can update it if needed.
+ */
sprintf (symbol, "method_addresses");
emit_section_change (acfg, RODATA_SECT, 1);
emit_alignment (acfg, 8);
emit_label (acfg, symbol);
+ emit_local_symbol (acfg, symbol, "method_addresses_end", TRUE);
+ img_writer_emit_unset_mode (acfg->w);
+ if (acfg->need_no_dead_strip)
+ fprintf (acfg->fp, " .no_dead_strip %s\n", symbol);
for (i = 0; i < acfg->nmethods; ++i) {
if (acfg->cfgs [i]) {
- emit_pointer (acfg, acfg->cfgs [i]->asm_symbol);
+ if (acfg->thumb_mixed && acfg->cfgs [i]->compile_llvm)
+ fprintf (acfg->fp, "\tblx %s\n", acfg->cfgs [i]->asm_symbol);
+ else
+ fprintf (acfg->fp, "\tbl %s\n", acfg->cfgs [i]->asm_symbol);
} else {
- emit_pointer (acfg, NULL);
+ fprintf (acfg->fp, "\tbl method_addresses\n");
}
}
+ sprintf (symbol, "method_addresses_end");
+ emit_label (acfg, symbol);
+
/* Empty */
sprintf (symbol, "code_offsets");
emit_section_change (acfg, RODATA_SECT, 1);
emit_alignment (acfg, 8);
emit_label (acfg, symbol);
+ emit_int32 (acfg, 0);
} else {
sprintf (symbol, "code_offsets");
emit_section_change (acfg, RODATA_SECT, 1);
sprintf (symbol, "ut_%d", index);
emit_int32 (acfg, index);
- if (acfg->direct_method_addresses)
- emit_pointer (acfg, symbol);
- else
+ if (acfg->direct_method_addresses) {
+ img_writer_emit_unset_mode (acfg->w);
+ if (acfg->thumb_mixed && cfg->compile_llvm)
+ fprintf (acfg->fp, "\n\tblx %s\n", symbol);
+ else
+ fprintf (acfg->fp, "\n\tbl %s\n", symbol);
+ } else {
emit_symbol_diff (acfg, symbol, end_symbol, 0);
+ }
/* Make sure the table is sorted by index */
g_assert (index > prev_index);
prev_index = index;
emit_pointer (acfg, "method_info_offsets");
emit_pointer (acfg, "ex_info_offsets");
emit_pointer (acfg, "code_offsets");
-#ifdef MONOTOUCH
- emit_pointer (acfg, "method_addresses");
-#endif
+ if (acfg->direct_method_addresses)
+ emit_pointer (acfg, "method_addresses");
+ else
+ emit_pointer (acfg, NULL);
emit_pointer (acfg, "extra_method_info_offsets");
emit_pointer (acfg, "extra_method_table");
emit_pointer (acfg, "got_info_offsets");
TV_DECLARE (atv);
TV_DECLARE (btv);
+#ifndef MONO_ARCH_GSHAREDVT_SUPPORTED
+ opts &= ~MONO_OPT_GSHAREDVT;
+#endif
+
printf ("Mono Ahead of Time compiler - compiling assembly %s\n", image->name);
acfg = acfg_create (ass, opts);
return usable;
}
+/* This returns an interop address */
+static void*
+get_arm_bl_target (guint32 *ins_addr)
+{
+#ifdef TARGET_ARM
+ guint32 ins = *ins_addr;
+ gint32 offset;
+
+ if ((ins >> ARMCOND_SHIFT) == ARMCOND_NV) {
+ /* blx */
+ offset = (((int)(((ins & 0xffffff) << 1) | ((ins >> 24) & 0x1))) << 7) >> 7;
+ return (char*)ins_addr + (offset * 2) + 8 + 1;
+ } else {
+ offset = (((int)ins & 0xffffff) << 8) >> 8;
+ return (char*)ins_addr + (offset * 4) + 8;
+ }
+#else
+ g_assert_not_reached ();
+ return NULL;
+#endif
+}
+
static void
load_aot_module (MonoAssembly *assembly, gpointer user_data)
{
/* Compute code_offsets from the method addresses */
amodule->code_offsets = g_malloc0 (amodule->info.nmethods * sizeof (gint32));
for (i = 0; i < amodule->info.nmethods; ++i) {
- if (!amodule->method_addresses [i])
+ /* method_addresses () contains a table of branches, since the ios linker can update those correctly */
+ void *addr = get_arm_bl_target ((guint32*)(amodule->method_addresses + i));
+
+ if (addr == amodule->method_addresses)
amodule->code_offsets [i] = 0xffffffff;
else
- amodule->code_offsets [i] = (char*)amodule->method_addresses [i] - (char*)amodule->code;
+ amodule->code_offsets [i] = (char*)addr - (char*)amodule->code;
}
}
#endif
g_assert (klass->inited);
/* Find method index */
- if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE)) {
+ if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE)) {
/*
* For generic methods, we store the fully shared instance in place of the
* original method.
return code;
}
- if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) {
+ if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE)) {
+ /* Partial sharing */
+ MonoMethod *shared;
+
+ shared = mini_get_shared_method (method);
+ method_index = find_extra_method (shared, &amodule);
+ if (method_index != 0xffffff)
+ method = shared;
+ }
+
+ if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) {
/* gsharedvt */
/* Use the all-vt shared method since this is what was AOTed */
method_index = find_extra_method (mini_get_shared_method_full (method, TRUE, TRUE), &amodule);
guint32 *ut, *ut_end, *entry;
int low, high, entry_index;
- if (method->is_inflated && !mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE)) {
+ if (method->is_inflated && !mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE)) {
method_index = find_extra_method (method, &amodule);
- if (method_index == 0xffffff && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) {
+ if (method_index == 0xffffff && mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) {
MonoMethod *shared = mini_get_shared_method_full (method, TRUE, TRUE);
method_index = find_extra_method (shared, &amodule);
}
high = entry_index;
} else {
if (amodule->info.flags & MONO_AOT_FILE_FLAG_DIRECT_METHOD_ADDRESSES)
- code = (gpointer)(gsize)entry [1];
+ code = get_arm_bl_target (entry + 1);
else
code = amodule->code + entry [1];
break;
int_add: dest:i src1:i src2:i len:4
int_sub: dest:i src1:i src2:i len:4
int_mul: dest:i src1:i src2:i len:4
-int_div: dest:i src1:i src2:i len:40
-int_div_un: dest:i src1:i src2:i len:16
-int_rem: dest:i src1:i src2:i len:48
-int_rem_un: dest:i src1:i src2:i len:24
+int_div: dest:i src1:i src2:i len:4
+int_div_un: dest:i src1:i src2:i len:4
+int_rem: dest:i src1:i src2:i len:8
+int_rem_un: dest:i src1:i src2:i len:8
int_and: dest:i src1:i src2:i len:4
int_or: dest:i src1:i src2:i len:4
int_xor: dest:i src1:i src2:i len:4
ceq: dest:i len:12
cgt.un: dest:i len:12
cgt: dest:i len:12
-checkthis: src1:b len:10
+checkthis: src1:b len:16
ckfinite: dest:f src1:f len:22
clt.un: dest:i len:12
clt: dest:i len:12
#include <mono/metadata/socket-io.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/runtime.h>
+#include <mono/metadata/threadpool.h>
#include <mono/utils/mono-semaphore.h>
#include <mono/utils/mono-error-internals.h>
#include <mono/utils/mono-stack-unwinding.h>
mono_mutex_unlock (&suspend_mutex);
+ if (suspend_count == 1)
+ /*
+ * Suspend creation of new threadpool threads, since they cannot run
+ */
+ mono_thread_pool_suspend ();
+
mono_loader_unlock ();
}
mono_mutex_unlock (&suspend_mutex);
//g_assert (err == 0);
+ if (suspend_count == 0)
+ mono_thread_pool_resume ();
+
mono_loader_unlock ();
}
g_hash_table_insert (bp_locs, inst->ip, GINT_TO_POINTER (count + 1));
mono_loader_unlock ();
- if (count == 0) {
+ if (sp->native_offset == SEQ_POINT_NATIVE_OFFSET_DEAD_CODE) {
+ DEBUG (1, fprintf (log_file, "[dbg] Attempting to insert seq point at dead IL offset %d, ignoring.\n", (int)bp->il_offset));
+ } else if (count == 0) {
#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
mono_arch_set_breakpoint (ji, inst->ip);
#else
g_assert (count > 0);
- if (count == 1) {
+ if (count == 1 && inst->native_offset != SEQ_POINT_NATIVE_OFFSET_DEAD_CODE) {
mono_arch_clear_breakpoint (ji, ip);
}
#else
#define METHOD_ENTRY_IL_OFFSET -1
#define METHOD_EXIT_IL_OFFSET 0xffffff
+/* Native offset used to mark seq points in dead code */
+#define SEQ_POINT_NATIVE_OFFSET_DEAD_CODE -1
+
void
mono_debugger_agent_parse_options (char *options) MONO_INTERNAL;
MonoInst *repl = NULL;
int type = ins->type;
int dreg = ins->dreg;
+ gboolean emulate = FALSE;
/* FIXME: Instead of = NOP, don't emit the original ins at all */
cfg->exception_message = g_strdup_printf ("float conv.ovf.un opcodes not supported.");
break;
- default: {
- MonoJitICallInfo *info;
+#if defined(MONO_ARCH_EMULATE_DIV) && defined(MONO_ARCH_HAVE_OPCODE_NEEDS_EMULATION)
+ case OP_IDIV:
+ case OP_IREM:
+ case OP_IDIV_UN:
+ case OP_IREM_UN:
+ if (!mono_arch_opcode_needs_emulation (cfg, ins->opcode)) {
+#ifdef MONO_ARCH_NEED_DIV_CHECK
+ int reg1 = alloc_ireg (cfg);
+ int reg2 = alloc_ireg (cfg);
+ /* b == 0 */
+ MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, 0);
+ MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "DivideByZeroException");
+ if (ins->opcode == OP_IDIV || ins->opcode == OP_IREM) {
+ /* b == -1 && a == 0x80000000 */
+ MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, -1);
+ MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg1, -1);
+ MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0x80000000);
+ MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg2, -1);
+ MONO_EMIT_NEW_BIALU (cfg, OP_IAND, reg1, reg1, reg2);
+ MONO_EMIT_NEW_ICOMPARE_IMM (cfg, reg1, 1);
+ MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "DivideByZeroException");
+ }
+#endif
+ MONO_EMIT_NEW_BIALU (cfg, ins->opcode, ins->dreg, ins->sreg1, ins->sreg2);
+ ins->opcode = OP_NOP;
+ } else {
+ emulate = TRUE;
+ }
+ break;
+#endif
+
+ default:
+ emulate = TRUE;
+ break;
+ }
+
+ if (emulate) {
+ MonoJitICallInfo *info = NULL;
#if SIZEOF_REGISTER == 8
if (decompose_long_opcode (cfg, ins, &repl))
- break;
+ emulate = FALSE;
#else
if (COMPILE_LLVM (cfg) && decompose_long_opcode (cfg, ins, &repl))
- break;
+ emulate = FALSE;
#endif
- info = mono_find_jit_opcode_emulation (ins->opcode);
+ if (emulate)
+ info = mono_find_jit_opcode_emulation (ins->opcode);
if (info) {
MonoInst **args;
MonoInst *call;
NULLIFY_INS (ins);
}
- break;
- }
}
if (ins->opcode == OP_NOP) {
if (coree_module_handle)
FreeLibrary (coree_module_handle);
break;
- case DLL_THREAD_ATTACH:
- mono_thread_info_attach (&dummy);
- break;
case DLL_THREAD_DETACH:
mono_thread_info_dettach ();
break;
public GenericClass<int> class_field;
}
+ public class MRO<T> : MarshalByRefObject {
+ public T gen_field;
+
+ public T stfld_ldfld (T t) {
+ var m = this;
+ m.gen_field = t;
+ return m.gen_field;
+ }
+ }
+
public static int test_0_ldfld_stfld_mro () {
MRO m = new MRO ();
GenericStruct<int> s = new GenericStruct<int> (5);
if (m.class_field.t != 5)
return 4;
+ // gshared
+ var m2 = new MRO<string> ();
+ if (m2.stfld_ldfld ("A") != "A")
+ return 5;
+
return 0;
}
return 0;
}
+ interface IFaceUnbox {
+ T Unbox<T, T2> (T t, T2 t2, object o);
+ }
+
+ class ClassUnbox : IFaceUnbox {
+ public T Unbox<T, T2> (T t, T2 t2, object o) {
+ return (T)o;
+ }
+ }
+
+ // unbox.any on a ref type in a gsharedvt method
+ public static int test_0_ref_gsharedvt_aot_unbox_any () {
+ IFaceUnbox iface = new ClassUnbox ();
+ string s = iface.Unbox<string, int> ("A", 2, "A");
+ if (s != "A")
+ return 1;
+ return 0;
+ }
+
[MethodImplAttribute (MethodImplOptions.NoInlining)]
static void ldfld_nongeneric<T> (GFoo<T>[] foo, int[] arr) {
arr [0] = foo [0].i;
return 0;
}
+ public class TAbstractTableItem<TC> {
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public static void SetProperty<TV> () { }
+
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public static void Test () {
+ SetProperty<bool> ();
+ }
+ }
+
+ public static int test_0_gsharedvt_method_on_shared_class () {
+ TAbstractTableItem<object>.Test ();
+ return 0;
+ }
}
#define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class)
-#define NEW_LDTOKENCONST(cfg,dest,image,token) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), NULL, STACK_PTR, NULL)
+#define NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL)
#define NEW_DECLSECCONST(cfg,dest,image,entry) do { \
if (cfg->compile_aot) { \
#define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
-#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), NULL, STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
#define EMIT_NEW_DOMAINCONST(cfg,dest) do { NEW_DOMAINCONST ((cfg), (dest)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
n = mono_class_value_size (klass, &align);
/* if native is true there should be no references in the struct */
- if (cfg->gen_write_barriers && klass->has_references && !native) {
+ if (cfg->gen_write_barriers && (klass->has_references || size_ins) && !native) {
/* Avoid barriers when storing to the stack */
if (!((dest->opcode == OP_ADD_IMM && dest->sreg1 == cfg->frame_reg) ||
(dest->opcode == OP_LDADDR))) {
MonoInst *cached_tls_addr = NULL;
MonoDebugMethodInfo *minfo;
MonoBitSet *seq_point_locs = NULL;
+ MonoBitSet *seq_point_set_locs = NULL;
disable_inline = is_jit_optimizer_disabled (method);
mono_debug_symfile_get_line_numbers_full (minfo, NULL, NULL, &n_il_offsets, &il_offsets, &line_numbers, NULL, NULL);
seq_point_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
+ seq_point_set_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
sym_seq_points = TRUE;
for (i = 0; i < n_il_offsets; ++i) {
if (il_offsets [i] < header->code_size)
//if (!(cfg->cbb->last_ins && cfg->cbb->last_ins->opcode == OP_SEQ_POINT)) {
NEW_SEQ_POINT (cfg, ins, ip - header->code, intr_loc);
MONO_ADD_INS (cfg->cbb, ins);
+
+ if (sym_seq_points)
+ mono_bitset_set_fast (seq_point_set_locs, ip - header->code);
}
bblock->real_offset = cfg->real_offset;
* If the callee is a shared method, then its static cctor
* might not get called after the call was patched.
*/
- if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable_impl (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
+ if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
emit_generic_class_init (cfg, cmethod->klass);
CHECK_TYPELOAD (cmethod->klass);
}
(cmethod->klass->generic_class || cmethod->klass->generic_container)) {
gboolean sharable = FALSE;
- if (mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
+ if (mono_method_is_generic_sharable (cmethod, TRUE)) {
sharable = TRUE;
} else {
gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
mini_method_get_context (cmethod)->method_inst) {
g_assert (!pass_vtable);
- if (mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
+ if (mono_method_is_generic_sharable (cmethod, TRUE)) {
pass_mrgctx = TRUE;
} else {
gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
/* FIXME: only do this for generic methods if
they are not shared! */
if (context_used && !imt_arg && !array_rank && !delegate_invoke &&
- (!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
+ (!mono_method_is_generic_sharable (cmethod, TRUE) ||
!mono_class_generic_sharing_enabled (cmethod->klass)) &&
(!virtual || MONO_METHOD_IS_FINAL (cmethod) ||
!(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))) {
ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
}
- if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable_impl (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
+ if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
emit_generic_class_init (cfg, cmethod->klass);
CHECK_TYPELOAD (cmethod->klass);
}
*/
if (cmethod->klass->valuetype && mono_class_generic_sharing_enabled (cmethod->klass) &&
- mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
+ mono_method_is_generic_sharable (cmethod, TRUE)) {
if (cmethod->is_inflated && mono_method_get_context (cmethod)->method_inst) {
mono_class_vtable (cfg->domain, cmethod->klass);
CHECK_TYPELOAD (cmethod->klass);
addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE);
mono_emit_calli (cfg, fsig, sp, addr, NULL, vtable_arg);
} else if (context_used &&
- (!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
+ (!mono_method_is_generic_sharable (cmethod, TRUE) ||
!mono_class_generic_sharing_enabled (cmethod->klass))) {
MonoInst *cmethod_addr;
context_used = mini_class_check_context_used (cfg, klass);
if (mini_is_gsharedvt_klass (cfg, klass)) {
- MonoInst *obj, *addr, *klass_inst, *args[16];
- int dreg;
+ MonoInst *obj, *addr, *klass_inst, *is_ref, *args[16];
+ MonoBasicBlock *is_ref_bb, *end_bb;
+ int dreg, addr_reg;
/* Need to check for nullable types at runtime, but those are disabled in mini_is_gsharedvt_sharable_method*/
if (mono_class_is_nullable (klass))
/* CASTCLASS */
obj = mono_emit_jit_icall (cfg, mono_object_castclass, args);
+ NEW_BBLOCK (cfg, is_ref_bb);
+ NEW_BBLOCK (cfg, end_bb);
+ is_ref = emit_get_rgctx_klass (cfg, context_used, klass,
+ MONO_RGCTX_INFO_CLASS_IS_REF);
+ MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
+ MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
+
+ /* This will contain either the address of the unboxed vtype, or an address of the temporary where the ref is stored */
+ addr_reg = alloc_dreg (cfg, STACK_MP);
+
+ /* Non-ref case */
/* UNBOX */
- dreg = alloc_dreg (cfg, STACK_MP);
- NEW_BIALU_IMM (cfg, addr, OP_ADD_IMM, dreg, obj->dreg, sizeof (MonoObject));
+ NEW_BIALU_IMM (cfg, addr, OP_ADD_IMM, addr_reg, obj->dreg, sizeof (MonoObject));
MONO_ADD_INS (cfg->cbb, addr);
+ MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+ /* Ref case */
+ MONO_START_BB (cfg, is_ref_bb);
+
+ /* Save the ref to a temporary */
+ dreg = alloc_ireg (cfg);
+ EMIT_NEW_VARLOADA_VREG (cfg, addr, dreg, &klass->byval_arg);
+ addr->dreg = addr_reg;
+ MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, addr->dreg, 0, obj->dreg);
+ MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+ MONO_START_BB (cfg, end_bb);
+ bblock = cfg->cbb;
+
/* LDOBJ */
- EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr->dreg, 0);
+ EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr_reg, 0);
*sp++ = ins;
ip += 5;
offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
dreg = alloc_ireg_mp (cfg);
EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
+ /* The decomposition will call mini_emit_stobj () which will emit a wbarrier if needed */
EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, dreg, 0, sp [1]->dreg);
- // FIXME-VT: wbarriers ?
} else {
EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, sp [0]->dreg, foffset, sp [1]->dreg);
}
g_assert_not_reached ();
}
} else if (cfg->compile_aot) {
- EMIT_NEW_LDTOKENCONST (cfg, ins, image, n);
+ EMIT_NEW_LDTOKENCONST (cfg, ins, image, n, generic_context);
} else {
EMIT_NEW_PCONST (cfg, ins, handle);
}
MONO_ADD_INS (cfg->bb_exit, ins);
}
+ /*
+ * Add seq points for IL offsets which have line number info, but wasn't generated a seq point during JITting because
+ * the code they refer to was dead (#11880).
+ */
+ if (sym_seq_points) {
+ for (i = 0; i < header->code_size; ++i) {
+ if (mono_bitset_test_fast (seq_point_locs, i) && !mono_bitset_test_fast (seq_point_set_locs, i)) {
+ MonoInst *ins;
+
+ NEW_SEQ_POINT (cfg, ins, i, FALSE);
+ mono_add_seq_point (cfg, NULL, ins, SEQ_POINT_NATIVE_OFFSET_DEAD_CODE);
+ }
+ }
+ }
+
cfg->ip = NULL;
if (cfg->method == method) {
#include "ir-emit.h"
#include "debugger-agent.h"
#include "mini-gc.h"
-#include "mono/arch/arm/arm-fpa-codegen.h"
#include "mono/arch/arm/arm-vfp-codegen.h"
#if defined(__ARM_EABI__) && defined(__linux__) && !defined(PLATFORM_ANDROID) && !defined(__native_client__)
#define ARM_FPU_VFP 1
#endif
-#ifdef ARM_FPU_FPA
-#define IS_FPA 1
-#else
-#define IS_FPA 0
-#endif
-
#ifdef ARM_FPU_VFP
#define IS_VFP 1
#else
static int v5_supported = 0;
static int v6_supported = 0;
static int v7_supported = 0;
+static int v7s_supported = 0;
static int thumb_supported = 0;
+static int thumb2_supported = 0;
/*
* Whenever to use the ARM EABI
*/
* 3) VFP: the new and actually sensible and useful FP support. Implemented
* in HW or kernel-emulated, requires new tools. I think this is what symbian uses.
*
- * The plan is to write the FPA support first. softfloat can be tested in a chroot.
+ * We do not care about FPA. We will support soft float and VFP.
*/
int mono_exc_esp_offset = 0;
case OP_FCALL:
case OP_FCALL_REG:
case OP_FCALL_MEMBASE:
- if (IS_FPA) {
- if (ins->dreg != ARM_FPA_F0)
- ARM_FPA_MVFD (code, ins->dreg, ARM_FPA_F0);
- } else if (IS_VFP) {
+ if (IS_VFP) {
if (((MonoCallInst*)ins)->signature->ret->type == MONO_TYPE_R4) {
ARM_FMSR (code, ins->dreg, ARMREG_R0);
ARM_CVTS (code, ins->dreg, ins->dreg);
mono_aot_register_jit_icall ("mono_arm_start_gsharedvt_call", mono_arm_start_gsharedvt_call);
#endif
-#ifdef ARM_FPU_FPA
- arm_fpu = MONO_ARM_FPU_FPA;
-#elif defined(ARM_FPU_VFP_HARD)
+#if defined(ARM_FPU_VFP_HARD)
arm_fpu = MONO_ARM_FPU_VFP_HARD;
#elif defined(ARM_FPU_VFP)
arm_fpu = MONO_ARM_FPU_VFP;
#ifndef DISABLE_JIT
+gboolean
+mono_arch_opcode_needs_emulation (MonoCompile *cfg, int opcode)
+{
+ if (v7s_supported) {
+ switch (opcode) {
+ case OP_IDIV:
+ case OP_IREM:
+ case OP_IDIV_UN:
+ case OP_IREM_UN:
+ return FALSE;
+ default:
+ break;
+ }
+ }
+ return TRUE;
+}
+
static gboolean
is_regsize_var (MonoGenericSharingContext *gsctx, MonoType *t) {
if (t->byref)
return;
}
break;
- case MONO_ARM_FPU_FPA:
- if (ret->type == MONO_TYPE_R4 || ret->type == MONO_TYPE_R8) {
- MONO_EMIT_NEW_UNALU (cfg, OP_FMOVE, cfg->ret->dreg, val->dreg);
- return;
- }
- break;
default:
g_assert_not_reached ();
}
case RegTypeStructByAddr:
break;
case RegTypeFP:
- if (IS_FPA)
- return FALSE;
- else if (IS_VFP)
+ if (IS_VFP)
break;
else
return FALSE;
/* ARM sets the C flag to 1 if there was _no_ overflow */
ins->next->opcode = OP_COND_EXC_NC;
break;
+ case OP_IDIV_IMM:
+ case OP_IDIV_UN_IMM:
+ case OP_IREM_IMM:
+ case OP_IREM_UN_IMM:
+ ADD_NEW_INS (cfg, temp, OP_ICONST);
+ temp->inst_c0 = ins->inst_imm;
+ temp->dreg = mono_alloc_ireg (cfg);
+ ins->sreg2 = temp->dreg;
+ ins->opcode = mono_op_imm_to_op (ins->opcode);
+ break;
case OP_LOCALLOC_IMM:
ADD_NEW_INS (cfg, temp, OP_ICONST);
temp->inst_c0 = ins->inst_imm;
emit_float_to_int (MonoCompile *cfg, guchar *code, int dreg, int sreg, int size, gboolean is_signed)
{
/* sreg is a float, dreg is an integer reg */
- if (IS_FPA)
- ARM_FPA_FIXZ (code, dreg, sreg);
- else if (IS_VFP) {
+ if (IS_VFP) {
if (is_signed)
ARM_TOSIZD (code, ARM_VFP_F0, sreg);
else
ARM_LDR_IMM (code, dreg, info_var->inst_basereg, info_var->inst_offset);
/* Add the offset */
val = ((offset / 4) * sizeof (guint8*)) + G_STRUCT_OFFSET (SeqPointInfo, bp_addrs);
- ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF), 0);
- if (val & 0xFF00)
- ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF00) >> 8, 24);
- if (val & 0xFF0000)
- ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF0000) >> 16, 16);
- g_assert (!(val & 0xFF000000));
/* Load the info->bp_addrs [offset], which is either 0 or the address of a trigger page */
- ARM_LDR_IMM (code, dreg, dreg, 0);
+ if (arm_is_imm12 ((int)val)) {
+ ARM_LDR_IMM (code, dreg, dreg, val);
+ } else {
+ ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF), 0);
+ if (val & 0xFF00)
+ ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF00) >> 8, 24);
+ if (val & 0xFF0000)
+ ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF0000) >> 16, 16);
+ g_assert (!(val & 0xFF000000));
+ ARM_LDR_IMM (code, dreg, dreg, 0);
+ }
/* What is faster, a branch or a load ? */
ARM_CMP_REG_IMM (code, dreg, 0, 0);
/* The breakpoint instruction */
ARM_AND_REG_IMM (code, ins->dreg, ins->sreg1, imm8, rot_amount);
break;
case OP_IDIV:
+ g_assert (v7s_supported);
+ ARM_SDIV (code, ins->dreg, ins->sreg1, ins->sreg2);
+ break;
case OP_IDIV_UN:
- case OP_DIV_IMM:
+ g_assert (v7s_supported);
+ ARM_UDIV (code, ins->dreg, ins->sreg1, ins->sreg2);
+ break;
case OP_IREM:
+ g_assert (v7s_supported);
+ ARM_SDIV (code, ARMREG_IP, ins->sreg1, ins->sreg2);
+ ARM_MLS (code, ins->dreg, ARMREG_IP, ins->sreg2, ins->sreg1);
+ break;
case OP_IREM_UN:
+ g_assert (v7s_supported);
+ ARM_UDIV (code, ARMREG_IP, ins->sreg1, ins->sreg2);
+ ARM_MLS (code, ins->dreg, ARMREG_IP, ins->sreg2, ins->sreg1);
+ break;
+ case OP_DIV_IMM:
case OP_REM_IMM:
- /* crappy ARM arch doesn't have a DIV instruction */
g_assert_not_reached ();
case OP_IOR:
ARM_ORR_REG_REG (code, ins->dreg, ins->sreg1, ins->sreg2);
break;
}
case OP_FMOVE:
- if (IS_FPA)
- ARM_FPA_MVFD (code, ins->dreg, ins->sreg1);
- else if (IS_VFP)
+ if (IS_VFP)
ARM_CPYD (code, ins->dreg, ins->sreg1);
break;
case OP_FCONV_TO_R4:
- if (IS_FPA)
- ARM_FPA_MVFS (code, ins->dreg, ins->sreg1);
- else if (IS_VFP) {
+ if (IS_VFP) {
ARM_CVTD (code, ins->dreg, ins->sreg1);
ARM_CVTS (code, ins->dreg, ins->dreg);
}
break;
/* floating point opcodes */
-#ifdef ARM_FPU_FPA
- case OP_R8CONST:
- if (cfg->compile_aot) {
- ARM_FPA_LDFD (code, ins->dreg, ARMREG_PC, 0);
- ARM_B (code, 1);
- *(guint32*)code = ((guint32*)(ins->inst_p0))[0];
- code += 4;
- *(guint32*)code = ((guint32*)(ins->inst_p0))[1];
- code += 4;
- } else {
- /* FIXME: we can optimize the imm load by dealing with part of
- * the displacement in LDFD (aligning to 512).
- */
- code = mono_arm_emit_load_imm (code, ARMREG_LR, (guint32)ins->inst_p0);
- ARM_FPA_LDFD (code, ins->dreg, ARMREG_LR, 0);
- }
- break;
- case OP_R4CONST:
- if (cfg->compile_aot) {
- ARM_FPA_LDFS (code, ins->dreg, ARMREG_PC, 0);
- ARM_B (code, 0);
- *(guint32*)code = ((guint32*)(ins->inst_p0))[0];
- code += 4;
- } else {
- code = mono_arm_emit_load_imm (code, ARMREG_LR, (guint32)ins->inst_p0);
- ARM_FPA_LDFS (code, ins->dreg, ARMREG_LR, 0);
- }
- break;
- case OP_STORER8_MEMBASE_REG:
- /* This is generated by the local regalloc pass which runs after the lowering pass */
- if (!arm_is_fpimm8 (ins->inst_offset)) {
- code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
- ARM_ADD_REG_REG (code, ARMREG_LR, ARMREG_LR, ins->inst_destbasereg);
- ARM_FPA_STFD (code, ins->sreg1, ARMREG_LR, 0);
- } else {
- ARM_FPA_STFD (code, ins->sreg1, ins->inst_destbasereg, ins->inst_offset);
- }
- break;
- case OP_LOADR8_MEMBASE:
- /* This is generated by the local regalloc pass which runs after the lowering pass */
- if (!arm_is_fpimm8 (ins->inst_offset)) {
- code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
- ARM_ADD_REG_REG (code, ARMREG_LR, ARMREG_LR, ins->inst_basereg);
- ARM_FPA_LDFD (code, ins->dreg, ARMREG_LR, 0);
- } else {
- ARM_FPA_LDFD (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
- }
- break;
- case OP_STORER4_MEMBASE_REG:
- g_assert (arm_is_fpimm8 (ins->inst_offset));
- ARM_FPA_STFS (code, ins->sreg1, ins->inst_destbasereg, ins->inst_offset);
- break;
- case OP_LOADR4_MEMBASE:
- g_assert (arm_is_fpimm8 (ins->inst_offset));
- ARM_FPA_LDFS (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
- break;
- case OP_ICONV_TO_R_UN: {
- int tmpreg;
-#ifdef USE_JUMP_TABLES
- gpointer *jte = mono_jumptable_add_entries (2);
-#define SKIP_INSTRUCTIONS 5
-#else
-#define SKIP_INSTRUCTIONS 8
-#endif
- tmpreg = ins->dreg == 0? 1: 0;
- ARM_CMP_REG_IMM8 (code, ins->sreg1, 0);
- ARM_FPA_FLTD (code, ins->dreg, ins->sreg1);
- ARM_B_COND (code, ARMCOND_GE, SKIP_INSTRUCTIONS);
- /* save the temp register */
- ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
- ARM_FPA_STFD (code, tmpreg, ARMREG_SP, 0);
-#ifdef USE_JUMP_TABLES
- code = mono_arm_load_jumptable_entry_addr (code, jte, ARMREG_IP);
- ARM_FPA_LDFD (code, tmpreg, ARMREG_IP, 0);
-#else
- ARM_FPA_LDFD (code, tmpreg, ARMREG_PC, 12);
-#endif
- ARM_FPA_ADFD (code, ins->dreg, ins->dreg, tmpreg);
- ARM_FPA_LDFD (code, tmpreg, ARMREG_SP, 0);
- ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
-#ifdef USE_JUMP_TABLES
- jte [0] = GUINT_TO_POINTER (0x41f00000);
- jte [1] = GUINT_TO_POINTER (0);
-#else
- /* skip the constant pool */
- ARM_B (code, 8);
- code += 4;
- *(int*)code = 0x41f00000;
- code += 4;
- *(int*)code = 0;
- code += 4;
- /* FIXME: adjust:
- * ldfltd ftemp, [pc, #8] 0x41f00000 0x00000000
- * adfltd fdest, fdest, ftemp
- */
-#endif
-#undef SKIP_INSTRUCTIONS
- break;
- }
- case OP_ICONV_TO_R4:
- ARM_FPA_FLTS (code, ins->dreg, ins->sreg1);
- break;
- case OP_ICONV_TO_R8:
- ARM_FPA_FLTD (code, ins->dreg, ins->sreg1);
- break;
-
-#elif defined(ARM_FPU_VFP)
+#if defined(ARM_FPU_VFP)
case OP_R8CONST:
if (cfg->compile_aot) {
ARM_MOV_REG_REG (code, ins->dreg, ins->sreg1);
break;
}
-#ifdef ARM_FPU_FPA
- case OP_FADD:
- ARM_FPA_ADFD (code, ins->dreg, ins->sreg1, ins->sreg2);
- break;
- case OP_FSUB:
- ARM_FPA_SUFD (code, ins->dreg, ins->sreg1, ins->sreg2);
- break;
- case OP_FMUL:
- ARM_FPA_MUFD (code, ins->dreg, ins->sreg1, ins->sreg2);
- break;
- case OP_FDIV:
- ARM_FPA_DVFD (code, ins->dreg, ins->sreg1, ins->sreg2);
- break;
- case OP_FNEG:
- ARM_FPA_MNFD (code, ins->dreg, ins->sreg1);
- break;
-#elif defined(ARM_FPU_VFP)
+#if defined(ARM_FPU_VFP)
case OP_FADD:
ARM_VFP_ADDD (code, ins->dreg, ins->sreg1, ins->sreg2);
break;
g_assert_not_reached ();
break;
case OP_FCOMPARE:
- if (IS_FPA) {
- ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
- } else if (IS_VFP) {
+ if (IS_VFP) {
ARM_CMPD (code, ins->sreg1, ins->sreg2);
ARM_FMSTAT (code);
}
break;
case OP_FCEQ:
- if (IS_FPA) {
- ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
- } else if (IS_VFP) {
+ if (IS_VFP) {
ARM_CMPD (code, ins->sreg1, ins->sreg2);
ARM_FMSTAT (code);
}
ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_EQ);
break;
case OP_FCLT:
- if (IS_FPA) {
- ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
- } else {
+ if (IS_VFP) {
ARM_CMPD (code, ins->sreg1, ins->sreg2);
ARM_FMSTAT (code);
}
ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_MI);
break;
case OP_FCLT_UN:
- if (IS_FPA) {
- ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
- } else if (IS_VFP) {
+ if (IS_VFP) {
ARM_CMPD (code, ins->sreg1, ins->sreg2);
ARM_FMSTAT (code);
}
ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_VS);
break;
case OP_FCGT:
- /* swapped */
- if (IS_FPA) {
- ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg2, ins->sreg1);
- } else if (IS_VFP) {
+ if (IS_VFP) {
ARM_CMPD (code, ins->sreg2, ins->sreg1);
ARM_FMSTAT (code);
}
ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_MI);
break;
case OP_FCGT_UN:
- /* swapped */
- if (IS_FPA) {
- ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg2, ins->sreg1);
- } else if (IS_VFP) {
+ if (IS_VFP) {
ARM_CMPD (code, ins->sreg2, ins->sreg1);
ARM_FMSTAT (code);
}
break;
case OP_CKFINITE: {
- if (IS_FPA) {
- if (ins->dreg != ins->sreg1)
- ARM_FPA_MVFD (code, ins->dreg, ins->sreg1);
- } else if (IS_VFP) {
+ if (IS_VFP) {
#ifdef USE_JUMP_TABLES
{
gpointer *jte = mono_jumptable_add_entries (2);
if (strstr (mtriple, "armv6")) {
v6_supported = TRUE;
}
+ if (strstr (mtriple, "armv7s")) {
+ v7s_supported = TRUE;
+ }
+ if (strstr (mtriple, "thumbv7s")) {
+ v7s_supported = TRUE;
+ thumb2_supported = TRUE;
+ }
if (strstr (mtriple, "darwin") || strstr (mtriple, "ios")) {
v5_supported = TRUE;
thumb_supported = TRUE;
#define ARM_ARCHITECTURE "arm"
#endif
-#if defined(ARM_FPU_FPA)
-#define ARM_FP_MODEL "fpa"
-#elif defined(ARM_FPU_VFP)
+#if defined(ARM_FPU_VFP)
#define ARM_FP_MODEL "vfp"
#elif defined(ARM_FPU_NONE)
#define ARM_FP_MODEL "soft-float"
#elif defined(ARM_FPU_VFP_HARD)
#define ARM_FP_MODEL "vfp(hardfp-abi)"
#else
-#error "At least one of ARM_FPU_NONE, ARM_FPU_FPA, ARM_FPU_VFP or ARM_FPU_VFP_HARD must be defined."
+#error "At least one of ARM_FPU_NONE, ARM_FPU_VFP or ARM_FPU_VFP_HARD must be defined."
#endif
#define MONO_ARCH_ARCHITECTURE ARM_ARCHITECTURE "," ARM_FP_MODEL
typedef enum {
MONO_ARM_FPU_NONE = 0,
- MONO_ARM_FPU_FPA = 1,
- MONO_ARM_FPU_VFP = 2,
- MONO_ARM_FPU_VFP_HARD = 3
+ MONO_ARM_FPU_VFP = 1,
+ MONO_ARM_FPU_VFP_HARD = 2
} MonoArmFPU;
/* keep the size of the structure a multiple of 8 */
#define MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX 1
#define MONO_ARCH_GSHAREDVT_SUPPORTED 1
#define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1
+#define MONO_ARCH_HAVE_OPCODE_NEEDS_EMULATION 1
#if defined(__native_client__)
#undef MONO_ARCH_SOFT_DEBUG_SUPPORTED
g_assert (bank < MONO_NUM_REGBANKS);
- DEBUG (printf ("\tstart regmask to assign R%d: 0x%08" G_GUINT64_FORMAT " (R%d <- R%d R%d R%d)\n", reg, (guint64)regmask, ins->dreg, ins->sreg1, ins->sreg2, ins->sreg3));
+ DEBUG (printf ("\tstart regmask to assign R%d: 0x%08llu (R%d <- R%d R%d R%d)\n", reg, (unsigned long long)regmask, ins->dreg, ins->sreg1, ins->sreg2, ins->sreg3));
/* exclude the registers in the current instruction */
num_sregs = mono_inst_get_src_registers (ins, sregs);
for (i = 0; i < num_sregs; ++i) {
DEBUG (printf ("\t\texcluding dreg %s\n", mono_regname_full (ins->dreg, bank)));
}
- DEBUG (printf ("\t\tavailable regmask: 0x%08" G_GUINT64_FORMAT "\n", (guint64)regmask));
+ DEBUG (printf ("\t\tavailable regmask: 0x%08llu\n", (unsigned long long)regmask));
g_assert (regmask); /* need at least a register we can free */
sel = 0;
/* we should track prev_use and spill the register that's farther */
cbs.mono_walk_stack_with_state = mono_walk_stack_with_state;
cbs.mono_raise_exception = mono_get_throw_exception ();
cbs.mono_raise_exception_with_ctx = mono_raise_exception_with_ctx;
+ cbs.mono_exception_walk_trace = mono_exception_walk_trace;
cbs.mono_install_handler_block_guard = mono_install_handler_block_guard;
mono_install_eh_callbacks (&cbs);
}
* OUT_FILTER_IDX. Return TRUE if the exception is caught, FALSE otherwise.
*/
static gboolean
-mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoObject *non_exception)
+mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
{
MonoDomain *domain = mono_domain_get ();
- MonoJitInfo *ji;
+ MonoJitInfo *ji = NULL;
static int (*call_filter) (MonoContext *, gpointer) = NULL;
MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
MonoLMF *lmf = mono_get_lmf ();
*out_filter_idx = -1;
if (out_ji)
*out_ji = NULL;
+ if (out_prev_ji)
+ *out_prev_ji = NULL;
filter_idx = 0;
initial_ctx = *ctx;
StackFrameInfo frame;
+ if (out_prev_ji)
+ *out_prev_ji = ji;
+
unwind_res = mono_find_jit_info_ext (domain, jit_tls, NULL, ctx, &new_ctx, NULL, &lmf, NULL, &frame);
if (unwind_res) {
if (frame.type == FRAME_TYPE_DEBUGGER_INVOKE || frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, MonoJitInfo **out_ji)
{
MonoDomain *domain = mono_domain_get ();
- MonoJitInfo *ji;
+ MonoJitInfo *ji, *prev_ji;
static int (*call_filter) (MonoContext *, gpointer) = NULL;
static void (*restore_context) (void *);
MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
mono_profiler_exception_thrown (obj);
jit_tls->orig_ex_ctx_set = FALSE;
- res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, &first_filter_idx, &ji, non_exception);
+ res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, &first_filter_idx, &ji, &prev_ji, non_exception);
if (!res) {
if (mini_get_debug_options ()->break_on_exc)
// we are handling a stack overflow
mono_unhandled_exception (obj);
} else {
- //
- // Treat exceptions that are "handled" by mono_runtime_invoke() as unhandled.
- // See bug #669836.
- //
- if (ji && ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)
+ gboolean unhandled = FALSE;
+
+ /*
+ * The exceptions caught by the mono_runtime_invoke () calls in mono_async_invoke () needs to be treated as
+ * unhandled (#669836).
+ * FIXME: The check below is hackish, but its hard to distinguish these runtime invoke calls from others
+ * in the runtime.
+ */
+ if (ji && ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE) {
+ if (prev_ji) {
+ MonoInternalThread *thread = mono_thread_internal_current ();
+ if (prev_ji->method == thread->async_invoke_method)
+ unhandled = TRUE;
+ }
+ }
+ if (unhandled)
mono_debugger_agent_handle_exception (obj, ctx, NULL);
else
mono_debugger_agent_handle_exception (obj, ctx, &ctx_cp);
* The debugger wants us to stop only if this exception is user-unhandled.
*/
- ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, NULL, &ji, NULL);
+ ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, NULL, &ji, NULL, NULL);
if (ret && (ji != NULL) && (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)) {
/*
* The exception is handled in a runtime-invoke wrapper, that means that it's unhandled
if (str)
msg = mono_string_to_utf8 (str);
- else
+ else if (other) {
+ char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
+ char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other);
+
+ msg = g_strdup_printf ("Nested exception detected.\nOriginal Exception: %s\nNested exception:%s\n",
+ original_backtrace, nested_backtrace);
+
+ g_free (original_backtrace);
+ g_free (nested_backtrace);
+ } else {
msg = g_strdup ("Nested exception trying to figure out what went wrong");
+ }
mono_runtime_printf_err ("[ERROR] FATAL UNHANDLED EXCEPTION: %s", msg);
g_free (msg);
#if defined(__APPLE__) && defined(__arm__)
#include "mini.h"
-//#define ALLOW_PARTIAL_SHARING TRUE
-#define ALLOW_PARTIAL_SHARING FALSE
+#define ALLOW_PARTIAL_SHARING TRUE
+//#define ALLOW_PARTIAL_SHARING FALSE
#if 0
#define DEBUG(...) __VA_ARGS__
gboolean allow_partial)
{
int i;
+ gboolean has_ref = FALSE;
for (i = 0; i < inst->type_argc; ++i) {
MonoType *type = inst->type_argv [i];
- if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR)))
+ if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR))) {
+ has_ref = TRUE;
continue;
+ }
/*
* Allow non ref arguments, if there is at least one ref argument
return FALSE;
}
- return TRUE;
+ if (allow_partial)
+ return has_ref;
+ else
+ return TRUE;
}
/*
* get_shared_class:
*
* Return the class used to store information when using generic sharing.
- * For fully shared classes, it is the generic definition, for partially shared
- * classes, it is an instance with all ref type arguments replaced by the type parameters
- * of its generic definition.
*/
static MonoClass*
get_shared_class (MonoClass *class)
*/
//g_assert_not_reached ();
+#if 0
/* The gsharedvt changes break this */
if (ALLOW_PARTIAL_SHARING)
g_assert_not_reached ();
+#endif
#if 0
if (class->is_inflated) {
}
#endif
+ // FIXME: Use this in all cases can be problematic wrt domain/assembly unloading
return class_uninstantiated (class);
}
}
/*
- * mono_method_is_generic_sharable_impl_full:
+ * mono_method_is_generic_sharable_full:
* @method: a method
* @allow_type_vars: whether to regard type variables as reference types
* @allow_partial: whether to allow partial sharing
* type parameters. Otherwise returns FALSE.
*/
gboolean
-mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_type_vars,
+mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_vars,
gboolean allow_partial, gboolean allow_gsharedvt)
{
if (!mono_method_is_generic_impl (method))
return FALSE;
+ if (!ALLOW_PARTIAL_SHARING)
+ allow_partial = FALSE;
+
/*
* Generic async methods have an associated state machine class which is a generic struct. This struct
* is too large to be handled by gsharedvt so we make it visible to the AOT compiler by disabling sharing
}
gboolean
-mono_method_is_generic_sharable_impl (MonoMethod *method, gboolean allow_type_vars)
+mono_method_is_generic_sharable (MonoMethod *method, gboolean allow_type_vars)
{
- return mono_method_is_generic_sharable_impl_full (method, allow_type_vars, ALLOW_PARTIAL_SHARING, TRUE);
+ return mono_method_is_generic_sharable_full (method, allow_type_vars, ALLOW_PARTIAL_SHARING, TRUE);
}
gboolean
if (!mono_class_generic_sharing_enabled (method->klass))
return FALSE;
- if (!mono_method_is_generic_sharable_impl (method, allow_type_vars))
+ if (!mono_method_is_generic_sharable (method, allow_type_vars))
return FALSE;
if (method->is_inflated && mono_method_get_context (method)->method_inst)
#define JUMP_SIZE 6
#define ENABLE_WRONG_METHOD_CHECK 0
+#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
+#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
+
/*========================= End of Defines =========================*/
/*------------------------------------------------------------------*/
static inline void add_general (guint *, size_data *, ArgInfo *);
static inline void add_stackParm (guint *, size_data *, ArgInfo *, gint);
static inline void add_float (guint *, size_data *, ArgInfo *);
-static CallInfo * get_call_info (MonoCompile *, MonoMemPool *, MonoMethodSignature *, gboolean);
+static CallInfo * get_call_info (MonoCompile *, MonoMemPool *, MonoMethodSignature *);
static guchar * emit_float_to_int (MonoCompile *, guchar *, int, int, int, gboolean);
static guint8 * emit_load_volatile_arguments (guint8 *, MonoCompile *);
static void catch_SIGILL(int, siginfo_t *, void *);
breakpoint_t breakpointCode;
+/*
+ * This mutex protects architecture specific caches
+ */
+static CRITICAL_SECTION mini_arch_mutex;
+
/*====================== End of Global Variables ===================*/
/*------------------------------------------------------------------*/
sig = mono_method_signature (method);
- cinfo = get_call_info (NULL, NULL, sig, sig->pinvoke);
+ cinfo = get_call_info (NULL, NULL, sig);
if (cinfo->struct_ret) {
printf ("[STRUCTRET:%p], ", (gpointer) rParm->gr[0]);
/*------------------------------------------------------------------*/
static CallInfo *
-get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
+get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig)
{
guint i, fr, gr, size, pstart;
int nParm = sig->hasthis + sig->param_count;
MonoType *ret_type;
- guint32 simpletype, align;
+ guint32 simpleType, align;
+ gboolean is_pinvoke = sig->pinvoke;
CallInfo *cinfo;
size_data *sz;
MonoGenericSharingContext *gsctx = cfg ? cfg->generic_sharing_context : NULL;
/* area that the callee will use. */
/*----------------------------------------------------------*/
- ret_type = mono_type_get_underlying_type (sig->ret);
+ ret_type = mini_type_get_underlying_type (gsctx, sig->ret);
ret_type = mini_get_basic_type_from_generic (gsctx, ret_type);
- simpletype = ret_type->type;
+ simpleType = ret_type->type;
enum_retvalue:
- switch (simpletype) {
+ switch (simpleType) {
case MONO_TYPE_BOOLEAN:
case MONO_TYPE_I1:
case MONO_TYPE_U1:
case MONO_TYPE_VALUETYPE: {
MonoClass *klass = mono_class_from_mono_type (sig->ret);
if (klass->enumtype) {
- simpletype = mono_class_enum_basetype (klass)->type;
+ simpleType = mono_class_enum_basetype (klass)->type;
goto enum_retvalue;
}
- if (sig->pinvoke)
- size = mono_class_native_size (klass, &align);
- else
- size = mono_class_value_size (klass, &align);
+ size = mini_type_stack_size_full (gsctx, &klass->byval_arg, NULL, sig->pinvoke);
cinfo->struct_ret = 1;
cinfo->ret.size = size;
continue;
}
- ptype = mono_type_get_underlying_type (sig->params [i]);
- ptype = mini_get_basic_type_from_generic (gsctx, ptype);
- simpletype = ptype->type;
- cinfo->args[nParm].type = simpletype;
- switch (simpletype) {
+ ptype = mini_type_get_underlying_type (gsctx, sig->params [i]);
+ simpleType = ptype->type;
+ cinfo->args[nParm].type = simpleType;
+ switch (simpleType) {
case MONO_TYPE_BOOLEAN:
case MONO_TYPE_I1:
case MONO_TYPE_U1:
nParm++;
break;
case MONO_TYPE_GENERICINST:
- if (!mono_type_generic_inst_is_valuetype (sig->params [i])) {
+ if (!mono_type_generic_inst_is_valuetype (ptype)) {
cinfo->args[nParm].size = sizeof(gpointer);
add_general (&gr, sz, cinfo->args+nParm);
nParm++;
/* Fall through */
case MONO_TYPE_VALUETYPE: {
MonoMarshalType *info;
- MonoClass *klass = mono_class_from_mono_type (sig->params [i]);
- if (sig->pinvoke)
- size = mono_class_native_size (klass, &align);
- else
- size = mono_class_value_size (klass, &align);
-
- info = mono_marshal_load_type_info (klass);
+ MonoClass *klass = mono_class_from_mono_type (ptype);
- if ((info->native_size == sizeof(float)) &&
- (info->num_fields == 1) &&
- (info->fields[0].field->type->type == MONO_TYPE_R4)) {
- cinfo->args[nParm].size = sizeof(float);
- add_float(&fr, sz, cinfo->args+nParm);
- nParm ++;
- break;
- }
+ size = mini_type_stack_size_full(gsctx, &klass->byval_arg, NULL, sig->pinvoke);
+ if (simpleType != MONO_TYPE_GENERICINST) {
+ info = mono_marshal_load_type_info(klass);
- if ((info->native_size == sizeof(double)) &&
- (info->num_fields == 1) &&
- (info->fields[0].field->type->type == MONO_TYPE_R8)) {
- cinfo->args[nParm].size = sizeof(double);
- add_float(&fr, sz, cinfo->args+nParm);
- nParm ++;
- break;
+ if ((info->native_size == sizeof(float)) &&
+ (info->num_fields == 1) &&
+ (info->fields[0].field->type->type == MONO_TYPE_R4)) {
+ cinfo->args[nParm].size = sizeof(float);
+ add_float(&fr, sz, cinfo->args+nParm);
+ nParm ++;
+ break;
+ }
+
+ if ((info->native_size == sizeof(double)) &&
+ (info->num_fields == 1) &&
+ (info->fields[0].field->type->type == MONO_TYPE_R8)) {
+ cinfo->args[nParm].size = sizeof(double);
+ add_float(&fr, sz, cinfo->args+nParm);
+ nParm ++;
+ break;
+ }
}
cinfo->args[nParm].vtsize = 0;
}
break;
default:
- g_error ("Can't trampoline 0x%x", sig->params [i]->type);
+ g_error ("Can't trampoline 0x%x", ptype);
}
}
sig = mono_method_signature (cfg->method);
- cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+ cinfo = get_call_info (cfg, cfg->mempool, sig);
if (!cinfo->struct_ret) {
switch (mono_type_get_underlying_type (sig->ret)->type) {
/*------------------------------------------------------*/
/* Allow space for the trace method stack area if needed*/
/*------------------------------------------------------*/
- if (mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method))
+ if ((mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method))
+ || (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE))
offset += S390_TRACE_STACK_SIZE;
/*------------------------------------------------------*/
sig = mono_method_signature (cfg->method);
- cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+ cinfo = get_call_info (cfg, cfg->mempool, sig);
if (cinfo->struct_ret) {
cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
n = sig->param_count + sig->hasthis;
DEBUG (g_print ("Call requires: %d parameters\n",n));
- cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+ cinfo = get_call_info (cfg, cfg->mempool, sig);
stackSize = cinfo->sz.stack_size + cinfo->sz.local_size +
cinfo->sz.parm_size + cinfo->sz.offset;
{
guchar *code = p;
int save_mode = SAVE_NONE,
- saveOffset;
+ saveOffset,
+ offset;
MonoMethod *method = cfg->method;
int rtype = mono_type_get_underlying_type (mono_method_signature (method)->ret)->type;
+ offset = code - cfg->native_code;
+ /*-----------------------------------------*/
+ /* We need about 128 bytes of instructions */
+ /*-----------------------------------------*/
+ if (offset > (cfg->code_size - 128)) {
+ cfg->code_size *= 2;
+ cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+ code = cfg->native_code + offset;
+ }
+
saveOffset = cfg->stack_usage - S390_TRACE_STACK_SIZE;
if (method->save_lmf)
saveOffset -= sizeof(MonoLMF);
/* ensure ins->sreg1 is not NULL */
s390_lg (code, s390_r0, 0, ins->sreg1, 0);
s390_ltgr (code, s390_r0, s390_r0);
+ EMIT_COND_SYSTEM_EXCEPTION (S390_CC_ZR, "NullReferenceException");
}
break;
case OP_ARGLIST: {
case MONO_PATCH_INFO_EXC:
case MONO_PATCH_INFO_ABS:
case MONO_PATCH_INFO_METHOD:
+ case MONO_PATCH_INFO_RGCTX_FETCH:
case MONO_PATCH_INFO_INTERNAL_METHOD:
case MONO_PATCH_INFO_CLASS_INIT:
+ case MONO_PATCH_INFO_JIT_ICALL_ADDR:
+ case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
s390_patch_addr (ip, (guint64) target);
continue;
case MONO_PATCH_INFO_SWITCH:
int pos = 0, i;
CallInfo *cinfo;
- cinfo = get_call_info (NULL, NULL, sig, sig->pinvoke);
+ cinfo = get_call_info (NULL, NULL, sig);
if (cinfo->struct_ret) {
ArgInfo *ainfo = &cinfo->ret;
if (mono_jit_trace_calls != NULL && mono_trace_eval (method)) {
tracing = 1;
cfg->code_size += 256;
- }
+ } else if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+ cfg->code_size += 256;
if (method->save_lmf)
cfg->code_size += 200;
mono_emit_unwind_op_def_cfa_reg (cfg, code, cfg->frame_reg);
+ /* store runtime generic context */
+ if (cfg->rgctx_var) {
+ g_assert (cfg->rgctx_var->opcode == OP_REGOFFSET);
+
+ s390_stg (code, MONO_ARCH_RGCTX_REG, 0,
+ cfg->rgctx_var->inst_basereg,
+ cfg->rgctx_var->inst_offset);
+ }
+
/* compute max_offset in order to use short forward jumps
* we always do it on s390 because the immediate displacement
* for jumps is too small
sig = mono_method_signature (method);
pos = 0;
- cinfo = get_call_info (cfg, cfg->mempool, sig, sig->pinvoke);
+ cinfo = get_call_info (cfg, cfg->mempool, sig);
if (cinfo->struct_ret) {
ArgInfo *ainfo = &cinfo->ret;
if (mono_jit_trace_calls != NULL)
max_epilog_size += 128;
-
- if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+ else if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
max_epilog_size += 128;
while ((cfg->code_len + max_epilog_size) > (cfg->code_size - 16)) {
restoreLMF(code, cfg->frame_reg, cfg->stack_usage);
if (cfg->flags & MONO_CFG_HAS_ALLOCA) {
-// if (cfg->frame_reg != STK_BASE)
-// s390_lgr (code, STK_BASE, cfg->frame_reg);
s390_lg (code, STK_BASE, 0, STK_BASE, 0);
} else
code = backUpStackPtr(cfg, code);
/*========================= End of Function ========================*/
+/*------------------------------------------------------------------*/
+/* */
+/* Name - mono_arch_find_static_call_vtable */
+/* */
+/* Function - Find the static call vtable. */
+/* */
+/*------------------------------------------------------------------*/
+
+MonoVTable*
+mono_arch_find_static_call_vtable (mgreg_t *regs, guint8 *code)
+{
+ mgreg_t *r = (mgreg_t*)regs;
+
+ return (MonoVTable*)(gsize) r [MONO_ARCH_RGCTX_REG];
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/* */
+/* Name - mono_arch_get_cie_program */
+/* */
+/* Function - Find the static call vtable. */
+/* */
+/*------------------------------------------------------------------*/
+
+GSList*
+mono_arch_get_cie_program (void)
+{
+ GSList *l = NULL;
+
+ mono_add_unwind_op_def_cfa (l, NULL, NULL, STK_BASE, 0);
+
+ return(l);
+}
+
+/*========================= End of Function ========================*/
+
#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
/*------------------------------------------------------------------*/
#define MONO_ARCH_HAVE_TLS_GET 1
#define MONO_ARCH_ENABLE_MONO_LMF_VAR 1
#define MONO_ARCH_IMT_REG s390_r9
+#define MONO_ARCH_VTABLE_REG MONO_ARCH_IMT_REG
+#define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG
#define MONO_ARCH_THIS_AS_FIRST_ARG 1
#define MONO_ARCH_HAVE_XP_UNWIND 1
#define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
#define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
#define MONO_ARCH_USE_SIGACTION 1
#define MONO_ARCH_GC_MAPS_SUPPORTED 1
+#define MONO_ARCH_GSHARED_SUPPORTED 1
+#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 1
#define S390_STACK_ALIGNMENT 8
#define S390_FIRST_ARG_REG s390_r2
if (generic_shared) {
if (m->wrapper_type != MONO_WRAPPER_NONE)
m = mono_marshal_method_from_wrapper (m);
- //g_assert (mono_method_is_generic_sharable_impl (m, FALSE));
+ //g_assert (mono_method_is_generic_sharable (m, FALSE));
}
/* Patch calling code */
MonoClass *handle_class;
handle = mono_ldtoken (patch_info->data.token->image,
- patch_info->data.token->token, &handle_class, NULL);
+ patch_info->data.token->token, &handle_class, patch_info->data.token->has_context ? &patch_info->data.token->context : NULL);
mono_class_init (handle_class);
target = handle;
{
ins->inst_offset = native_offset;
g_ptr_array_add (cfg->seq_points, ins);
- bb->seq_points = g_slist_prepend_mempool (cfg->mempool, bb->seq_points, ins);
- bb->last_seq_point = ins;
+ if (bb) {
+ bb->seq_points = g_slist_prepend_mempool (cfg->mempool, bb->seq_points, ins);
+ bb->last_seq_point = ins;
+ }
}
void
if (ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET)
/* Used to implement method entry/exit events */
continue;
+ if (ins->inst_offset == SEQ_POINT_NATIVE_OFFSET_DEAD_CODE)
+ continue;
if (last != NULL) {
/* Link with the previous seq point in the same bb */
return FALSE;
}
+static gboolean
+is_open_method (MonoMethod *method)
+{
+ MonoGenericContext *context;
+
+ if (!method->is_inflated)
+ return FALSE;
+ context = mono_method_get_context (method);
+ if (context->class_inst && context->class_inst->is_open)
+ return TRUE;
+ if (context->method_inst && context->method_inst->is_open)
+ return TRUE;
+ return FALSE;
+}
+
static gboolean
has_ref_constraint (MonoGenericParamInfo *info)
{
gboolean gsharedvt = FALSE;
MonoGenericContainer *class_container, *method_container = NULL;
- if (method->is_generic || method->klass->generic_container) {
+ if (method->is_generic || (method->klass->generic_container && !method->is_inflated)) {
declaring_method = method;
} else {
declaring_method = mono_method_get_declaring_generic_method (method);
shared_context = declaring_method->klass->generic_container->context;
/* Handle gsharedvt/partial sharing */
- if ((method != declaring_method && method->is_inflated && !mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) ||
+ if ((method != declaring_method && method->is_inflated && !mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) ||
is_gsharedvt || mini_is_gsharedvt_sharable_method (method)) {
MonoGenericContext *context = mono_method_get_context (method);
MonoGenericInst *inst;
- gsharedvt = is_gsharedvt || mini_is_gsharedvt_sharable_method (method);
+ partial = mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE);
+
+ gsharedvt = is_gsharedvt || (!partial && mini_is_gsharedvt_sharable_method (method));
class_container = declaring_method->klass->generic_container;
method_container = mono_method_get_generic_container (declaring_method);
* Create the shared context by replacing the ref type arguments with
* type parameters, and keeping the rest.
*/
- partial = TRUE;
if (context)
inst = context->class_inst;
else
inst = shared_context.method_inst;
if (inst)
shared_context.method_inst = get_shared_inst (inst, shared_context.method_inst, method_container, all_vt, gsharedvt);
+
+ partial = TRUE;
}
res = mono_class_inflate_generic_method (declaring_method, &shared_context);
* FIXME: Remove the method->klass->generic_class limitation.
*/
try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
- (opts & MONO_OPT_GSHARED) && ((method->is_generic || method->klass->generic_container) || (!method->klass->generic_class && mono_method_is_generic_sharable_impl_full (method, TRUE, FALSE, FALSE)));
+ (opts & MONO_OPT_GSHARED) && ((method->is_generic || method->klass->generic_container) || (!method->klass->generic_class && mono_method_is_generic_sharable_full (method, TRUE, FALSE, FALSE)));
else
try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
- (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE);
+ (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable (method, FALSE);
if (opts & MONO_OPT_GSHARED) {
if (try_generic_shared)
try_generic_shared = FALSE;
}
- if (is_gsharedvt_method (method)) {
+ if (is_gsharedvt_method (method) || (compile_aot && is_open_method (method))) {
/* We are AOTing a gshared method directly */
method_is_gshared = TRUE;
g_assert (compile_aot);
if (ji)
return ji;
- if (!mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE))
+ if (!mono_method_is_generic_sharable (method, FALSE))
return NULL;
return mono_domain_lookup_shared_generic (domain, method);
}
mono_domain_jit_code_hash_unlock (target_domain);
code = cfg->native_code;
- if (cfg->generic_sharing_context && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE))
+ if (cfg->generic_sharing_context && mono_method_is_generic_sharable (method, FALSE))
mono_stats.generics_shared_methods++;
if (cfg->gsharedvt)
mono_stats.gsharedvt_methods++;
#endif
/* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 88
+#define MONO_AOT_FILE_VERSION 89
//TODO: This is x86/amd64 specific.
#define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
gpointer method_info_offsets;
gpointer ex_info_offsets;
gpointer code_offsets;
-#ifdef MONOTOUCH
gpointer method_addresses;
-#endif
gpointer extra_method_info_offsets;
gpointer extra_method_table;
gpointer got_info_offsets;
gboolean mono_arch_gsharedvt_sig_supported (MonoMethodSignature *sig) MONO_INTERNAL;
gpointer mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
gpointer mono_arch_get_gsharedvt_call_info (gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig, MonoGenericSharingContext *gsctx, gboolean gsharedvt_in, gint32 vcall_offset, gboolean calli) MONO_INTERNAL;
+gboolean mono_arch_opcode_needs_emulation (MonoCompile *cfg, int opcode) MONO_INTERNAL;
/* Soft Debug support */
#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
mono_method_is_generic_impl (MonoMethod *method) MONO_INTERNAL;
gboolean
-mono_method_is_generic_sharable_impl (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
+mono_method_is_generic_sharable (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
gboolean
-mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_type_vars, gboolean allow_partial, gboolean allow_gsharedvt) MONO_INTERNAL;
+mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_vars, gboolean allow_partial, gboolean allow_gsharedvt) MONO_INTERNAL;
gboolean
mini_class_is_generic_sharable (MonoClass *klass) MONO_INTERNAL;
#define CREATE_FP_OFFSET CREATE_GR_OFFSET+GR_SAVE_SIZE
#define CREATE_LMF_OFFSET CREATE_FP_OFFSET+FP_SAVE_SIZE
#define CREATE_STACK_SIZE (CREATE_LMF_OFFSET+2*sizeof(long)+sizeof(MonoLMF))
+#define GENERIC_REG_OFFSET CREATE_STACK_SIZE + \
+ S390_REG_SAVE_OFFSET + \
+ 3*sizeof(long)
/*------------------------------------------------------------------*/
/* Method-specific trampoline code fragment sizes */
s390_lg (buf, s390_r3, 0, s390_r11, S390_RET_ADDR_OFFSET);
}
- /* Arg 3: MonoMethod *method. It was put in r1 by the
- method-specific trampoline code, and then saved before the call
- to mono_get_lmf_addr()'. */
- s390_lg (buf, s390_r4, 0, STK_BASE, METHOD_SAVE_OFFSET);
+ /* Arg 3: Trampoline argument */
+ if (tramp_type == MONO_TRAMPOLINE_GENERIC_CLASS_INIT)
+ s390_lg (buf, s390_r4, 0, STK_BASE, GENERIC_REG_OFFSET);
+ else
+ s390_lg (buf, s390_r4, 0, STK_BASE, METHOD_SAVE_OFFSET);
/* Arg 4: trampoline address. Ignore for now */
s390_lgr (buf, STK_BASE, s390_r11);
s390_lmg (buf, s390_r6, s390_r14, STK_BASE, S390_REG_SAVE_OFFSET);
- if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT || tramp_type == MONO_TRAMPOLINE_GENERIC_CLASS_INIT)
- s390_br (buf, s390_r14);
- else
- s390_br (buf, s390_r1);
+ if (MONO_TRAMPOLINE_TYPE_MUST_RETURN(tramp_type)) {
+ s390_lgr (buf, s390_r2, s390_r1);
+ s390_br (buf, s390_r14);
+ } else {
+ s390_br (buf, s390_r1);
+ }
/* Flush instruction cache, since we've generated code */
mono_arch_flush_icache (code, buf - code);
s390_llong(buf, arg1);
s390_lg (buf, s390_r1, 0, s390_r1, 4);
displace = (tramp - buf) / 2;
- s390_jcl (buf, S390_CC_UN, displace);
+ s390_jg (buf, displace);
/* Flush instruction cache, since we've generated code */
mono_arch_flush_icache (code, buf - code);
gpointer
mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot)
{
- /* FIXME: implement! */
+#ifdef MONO_ARCH_VTABLE_REG
+ guint8 *tramp;
+ guint8 *code, *buf;
+ guint8 **rgctx_null_jumps;
+ gint32 displace;
+ int tramp_size,
+ depth,
+ index,
+ iPatch = 0,
+ i;
+ gboolean mrgctx;
+ MonoJumpInfo *ji = NULL;
+ GSList *unwind_ops = NULL;
+
+ mrgctx = MONO_RGCTX_SLOT_IS_MRGCTX (slot);
+ index = MONO_RGCTX_SLOT_INDEX (slot);
+ if (mrgctx)
+ index += MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT / sizeof (gpointer);
+ for (depth = 0; ; ++depth) {
+ int size = mono_class_rgctx_get_array_size (depth, mrgctx);
+
+ if (index < size - 1)
+ break;
+ index -= size - 1;
+ }
+
+ tramp_size = 48 + 16 * depth;
+ if (mrgctx)
+ tramp_size += 4;
+ else
+ tramp_size += 12;
+
+ code = buf = mono_global_codeman_reserve (tramp_size);
+
+ unwind_ops = mono_arch_get_cie_program ();
+
+ rgctx_null_jumps = g_malloc (sizeof (guint8*) * (depth + 2));
+
+ if (mrgctx) {
+ /* get mrgctx ptr */
+ s390_lgr (code, s390_r1, s390_r2);
+ } else {
+ /* load rgctx ptr from vtable */
+ s390_lg (code, s390_r1, 0, s390_r2, G_STRUCT_OFFSET(MonoVTable, runtime_generic_context));
+ /* is the rgctx ptr null? */
+ s390_ltgr (code, s390_r1, s390_r1);
+ /* if yes, jump to actual trampoline */
+ rgctx_null_jumps [iPatch++] = code;
+ s390_jge (code, 0);
+ }
+
+ for (i = 0; i < depth; ++i) {
+ /* load ptr to next array */
+ if (mrgctx && i == 0)
+ s390_lg (code, s390_r1, 0, s390_r1, MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT);
+ else
+ s390_lg (code, s390_r1, 0, s390_r1, 0);
+ s390_ltgr (code, s390_r1, s390_r1);
+ /* if the ptr is null then jump to actual trampoline */
+ rgctx_null_jumps [iPatch++] = code;
+ s390_jge (code, 0);
+ }
+
+ /* fetch slot */
+ s390_lg (code, s390_r1, 0, s390_r1, (sizeof (gpointer) * (index + 1)));
+ /* is the slot null? */
+ s390_ltgr (code, s390_r1, s390_r1);
+ /* if yes, jump to actual trampoline */
+ rgctx_null_jumps [iPatch++] = code;
+ s390_jge (code, 0);
+ /* otherwise return r1 */
+ s390_lgr (code, s390_r2, s390_r1);
+ s390_br (code, s390_r14);
+
+ for (i = 0; i < iPatch; i++) {
+ displace = ((uintptr_t) code - (uintptr_t) rgctx_null_jumps[i]) / 2;
+ s390_patch_rel ((rgctx_null_jumps [i] + 2), displace);
+ }
+
+ g_free (rgctx_null_jumps);
+
+ /* move the rgctx pointer to the VTABLE register */
+ s390_lgr (code, MONO_ARCH_VTABLE_REG, s390_r2);
+
+ tramp = mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot),
+ MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
+
+ /* jump to the actual trampoline */
+ displace = (tramp - code) / 2;
+ s390_jg (code, displace);
+
+ mono_arch_flush_icache (buf, code - buf);
+
+ g_assert (code - buf <= tramp_size);
+
+ if (info)
+ *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+
+ return(buf);
+#else
g_assert_not_reached ();
- return NULL;
+#endif
+ return(NULL);
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/* */
+/* Name - mono_arch_get_static_rgctx_trampoline */
+/* */
+/* Function - Create a trampoline which sets RGCTX_REG to MRGCTX*/
+/* then jumps to ADDR. */
+/* */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_get_static_rgctx_trampoline (MonoMethod *m,
+ MonoMethodRuntimeGenericContext *mrgctx,
+ gpointer addr)
+{
+ guint8 *code, *start;
+ gint32 displace;
+ int buf_len;
+
+ MonoDomain *domain = mono_domain_get ();
+
+ buf_len = 32;
+
+ start = code = mono_domain_code_reserve (domain, buf_len);
+
+ s390_basr (code, s390_r1, 0);
+ s390_j (code, 6);
+ s390_llong(code, mrgctx);
+ s390_lg (code, MONO_ARCH_RGCTX_REG, 0, s390_r1, 4);
+ displace = ((uintptr_t) addr - (uintptr_t) code) / 2;
+ s390_jg (code, displace);
+ g_assert ((code - start) < buf_len);
+
+ mono_arch_flush_icache (start, code - start);
+
+ return(start);
}
/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/* */
+/* Name - mono_arch_create_generic_class_init_trampoline */
+/* */
+/* Function - */
+/* */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean aot)
+{
+ guint8 *tramp;
+ guint8 *code, *buf;
+ static int byte_offset = -1;
+ static guint8 bitmask;
+ guint8 *jump;
+ gint32 displace;
+ int tramp_size;
+ GSList *unwind_ops = NULL;
+ MonoJumpInfo *ji = NULL;
+
+ tramp_size = 48;
+
+ code = buf = mono_global_codeman_reserve (tramp_size);
+
+ unwind_ops = mono_arch_get_cie_program ();
+
+ if (byte_offset < 0)
+ mono_marshal_find_bitfield_offset (MonoVTable, initialized, &byte_offset, &bitmask);
+
+ s390_llgc(code, s390_r0, 0, MONO_ARCH_VTABLE_REG, byte_offset);
+ s390_nill(code, s390_r0, bitmask);
+ s390_bnzr(code, s390_r14);
+
+ tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_GENERIC_CLASS_INIT,
+ mono_get_root_domain (), NULL);
+
+ /* jump to the actual trampoline */
+ displace = (tramp - code) / 2;
+ s390_jg (code, displace);
+
+ mono_arch_flush_icache (buf, code - buf);
+
+ g_assert (code - buf <= tramp_size);
+
+ if (info)
+ *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+
+ return(buf);
+}
+
+/*========================= End of Function ========================*/
logbuffer = ensure_logbuf (20 + count * 8);
emit_byte (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_HIT);
emit_value (logbuffer, type);
- emit_uvalue (logbuffer, (prof->startup_time + sample [2]) * 10000);
+ emit_uvalue (logbuffer, prof->startup_time + (uint64_t)sample [2] * (uint64_t)10000);
emit_value (logbuffer, count);
for (i = 0; i < count; ++i) {
emit_ptr (logbuffer, (void*)sample [i + 3]);
/tests-config
/TAGS
/runtime-invoke.gen.cs
+/*.exe.dylib
+/*.exe.dylib.dSYM
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_sbyte([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_sbyte_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_byte([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_byte_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_short([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_short_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_ushort([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_ushort_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_int([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_int_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_uint([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_uint_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_long([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_long_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_ulong([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_ulong_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_float([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_float_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_double([MarshalAs(UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_double_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_bstr ([MarshalAs (UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_bstr_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
[DllImport("libtest")]
public static extern int mono_test_marshal_variant_out_bool_true ([MarshalAs (UnmanagedType.Struct)]out object obj);
+ [DllImport("libtest")]
+ public static extern int mono_test_marshal_variant_out_bool_true_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
[DllImport ("libtest")]
public static extern int mono_test_marshal_variant_out_bool_false ([MarshalAs (UnmanagedType.Struct)]out object obj);
+ [DllImport ("libtest")]
+ public static extern int mono_test_marshal_variant_out_bool_false_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
public delegate int VarFunc (VarEnum vt, [MarshalAs (UnmanagedType.Struct)] object obj);
if (mono_test_marshal_variant_out_bool_true_unmanaged (reffunc) != 0)
return 61;
+ if (mono_test_marshal_variant_out_sbyte_byref (out obj) != 0 || (sbyte)obj != 100)
+ return 97;
+ if (mono_test_marshal_variant_out_byte_byref (out obj) != 0 || (byte)obj != 100)
+ return 98;
+ if (mono_test_marshal_variant_out_short_byref (out obj) != 0 || (short)obj != 314)
+ return 99;
+ if (mono_test_marshal_variant_out_ushort_byref (out obj) != 0 || (ushort)obj != 314)
+ return 100;
+ if (mono_test_marshal_variant_out_int_byref (out obj) != 0 || (int)obj != 314)
+ return 101;
+ if (mono_test_marshal_variant_out_uint_byref (out obj) != 0 || (uint)obj != 314)
+ return 102;
+ if (mono_test_marshal_variant_out_long_byref (out obj) != 0 || (long)obj != 314)
+ return 103;
+ if (mono_test_marshal_variant_out_ulong_byref (out obj) != 0 || (ulong)obj != 314)
+ return 104;
+ if (mono_test_marshal_variant_out_float_byref (out obj) != 0 || ((float)obj - 3.14) / 3.14 > .001)
+ return 105;
+ if (mono_test_marshal_variant_out_double_byref (out obj) != 0 || ((double)obj - 3.14) / 3.14 > .001)
+ return 106;
+ if (mono_test_marshal_variant_out_bstr_byref (out obj) != 0 || (string)obj != "PI")
+ return 107;
+
#endregion // VARIANT Tests
#region Runtime Callable Wrapper Tests
$(MCS) -Warn:0 descriptor-tests.cs
descriptor-tests.cs : descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py
- ./gen-descriptor-tests.py >descriptor-tests.cs
+ -cp $^ .
+ $(srcdir)/gen-descriptor-tests.py >descriptor-tests.cs
EXTRA_DIST = descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py
guint16 uiVal;
guint32 ulVal;
guint64 ullVal;
+ gpointer byref;
struct {
gpointer pvRecord;
gpointer pRecInfo;
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_sbyte_byref(VARIANT* variant)
+{
+ variant->vt = VT_I1|VT_BYREF;
+ variant->byref = marshal_alloc(1);
+ *((gint8*)variant->byref) = 100;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_byte(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_byte_byref(VARIANT* variant)
+{
+ variant->vt = VT_UI1|VT_BYREF;
+ variant->byref = marshal_alloc(1);
+ *((gint8*)variant->byref) = 100;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_short(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_short_byref(VARIANT* variant)
+{
+ variant->vt = VT_I2|VT_BYREF;
+ variant->byref = marshal_alloc(2);
+ *((gint16*)variant->byref) = 314;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_ushort(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_ushort_byref(VARIANT* variant)
+{
+ variant->vt = VT_UI2|VT_BYREF;
+ variant->byref = marshal_alloc(2);
+ *((guint16*)variant->byref) = 314;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_int(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_int_byref(VARIANT* variant)
+{
+ variant->vt = VT_I4|VT_BYREF;
+ variant->byref = marshal_alloc(4);
+ *((gint32*)variant->byref) = 314;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_uint(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_uint_byref(VARIANT* variant)
+{
+ variant->vt = VT_UI4|VT_BYREF;
+ variant->byref = marshal_alloc(4);
+ *((guint32*)variant->byref) = 314;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_long(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_long_byref(VARIANT* variant)
+{
+ variant->vt = VT_I8|VT_BYREF;
+ variant->byref = marshal_alloc(8);
+ *((gint64*)variant->byref) = 314;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_ulong(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_ulong_byref(VARIANT* variant)
+{
+ variant->vt = VT_UI8|VT_BYREF;
+ variant->byref = marshal_alloc(8);
+ *((guint64*)variant->byref) = 314;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_float(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_float_byref(VARIANT* variant)
+{
+ variant->vt = VT_R4|VT_BYREF;
+ variant->byref = marshal_alloc(4);
+ *((float*)variant->byref) = 3.14;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_double(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_double_byref(VARIANT* variant)
+{
+ variant->vt = VT_R8|VT_BYREF;
+ variant->byref = marshal_alloc(8);
+ *((double*)variant->byref) = 3.14;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_bstr(VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_bstr_byref(VARIANT* variant)
+{
+ variant->vt = VT_BSTR|VT_BYREF;
+ variant->byref = marshal_alloc(sizeof(gpointer));
+ *((gunichar**)variant->byref) = marshal_bstr_alloc("PI");
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_bool_true (VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_bool_true_byref (VARIANT* variant)
+{
+ variant->vt = VT_BOOL|VT_BYREF;
+ variant->byref = marshal_alloc(2);
+ *((gint16*)variant->byref) = VARIANT_TRUE;
+
+ return 0;
+}
+
LIBTEST_API int STDCALL
mono_test_marshal_variant_out_bool_false (VARIANT* variant)
{
return 0;
}
+LIBTEST_API int STDCALL
+mono_test_marshal_variant_out_bool_false_byref (VARIANT* variant)
+{
+ variant->vt = VT_BOOL|VT_BYREF;
+ variant->byref = marshal_alloc(2);
+ *((gint16*)variant->byref) = VARIANT_FALSE;
+
+ return 0;
+}
+
typedef int (STDCALL *VarFunc) (int vt, VARIANT variant);
typedef int (STDCALL *VarRefFunc) (int vt, VARIANT* variant);
--- /dev/null
+.assembly extern mscorlib
+{
+.ver 4:0:0:0
+.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'test'
+{
+.custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() = (
+01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+
+.hash algorithm 0x00008004
+.ver 0:0:0:0
+}
+.module test.exe // GUID = {EBF85B14-B518-4DFE-8A10-5BBC0D700C94}
+
+.class private auto ansi beforefieldinit Foo`1<(class [mscorlib]Mono.Interop.IUnknown) T> extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname instance default void '.ctor' () cil managed
+ {
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void object::'.ctor'()
+ IL_0006: ret
+ }
+}
+
+.class public auto ansi beforefieldinit Driver extends [mscorlib]System.Object
+{
+ .method private static hidebysig default void Main () cil managed
+ {
+ .entrypoint
+ .maxstack 8
+ ldtoken Foo`1
+ call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+ call void class [mscorlib]System.Console::WriteLine(object)
+ IL_0000: ret
+ }
+}
+
--- /dev/null
+.assembly extern mscorlib
+{
+ .ver 4:0:0:0
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'test-997'
+{
+ .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() = (
+ 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module 'test-997.exe' // GUID = {AAE37F83-0848-454C-B66A-0AEEA55FFB63}
+
+
+ .class private auto ansi beforefieldinit C
+ extends [mscorlib]System.Object
+ {
+ .field private bool multiDomain
+
+ // method line 1
+ .method public static hidebysig
+ default void Main () cil managed
+ {
+ // Method begins at RVA 0x2050
+ .entrypoint
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method C::Main
+
+ // method line 2
+ .method private hidebysig
+ instance default class IA Create (bool arg) cil managed
+ {
+ // Method begins at RVA 0x2054
+ // Code size 24 (0x18)
+ .maxstack 1
+ .locals init (
+ class IA V_0)
+ IL_0000: ldarg.1
+ IL_0001: brfalse IL_0010
+
+ IL_0006: newobj instance void class B2::'.ctor'()
+ IL_000b: br IL_0015
+
+ IL_0010: newobj instance void class B1::'.ctor'()
+ IL_0015: stloc.0
+ IL_0016: ldloc.0
+ IL_0017: ret
+ } // end of method C::Create
+
+ // method line 3
+ .method public hidebysig specialname rtspecialname
+ instance default void '.ctor' () cil managed
+ {
+ // Method begins at RVA 0x2078
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void object::'.ctor'()
+ IL_0006: ret
+ } // end of method C::.ctor
+
+ } // end of class C
+
+ .class interface private auto ansi abstract IA
+ {
+
+ } // end of class IA
+
+ .class private auto ansi beforefieldinit B2
+ extends [mscorlib]System.Object
+ implements IA {
+
+ // method line 4
+ .method public hidebysig specialname rtspecialname
+ instance default void '.ctor' () cil managed
+ {
+ // Method begins at RVA 0x2080
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void object::'.ctor'()
+ IL_0006: ret
+ } // end of method B2::.ctor
+
+ } // end of class B2
+
+ .class private auto ansi beforefieldinit B1
+ extends [mscorlib]System.Object
+ implements IA {
+
+ // method line 5
+ .method public hidebysig specialname rtspecialname
+ instance default void '.ctor' () cil managed
+ {
+ // Method begins at RVA 0x2088
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void object::'.ctor'()
+ IL_0006: ret
+ } // end of method B1::.ctor
+
+ } // end of class B1
+
+ .class private auto ansi beforefieldinit B
+ extends [mscorlib]System.Object
+ implements IA {
+
+ // method line 6
+ .method public hidebysig specialname rtspecialname
+ instance default void '.ctor' () cil managed
+ {
+ // Method begins at RVA 0x2090
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void object::'.ctor'()
+ IL_0006: ret
+ } // end of method B::.ctor
+
+ } // end of class B
+
--- /dev/null
+using System;
+using System.Collections.Generic;
+
+interface IFoo {}
+class Foo : IFoo {}
+
+class Driver
+{
+ static IEnumerable <Foo> Dele (bool b)
+ {
+ return null;
+ }
+
+ static void Main ()
+ {
+ Func<bool, IEnumerable<IFoo>> dele = Dele;
+ dele (true);
+ }
+}
\ No newline at end of file
--- /dev/null
+.assembly extern mscorlib
+{
+ .ver 4:0:0:0
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'valid_merge_boxed_values'
+{
+ .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() = (
+ 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module valid_merge_boxed_values.exe // GUID = {47C47D22-2F3F-4B04-AED9-2BC28A196BCF}
+
+.class private auto ansi sealed ThisDele extends [mscorlib]System.MulticastDelegate
+{
+ .method public hidebysig specialname rtspecialname instance default void '.ctor' (object 'object', native int 'method') runtime managed
+ {
+ }
+
+ .method public virtual hidebysig newslot instance default bool Invoke (object obj) runtime managed
+ {
+ }
+
+ .method public virtual hidebysig newslot instance default class [mscorlib]System.IAsyncResult BeginInvoke (object obj, class [mscorlib]System.AsyncCallback callback, object 'object') runtime managed
+ {
+ }
+
+ .method public virtual hidebysig newslot instance default bool EndInvoke (class [mscorlib]System.IAsyncResult result) runtime managed
+ {
+ }
+}
+
+.class interface private auto ansi abstract IFace
+{
+ .method public virtual hidebysig newslot abstract instance default void Foo (class ThisDele b) cil managed
+ {
+ }
+}
+
+.class private sequential ansi sealed beforefieldinit MyList extends [mscorlib]System.ValueType implements IFace
+{
+ .pack 0
+ .size 1
+
+ .method public final virtual hidebysig newslot
+ instance default void Foo (class ThisDele b) cil managed
+ {
+ .maxstack 8
+ IL_0000: ret
+ }
+}
+
+.class private auto ansi beforefieldinit Driver extends [mscorlib]System.Object
+{
+ .field private static class ThisDele '<>f__mg$cache0'
+
+ .method public hidebysig specialname rtspecialname instance default void '.ctor' () cil managed
+ {
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void object::'.ctor'()
+ IL_0006: ret
+ }
+
+ .method private static hidebysig default bool Dele (object o) cil managed
+ {
+ .maxstack 8
+ IL_0000: ldc.i4.0
+ IL_0001: ret
+ }
+
+ .method private static hidebysig default void Foo (class IFace a, class [mscorlib]System.Action b) cil managed
+ {
+ .maxstack 8
+ IL_0000: ret
+ }
+
+ .method private static hidebysig default void Main () cil managed
+ {
+ .entrypoint
+ .maxstack 3
+ .locals init (
+ valuetype MyList V_0,
+ valuetype MyList V_1)
+ IL_0000: ldloca.s 1
+ IL_0002: initobj MyList
+ IL_0008: ldloc.1
+ IL_0009: stloc.0
+ IL_000a: ldloc.0
+ IL_000b: box MyList
+ IL_0010: ldsfld class ThisDele Driver::'<>f__mg$cache0'
+ IL_0015: brtrue.s IL_0028
+
+ IL_0017: ldnull
+ IL_0018: ldftn bool class Driver::Dele(object)
+ IL_001e: newobj instance void class ThisDele::'.ctor'(object, native int)
+ IL_0023: stsfld class ThisDele Driver::'<>f__mg$cache0'
+ IL_0028: ldsfld class ThisDele Driver::'<>f__mg$cache0'
+ IL_002d: callvirt instance void class IFace::Foo(class ThisDele)
+ IL_0032: ret
+ }
+}
+
#include "mono-mutex.h"
+#ifndef HOST_WIN32
+
#if defined(__APPLE__)
#define _DARWIN_C_SOURCE
-// #include <pthread_spis.h>
+#include <pthread_spis.h>
#endif
#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
#endif /* HAVE_PTHREAD_MUTEX_TIMEDLOCK */
-#ifndef HOST_WIN32
-
int
mono_once (mono_once_t *once, void (*once_init) (void))
{
pthread_mutexattr_init (&attr);
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
- // pthread_mutexattr_setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
+ pthread_mutexattr_setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
res = pthread_mutex_init (mutex, &attr);
pthread_mutexattr_destroy (&attr);
void *(*start_func)(void*) = start_info->start_routine;
void *result;
- mono_thread_info_attach (&result);
+ mono_thread_info_attach (&result)->runtime_thread = TRUE;
post_result = MONO_SEM_POST (&(start_info->registered));
g_assert (!post_result);
result = start_func (t_arg);
g_assert (!mono_domain_get ());
+ mono_thread_info_dettach ();
return result;
}
gboolean suspend = start_info->suspend;
HANDLE suspend_event = start_info->suspend_event;
- mono_thread_info_attach (&result);
+ mono_thread_info_attach (&result)->runtime_thread = TRUE;
post_result = MONO_SEM_POST (&(start_info->registered));
g_assert (!post_result);
g_assert (!mono_domain_get ());
+ mono_thread_info_dettach ();
+
return result;
}
if (info) {
THREADS_DEBUG ("detaching %p\n", info);
unregister_thread (info);
+ mono_native_tls_set_value (thread_info_key, NULL);
}
}
MonoNativeThreadHandle native_handle; /* Valid on mach and android */
int thread_state;
+ /*Tells if this thread was created by the runtime or not.*/
+ gboolean runtime_thread;
+
/* suspend machinery, fields protected by the suspend_lock */
mono_mutex_t suspend_lock;
int suspend_count;
@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
dist2: stamp-po $(DISTFILES)
+ mkdir -p $(distdir)
dists="$(DISTFILES)"; \
if test "$(PACKAGE)" = "gettext-tools"; then \
dists="$$dists Makevars.template"; \
fstab.c \
grp.c \
macros.c \
+ mac-reachability.c \
nl.c \
nl.h \
old-map.c \
libMonoPosixHelper_la_LDFLAGS = -no-undefined -avoid-version
libMonoSupportW_la_LDFLAGS = -no-undefined -avoid-version
+if PLATFORM_DARWIN
+libMonoPosixHelper_la_LDFLAGS += -framework CoreFoundation -framework SystemConfiguration
+endif
+
libMonoSupportW_la_SOURCES = \
supportw.c \
support-heap.c \
--- /dev/null
+//
+// mac-reachability.c: System.Net.NetworkingInformation.NetworkChange
+// implementation for Mac OS X using SystemConfiguration's
+// NetworkReachability API.
+//
+// Authors:
+// Aaron Bockover (abock@xamarin.com)
+//
+// Copyright (c) 2013 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+int mono_sc_reachability_enabled (void);
+
+#if defined(PLATFORM_MACOSX) || defined(TARGET_IOS)
+
+int
+mono_sc_reachability_enabled (void)
+{
+ return 1;
+}
+
+#include <SystemConfiguration/SCNetworkReachability.h>
+#include <netinet/in.h>
+
+typedef void (*mono_sc_reachability_callback)(int);
+
+typedef struct {
+ SCNetworkReachabilityRef reachability;
+ mono_sc_reachability_callback callback;
+} mono_sc_reachability;
+
+mono_sc_reachability * mono_sc_reachability_new (mono_sc_reachability_callback callback);
+void mono_sc_reachability_free (mono_sc_reachability *reachability);
+int mono_sc_reachability_is_available (mono_sc_reachability *reachability);
+
+static int
+_mono_sc_reachability_is_available (SCNetworkReachabilityFlags flags)
+{
+ return (flags & kSCNetworkFlagsReachable) && (flags & kSCNetworkFlagsConnectionRequired) == 0;
+}
+
+static void
+_mono_sc_reachability_callback (SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *user)
+{
+ mono_sc_reachability *reachability;
+
+ if (user == NULL) {
+ return;
+ }
+
+ reachability = (mono_sc_reachability *)user;
+ if (reachability->callback == NULL) {
+ return;
+ }
+
+ reachability->callback (_mono_sc_reachability_is_available (flags));
+}
+
+mono_sc_reachability *
+mono_sc_reachability_new (mono_sc_reachability_callback callback)
+{
+ struct sockaddr_in zero;
+ SCNetworkReachabilityRef reachability;
+ SCNetworkReachabilityContext context;
+ mono_sc_reachability *instance;
+
+ if (callback == NULL) {
+ return NULL;
+ }
+
+ bzero (&zero, sizeof (zero));
+ zero.sin_len = sizeof (zero);
+ zero.sin_family = AF_INET;
+
+ reachability = SCNetworkReachabilityCreateWithAddress (NULL, (const struct sockaddr *)&zero);
+ if (reachability == NULL) {
+ return NULL;
+ }
+
+ instance = (mono_sc_reachability *)malloc (sizeof (mono_sc_reachability));
+ instance->reachability = reachability;
+ instance->callback = callback;
+
+ bzero (&context, sizeof (context));
+ context.info = instance;
+
+ if (!SCNetworkReachabilitySetCallback (reachability, _mono_sc_reachability_callback, &context) ||
+ !SCNetworkReachabilityScheduleWithRunLoop (reachability, CFRunLoopGetCurrent (), kCFRunLoopDefaultMode)) {
+ mono_sc_reachability_free (instance);
+ return NULL;
+ }
+
+ return instance;
+}
+
+void
+mono_sc_reachability_free (mono_sc_reachability *reachability)
+{
+ if (reachability != NULL) {
+ if (reachability->reachability != NULL) {
+ SCNetworkReachabilityUnscheduleFromRunLoop (reachability->reachability,
+ CFRunLoopGetCurrent (), kCFRunLoopDefaultMode);
+ CFRelease (reachability->reachability);
+ reachability->reachability = NULL;
+ }
+
+ reachability->callback = NULL;
+ free (reachability);
+ reachability = NULL;
+ }
+}
+
+int
+mono_sc_reachability_is_available (mono_sc_reachability *reachability)
+{
+ SCNetworkReachabilityFlags flags;
+ return reachability != NULL && reachability->reachability != NULL &&
+ SCNetworkReachabilityGetFlags (reachability->reachability, &flags) &&
+ _mono_sc_reachability_is_available (flags);
+}
+
+#else
+
+int
+mono_sc_reachability_enabled (void)
+{
+ return 0;
+}
+
+#endif