Merge pull request #637 from LogosBible/enetdown
authorAlex Rønne Petersen <alex@alexrp.com>
Thu, 16 May 2013 11:57:08 +0000 (04:57 -0700)
committerAlex Rønne Petersen <alex@alexrp.com>
Thu, 16 May 2013 11:57:08 +0000 (04:57 -0700)
Handle ENETDOWN error if defined.

404 files changed:
configure.in
data/reactive.pc.in
libgc/include/private/gcconfig.h
mcs/class/Facades/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Collections/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Collections/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Collections/System.Collections.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Collections/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ComponentModel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Globalization/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Globalization/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Globalization/System.Globalization.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Globalization/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.IO/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.IO/Makefile [new file with mode: 0644]
mcs/class/Facades/System.IO/System.IO.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.IO/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Linq/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Linq/System.Linq.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Linq/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Net.Requests/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ObjectModel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection/System.Reflection.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Runtime/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Runtime/System.Runtime.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Runtime/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Security.Principal/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/Makefile [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Threading/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Threading/System.Threading.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Threading/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Windows/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Windows/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Windows/System.Windows.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Windows/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.Serialization/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.Serialization/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.Serialization/System.Xml.Serialization.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.Serialization/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Makefile
mcs/class/Mono.CSharp/Test/Evaluator/ExpressionsTest.cs
mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs
mcs/class/Mono.Debugger.Soft/Test/dtest.cs
mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
mcs/class/System.Core/System/TimeZoneInfo.MonoTouch.cs
mcs/class/System.Core/System/TimeZoneInfo.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Call.cs
mcs/class/System.Data/System.Data-net_4_5.csproj
mcs/class/System.Data/System.Data.Common/DbCommand.cs
mcs/class/System.Data/System.Data.Common/DbConnection.cs
mcs/class/System.Data/System.Data.Common/DbDataReader.cs
mcs/class/System.Data/System.Data.Common/TaskHelper.cs [new file with mode: 0644]
mcs/class/System.Data/System.Data.dll.sources
mcs/class/System.Data/mobile_System.Data.dll.sources
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
mcs/class/System.ServiceProcess/System.ServiceProcess/ServiceBase.cs
mcs/class/System.ServiceProcess/System.ServiceProcess/ServiceController.cs
mcs/class/System.ServiceProcess/System.ServiceProcess_test.dll.sources
mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceBaseTest.cs [new file with mode: 0644]
mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceControllerTest.cs
mcs/class/System.Web/System.Web/MimeMapping.cs [new file with mode: 0644]
mcs/class/System.Web/net_4_5_System.Web.dll.sources
mcs/class/System.XML/mobile_System.Xml.dll.sources
mcs/class/System/System.Diagnostics/Switch.cs
mcs/class/System/System.Diagnostics/TraceImpl.cs
mcs/class/System/System.Diagnostics/TraceSource.cs
mcs/class/System/System.Net.NetworkInformation/NetworkChange.cs
mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
mcs/class/System/System.Net/WebRequest.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Chain.cs
mcs/class/System/System/Platform.cs
mcs/class/System/Test/System.Diagnostics/TraceSourceTest.cs
mcs/class/System/mobile_System.dll.sources
mcs/class/System/monodroid_System.dll.sources
mcs/class/build-rx-dll-sources.sh
mcs/class/corlib/System.Collections/Stack.cs
mcs/class/corlib/System.Globalization/RegionInfo.MonoTouch.cs
mcs/class/corlib/System.IO/File.cs
mcs/class/corlib/System.IO/FileStream.cs
mcs/class/corlib/System.IO/StreamWriter.cs
mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs
mcs/class/corlib/System.Runtime.CompilerServices/YieldAwaitable.cs
mcs/class/corlib/System.Security.Cryptography/DSASignatureDeformatter.cs
mcs/class/corlib/System.Security.Cryptography/DSASignatureFormatter.cs
mcs/class/corlib/System.Security.Cryptography/HMAC.cs
mcs/class/corlib/System.Security.Cryptography/HMACMD5.cs
mcs/class/corlib/System.Security.Cryptography/HMACRIPEMD160.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA256.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA384.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA512.cs
mcs/class/corlib/System.Security.Cryptography/MACTripleDES.cs
mcs/class/corlib/System.Security/SecurityException.cs
mcs/class/corlib/System/AggregateException.cs
mcs/class/corlib/System/BitConverter.cs
mcs/class/corlib/System/Console.cs
mcs/class/corlib/System/Console.iOS.cs [new file with mode: 0644]
mcs/class/corlib/System/Enum.cs
mcs/class/corlib/System/Int32.cs
mcs/class/corlib/System/Int64.cs
mcs/class/corlib/System/IntPtr.cs
mcs/class/corlib/System/NumberFormatter.cs
mcs/class/corlib/System/UInt32.cs
mcs/class/corlib/System/UInt64.cs
mcs/class/corlib/System/Variant.cs
mcs/class/corlib/Test/System.Globalization/RegionInfoTest.cs
mcs/class/corlib/Test/System.IO/StreamWriterTest.cs
mcs/class/corlib/Test/System/AggregateExceptionTests.cs
mcs/class/corlib/Test/System/Int32Test.cs
mcs/class/corlib/Test/System/Int64Test.cs
mcs/class/corlib/Test/System/NumberFormatterTest.cs
mcs/class/corlib/Test/System/UInt32Test.cs
mcs/class/corlib/Test/System/UInt64Test.cs
mcs/class/corlib/corlib.dll.sources
mcs/class/monodoc/Makefile
mcs/class/monodoc/Monodoc/RootTree.cs
mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs
mcs/class/monodoc/Monodoc/providers/EcmaDoc.cs
mcs/class/monodoc/Monodoc/providers/ecma-provider.cs
mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs [new file with mode: 0644]
mcs/class/monodoc/Test/Monodoc/HelpSourceTests.cs
mcs/class/monodoc/jay.sh [new file with mode: 0755]
mcs/class/monodoc/monodoc_test.dll.sources
mcs/class/project_template_android.txt
mcs/class/project_template_ios.txt
mcs/errors/cs0534-10.cs [new file with mode: 0644]
mcs/errors/cs0534-9.cs
mcs/errors/cs1534-3.cs [new file with mode: 0644]
mcs/errors/cs1705-2.cs [new file with mode: 0644]
mcs/ilasm/parser/ILParser.jay
mcs/mcs/anonymous.cs
mcs/mcs/assembly.cs
mcs/mcs/attribute.cs
mcs/mcs/class.cs
mcs/mcs/context.cs
mcs/mcs/cs-parser.jay
mcs/mcs/cs-tokenizer.cs
mcs/mcs/driver.cs
mcs/mcs/ecore.cs
mcs/mcs/eval.cs
mcs/mcs/expression.cs
mcs/mcs/field.cs
mcs/mcs/generic.cs
mcs/mcs/membercache.cs
mcs/mcs/modifiers.cs
mcs/mcs/namespace.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/mcs/typemanager.cs
mcs/mcs/visit.cs
mcs/tests/gtest-583-lib.il [new file with mode: 0644]
mcs/tests/gtest-583.cs [new file with mode: 0644]
mcs/tests/test-868.cs [new file with mode: 0644]
mcs/tests/test-partial-31.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_5.xml
mcs/tools/csharp/repl.cs
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/mkbundle/mkbundle.cs
mcs/tools/mkbundle/template_z.c
mcs/tools/mono-service/mono-service.cs
mcs/tools/xbuild/Makefile
mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets [deleted file]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks [deleted file]
mono-core.spec.in
mono/arch/arm/Makefile.am
mono/arch/arm/arm-codegen.h
mono/arch/arm/arm-fpa-codegen.h [deleted file]
mono/arch/arm/arm-vfp-codegen.h
mono/arch/arm/fpa_macros.th [deleted file]
mono/arch/arm/fpam_macros.th [deleted file]
mono/arch/arm/fpaops.sh [deleted file]
mono/arch/s390x/s390x-codegen.h
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/debug-helpers.c
mono/metadata/decimal.c
mono/metadata/exception.c
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/marshal.c
mono/metadata/metadata.c
mono/metadata/mono-endian.h
mono/metadata/object-internals.h
mono/metadata/object.c
mono/metadata/pedump.c
mono/metadata/reflection.c
mono/metadata/sgen-bridge.c
mono/metadata/sgen-os-posix.c
mono/metadata/threadpool.c
mono/metadata/threadpool.h
mono/metadata/threads.c
mono/metadata/threads.h
mono/metadata/verify.c
mono/mini/Makefile.am.in
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/cpu-arm.md
mono/mini/cpu-s390x.md
mono/mini/debugger-agent.c
mono/mini/debugger-agent.h
mono/mini/decompose.c
mono/mini/driver.c
mono/mini/generics.cs
mono/mini/gshared.cs
mono/mini/ir-emit.h
mono/mini/method-to-ir.c
mono/mini/mini-arm.c
mono/mini/mini-arm.h
mono/mini/mini-codegen.c
mono/mini/mini-exceptions.c
mono/mini/mini-generic-sharing.c
mono/mini/mini-s390x.c
mono/mini/mini-s390x.h
mono/mini/mini-trampolines.c
mono/mini/mini.c
mono/mini/mini.h
mono/mini/tramp-s390x.c
mono/profiler/proflog.c
mono/tests/.gitignore
mono/tests/cominterop.cs
mono/tests/gc-descriptors/Makefile.am
mono/tests/libtest.c
mono/tests/verifier/badmd_constraint_must_be_visible.il [new file with mode: 0644]
mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il [new file with mode: 0644]
mono/tests/verifier/valid_delegate_return_variant_iface.cs [new file with mode: 0644]
mono/tests/verifier/valid_merge_boxed_values.il [new file with mode: 0644]
mono/utils/mono-mutex.c
mono/utils/mono-threads-posix.c
mono/utils/mono-threads-windows.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
po/mcs/Makefile.in.in
support/Makefile.am
support/mac-reachability.c [new file with mode: 0644]

index d02b99e43fd2f2fdaaa2bf0c6e16d1379d8da2fb..5709ea5da491e85cff67920accee702d59f9a6b1 100644 (file)
@@ -1,7 +1,7 @@
 # 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])
@@ -2572,7 +2572,7 @@ case "$host" in
                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
@@ -2586,7 +2586,7 @@ case "$host" in
                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
                ;;
@@ -2620,7 +2620,7 @@ if test "x$host" != "x$target"; then
                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
@@ -2663,10 +2663,9 @@ if test "x$host" != "x$target"; then
 #              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 \
@@ -2697,11 +2696,11 @@ if test "x$host" != "x$target"; then
                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
                ;;
index 264015165698d0bfab4b8a68acd09f7f1df1fcd7..ed159ba25ebe24f694056d12f77153f1d162e3bb 100644 (file)
@@ -1,12 +1,4 @@
 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
index 88e783800de9faf427837c7bd93a1b3bd15f99cd..c264b164a4135978cf8ad27b091173828562d5a9 100644 (file)
 #       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
 
diff --git a/mcs/class/Facades/Makefile b/mcs/class/Facades/Makefile
new file mode 100644 (file)
index 0000000..d63f224
--- /dev/null
@@ -0,0 +1,23 @@
+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
diff --git a/mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs b/mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..1330eeb
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Collections.Concurrent/Makefile b/mcs/class/Facades/System.Collections.Concurrent/Makefile
new file mode 100644 (file)
index 0000000..5cdf14d
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources b/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs b/mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..4103861
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Collections/AssemblyInfo.cs b/mcs/class/Facades/System.Collections/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..eac2a85
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Collections/Makefile b/mcs/class/Facades/System.Collections/Makefile
new file mode 100644 (file)
index 0000000..c45f6ae
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Collections/System.Collections.dll.sources b/mcs/class/Facades/System.Collections/System.Collections.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Collections/TypeForwarders.cs b/mcs/class/Facades/System.Collections/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..716fe5c
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs b/mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..45560dc
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/Makefile b/mcs/class/Facades/System.ComponentModel.Annotations/Makefile
new file mode 100644 (file)
index 0000000..9407bf9
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources b/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs b/mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0bc80b3
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..1888558
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile
new file mode 100644 (file)
index 0000000..5818f02
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..df5c85a
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs b/mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..8fced63
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.ComponentModel/Makefile b/mcs/class/Facades/System.ComponentModel/Makefile
new file mode 100644 (file)
index 0000000..05023f1
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources b/mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ComponentModel/TypeForwarders.cs b/mcs/class/Facades/System.ComponentModel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..238ceac
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a510e67
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/Makefile b/mcs/class/Facades/System.Diagnostics.Contracts/Makefile
new file mode 100644 (file)
index 0000000..9dadb56
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources b/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ac2cc3d
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..7741b20
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/Makefile b/mcs/class/Facades/System.Diagnostics.Debug/Makefile
new file mode 100644 (file)
index 0000000..fd591aa
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources b/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..e829ac7
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs b/mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..982113d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/Makefile b/mcs/class/Facades/System.Diagnostics.Tools/Makefile
new file mode 100644 (file)
index 0000000..2e94b2b
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources b/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs b/mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..a07fed0
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs b/mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..159b949
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/Makefile b/mcs/class/Facades/System.Dynamic.Runtime/Makefile
new file mode 100644 (file)
index 0000000..22064c4
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources b/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs b/mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..2a7a27c
--- /dev/null
@@ -0,0 +1,28 @@
+//
+// 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<,>))]
+
diff --git a/mcs/class/Facades/System.Globalization/AssemblyInfo.cs b/mcs/class/Facades/System.Globalization/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..efc686c
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Globalization/Makefile b/mcs/class/Facades/System.Globalization/Makefile
new file mode 100644 (file)
index 0000000..1c204ee
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Globalization/System.Globalization.dll.sources b/mcs/class/Facades/System.Globalization/System.Globalization.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Globalization/TypeForwarders.cs b/mcs/class/Facades/System.Globalization/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9f27991
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.IO/AssemblyInfo.cs b/mcs/class/Facades/System.IO/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9f74d5d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.IO/Makefile b/mcs/class/Facades/System.IO/Makefile
new file mode 100644 (file)
index 0000000..02106f2
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.IO/System.IO.dll.sources b/mcs/class/Facades/System.IO/System.IO.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.IO/TypeForwarders.cs b/mcs/class/Facades/System.IO/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..1a3d866
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs b/mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..dba6a9e
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Linq.Expressions/Makefile b/mcs/class/Facades/System.Linq.Expressions/Makefile
new file mode 100644 (file)
index 0000000..ec69d8e
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources b/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs b/mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..2be7a10
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs b/mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..8840c78
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Linq.Parallel/Makefile b/mcs/class/Facades/System.Linq.Parallel/Makefile
new file mode 100644 (file)
index 0000000..f848850
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources b/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs b/mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8fab8b6
--- /dev/null
@@ -0,0 +1,33 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs b/mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0a75081
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Linq.Queryable/Makefile b/mcs/class/Facades/System.Linq.Queryable/Makefile
new file mode 100644 (file)
index 0000000..d302b9e
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources b/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs b/mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0d20080
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Linq/AssemblyInfo.cs b/mcs/class/Facades/System.Linq/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b5c7777
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Linq/Makefile b/mcs/class/Facades/System.Linq/Makefile
new file mode 100644 (file)
index 0000000..a4afb62
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Linq/System.Linq.dll.sources b/mcs/class/Facades/System.Linq/System.Linq.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Linq/TypeForwarders.cs b/mcs/class/Facades/System.Linq/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..b5cd612
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// 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<,>))]
+
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs b/mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c0ccc60
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/Makefile b/mcs/class/Facades/System.Net.NetworkInformation/Makefile
new file mode 100644 (file)
index 0000000..e1665e2
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources b/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs b/mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0cb15ff
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..1c4535b
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Net.Primitives/Makefile b/mcs/class/Facades/System.Net.Primitives/Makefile
new file mode 100644 (file)
index 0000000..1e191d3
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources b/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9227c46
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs b/mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..35cb911
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Net.Requests/Makefile b/mcs/class/Facades/System.Net.Requests/Makefile
new file mode 100644 (file)
index 0000000..25a8316
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources b/mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Net.Requests/TypeForwarders.cs b/mcs/class/Facades/System.Net.Requests/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9730eae
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs b/mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f60df39
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.ObjectModel/Makefile b/mcs/class/Facades/System.ObjectModel/Makefile
new file mode 100644 (file)
index 0000000..2201b5f
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources b/mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ObjectModel/TypeForwarders.cs b/mcs/class/Facades/System.ObjectModel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8737de0
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..55a2310
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Reflection.Extensions/Makefile b/mcs/class/Facades/System.Reflection.Extensions/Makefile
new file mode 100644 (file)
index 0000000..3902a71
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources b/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..3ed6cd9
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..4bdc891
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Reflection.Primitives/Makefile b/mcs/class/Facades/System.Reflection.Primitives/Makefile
new file mode 100644 (file)
index 0000000..f5b676b
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources b/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8dfe9b4
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Reflection/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a2abbc8
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Reflection/Makefile b/mcs/class/Facades/System.Reflection/Makefile
new file mode 100644 (file)
index 0000000..24ac66e
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Reflection/System.Reflection.dll.sources b/mcs/class/Facades/System.Reflection/System.Reflection.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Reflection/TypeForwarders.cs b/mcs/class/Facades/System.Reflection/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..5e5d09d
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs b/mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b952ba4
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/Makefile b/mcs/class/Facades/System.Resources.ResourceManager/Makefile
new file mode 100644 (file)
index 0000000..8aa325e
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources b/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs b/mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..349023f
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e03289d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime.Extensions/Makefile b/mcs/class/Facades/System.Runtime.Extensions/Makefile
new file mode 100644 (file)
index 0000000..cf6c1f7
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources b/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..d0c05ec
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..4c9a388
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/Makefile b/mcs/class/Facades/System.Runtime.InteropServices/Makefile
new file mode 100644 (file)
index 0000000..ebbddfe
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources b/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..29d69ea
--- /dev/null
@@ -0,0 +1,72 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..53f8a09
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime.Numerics/Makefile b/mcs/class/Facades/System.Runtime.Numerics/Makefile
new file mode 100644 (file)
index 0000000..78f8d75
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources b/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..e937f32
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f98255f
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/Makefile b/mcs/class/Facades/System.Runtime.Serialization.Json/Makefile
new file mode 100644 (file)
index 0000000..2308d00
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources b/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9ccfd6e
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..2edd785
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile b/mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile
new file mode 100644 (file)
index 0000000..8732ab5
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources b/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..10faec2
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..4401504
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile b/mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile
new file mode 100644 (file)
index 0000000..fb6b690
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources b/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs b/mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ffedd4d
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Runtime/AssemblyInfo.cs b/mcs/class/Facades/System.Runtime/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..8a4977b
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Runtime/Makefile b/mcs/class/Facades/System.Runtime/Makefile
new file mode 100644 (file)
index 0000000..95d2697
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Runtime/System.Runtime.dll.sources b/mcs/class/Facades/System.Runtime/System.Runtime.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Runtime/TypeForwarders.cs b/mcs/class/Facades/System.Runtime/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..ced92a1
--- /dev/null
@@ -0,0 +1,278 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs b/mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0759205
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Security.Principal/Makefile b/mcs/class/Facades/System.Security.Principal/Makefile
new file mode 100644 (file)
index 0000000..4a25e35
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources b/mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Security.Principal/TypeForwarders.cs b/mcs/class/Facades/System.Security.Principal/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..85a9343
--- /dev/null
@@ -0,0 +1,30 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs b/mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..ee9bc61
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.ServiceModel.Http/Makefile b/mcs/class/Facades/System.ServiceModel.Http/Makefile
new file mode 100644 (file)
index 0000000..e14c91b
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources b/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs b/mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..79b95a0
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs b/mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a4655eb
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/Makefile b/mcs/class/Facades/System.ServiceModel.Primitives/Makefile
new file mode 100644 (file)
index 0000000..55f722c
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources b/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs b/mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9cb7162
--- /dev/null
@@ -0,0 +1,154 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs b/mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f8664e4
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/Makefile b/mcs/class/Facades/System.Text.Encoding.Extensions/Makefile
new file mode 100644 (file)
index 0000000..a326602
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources b/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs b/mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..8b7affa
--- /dev/null
@@ -0,0 +1,29 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs b/mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b8a22c9
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Text.Encoding/Makefile b/mcs/class/Facades/System.Text.Encoding/Makefile
new file mode 100644 (file)
index 0000000..b107b77
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources b/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs b/mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..d15e314
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs b/mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..e84c896
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/Makefile b/mcs/class/Facades/System.Text.RegularExpressions/Makefile
new file mode 100644 (file)
index 0000000..7e08719
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources b/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs b/mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..62e0e5c
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs b/mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..bae1480
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile b/mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile
new file mode 100644 (file)
index 0000000..3e886fb
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources b/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs b/mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..16a8a39
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs b/mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..02954b6
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Threading.Tasks/Makefile b/mcs/class/Facades/System.Threading.Tasks/Makefile
new file mode 100644 (file)
index 0000000..03107f2
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources b/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs b/mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..9d1d9bd
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Threading/AssemblyInfo.cs b/mcs/class/Facades/System.Threading/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..947257e
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Threading/Makefile b/mcs/class/Facades/System.Threading/Makefile
new file mode 100644 (file)
index 0000000..19dd6e0
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Threading/System.Threading.dll.sources b/mcs/class/Facades/System.Threading/System.Threading.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Threading/TypeForwarders.cs b/mcs/class/Facades/System.Threading/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..605b66f
--- /dev/null
@@ -0,0 +1,54 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Windows/AssemblyInfo.cs b/mcs/class/Facades/System.Windows/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..347b850
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Windows/Makefile b/mcs/class/Facades/System.Windows/Makefile
new file mode 100644 (file)
index 0000000..d84fc71
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Windows/System.Windows.dll.sources b/mcs/class/Facades/System.Windows/System.Windows.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Windows/TypeForwarders.cs b/mcs/class/Facades/System.Windows/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..18ab654
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c29da29
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/Makefile b/mcs/class/Facades/System.Xml.ReaderWriter/Makefile
new file mode 100644 (file)
index 0000000..8285d92
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources b/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs b/mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..0d3ab53
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Xml.Serialization/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.Serialization/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..60ad513
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Xml.Serialization/Makefile b/mcs/class/Facades/System.Xml.Serialization/Makefile
new file mode 100644 (file)
index 0000000..56fb6ac
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Xml.Serialization/System.Xml.Serialization.dll.sources b/mcs/class/Facades/System.Xml.Serialization/System.Xml.Serialization.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.Serialization/TypeForwarders.cs b/mcs/class/Facades/System.Xml.Serialization/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..376e38d
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9ff132b
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Xml.XDocument/Makefile b/mcs/class/Facades/System.Xml.XDocument/Makefile
new file mode 100644 (file)
index 0000000..4aacaf6
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources b/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs b/mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..4a74cd2
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// 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))]
+
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..8550431
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// 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]
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/Makefile b/mcs/class/Facades/System.Xml.XmlSerializer/Makefile
new file mode 100644 (file)
index 0000000..859ad07
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources b/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources
new file mode 100644 (file)
index 0000000..74532ef
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs b/mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..bda6911
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// 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))]
+
index 704ea8e0241439ba32dba89e3228ce3faf202dd8..b7d390996869e7f1553b34e0b5a69516cf96e69c 100644 (file)
@@ -151,13 +151,17 @@ mobile_dirs := \
        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 \
@@ -243,7 +247,8 @@ net_4_5_dirs := \
        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)
index b663163eee2d702acd078c27e26822d79dc635eb..977e9a5aa4ef059ecb4924eb89911be0bc6ae21d 100644 (file)
@@ -50,6 +50,12 @@ namespace MonoTests.EvaluatorTest
                        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 ()
                {
index 2208c579bf9f2fb751cd22b444f36d8e341cff6a..caeb05edc36ce4e879d0349bda20cd2de60f870f 100644 (file)
@@ -233,6 +233,10 @@ public class Tests : TestsBase
                        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;
@@ -827,6 +831,27 @@ public class Tests : TestsBase
                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
index 6e6b46fe67aa81b04f56c2d383d3515acd7aca07..d998b4c021e430a64ed67f3318c594c3a9829fae 100644 (file)
@@ -3090,7 +3090,7 @@ public class DebuggerTests
 
        [Test]
        public void UnhandledException () {
-               vm.Detach ();
+               vm.Exit (0);
 
                Start (new string [] { "dtest-app.exe", "unhandled-exception" });
 
@@ -3107,6 +3107,29 @@ public class DebuggerTests
                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 () {
index a5646d804027928e1ad93b3dec331c69d0953fe4..94c87b6ee3048de8948e38cb1931e779f8da6541 100644 (file)
@@ -40,7 +40,12 @@ namespace Mono.Security.Authenticode {
        // 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;
 
index 2a54a7e4ae9f769ecf0eae39f7e0eb4ec26dfb6b..4739a3df822456be2884914647aceabfae256d35 100644 (file)
@@ -34,7 +34,12 @@ namespace Mono.Security.Cryptography {
        // 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;
index e35cdfcaee2c2f59e34ac7edbea1e19f9d8bd027..d6aca9ba224150309d7932ba6ecf03c8bdbef591 100644 (file)
@@ -2,9 +2,10 @@
 // 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)
 //
 
 //
@@ -33,7 +34,12 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-       public abstract class MD4 : HashAlgorithm {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       abstract class MD4 : HashAlgorithm {
 
                protected MD4 () 
                {
@@ -43,8 +49,12 @@ namespace Mono.Security.Cryptography {
 
                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) 
index a365fb5bcb5471806460b60343151b86fb27e943..a3059957449c6f11f7d8ba6b78fb94da423c62ce 100644 (file)
@@ -35,7 +35,12 @@ namespace Mono.Security.Cryptography {
        // 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;
index ce5bd081827ba9490053f0c4082b8020a6fd253b..49a93e64a20f582e1792d6c632e3fa7fb434aefe 100644 (file)
@@ -3,9 +3,10 @@
 //     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)
 //
 
 //
@@ -34,7 +35,12 @@ using System.Security.Cryptography;
 
 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)
@@ -61,7 +67,11 @@ public abstract class RC4 : SymmetricAlgorithm {
 
        new static public RC4 Create() 
        {
+#if FULL_AOT_RUNTIME
+               return new ARC4Managed ();
+#else
                return Create ("RC4");
+#endif
        }
 
        new static public RC4 Create (string algName) 
index eb60c6bd086185c56c1317a29f70c1f278eeeac6..5b5e74e48c10250bfef984801a0913b9081c3216 100644 (file)
@@ -46,7 +46,12 @@ using Mono.Security.Cryptography;
 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 };
 
index abaef0e259bc57a95ab8913e903f99d8be14fae1..747ab89c15b9a0c548ac98cebd1c54e76f607afc 100644 (file)
@@ -49,7 +49,12 @@ using Mono.Security.Cryptography;
 
 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 };
 
index d62ed40c973d02f51a13821b1c417c4e31699bce..0e6e571bb4e2fd768d514053c7be0c5bc05b8518 100644 (file)
@@ -39,7 +39,12 @@ using System.Globalization;
 
 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 };
                
index e66d5901b5b9dda3ed2d0768652a90f172159b84..2dc12129b5d9a1c7d8321b209f0cc143a9f25768 100644 (file)
@@ -36,7 +36,12 @@ namespace Mono.Security.Protocol.Ntlm {
         * 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,
                
index 5b5db641a4a18e5908fa11699fa55d95ef0ecb14..f835bd8b1456e1ad35fbc6ad14a8bbdc3369fdfd 100644 (file)
@@ -40,7 +40,12 @@ using System;
 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.
index 531fce0262275983510daa57a940382110393d26..b9ef85593601087d76b40ef943222e6fa69ac186 100644 (file)
@@ -39,7 +39,12 @@ using System.Text;
 
 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;
index a2f65e3e584b06fb618ae541beb01d8f4769db5e..e6a89936a908e919155df942f5739b9debd354a4 100644 (file)
@@ -39,7 +39,12 @@ using System.Security.Cryptography;
 
 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;
index 50010bffe619311f8bc6cffc6de462ee9950bfd3..d80a50be699ed7494cb41f1536a51671c0e51722 100644 (file)
@@ -39,7 +39,12 @@ using System.Text;
 
 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;
index 174e0eb58445bee1cdd6d91518a68e9f5457e475..dae12cc401347bd88c129e381b7f5202c8f33311 100644 (file)
@@ -182,42 +182,50 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client
                        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);
index e8e617143686386e1aa4f0636cdc810bd9ca5a90..b58cc2c785e291cccad5934d2b059cf290262588 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum CipherAlgorithmType
+       public
+#endif
+       enum CipherAlgorithmType
        {
                Des,
                None,
index a244b2ea3a55d92e93faa8416fa7505ff5271c11..3f5156ea93a398b13a3958e85b142d2b9b396983 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum ExchangeAlgorithmType
+       public
+#endif
+       enum ExchangeAlgorithmType
        {
                DiffieHellman,
                Fortezza,
index 092d7adcfd0b01c2452247c29686fd7845d981df..3f6a60cd7cfe0e53920cd429e7571ff088d39508 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum HashAlgorithmType
+       public
+#endif
+       enum HashAlgorithmType
        {
                Md5,
                None,
index 0126d73fcc5c5a0cc323fc81f11612ceb5cf5d8f..9937f287dce27809915ff32a608d2ba8e2c085f7 100644 (file)
@@ -37,26 +37,26 @@ using SNCX = System.Security.Cryptography.X509Certificates;
 
 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) {
@@ -66,7 +66,7 @@ namespace Mono.Security.Protocol.Tls {
                                X509Certificate2 cert = (certificate as X509Certificate2);
                                return (cert == null) ? null : cert.PrivateKey;
                        };
-               }
+               }
 
                public bool TrustFailure {
                        get { 
@@ -81,7 +81,7 @@ namespace Mono.Security.Protocol.Tls {
                }
 
                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);
@@ -117,5 +117,5 @@ namespace Mono.Security.Protocol.Tls {
                        }
                        return failed;
                }
-        }
+       }
 }
index 1b9f5e4c68c44afc180dc04dc13448f58b390fde..b79728dcc2b8e14a3a394e533273e85d0a1b4db5 100644 (file)
@@ -77,6 +77,9 @@ namespace Mono.Security.Protocol.Tls
 
                public override void SetHashAlgorithm(string strName)
                {
+#if INSIDE_SYSTEM
+                       hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
                        switch (strName)
                        {
                                case "MD5SHA1":
@@ -87,6 +90,7 @@ namespace Mono.Security.Protocol.Tls
                                        this.hash = HashAlgorithm.Create(strName);
                                        break;
                        }
+#endif
                }
 
                public override void SetKey(AsymmetricAlgorithm key)
index f2e168c47fcf192a7382f4af9e403d4db56a34e9..5d0e75ae4e0bfa9ebb70e709fd162e61613cdd00 100644 (file)
@@ -74,6 +74,9 @@ namespace Mono.Security.Protocol.Tls
 
                public override void SetHashAlgorithm(string strName)
                {
+#if INSIDE_SYSTEM
+                       hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
                        switch (strName)
                        {
                                case "MD5SHA1":
@@ -84,6 +87,7 @@ namespace Mono.Security.Protocol.Tls
                                        this.hash = HashAlgorithm.Create(strName);
                                        break;
                        }
+#endif
                }
 
                public override void SetKey(AsymmetricAlgorithm key)
index 730a8074696c228e402f0ba53d30399c1db13a55..07f5c49a38afe6666ce9b2b7c3a5df4df904c208 100644 (file)
@@ -29,7 +29,12 @@ namespace Mono.Security.Protocol.Tls
        // 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
index a914afc13771cf4733451b9a3b82dbaf3b26ddf3..d0693e89d7884bdba24ece65de4444983f1404e8 100644 (file)
@@ -27,8 +27,13 @@ using System;
 namespace Mono.Security.Protocol.Tls
 {
        [Flags]
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum SecurityProtocolType
+       public
+#endif
+       enum SecurityProtocolType
        {
                Default = -1073741824,
                Ssl2    = 12,
index a50679c058b9cbed5cdc48e172b567f759dd572a..4bcc5b9f7f87d242cff58866177f933d8f0603e7 100644 (file)
@@ -37,11 +37,21 @@ namespace Mono.Security.Protocol.Tls
 {
        #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;
@@ -66,22 +76,41 @@ namespace Mono.Security.Protocol.Tls
                }
        }
 
+#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
                
index 2a9d7623223f71458dbb9f885d730fc640f27d8d..02cfccfe9527543c3d73adc455080a231acee2e4 100644 (file)
@@ -34,7 +34,12 @@ using Mono.Security.Protocol.Tls.Handshake;
 
 namespace Mono.Security.Protocol.Tls
 {
-       public class SslServerStream : SslStreamBase
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class SslServerStream : SslStreamBase
        {
                #region Internal Events
                
index 24833d14d2ebc28cd4a427f29ca328fa292b53a6..7462702d9a421a34c64d5c5ff717c429fd35c133 100644 (file)
@@ -33,7 +33,12 @@ using System.Threading;
 
 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);
                
index c42a63343ffd9307fcebad252fd39ffa861e0932..fb6f940a1ecbc9f4355bf11602c330229ed75bda 100644 (file)
@@ -46,7 +46,12 @@ namespace Mono.Security.X509.Extensions {
         * KeyIdentifier ::= OCTET STRING
         */
 
-       public class AuthorityKeyIdentifierExtension : X509Extension {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class AuthorityKeyIdentifierExtension : X509Extension {
 
                private byte[] aki;
 
index 46bdaa81d25dbebf03b6549b902da1ca15585d2b..888f3a622b351af7411590ef5faf08e52e07642b 100644 (file)
@@ -44,7 +44,11 @@ namespace Mono.Security.X509.Extensions {
         * KeyPurposeId ::= OBJECT IDENTIFIER
         */
 
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class ExtendedKeyUsageExtension : X509Extension {
 
                private ArrayList keyPurpose;
index d7dd0c1930f8ee26f0dfb3dc621729d44bc340d5..3cf55305aabb9e3f29f4c87ba5874cadcdd42fbb 100644 (file)
@@ -45,7 +45,11 @@ namespace Mono.Security.X509.Extensions {
        // 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 {
 
                /*
index ef927bceb7ae6745c2463630a57c8372e1ae07ea..23d12c5ab09ae2dc33301144fb454437cf7d69da 100644 (file)
@@ -68,7 +68,11 @@ namespace Mono.Security.X509.Extensions {
         */
 
        // TODO: Directories not supported
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class SubjectAltNameExtension : X509Extension {
 
                private GeneralNames _names;
index f2732be53555f51d9722a8e5d059c5ea8baab07f..b0b5faa8af25d4c4b0e3ac8d35308755338fbe3b 100644 (file)
@@ -5,7 +5,7 @@
 // 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;
                        }
                }
        }
index e8e5ad7c3d9715ef13b9fa6aab3a03338912c1bf..ee440a4bd51daa99e02153f2e065e79b31adc04c 100644 (file)
@@ -88,7 +88,7 @@ namespace System
 #if MONODROID
                                        local = ZoneInfoDB.Default;
 #elif MONOTOUCH
-                                       using (Stream stream = GetMonoTouchDefault ()) {
+                                       using (Stream stream = GetMonoTouchData (null)) {
                                                local = BuildFromStream ("Local", stream);
                                        }
 #elif LIBC
index e846b3ac205d6c23fb22a80309aa26e26d191114..cb4f58b31e0f4a7d94f4d9e86d90f7761448b0cb 100644 (file)
@@ -98,6 +98,9 @@ namespace MonoTests.System.Linq.Expressions {
                }
 
                [Test]
+#if MOBILE
+               [Category ("NotWorking")] // String:Intern () is linked away
+#endif
                [ExpectedException (typeof (ArgumentException))]
                public void InstanceTypeDoesntMatchMethodDeclaringType ()
                {
index adb74adbdd935e0c5f81857d48f4b652c0438ccc..10190a1c38155a35d9db6274e0919c07db4f2a07 100644 (file)
     <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
index 2eb219032caf85e574ce49fd453aa2099b9cf548..e7cbdbe6b40b6d30329711922f69c438ae10ed96 100644 (file)
@@ -151,10 +151,17 @@ namespace System.Data.Common {
                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 ()
@@ -162,10 +169,17 @@ namespace System.Data.Common {
                        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 ()
@@ -173,10 +187,17 @@ namespace System.Data.Common {
                        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 ()
@@ -184,10 +205,17 @@ namespace System.Data.Common {
                        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)
@@ -195,10 +223,17 @@ namespace System.Data.Common {
                        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
index 5d04c218d033330ea588a63751fb4c2b95eb8b35..94355018c4ca9741791ba6d0486402cb6e04055f 100644 (file)
@@ -754,10 +754,18 @@ namespace System.Data.Common {
                        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
 
index 676fd1404f6872a64f2250086d0f4bc0887c95bf..a25b97882cfbad783b3da218b925a36442b7c6aa 100644 (file)
@@ -200,10 +200,17 @@ namespace System.Data.Common {
                        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 ()
@@ -228,16 +235,30 @@ namespace System.Data.Common {
                        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 ()
@@ -245,10 +266,17 @@ namespace System.Data.Common {
                        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
 
diff --git a/mcs/class/System.Data/System.Data.Common/TaskHelper.cs b/mcs/class/System.Data/System.Data.Common/TaskHelper.cs
new file mode 100644 (file)
index 0000000..511edbf
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// 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
index 4b7a24ec003b4e6dde9bb33c618a9e38ebc744aa..aeae903dbc907c5a880348a0459e045d06b1adfb 100644 (file)
@@ -176,6 +176,7 @@ System.Data.Common/SchemaInfo.cs
 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
index 64ad3df7ca647b60ca21fa69dfd903c34dba8500..b1174b836153b2507a9dfbdcc5b18e1a54ea3dcd 100644 (file)
@@ -171,6 +171,7 @@ System.Data.Common/SchemaInfo.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
index 034c0081eee6d45cdd771abb7c621193674d08b8..0a10af2bddb1420133269fcca4aab035ae64a749 100755 (executable)
@@ -689,6 +689,8 @@ namespace System.Runtime.Serialization
                        // 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 {
@@ -997,7 +999,7 @@ namespace System.Runtime.Serialization
 
                        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);
index 816dbc993b0bc7f84b249236b57a8ba54d603a19..55caa203c1a450586c50a0fdf3878dc9df1eaa5b 100644 (file)
@@ -154,12 +154,8 @@ namespace System.ServiceProcess
                }
 
 #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)]
@@ -235,9 +231,9 @@ namespace System.ServiceProcess
                        throw new NotImplementedException ();
                }
 
-               [MonoTODO]
                public void Stop ()
                {
+                       OnStop ();
                }
 #endif
 
index a4666793dfd69d79123ecfdb358cd51670ae6a5f..9cecbce11fde51d42b54ec7fd1c249d665849d13 100644 (file)
@@ -33,9 +33,7 @@
 using System;
 using System.ComponentModel;
 using System.Globalization;
-#if NET_2_0
 using System.Runtime.InteropServices;
-#endif
 using System.ServiceProcess.Design;
 using System.Threading;
 
@@ -43,9 +41,7 @@ namespace System.ServiceProcess
 {
        [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;
@@ -84,9 +80,7 @@ namespace System.ServiceProcess
                [ServiceProcessDescription ("Whether this service recognizes the Pause and Continue commands.")]
                public bool CanPauseAndContinue {
                        get {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.CanPauseAndContinue;
                        }
                }
@@ -96,9 +90,7 @@ namespace System.ServiceProcess
                public bool CanShutdown {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.CanShutdown;
                        }
                }
@@ -108,9 +100,7 @@ namespace System.ServiceProcess
                public bool CanStop {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.CanStop;
                        }
                }
@@ -120,9 +110,7 @@ namespace System.ServiceProcess
                public ServiceController [] DependentServices {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                if (_dependentServices == null)
                                        _dependentServices = _impl.DependentServices;
                                return _dependentServices;
@@ -207,9 +195,7 @@ namespace System.ServiceProcess
                                if (_serviceName == value)
                                        return;
 
-#if NET_2_0
                                ValidateServiceName (value);
-#endif
 
                                _serviceName = value;
 
@@ -233,16 +219,13 @@ namespace System.ServiceProcess
                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)]
@@ -252,16 +235,13 @@ namespace System.ServiceProcess
                                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;
                        }
                }
@@ -271,9 +251,7 @@ namespace System.ServiceProcess
                public ServiceControllerStatus Status {
                        get
                        {
-#if NET_2_0
                                ValidateServiceName (ServiceName);
-#endif
                                return _impl.Status;
                        }
                }
@@ -285,9 +263,7 @@ namespace System.ServiceProcess
 
                public void Continue ()
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.Continue ();
                }
 
@@ -299,9 +275,7 @@ namespace System.ServiceProcess
 
                public void ExecuteCommand (int command)
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.ExecuteCommand (command);
                }
 
@@ -337,9 +311,7 @@ namespace System.ServiceProcess
 
                public void Pause ()
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
                        _impl.Pause ();
                }
 
@@ -362,17 +334,13 @@ namespace System.ServiceProcess
 
                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 ();
                }
 
@@ -383,9 +351,7 @@ namespace System.ServiceProcess
 
                public void WaitForStatus (ServiceControllerStatus desiredStatus, TimeSpan timeout)
                {
-#if NET_2_0
                        ValidateServiceName (ServiceName);
-#endif
 
                        DateTime start = DateTime.Now;
                        while (Status != desiredStatus) {
@@ -425,7 +391,6 @@ namespace System.ServiceProcess
                        }
                }
 
-#if NET_2_0
                private static void ValidateServiceName (string serviceName)
                {
                        if (serviceName.Length == 0 || serviceName.Length > 80)
@@ -433,7 +398,6 @@ namespace System.ServiceProcess
                                        "Service name {0} contains invalid characters, is empty"
                                        + " or is too long (max length = 80).", serviceName));
                }
-#endif
 
                private static void ValidateMachineName (string machineName)
                {
index 51c26fff79a94f4622f524143fe0fe06c705ca9e..6a85bfc9e8d22ac0068c5de552aa2012bbecaf92 100644 (file)
@@ -1,3 +1,4 @@
+System.ServiceProcess/ServiceBaseTest.cs
 System.ServiceProcess/ServiceControllerTest.cs
 System.ServiceProcess/ServiceControllerPermissionAttributeTest.cs
 System.ServiceProcess/ServiceControllerPermissionTest.cs
diff --git a/mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceBaseTest.cs b/mcs/class/System.ServiceProcess/Test/System.ServiceProcess/ServiceBaseTest.cs
new file mode 100644 (file)
index 0000000..7a3c014
--- /dev/null
@@ -0,0 +1,118 @@
+//
+// 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
+               }
+       }
+}
+
index 0c13b7536bd971fcc7ceb57550c1af97f392eb4f..3647a414f01838a98c40ad5d95b52d900ef61355 100644 (file)
@@ -53,7 +53,6 @@ namespace MonoTests.System.ServiceProcess
                        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)
@@ -64,29 +63,10 @@ namespace MonoTests.System.ServiceProcess
                                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)
@@ -97,29 +77,10 @@ namespace MonoTests.System.ServiceProcess
                                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)
@@ -130,24 +91,6 @@ namespace MonoTests.System.ServiceProcess
                                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 ();
@@ -155,7 +98,6 @@ namespace MonoTests.System.ServiceProcess
                        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)
@@ -166,28 +108,9 @@ namespace MonoTests.System.ServiceProcess
                                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)
@@ -198,24 +121,6 @@ namespace MonoTests.System.ServiceProcess
                                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");
@@ -223,7 +128,6 @@ namespace MonoTests.System.ServiceProcess
                        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)
@@ -234,24 +138,6 @@ namespace MonoTests.System.ServiceProcess
                                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");
@@ -260,7 +146,6 @@ namespace MonoTests.System.ServiceProcess
                        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)
@@ -271,24 +156,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -695,16 +562,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -715,24 +576,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -934,16 +777,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -954,24 +791,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -1173,16 +992,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -1193,24 +1006,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -1450,16 +1245,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -1470,24 +1259,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -1666,16 +1437,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -1686,24 +1451,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -2912,16 +2659,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -2932,24 +2673,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -3020,9 +2743,6 @@ namespace MonoTests.System.ServiceProcess
                                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
@@ -3032,7 +2752,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNotNull (win32Error.Message, "#8");
                                Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
                                Assert.IsNull (win32Error.InnerException, "#10");
-#endif
                        }
                }
 
@@ -3136,9 +2855,6 @@ namespace MonoTests.System.ServiceProcess
                                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
@@ -3148,7 +2864,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNotNull (win32Error.Message, "#8");
                                Assert.AreEqual (1722, win32Error.NativeErrorCode, "#9");
                                Assert.IsNull (win32Error.InnerException, "#10");
-#endif
                        }
                }
 
@@ -3508,16 +3223,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -3528,24 +3237,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -3915,12 +3606,6 @@ namespace MonoTests.System.ServiceProcess
                        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");
@@ -3934,7 +3619,6 @@ namespace MonoTests.System.ServiceProcess
                                Assert.IsNull (ex.ParamName, "#A6");
                                Assert.IsNull (ex.InnerException, "#A7");
                        }
-#endif
                }
 
                [Test]
@@ -4174,16 +3858,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -4194,24 +3872,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -4610,16 +4270,10 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -4630,24 +4284,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -4748,10 +4384,8 @@ namespace MonoTests.System.ServiceProcess
                        } 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");
                        }
@@ -4810,10 +4444,8 @@ namespace MonoTests.System.ServiceProcess
                        } 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");
                        }
@@ -4825,17 +4457,11 @@ namespace MonoTests.System.ServiceProcess
                [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)
@@ -4846,24 +4472,6 @@ namespace MonoTests.System.ServiceProcess
                                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]
@@ -4885,10 +4493,8 @@ namespace MonoTests.System.ServiceProcess
                        } 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");
                        }
diff --git a/mcs/class/System.Web/System.Web/MimeMapping.cs b/mcs/class/System.Web/System.Web/MimeMapping.cs
new file mode 100644 (file)
index 0000000..83bc872
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// 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
index 40190ef13e38a1f22e486e92621d55f21c7ad87f..a7957a0019c0d67cd94082b0149f9e5e0c9ee4d7 100644 (file)
@@ -1 +1,3 @@
 #include net_4_0_System.Web.dll.sources
+
+System.Web/MimeMapping.cs
index 458410154b693dcf3511bf452c81d30bc8a1df51..377813f97ca53c673608ab22f76c7b58069db14f 100644 (file)
@@ -161,6 +161,7 @@ System.Xml/XmlWriterSettings.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
index 14540ba084dacd1ea600839c702c781ce5f3b5f2..216cde7fa24ed4a667d4090421e33527c12bd08f 100644 (file)
@@ -141,6 +141,7 @@ namespace System.Diagnostics
 
                private void GetConfigFileSetting ()
                {
+#if !MOBILE
                        IDictionary d = (IDictionary) DiagnosticsConfiguration.Settings ["switches"];
                        
                        // Load up the specified switch
@@ -154,6 +155,7 @@ namespace System.Diagnostics
                                        return;
                                }
                        }
+#endif  // !MOBILE
 
                        if (defaultSwitchValue != null) {
                                value = defaultSwitchValue;
index 83ed38408f62d70a71a45b8de0597bf58b207887..55a8362a5519e2a7ff067515377eccdee5a9b27a 100644 (file)
@@ -163,7 +163,6 @@ namespace System.Diagnostics {
                }
 
                static bool use_global_lock;
-#if !MOBILE
                static CorrelationManager correlation_manager = new CorrelationManager ();
 
                public static CorrelationManager CorrelationManager {
@@ -172,7 +171,6 @@ namespace System.Diagnostics {
                                return correlation_manager;
                        }
                }
-#endif
 
                [MonoLimitation ("the property exists but it does nothing.")]
                public static bool UseGlobalLock {
index a99e77a2e6fd3825e05e454478ac91684bee921b..e804235386a69b9cc065b77925c37c4ba94a8890 100644 (file)
@@ -1,12 +1,12 @@
 //
 // 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
@@ -45,17 +45,21 @@ namespace System.Diagnostics
                {
                }
 
-               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;
                        }
index 90af94f55fe8056459fccc067df6ecb464b4ab95..c60954c949edbae9cba5756c031f8b9b79e4706a 100644 (file)
@@ -1,10 +1,12 @@
 //
 // 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
@@ -31,39 +33,161 @@ using System.Runtime.InteropServices;
 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)
@@ -82,7 +206,7 @@ namespace System.Net.NetworkInformation {
                }
 
                // _lock is held by the caller
-               static void MaybeCloseSocket ()
+               void MaybeCloseSocket ()
                {
                        if (nl_sock == null || AvailabilityChanged != null || AddressChanged != null)
                                return;
@@ -93,7 +217,7 @@ namespace System.Net.NetworkInformation {
                        nl_args = null;
                }
 
-               static bool GetAvailability ()
+               bool GetAvailability ()
                {
                        NetworkInterface [] adapters = NetworkInterface.GetAllNetworkInterfaces ();
                        foreach (NetworkInterface n in adapters) {
@@ -106,19 +230,19 @@ namespace System.Net.NetworkInformation {
                        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) {
@@ -132,7 +256,7 @@ namespace System.Net.NetworkInformation {
                                ThreadPool.QueueUserWorkItem (OnAddressChanged);
                }
 
-               static void QueueEvent (EventType type)
+               void QueueEvent (EventType type)
                {
                        lock (_lock) {
                                if (timer == null)
@@ -143,7 +267,7 @@ namespace System.Net.NetworkInformation {
                        }
                }
 
-               unsafe static void OnDataAvailable (object sender, SocketAsyncEventArgs args)
+               unsafe void OnDataAvailable (object sender, SocketAsyncEventArgs args)
                {
                        EventType type;
                        fixed (byte *ptr = args.Buffer) {       
@@ -154,19 +278,19 @@ namespace System.Net.NetworkInformation {
                                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;
@@ -174,7 +298,7 @@ namespace System.Net.NetworkInformation {
                        }
                }
 
-               static void Unregister (NetworkAvailabilityChangedEventHandler d)
+               void Unregister (NetworkAvailabilityChangedEventHandler d)
                {
                        lock (_lock) {
                                AvailabilityChanged -= d;
index 0597a165f084b82c262eab6def22a252f5045831..880b909fad16b0a93e3bc827676254f38cdc2a33 100644 (file)
@@ -41,15 +41,21 @@ using System.Globalization;
 
 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)
@@ -66,6 +72,7 @@ namespace System.Net.NetworkInformation {
                                        return Win32NetworkInterface2.ImplGetAllNetworkInterfaces ();
                                return new NetworkInterface [0];
                        }
+#endif
                }
 
                [MonoTODO("Always returns true")]
index d096af72eac559ed2f695054d59bc2f39babff9f..5b0cd421c1d2b9022a3ddef10d260a55790a87ce 100644 (file)
@@ -332,6 +332,9 @@ namespace System.Net
                [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);
@@ -422,6 +425,7 @@ namespace System.Net
 #endif
                        
                        return new WebProxy ();
+#endif // MONOTOUCH
                }
 
                void ISerializable.GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
index 99f40f4d0c1eabc8ec828284d1666faf4a9009b5..7dfd434c85a054e9e0fb35aa97062cd3d2069aeb 100644 (file)
@@ -878,8 +878,12 @@ namespace System.Security.Cryptography.X509Certificates {
                        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;
@@ -893,21 +897,21 @@ namespace System.Security.Cryptography.X509Certificates {
                        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;
                        }
index 823063b5624b2854e829d362c09c5f3b5b7b1701..8f6f496e906e8fd8cc9dcbbf549e1aebd3065e23 100644 (file)
@@ -1,7 +1,7 @@
 //
 // 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
@@ -28,6 +28,11 @@ using System.Runtime.InteropServices;
 
 namespace System {
        internal static class Platform {
+#if MONOTOUCH
+               public static bool IsMacOS {
+                       get { return true; }
+               }
+#else
                [DllImport ("libc")]
                static extern int uname (IntPtr buf);
                
@@ -53,5 +58,6 @@ namespace System {
                                return isMacOS;
                        }
                }
+#endif
        }
 }
index a95f54b90afbd059153ef456e9a50979a5f55306..562c6e9dc6f531c27db6bdb7093b69387be02502 100644 (file)
@@ -50,6 +50,13 @@ namespace MonoTests.System.Diagnostics
                        new TraceSource (null);
                }
 
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void ConstructorEmpty ()
+               {
+                       new TraceSource ("");
+               }
+               
                [Test]
                public void DefaultValues ()
                {
@@ -70,6 +77,20 @@ namespace MonoTests.System.Diagnostics
                        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");
+               }
        }
 }
 
index 0ed7e1088ec48432929e424fd7e40c3e1b61d9b0..8b5c746266977ce59eb19e3323925218f655d790 100644 (file)
@@ -196,6 +196,8 @@ System.ComponentModel/UInt64Converter.cs
 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
@@ -210,14 +212,23 @@ System.Diagnostics/ProcessStartInfo.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
index 019f8681bd186d69f849f06af8941bfd50f989af..71133497472bc0b191689381cdc88f96ea0e6eaa 100644 (file)
@@ -1,3 +1,5 @@
 #include mobile_System.dll.sources
 System/AndroidPlatform.cs
 System.CodeDom.Compiler/IndentedTextWriter.cs
+System.Configuration/ConfigurationException.cs
+System.Configuration/IConfigurationSectionHandler.cs
index 999738f5ffecea4bc6f00b58924b4b558eaa9f0a..6c68aa2025a917401a1ff658c554838f6ad49155 100644 (file)
@@ -91,10 +91,6 @@ foreach (var ass in asses) {
        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;
@@ -110,9 +106,10 @@ foreach (var ass in asses) {
                        .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";
                        }
                }
        }
@@ -146,13 +143,13 @@ foreach (var ass in asses) {
                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 = "";
@@ -166,13 +163,13 @@ foreach (var ass in asses) {
                                .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++;
index 9ae8c5b27a359b8a39cf7d76a699d37f25d43250..9e812f4a47e2d47d7d40c17649dcfe3bbf7b3d8a 100644 (file)
@@ -57,7 +57,7 @@ namespace System.Collections {
                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);
@@ -72,7 +72,7 @@ namespace System.Collections {
                        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");
                        
index 89fefa3c6f03dade0034704a667f97989c7e42fb..65e103b4f7ec9e774b1f5c529160d5c444acf776 100644 (file)
@@ -5,7 +5,7 @@
 // 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 ());
                }
        }
 }
index 79486b165a8811a7a805b50327187b4ce4cda215..c4ed76b34bfb513728eed443ef12e521b1e1dc03 100644 (file)
@@ -124,14 +124,15 @@ namespace System.IO
                                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,
index 0b76fbb629981b75e8bb6a491242ddf54ed251e9..98416dfa82f875a06a564fa7251b9d484c3c80df 100644 (file)
@@ -404,13 +404,6 @@ namespace System.IO
                                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");
                                }
index 44dfb411296ea74c8fdc6fb06516e2e5ce95661f..fe3a606261730cd522bea0648a95c3deb600117e 100644 (file)
@@ -234,6 +234,45 @@ namespace System.IO {
                        }\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
@@ -268,33 +307,13 @@ namespace System.IO {
                                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
@@ -306,14 +325,14 @@ namespace System.IO {
                        }\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
@@ -326,8 +345,28 @@ namespace System.IO {
                                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
@@ -355,8 +394,10 @@ namespace System.IO {
                {\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
@@ -423,7 +464,7 @@ namespace System.IO {
                {\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
@@ -432,16 +473,33 @@ namespace System.IO {
                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
@@ -449,23 +507,56 @@ namespace System.IO {
                {\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
index 0d475e2d03a8398e1030bccdfdafd264ff618fc7..b1af3ff9e624b5d7e5dcc0d1c850a232388169b4 100644 (file)
@@ -173,7 +173,7 @@ namespace System.Runtime.CompilerServices
 
                public bool TryGetValue (TKey key, out TValue value)
                {
-                       if (key == default (TKey))
+                       if (key == null)
                                throw new ArgumentNullException ("Null key", "key");
 
                        value = default (TValue);
@@ -204,8 +204,6 @@ namespace System.Runtime.CompilerServices
 
                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");
 
index cc1b639697fc967fcb8ecae8e07432b282e25a59..93765269524e191aabaf47bf62750d2f264a59c7 100644 (file)
@@ -46,34 +46,40 @@ namespace System.Runtime.CompilerServices
 
                        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 ()
index 6f926b7cfb7a3309172e801ffa2a557a08b48c25..e8ac18064d6a0d4d72e73ba6dda779b60b8100a3 100644 (file)
@@ -3,10 +3,11 @@
 //
 // 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
@@ -52,14 +53,10 @@ namespace System.Security.Cryptography {
                        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)
index 1eaa37e2d2c828e297b017c6c6b76d24a8a07c4c..002bc126a5f912e854e15d257c00480d190bf22a 100644 (file)
@@ -3,10 +3,11 @@
 //
 // 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
@@ -62,14 +63,10 @@ namespace System.Security.Cryptography {
                        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)
index e2c20e29e1cd2fb33a287d65c6b4251b6e304d6b..e83eb67e69e857bd494e65119123410ebb77159e 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -167,6 +168,15 @@ namespace System.Security.Cryptography {
                        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 () 
index f7414bf379bf6268e32ec0b077b8869fdf280d47..0f0ea842cf7469391b0ae67a075417e005cdb859 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -50,7 +51,11 @@ namespace System.Security.Cryptography {
 
                public HMACMD5 (byte[] key) : base ()
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("MD5", new MD5CryptoServiceProvider ());
+#else
                        HashName = "MD5";
+#endif
                        HashSizeValue = 128;
                        Key = key;
                }
index 2ccc52ef35b4a3f9a37d4cbac21a8fbb41d7e1ff..38bf12b7a9d63f7bb39820604dc228974120d848 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -43,7 +44,11 @@ namespace System.Security.Cryptography {
 
                public HMACRIPEMD160 (byte[] key) : base () 
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("RIPEMD160", new RIPEMD160Managed ());
+#else
                        HashName = "RIPEMD160";
+#endif
                        HashSizeValue = 160;
                        Key = key;
                }
index 2b476ac3577b3dcd7fcdf000769bd45f74c09f1a..baf644a6ab12166bc9feb55f1f6c6e4060653784 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -57,7 +58,11 @@ namespace System.Security.Cryptography {
 
                public HMACSHA1 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("SHA1", new SHA1Managed ());
+#else
                        HashName = "SHA1";
+#endif
                        HashSizeValue = 160;
                        Key = key;
                }
index 1bbe86b8aac0870ca41581a8f60d38de2bb2ce12..14c208d1fcf0f7d1464ffe8890f1c35cbe1ab438 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -43,7 +44,11 @@ namespace System.Security.Cryptography {
 
                public HMACSHA256 (byte[] key) : base () 
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("SHA256", new SHA256Managed ());
+#else
                        HashName = "SHA256";
+#endif
                        HashSizeValue = 256;
                        Key = key;
                }
index a88377c04595788dfc6c1fef37f18e6bdc7a8ff7..a25b0e71f4e5a40693492b5d3ed513ec948bbccd 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -36,24 +37,31 @@ namespace System.Security.Cryptography {
        [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;
                }
index eb40da4a94ffb56b547cfa5b53fff3b00d811a4e..2f7c16632a16a937da97cbd62ed905fa4977a761 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -36,24 +37,31 @@ namespace System.Security.Cryptography {
        [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;
                }
index 270735f28b6b8675abc86f5f89f969f0d0d7b037..cd18c941dfd9f8461d06672b95d0cfbd911cda34 100644 (file)
@@ -2,10 +2,11 @@
 // 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
@@ -48,14 +49,14 @@ namespace System.Security.Cryptography {
        
                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) 
@@ -63,14 +64,14 @@ namespace System.Security.Cryptography {
                        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
index 34314d04388ebd654a6c4fb5d26b083076c84a79..329b6fe3378802efab1294626766d697820dfc02 100644 (file)
@@ -147,9 +147,8 @@ namespace System.Security {
                // 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) 
@@ -237,7 +236,7 @@ namespace System.Security {
                {
                        base.GetObjectData (info, context);
                        try {
-                               info.AddValue ("PermissionState", PermissionState);
+                               info.AddValue ("PermissionState", permissionState);
                        }
                        catch (SecurityException) {
                                // serialize only if permitted to do so
index 240e0e215262803f4f0b2b8bc6351f59a5325ede..145319acdd0c38f3eaf999bc11e18e51fe28b3b4 100644 (file)
@@ -1,6 +1,11 @@
+//
 // 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
@@ -30,7 +35,6 @@ using System.Runtime.Serialization;
 
 namespace System
 {
-
        [System.SerializableAttribute]
        [System.Diagnostics.DebuggerDisplay ("Count = {InnerExceptions.Count}")]
        public class AggregateException : Exception
@@ -103,15 +107,15 @@ namespace System
                
                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);
                }
index d030979b7b254a7370594b72b8e1f1be936fdfe0..9fab011f165d9736f294281c85a56b66e652f295 100644 (file)
@@ -35,31 +35,18 @@ namespace System
        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;
@@ -70,11 +57,6 @@ namespace System
                        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];
@@ -136,21 +118,7 @@ namespace System
 
                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)
@@ -268,102 +236,11 @@ namespace System
                {
                        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)
index bfe6929b50032d6f7dc51d2ce922ff1de8462f84..9eba75f6ed50085d8b3c6d6b0312506aeb0a8f71 100644 (file)
@@ -7,7 +7,7 @@
 //
 // (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
@@ -39,7 +39,7 @@ using System.Text;
 
 namespace System
 {
-       public static class Console
+       public static partial class Console
        {
 #if !NET_2_1
                private class WindowsConsole
@@ -158,9 +158,11 @@ namespace System
                                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;
@@ -168,7 +170,7 @@ namespace System
                                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;
diff --git a/mcs/class/corlib/System/Console.iOS.cs b/mcs/class/corlib/System/Console.iOS.cs
new file mode 100644 (file)
index 0000000..17983c5
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// 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
index 9018c9fc0bd6f66d751ea787016da6f6a634d5b5..c16e604d977e84bbfc257b129bb7956267fc3bdd 100644 (file)
@@ -663,7 +663,7 @@ namespace System
 
                public override string ToString ()
                {
-                       return ToString ("G");
+                       return Format (GetType (), Value, "G");
                }
 
                [Obsolete("Provider is ignored, just use ToString")]
@@ -763,24 +763,24 @@ namespace System
                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.");
                        }
                }
 
index b78c0a5b14ec32b54a26167defe075bf8f6734db..d49cc8608631106776f3cbee57a76fadf0819a10 100644 (file)
@@ -466,7 +466,7 @@ namespace System {
                        char hexDigit;
                                
                        // Number stuff
-                       do {
+                       while (pos < s.Length) {
 
                                if (!ValidDigit (s [pos], AllowHexSpecifier)) {
                                        if (AllowThousands &&
@@ -517,7 +517,7 @@ namespace System {
                                                exc = new OverflowException ("Value too large or too small.");
                                        return false;
                                }
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
index 09538f8ea6e59eca30c9301f37bdd7552e96d617..5b1019fdfd7b62416e9acb01822add98ab3b2e79 100644 (file)
@@ -298,7 +298,7 @@ namespace System {
                        char hexDigit;
                                
                        // Number stuff
-                       do {
+                       while (pos < s.Length) {
 
                                if (!Int32.ValidDigit (s [pos], AllowHexSpecifier)) {
                                        if (AllowThousands &&
@@ -350,7 +350,7 @@ namespace System {
                                                exc = new OverflowException ("Value too large or too small.");
                                        return false;
                                }                               
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
index e8ca505de18e06bdaa06e9fad7c63672b0a9d95c..20c06387df145cf27b2ec5500c4ee79f3266d83e 100644 (file)
@@ -148,9 +148,9 @@ namespace System
                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)]
index 8cda5e437f9a01cd5cbeb8df538d6b36b1c63830..4f948aaf38bdb485bf3d395827b4862a255256a5 100644 (file)
@@ -1956,19 +1956,19 @@ namespace System
                                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)
index f78ee9dbab20297f91be7f9e9db1cd9425a01742..7772d870e615e703e7c9e1ad88045ee77cf9ee29 100644 (file)
@@ -277,7 +277,7 @@ namespace System
 
                        // 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 &&
@@ -325,7 +325,7 @@ namespace System
                                                exc = new OverflowException (Locale.GetText ("Value too large or too small."));
                                        return false;
                                }
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
index 1ac283149a609796ad3c88d0bbe9b4eb2ec9c3a4..464e23998c1b9b68b17f129d9a1009c881bea08c 100644 (file)
@@ -300,7 +300,7 @@ namespace System
 
                        // 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 &&
@@ -350,7 +350,7 @@ namespace System
                                                exc = new OverflowException (Locale.GetText ("Value too large or too small."));
                                        return false;
                                }
-                       } while (pos < s.Length);
+                       }
 
                        // Post number stuff
                        if (nDigits == 0) {
index b531d1725f59f34e35104740d76c30af3669fb15..3cc7b18dfb8c1bbc02016ba4254fb2e24759db9c 100644 (file)
@@ -205,6 +205,62 @@ namespace System
                        }
                }
 
+               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)
@@ -252,6 +308,13 @@ namespace System
                                        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;
                }
index b21057561e57f33a284f107c28d1c3f115584ad8..b0b1a041da8b987aa66b86e335d5b7556ceee114 100644 (file)
@@ -61,6 +61,8 @@ namespace MonoTests.System.Globalization
                }
                
                [Test]
+               // This can fail on systems where CultureInfo.CurrentCulture==null
+               [Category ("NotWorking")]
                public void CurrentRegion ()
                {
                        Assert.IsNotNull (RegionInfo.CurrentRegion, "CurrentRegion");
index 582ed7a9dd649f28012e4080d394410496408a2a..661cffc18c61370723ed9b5137ce483534128833 100644 (file)
@@ -1076,6 +1076,28 @@ namespace MonoTests.System.IO
                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.
index 480e1c2642c33c77f743e21d800d4f883827febd..bc91e12686bfc676fed7a542996db41763bfebc6 100644 (file)
@@ -84,6 +84,30 @@ namespace MonoTests.System
                        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;
index 128cc19790df3809993d52f43a8308e197ea9124..b631a0fa1535c43b21a5ceaccc8b7fcc940eec90 100644 (file)
@@ -391,6 +391,8 @@ public class Int32Test
                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]  
index 6ad5e36ce4882974205e66d3965a86824265d52f..3943969c65a7aaeec85d1ffc71d4d3b71355e8c0 100644 (file)
@@ -391,6 +391,66 @@ public class Int64Test
                }
        }
 
+       [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() 
     {
index 4aaa735e6631332a3d3a0f4b71b492bc68375a2a..5969c4be8b4c7ee99dc1d402dc1133b7556110cf 100644 (file)
@@ -4367,5 +4367,15 @@ namespace MonoTests.System
                {
                        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");
+               }
        }
 }
index 20f5a299e36fdf12f742ee4c953dde0a8f9f90e6..6a730d2c737077283d0b59d656995aaa7166a91c 100644 (file)
@@ -275,6 +275,62 @@ public class UInt32Test
                }
        }
 
+       [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()
        {
index 3fbf591517be0614e35ca171d86b9f9f8a93d612..dda949c4022e60f899aa78fa0f417d912497ee0c 100644 (file)
@@ -264,6 +264,62 @@ public class UInt64Test
                }
        }
 
+       [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()
        {
index fa1e193ef43aab8fa398a6434081ea040a29e93c..fcda3a271681ca4d7378c2e930f6e563818db519 100644 (file)
@@ -114,6 +114,7 @@ System/CLSCompliantAttribute.cs
 System/CStreamReader.cs
 System/CStreamWriter.cs
 System/Console.cs
+System/Console.iOS.cs
 System/ConsoleCancelEventArgs.cs
 System/ConsoleCancelEventHandler.cs
 System/ConsoleColor.cs
index 9436137d758ccd617cbf7d014de5e88adf9e51df..aa7fc35e059d2411bb2c2cc25a40faa1c63b5e0e 100644 (file)
@@ -77,6 +77,7 @@ RESOURCE_FILES = \
        $(IMAGES)
 
 EXTRA_DISTFILES = \
+       jay.sh \
        monodoc.dll.config.in   \
        $(RESOURCE_FILES)   \
        Monodoc.Ecma/EcmaUrlParser.jay \
@@ -116,7 +117,7 @@ LIB_MCS_FLAGS = \
        /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 \
@@ -130,17 +131,15 @@ $(the_lib): Makefile $(RESOURCE_FILES)
 
 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 $^
@@ -148,6 +147,3 @@ parser.exe: Monodoc.Ecma/EcmaUrlParser.cs Monodoc.Ecma/EcmaUrlTokenizer.cs Monod
 setup-doc-sources: $(DOC_SOURCES)
        mkdir -p ./Test/monodoc_test/sources/
        cp $(DOC_SOURCES) ./Test/monodoc_test/sources/
-
-AgilityPack.dll:
-       cp $(topdir)/../docs/$(@) .
index c69aeae8e56aefd5e51e9bafab37401c7d2133b2..04923ad4d90b0e48945a0280edff6c0555e141e0 100644 (file)
@@ -535,5 +535,11 @@ namespace Monodoc
                                yield return indexDirectory;
                        yield return Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "monodoc");
                }
+
+               [Obsolete]
+               public string GetTitle (string url)
+               {
+                       return "Mono Documentation";
+               }
        }
 }
index 1dcc72af1d4e8affb6415774f232c9415cce59dd..c73ed1907e25691a2dad7604e5fa4b77d891a25d 100644 (file)
@@ -81,12 +81,20 @@ namespace Monodoc.Generators.Html
 
                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 ()
@@ -310,4 +318,81 @@ namespace Monodoc.Generators.Html
                        }
                }
        }
+
+       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]);
+               }
+       }
 }
index e3371d141d0e46ab9a591ae2b590cc9532fdf0b9..0fc4012de174ec62fc16f5071e761abc82b325ae 100644 (file)
@@ -556,17 +556,15 @@ namespace Monodoc.Providers
                                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);
                        }
                }
        }
index d136fbfe5e4ee3c604e3085e03f246e03d91d44c..1cb79c87e946e8cee769f12433857a9b72664eef 100644 (file)
@@ -77,15 +77,13 @@ namespace Monodoc.Providers
                        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);
                        }
                }
 
diff --git a/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs b/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs
new file mode 100644 (file)
index 0000000..5ab8e84
--- /dev/null
@@ -0,0 +1,86 @@
+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");
+               }
+       }
+}
index 0e36598fb5be2a1a14d0690ced0ae9d39665df10..f837c7ed38bafc362bc0167bf11710dc18481716 100644 (file)
@@ -8,7 +8,8 @@ using NUnit.Framework;
 using Monodoc;
 using Monodoc.Generators;
 
-using HtmlAgilityPack;
+// Used by ReachabilityWithCrefsTest
+// using HtmlAgilityPack;
 
 namespace MonoTests.Monodoc
 {
@@ -152,6 +153,7 @@ 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 ()
                {
@@ -202,6 +204,6 @@ namespace MonoTests.Monodoc
                        }
 
                        Assert.AreEqual (0, errorCount, errorCount + " / " + crefs.Count);
-               }
+               }*/
        }
 }
diff --git a/mcs/class/monodoc/jay.sh b/mcs/class/monodoc/jay.sh
new file mode 100755 (executable)
index 0000000..5a69401
--- /dev/null
@@ -0,0 +1,10 @@
+#!/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
index b806b8fb6e970302dd755c331a070e831781639a..b5af3b71a048f0191190b9b0a7704a9be14dc852 100644 (file)
@@ -6,3 +6,4 @@ Monodoc/SettingsTest.cs
 Monodoc.Generators/RawGeneratorTests.cs
 Monodoc/NodeTest.cs
 Monodoc/RootTreeTest.cs
+Monodoc.Generators/AvoidCDataTextReaderTests.cs
index a73a2ce297f7889ebb932795522427acf95781f6..5444595d893f0616df9d74869d703e129c4f7678 100644 (file)
@@ -10,8 +10,7 @@
     <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>
@@ -22,6 +21,7 @@
     <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>
index ba44983eb5d6ffd401767bd3b10ff99985a01f0e..a912db67e6ed2b808db1c163fb27b17d8b1f4302 100644 (file)
@@ -13,8 +13,7 @@
     <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' ">
@@ -24,7 +23,7 @@
     <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>
diff --git a/mcs/errors/cs0534-10.cs b/mcs/errors/cs0534-10.cs
new file mode 100644 (file)
index 0000000..6af491c
--- /dev/null
@@ -0,0 +1,18 @@
+// 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
index e2e5e1069b85d6c332b562b9217ef38f96c3aabe..f2150288f187c27f379f6f8f2e1b1b457d952389 100644 (file)
@@ -1,4 +1,4 @@
-// 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
diff --git a/mcs/errors/cs1534-3.cs b/mcs/errors/cs1534-3.cs
new file mode 100644 (file)
index 0000000..6bcf650
--- /dev/null
@@ -0,0 +1,10 @@
+// CS1534: Overloaded binary operator `+' takes two parameters
+// Line: 6
+
+class C
+{
+       public static C operator +()
+       {
+               return null;
+       }
+}
diff --git a/mcs/errors/cs1705-2.cs b/mcs/errors/cs1705-2.cs
new file mode 100644 (file)
index 0000000..088fee8
--- /dev/null
@@ -0,0 +1,11 @@
+// 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 ());
+       }
+}
index 19a567e0ca5c2ea659d14cc67d8fbace0e18e35a..72a8a25b0f8ba8bf55e78ecbd91a2f5dc09ea7a5 100644 (file)
@@ -2463,7 +2463,6 @@ instr                     : INSTR_NONE
                                         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
index 85fa42058ca1994702bcf568b21ae44e09f196ea..0e90b56126ac287d553fa059525a8ec33f94c9d7 100644 (file)
@@ -2004,7 +2004,7 @@ namespace Mono.CSharp {
                        }
 
                        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 (
@@ -2117,7 +2117,7 @@ namespace Mono.CSharp {
                        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)));
index 6a62af9e22c4e21f7cdc2fb74ed264de78441583..3a7cb71aaa8172736a13af9dd9ea5ad1e413bfec 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Copyright 2001, 2002, 2003 Ximian, Inc.
 // Copyright 2004-2011 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 
@@ -74,6 +74,9 @@ namespace Mono.CSharp
                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;
@@ -347,15 +350,24 @@ namespace Mono.CSharp
                        } 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);
                }
 
@@ -370,7 +382,7 @@ namespace Mono.CSharp
                        // 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) {
@@ -749,7 +761,7 @@ namespace Mono.CSharp
                        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) {
index 6bbdb09b174f134d5a5cdf8f9af6df50e95a9d79..a76a59f753786e76949f3cfc7594075d7dfec38e 100644 (file)
@@ -1,14 +1,14 @@
 //
-// 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;
@@ -1650,6 +1650,11 @@ namespace Mono.CSharp {
                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;
@@ -1703,6 +1708,11 @@ namespace Mono.CSharp {
                        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");
 
@@ -1820,7 +1830,7 @@ namespace Mono.CSharp {
                        //
                        // Handle all parameter-less attributes as optional
                        //
-                       if (!IsDefined)
+                       if (!Define ())
                                return false;
 
                        ctor = (MethodSpec) MemberCache.FindMember (type, MemberFilter.Constructor (ParametersCompiled.EmptyReadOnlyParameters), BindingRestriction.DeclaredOnly);
index f33ddc37920805c9a4aa00b5b2e2d84882c180f3..8875c59cd824f8e86edb63e098555f2220c6faeb 100644 (file)
@@ -1066,9 +1066,9 @@ namespace Mono.CSharp
                        }
                }
 
-               public virtual void AddBasesForPart (List<FullNamedExpression> bases)
+               public virtual void SetBaseTypes (List<FullNamedExpression> baseTypes)
                {
-                       type_bases = bases;
+                       type_bases = baseTypes;
                }
 
                /// <summary>
@@ -2577,14 +2577,14 @@ namespace Mono.CSharp
                        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)
index c06c1c478a8e849a4c59fb1bcc777f76c1ffa382..f636ffdb0a004740dad6eacb846f872068f3f54b 100644 (file)
@@ -782,7 +782,7 @@ namespace Mono.CSharp
 
                public LocationsBag LocationsBag { get; set; }
                public bool UseJayGlobalArrays { get; set; }
-               public Tokenizer.LocatedToken[] LocatedTokens { get; set; }
+               public LocatedToken[] LocatedTokens { get; set; }
 
                public MD5 GetChecksumAlgorithm ()
                {
index bb64230f61aaa75ca562394b3fe3794c64fa9abd..e5ecaa22626634f1b11ed4d1944469ec55f48981 100644 (file)
@@ -54,7 +54,7 @@ namespace Mono.CSharp
                /// </summary>
                Block      current_block;
                
-               BlockVariableDeclaration current_variable;
+               BlockVariable current_variable;
 
                Delegate   current_delegate;
                
@@ -417,7 +417,7 @@ extern_alias_directives
 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");
@@ -425,7 +425,7 @@ extern_alias_directive
                        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);
                        }
@@ -465,7 +465,7 @@ using_namespace
          }
        | 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");
@@ -555,12 +555,12 @@ opt_semicolon_error
 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
@@ -727,7 +727,7 @@ attribute_section_cont
          {
                Error_SyntaxError (yyToken);
 
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                var tne = new SimpleName (lt.Value, null, lt.Location);
 
                $$ = new List<Attribute> () {
@@ -744,7 +744,7 @@ attribute_section_cont
 attribute_target
        : IDENTIFIER
          {
-               var lt = (Tokenizer.LocatedToken) $1;
+               var lt = (LocatedToken) $1;
                $$ = CheckAttributeTarget (lt.Value, lt.Location);
          }
        | EVENT  { $$ = "event"; }
@@ -859,7 +859,7 @@ named_attribute_argument
          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));
          }
@@ -874,7 +874,7 @@ named_argument
                // 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));
          }
@@ -984,7 +984,7 @@ constant_declaration
          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);
@@ -1035,7 +1035,7 @@ constant_declarators
 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));
          }
@@ -1074,7 +1074,7 @@ field_declaration
                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;
@@ -1099,7 +1099,7 @@ field_declaration
                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);
                        
@@ -1162,7 +1162,7 @@ field_declarators
 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));
          }
@@ -1173,7 +1173,7 @@ field_declarator
          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));
          }
@@ -1198,7 +1198,7 @@ fixed_field_declarators
 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));
          }
@@ -1508,7 +1508,7 @@ fixed_parameter
          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
@@ -1516,7 +1516,7 @@ fixed_parameter
          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);
          }
@@ -1573,7 +1573,7 @@ fixed_parameter
                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));
                
@@ -1645,14 +1645,14 @@ parameter_modifier
 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
@@ -2064,11 +2064,11 @@ operator_declarator
                                        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");
                        }
                }
                
@@ -2205,7 +2205,7 @@ constructor_declarator
                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);
 
@@ -2302,7 +2302,7 @@ destructor_declaration
          }
          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){
@@ -2420,7 +2420,7 @@ event_declarators
 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));
          }
@@ -2431,7 +2431,7 @@ event_declarator
          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));
          }
@@ -2646,7 +2646,7 @@ enum_member_declarations
 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);
 
@@ -2669,7 +2669,7 @@ enum_member_declaration
          { 
                --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);
@@ -2683,7 +2683,7 @@ enum_member_declaration
          {
                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);
 
@@ -2757,8 +2757,8 @@ namespace_or_type_expr
        : 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));
@@ -2769,7 +2769,7 @@ member_name
        : 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));
          }
@@ -2778,7 +2778,7 @@ member_name
 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);
          }
        ;
@@ -2828,7 +2828,7 @@ type_declaration_name
          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);
          }
        ;
@@ -2848,7 +2848,7 @@ method_declaration_name
        | 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);
          }
        ;
@@ -2869,21 +2869,21 @@ indexer_declaration_name
 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));
          }
@@ -2920,7 +2920,7 @@ type_parameters
 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
@@ -3104,11 +3104,11 @@ primary_expression
 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
@@ -3161,26 +3161,26 @@ parenthesized_expression
 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));
@@ -3189,7 +3189,7 @@ member_access
                $$ = 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
@@ -3197,7 +3197,7 @@ member_access
                $$ = 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);
          }
        ;
@@ -3276,13 +3276,13 @@ member_initializer_list
 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));
          }
@@ -3611,13 +3611,13 @@ anonymous_type_parameters
 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);
          }
@@ -3745,27 +3745,27 @@ typeof_type_expression
 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);               
          }
@@ -3775,7 +3775,7 @@ unbound_type_name
                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);           
          }
        ;
@@ -3793,7 +3793,7 @@ generic_dimension
 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");
 
@@ -3847,7 +3847,7 @@ unchecked_expression
 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);
          }
        ;
@@ -4431,24 +4431,24 @@ lambda_parameter_list
 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);
          }
        ;
@@ -4497,7 +4497,7 @@ expression_or_error
 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);
          }
@@ -4508,7 +4508,7 @@ lambda_expression
          }
        | 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);
          }
@@ -4519,7 +4519,7 @@ lambda_expression
          }
        | 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);
          }
@@ -4779,13 +4779,13 @@ opt_class_base
        : /* 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);
          }
        ;
 
@@ -4825,7 +4825,7 @@ type_parameter_constraints_clauses
 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));
          }
@@ -4833,7 +4833,7 @@ type_parameter_constraints_clause
          {
                Error_SyntaxError (yyToken);
          
-               var lt = (Tokenizer.LocatedToken) $2;
+               var lt = (LocatedToken) $2;
                $$ = new Constraints (new SimpleMemberName (lt.Value, lt.Location), null, GetLocation ($1));
          }
        ; 
@@ -5082,7 +5082,7 @@ empty_statement
 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);
@@ -5199,10 +5199,10 @@ identifier_inside_body
 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
          {
@@ -5215,10 +5215,10 @@ block_variable_declaration
          }
        | 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
          {
@@ -5271,18 +5271,18 @@ variable_declarators
 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));
@@ -5313,9 +5313,9 @@ const_declarators
 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));
@@ -5632,10 +5632,10 @@ opt_for_initializer
 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
          {
@@ -5700,7 +5700,7 @@ foreach_statement
                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);
                
@@ -5715,7 +5715,7 @@ foreach_statement
                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;
@@ -5766,7 +5766,7 @@ continue_statement
 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));
          }
@@ -5816,7 +5816,7 @@ throw_statement
 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");
@@ -5834,7 +5834,7 @@ yield_statement
          {
                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");
@@ -5850,7 +5850,7 @@ yield_statement
          }
        | 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");
@@ -5930,7 +5930,7 @@ catch_clause
                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);
                }
@@ -5963,7 +5963,7 @@ catch_clause
                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);
                }
 
@@ -6021,7 +6021,7 @@ fixed_statement
            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);
@@ -6048,7 +6048,7 @@ using_statement
            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);
@@ -6152,7 +6152,7 @@ first_from_clause
          {
                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)));
          }
@@ -6160,7 +6160,7 @@ first_from_clause
          {
                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)) {
@@ -6175,7 +6175,7 @@ nested_from_clause
          {
                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)));
          }
@@ -6183,7 +6183,7 @@ nested_from_clause
          {
                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)) {
@@ -6200,7 +6200,7 @@ from_clause
          }
          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));
                
@@ -6215,7 +6215,7 @@ from_clause
          }
          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)) {
@@ -6345,7 +6345,7 @@ let_clause
          }
          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));
@@ -6404,7 +6404,7 @@ join_clause
                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;
                
@@ -6424,7 +6424,7 @@ join_clause
                        
                        ((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));   
@@ -6466,7 +6466,7 @@ join_clause
                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;
                
@@ -6487,7 +6487,7 @@ join_clause
                
                        ((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)) {
@@ -6610,7 +6610,7 @@ opt_query_continuation
          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
@@ -6715,7 +6715,7 @@ doc_cref
          {
                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
@@ -6877,7 +6877,7 @@ object Error_AwaitAsIdentifier (object token)
 {
        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;
@@ -7064,7 +7064,7 @@ void FeatureIsNotAvailable (Location loc, string feature)
 
 Location GetLocation (object obj)
 {
-       var lt = obj as Tokenizer.LocatedToken;
+       var lt = obj as LocatedToken;
        if (lt != null)
                return lt.Location;
                
@@ -7141,7 +7141,7 @@ AnonymousMethodExpression end_anonymous (ParametersBlock anon_block)
        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 ();
 
@@ -7250,7 +7250,7 @@ string GetSymbolName (int token)
        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";
index 0dfc0226f295caa9ad1c418cba1271bce01b2367..b59aab461834e328f5b85890045af3f97b3fbd8f 100644 (file)
@@ -21,10 +21,47 @@ using System.Collections;
 
 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>
@@ -68,42 +105,6 @@ namespace Mono.CSharp
                        }
                }
 
-               //
-               // 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;
index 352974855a45e981caedb7e13aca99b45ab9c797..45c9719ea6a51b987ade77acc0da32e5fa0b18b5 100644 (file)
@@ -80,7 +80,7 @@ namespace Mono.CSharp
 
                        var session = new ParserSession () {
                                UseJayGlobalArrays = true,
-                               LocatedTokens = new Tokenizer.LocatedToken[15000]
+                               LocatedTokens = new LocatedToken[15000]
                        };
 
                        for (int i = 0; i < sources.Count; ++i) {
index a9edf6f470bad70c426c02ca64767695036647cb..abc646c2298ca53887b38152f4f35582c938539f 100644 (file)
@@ -1536,7 +1536,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               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;
@@ -2420,15 +2420,15 @@ namespace Mono.CSharp {
                        }
                }
 
-               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;
@@ -2444,21 +2444,21 @@ namespace Mono.CSharp {
                                        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;
                }
 
index b1ac4dd3eee7a3f6be968bd0ccd4f6d4a77a2e5f..7e1857cc087a44c90d374f670463efb7b186a216 100644 (file)
@@ -655,7 +655,7 @@ namespace Mono.CSharp
                                        new TypeExpression (base_class_imported, host.Location)
                                };
 
-                               host.AddBasesForPart (baseclass_list);
+                               host.SetBaseTypes (baseclass_list);
 
                                host.CreateContainer ();
                                host.DefineContainer ();
index 5eee6be0fc2b6add2634e1ec700db9fca13e0452..8d5bf8ae01e893f48c07eb72891c6445a110063a 100644 (file)
@@ -6038,7 +6038,7 @@ namespace Mono.CSharp
        public class ArrayInitializer : Expression
        {
                List<Expression> elements;
-               BlockVariableDeclaration variable;
+               BlockVariable variable;
 
                public ArrayInitializer (List<Expression> init, Location loc)
                {
@@ -6074,7 +6074,7 @@ namespace Mono.CSharp
                        }
                }
 
-               public BlockVariableDeclaration VariableDeclaration {
+               public BlockVariable VariableDeclaration {
                        get {
                                return variable;
                        }
index ee55bec872a32d0edb466371d22bd9a3bb36110f..95c561980abe079514c970b633f938c634e139f8 100644 (file)
@@ -42,6 +42,11 @@ namespace Mono.CSharp
                public Expression Initializer { get; private set; }
 
                #endregion
+
+               public virtual FullNamedExpression GetFieldTypeExpression (FieldBase field)
+               {
+                       return new TypeExpression (field.MemberType, Name.Location); 
+               }
        }
 
        //
@@ -408,9 +413,8 @@ namespace Mono.CSharp
                                        "`{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 ();
@@ -641,8 +645,7 @@ namespace Mono.CSharp
 
                        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;
 
index 3e8d32f8d5f492e46ed0f1e07bccf8329066d4fb..88771a8d4e196e74d8917da5157a27aead7b88a5 100644 (file)
@@ -1380,6 +1380,9 @@ namespace Mono.CSharp {
                                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)
index de1ef82c7fd610f50f3cce042a8d9897e2bfeac8..5da68dc735756cd4a7967f3ccb65a5eb04701cdd 100644 (file)
@@ -795,13 +795,14 @@ namespace Mono.CSharp {
                        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);
                                        }
                                }
 
index 3edbed6ba8100199301d02a86c438388929257a6..f842410c7f74461ea15a897f31f603e66f414581 100644 (file)
@@ -262,7 +262,7 @@ namespace Mono.CSharp
                                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;
 
index c1cef03916432b4f8564c0a2329b2662eecbbc9b..7103f8df2cb8eb6b50ac9e6b86526121985846ee 100644 (file)
@@ -276,16 +276,7 @@ namespace Mono.CSharp {
 
                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);
                }
 
index af8512ae255ba0b32113699c45637a19c1444be8..fa15cad9be6fad207d5bc87ea52262bbc92dc2fe 100644 (file)
@@ -350,6 +350,17 @@ namespace Mono.CSharp {
                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;
@@ -369,7 +380,7 @@ namespace Mono.CSharp {
 
                                        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);
@@ -377,7 +388,7 @@ namespace Mono.CSharp {
                                        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);
@@ -399,7 +410,7 @@ namespace Mono.CSharp {
                                                        continue;
                                                case ParseResult.Stop:
                                                        stop_argument = true;
-                                                       return settings;
+                                                       return true;
                                                case ParseResult.UnknownOption:
                                                        if (UnknownOptionHandler != null) {
                                                                var ret = UnknownOptionHandler (args, i);
@@ -433,11 +444,11 @@ namespace Mono.CSharp {
                                                        }
 
                                                        Error_WrongOption (arg);
-                                                       return null;
+                                                       return false;
 
                                                case ParseResult.Stop:
                                                        stop_argument = true;
-                                                       return settings;
+                                                       return true;
                                                }
                                        }
                                }
@@ -445,10 +456,7 @@ namespace Mono.CSharp {
                                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)
index 0d27014d5a10cd5fbfbc1e4b21fea5fc0e8b7de2..cb2306b3f493cbd75d37b24c6b8fb81f0ab6bdc7 100644 (file)
@@ -1436,69 +1436,72 @@ namespace Mono.CSharp {
                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;
                        }
@@ -1527,10 +1530,10 @@ namespace Mono.CSharp {
 
                #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);
                }
@@ -1677,7 +1680,7 @@ namespace Mono.CSharp {
 
                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);
@@ -1688,7 +1691,7 @@ namespace Mono.CSharp {
                        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));
                        }
                }
 
@@ -1698,9 +1701,9 @@ namespace Mono.CSharp {
                }
        }
 
-       public class BlockConstantDeclaration : BlockVariableDeclaration
+       public class BlockConstant : BlockVariable
        {
-               public BlockConstantDeclaration (FullNamedExpression type, LocalVariable li)
+               public BlockConstant (FullNamedExpression type, LocalVariable li)
                        : base (type, li)
                {
                }
@@ -5077,7 +5080,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public class VariableDeclaration : BlockVariableDeclaration
+               public class VariableDeclaration : BlockVariable
                {
                        public VariableDeclaration (FullNamedExpression type, LocalVariable li)
                                : base (type, li)
@@ -5202,7 +5205,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public BlockVariableDeclaration Variables {
+               public BlockVariable Variables {
                        get {
                                return decl;
                        }
@@ -5576,7 +5579,7 @@ namespace Mono.CSharp {
 
        public class Using : TryFinallyBlock
        {
-               public class VariableDeclaration : BlockVariableDeclaration
+               public class VariableDeclaration : BlockVariable
                {
                        Statement dispose_call;
 
@@ -5753,7 +5756,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public BlockVariableDeclaration Variables {
+               public BlockVariable Variables {
                        get {
                                return decl;
                        }
index cefb322eeb540cbdc3d483c22ebd8ccc1a0b32b6..6eb7648ce537b162b61e8a9727d995a32d49d8d7 100644 (file)
@@ -691,6 +691,7 @@ namespace Mono.CSharp
                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)
@@ -753,7 +754,11 @@ namespace Mono.CSharp
                        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;
                }
 
@@ -771,12 +776,13 @@ namespace Mono.CSharp
                        // 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;
index 3af9db9a8c293e3044af275e65abb02d6d7496c3..4d4ca0fd035d5d369955db47ec3d332a1c963d48 100644 (file)
@@ -136,12 +136,12 @@ namespace Mono.CSharp
                        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;
                }
diff --git a/mcs/tests/gtest-583-lib.il b/mcs/tests/gtest-583-lib.il
new file mode 100644 (file)
index 0000000..5284ebd
--- /dev/null
@@ -0,0 +1,34 @@
+.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
+  }
+}
diff --git a/mcs/tests/gtest-583.cs b/mcs/tests/gtest-583.cs
new file mode 100644 (file)
index 0000000..83080ac
--- /dev/null
@@ -0,0 +1,9 @@
+// Compiler options: -r:gtest-583-lib.dll
+
+public class Test
+{
+       public static void Main ()
+       {
+               new C<short> ();
+       }
+}
diff --git a/mcs/tests/test-868.cs b/mcs/tests/test-868.cs
new file mode 100644 (file)
index 0000000..3ca6157
--- /dev/null
@@ -0,0 +1,39 @@
+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
diff --git a/mcs/tests/test-partial-31.cs b/mcs/tests/test-partial-31.cs
new file mode 100644 (file)
index 0000000..849fabd
--- /dev/null
@@ -0,0 +1,45 @@
+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 ();
+               }
+       }
+}
index c3605a25324d0aba54d46016b79c5251b7b358e4..31f23f6ed82f64e17c822aeb0c08d62207014a20 100644 (file)
       </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
index 89af0a942b7d9dab14608b87a956113117c0ff81..2544964d01f38eb6688a2a3e04a85c8bc6e77c27 100644 (file)
@@ -41,9 +41,14 @@ namespace Mono {
                        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)
index bd96da20aac41926bdcd6f12a0458050ba1b3f14..cadab17357a7f6b2995bca2c47cbaa3e8740cc97 100644 (file)
@@ -344,6 +344,15 @@ namespace Mono.Linker.Steps {
                        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)
@@ -374,10 +383,8 @@ namespace Mono.Linker.Steps {
                                MarkMethodCollection (type.Methods);
                        }
 
-                       if (IsSerializable (type) && type.HasMethods) {
-                               MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
-                               MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
-                       }
+                       if (IsSerializable (type))
+                               MarkSerializable (type);
 
                        MarkTypeSpecialCustomAttributes (type);
 
@@ -567,7 +574,7 @@ namespace Mono.Linker.Steps {
 
                static bool IsDefaultConstructor (MethodDefinition method)
                {
-                       return IsConstructor (method) && method.Parameters.Count == 0;
+                       return IsConstructor (method) && !method.HasParameters;
                }
 
                static bool IsConstructor (MethodDefinition method)
index 3ddf7289ab4e3a229b01343ce15537aff8e726ba..9855bf47bd14c64fedc2d5c98bd17fcf21b2a5e2 100644 (file)
@@ -312,7 +312,8 @@ class MakeBundle {
                                }
                        };
 
-#if NET_4_5
+                       //#if NET_4_5
+#if FALSE
                        Parallel.ForEach (files, body);
 #else
                        foreach (var url in files)
index 7987f82c7e893a540266476c92d57e71839c0192..8a8e6007985718e3a48565178334a0a2cb81a211 100644 (file)
@@ -67,7 +67,7 @@ void mono_mkbundle_init ()
                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;
index 3da6f714bddb35d88457c5cc1d9710bb1dd1e27c..20e43d84c97d1fd5e469ea73d5c38a404a20423f 100644 (file)
@@ -239,7 +239,11 @@ class MonoServiceRunner : MarshalByRefObject
                        } 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);
        
@@ -264,6 +268,8 @@ class MonoServiceRunner : MarshalByRefObject
                                        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) {
index 3d53996a826d2453368a623272447021b60035dd..8caaeeb0e50295759499c1cf125616c363cdd24c 100644 (file)
@@ -37,11 +37,13 @@ SILVERLIGHT_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Silverlight
 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)
@@ -69,11 +71,9 @@ EXTRA_DISTFILES = \
        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 \
index e306cd304d6d990baf1b4938a91c1d455f013e1e..d4e3361a75639f3f1ed9692293781cce6bf3def2 100644 (file)
@@ -80,6 +80,7 @@
                <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>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets
deleted file mode 100644 (file)
index 2118874..0000000
+++ /dev/null
@@ -1,824 +0,0 @@
-<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>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks
deleted file mode 100644 (file)
index d326aad..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<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>
index 7ccd5002f1c9e26df35c1fea6d4870ad331bb8c0..ad615cb218d640b2f29f35071aec404fa35dc807 100644 (file)
@@ -305,6 +305,8 @@ rm -rf %buildroot
 %_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
index 86784c0f8794b0d2b42a96bfc0c7526820573a80..593574c6b9cdd9216c8c3253c76334118d8dc795 100644 (file)
@@ -3,7 +3,7 @@ AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
 
 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) \
@@ -16,10 +16,6 @@ arm_dpimacros.h: dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th
        (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 $@
@@ -27,6 +23,5 @@ arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
 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
 
index 31c457507550b27fa67ca79ba78ef9b0a6af8bdb..d94653e4402926313bfd24305dcfe7470e7d6508 100644 (file)
@@ -1037,6 +1037,7 @@ typedef struct {
 #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 */
 
@@ -1095,6 +1096,13 @@ typedef union {
 #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
diff --git a/mono/arch/arm/arm-fpa-codegen.h b/mono/arch/arm/arm-fpa-codegen.h
deleted file mode 100644 (file)
index 4389a5e..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * 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__ */
-
index c4c5e3e2252b21e5318e0d3ebf4c78bb7653228e..8b56b00dbbee462d56c19c9089a64aae9687403a 100644 (file)
@@ -8,7 +8,7 @@
 #include "arm-codegen.h"
 
 enum {
-       /* FPA registers */
+       /* VFP registers */
        ARM_VFP_F0,
        ARM_VFP_F1,
        ARM_VFP_F2,
diff --git a/mono/arch/arm/fpa_macros.th b/mono/arch/arm/fpa_macros.th
deleted file mode 100644 (file)
index 036b2a0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -- <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)
-
-
diff --git a/mono/arch/arm/fpam_macros.th b/mono/arch/arm/fpam_macros.th
deleted file mode 100644 (file)
index 15183c3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -- <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)
-
-
diff --git a/mono/arch/arm/fpaops.sh b/mono/arch/arm/fpaops.sh
deleted file mode 100755 (executable)
index be19876..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/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"
index d3292bffb907295510f3f20f3602fc1955d63153..3677b2d95b1b8f0f91b0d4517e71590e98bd901a 100644 (file)
@@ -593,11 +593,14 @@ typedef struct {
 #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)
@@ -636,7 +639,7 @@ typedef struct {
 #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)
@@ -654,6 +657,24 @@ typedef struct {
 #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)
index 39b37fd1afdbb205ff870bb27036d85e8d24743b..2fd7709a37e098147453d2fcad0eda41203d3f1f 100644 (file)
@@ -1283,6 +1283,9 @@ mono_method_can_access_method_full (MonoMethod *method, MonoMethod *called, Mono
 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;
 
index eb71ed4a3e3d92614760d83e6d9b1eb81ed7c69b..831ffa49cb333849555dcde27c2ad58ba709fed4 100644 (file)
@@ -9721,6 +9721,21 @@ mono_method_can_access_field_full (MonoMethod *method, MonoClassField *field, Mo
        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
index f868aa37864f4b6a29a22da3d790a4fcf17c4db7..7e2341292ef3454dd9bd042e15905e4263dcfcc1 100644 (file)
@@ -326,10 +326,10 @@ mono_method_desc_new (const char *name, gboolean include_namespace)
                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;
index 0e6a7b3df1cacdbbbefbd369506d49a3295dde22..39d226d3b25038728185704b3d0d6d70a5f8363a 100644 (file)
@@ -1481,17 +1481,6 @@ DECINLINE static void buildIEEE754Double(double* pd, int sign, int texp, guint64
 
     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)
index 67b592c1ca57b6117791f4db79f5a3136b4d67f0..d8ffb90b49e4711782a37127ae39ae5e63c1bc32 100644 (file)
@@ -779,6 +779,36 @@ mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception)
    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)
 {
index 5d62466ffbc6fbd04a0a3599d5832bd14a420ba5..3f17c54959334bae62abfe7bcbd741731d874e01 100644 (file)
@@ -730,9 +730,7 @@ ICALL(MARSHAL_42, "copy_to_unmanaged", ves_icall_System_Runtime_InteropServices_
 
 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)
index 16cf33550f2b08c8407a339994c2b099f7371465..34da6ab71dcc3d7f29a3c9246b9c3c20f564cebf 100644 (file)
@@ -898,18 +898,6 @@ ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray (MonoAr
        }
 #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
 }
 
@@ -6839,6 +6827,15 @@ ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (Mo
 
        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 *
index 958aa7fd039ccb229c455bda8e2c76e95c02010d..06197fe66256fffeae19447b77baf09ec62a6a06 100644 (file)
@@ -5320,6 +5320,10 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
                        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 ();
@@ -5648,6 +5652,8 @@ mono_marshal_get_stfld_wrapper (MonoType *type)
                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:
index 1e4d56fcdc9b7aab76482331aa9333f830aa8794..40411911bcc6fed9a28fa5dfa6d1fbcd3ea4c85d 100644 (file)
@@ -4068,7 +4068,7 @@ mono_metadata_interfaces_from_typedef (MonoImage *meta, guint32 index, guint *co
  * 
  * 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)
index 6cee6415259bddbf97127c6dbf933e01494e6b7d..343b97194a2144e4bb4104c6cc07f03014af20ab 100644 (file)
@@ -14,19 +14,6 @@ typedef union {
        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);
@@ -56,7 +43,6 @@ guint64 mono_read64 (const unsigned char *x);
        do {    \
                mono_rdouble mf;        \
                mf.ival = read64 ((x)); \
-               MONO_DOUBLE_ASSERT_ENDIANITY (&mf.fval);        \
                *(dest) = mf.fval;      \
        } while (0)
 
index 6c64c8e56a13b78cbae09e3d0d49f8608f7c148d..f66d147a88e9baee6fc21fa2941455cc13c4dbaf 100644 (file)
@@ -414,13 +414,13 @@ struct _MonoInternalThread {
        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;
 };
@@ -578,12 +578,14 @@ typedef struct {
 } 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;
 
@@ -1603,6 +1605,9 @@ mono_exception_get_native_backtrace (MonoException *exc) MONO_INTERNAL;
 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__ */
 
 
index 9334fdcec5d55bce073d99b7d062931d5d9b8245..bfd6de51adbff271941af2d1232e4d0f6bc7fe88 100644 (file)
@@ -6094,7 +6094,15 @@ mono_print_unhandled_exception (MonoObject *exc)
                        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)) {
index ee7af61a57a81ff7d451ae04addf5cc6d6beecc5..496c3c7f5ff9e66909157c08f3c7dd0a5c381ce6 100644 (file)
@@ -454,6 +454,7 @@ verify_image_file (const char *fname)
        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);
index 7135cc49f047a20e47dcf71be474260e00f8d3d1..c2ff521e3b055736c0d79f2a541d025f12de4b6e 100644 (file)
@@ -1753,13 +1753,7 @@ encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
        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;
@@ -1792,14 +1786,6 @@ handle_enum:
                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;
@@ -9398,18 +9384,7 @@ handle_enum:
                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:
index fb332822da72e7ba6f95eb226f0c2a01bbc0ccd1..40448b28696b9b1f117cae7a8ae86aa38491c07a 100644 (file)
@@ -569,8 +569,20 @@ sgen_bridge_processing_stw_step (void)
        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 (&registered_bridges, i));
+
        for (i = 0; i < registered_bridges.size; ++i)
-               dfs1 (register_bridge_object (DYN_ARRAY_PTR_REF (&registered_bridges, i)), NULL);
+               dfs1 (get_hash_entry (DYN_ARRAY_PTR_REF (&registered_bridges, i), NULL), NULL);
 
        SGEN_TV_GETTIME (atv);
        step_2 = SGEN_TV_ELAPSED (btv, atv);
index a3de37b0daaa5493d82e0f784c3fefa82e755af8..64be03ffa924aa46feca20f246d1c9b48b5c9d5d 100644 (file)
@@ -232,7 +232,7 @@ sgen_thread_handshake (BOOL suspend)
                        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 {
index ce24682d51383a1b9d149a062a6d2f9d5a3b2fe2..09c5c9a9b5b63534ea76d48af4264ab619eecfad 100644 (file)
@@ -159,6 +159,7 @@ static MonoClass *process_async_call_klass;
 
 static GPtrArray *wsqs;
 CRITICAL_SECTION wsqs_lock;
+static gboolean suspended;
 
 /* Hooks */
 static MonoThreadPoolFunc tp_start_func;
@@ -600,6 +601,7 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
        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) */
@@ -612,7 +614,10 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
        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;
 
@@ -635,7 +640,9 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
                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;
@@ -763,6 +770,7 @@ monitor_thread (gpointer unused)
        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 ();
@@ -773,11 +781,14 @@ monitor_thread (gpointer unused)
                                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];
@@ -1676,3 +1687,21 @@ mono_internal_thread_unhandled_exception (MonoObject* exc)
                 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;
+}
index c860b7ebfca3face33fa6e8292aab026fc691878..8bcb834af7491430a1a92c126879d885834e3b86 100644 (file)
@@ -22,6 +22,9 @@ void mono_thread_pool_cleanup (void) MONO_INTERNAL;
 
 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;
index ac029e279bc0c9cfa77cbb2d1cbe8a05858cc50d..69088c2e0d54de99bfe7b3d796f2615ccbd8ea88 100644 (file)
@@ -899,6 +899,7 @@ mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
 MonoThread *
 mono_thread_attach (MonoDomain *domain)
 {
+       MonoThreadInfo *info;
        MonoInternalThread *thread;
        MonoThread *current_thread;
        HANDLE thread_handle;
@@ -948,6 +949,10 @@ mono_thread_attach (MonoDomain *domain)
 
        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)) {
@@ -994,8 +999,6 @@ mono_thread_detach (MonoThread *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);
 
@@ -4761,3 +4764,20 @@ resume_thread_internal (MonoInternalThread *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;
+}
index 67001bed4cf11618e6e3aaaf30e9203361621b46..2678789b6e6c2cc7d4c1d873b1f3b85eb7efe779 100644 (file)
@@ -46,6 +46,8 @@ extern uint32_t mono_threads_get_default_stacksize (void);
 
 void mono_threads_request_thread_dump (void);
 
+mono_bool mono_thread_is_foreign (MonoThread *thread);
+
 MONO_END_DECLS
 
 #endif /* _MONO_METADATA_THREADS_H_ */
index f32d60b9935778b7b393b4dafeaea16bbf1517af..159b86799e8f7ee1ff4099b68cae183adc9d56f3 100644 (file)
@@ -2118,6 +2118,9 @@ verifier_class_is_assignable_from (MonoClass *target, MonoClass *candidate)
 
        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;
@@ -4500,7 +4503,7 @@ static void
 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) {
@@ -4544,6 +4547,14 @@ merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean sta
                        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);
@@ -4582,15 +4593,6 @@ merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean sta
                                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)) {
@@ -6213,6 +6215,9 @@ verify_generic_parameters (MonoClass *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;
 
index 4cbf423c40de0ef70d37bdb6a1adda1140e9bcf0..fe85ecf9878e908f46d82180df5dc79f76274503 100644 (file)
@@ -457,7 +457,7 @@ arch_define=__mips__
 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
index 923951750029b9c636ef5e3edfa70dd074c6669b..3b83ea0ffced4dbb23dc47b41d194d2bd5ebaa2d 100644 (file)
@@ -2950,21 +2950,24 @@ add_method (MonoAotCompile *acfg, MonoMethod *method)
        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)
 {
@@ -3715,7 +3718,7 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth,
 
        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;
 
@@ -3989,7 +3992,7 @@ add_generic_instances (MonoAotCompile *acfg)
                 * 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;
 
                /*
@@ -6147,7 +6150,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                                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)
@@ -6653,6 +6656,8 @@ emit_code (MonoAotCompile *acfg)
        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
@@ -6673,24 +6678,39 @@ emit_code (MonoAotCompile *acfg)
        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);
@@ -6751,10 +6771,15 @@ emit_code (MonoAotCompile *acfg)
                        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;
@@ -7605,9 +7630,10 @@ emit_file_info (MonoAotCompile *acfg)
        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");
@@ -8116,6 +8142,10 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        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);
index accaede79ea41e0ce1f0d65dea1d939c9fcdc1b3..f35ba21fa26acded0149492ec471da128b0504a7 100644 (file)
@@ -1491,6 +1491,28 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
        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)
 {
@@ -1691,10 +1713,13 @@ 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
@@ -3418,7 +3443,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
        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.
@@ -3522,7 +3547,17 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *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);
@@ -4347,9 +4382,9 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
        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);
                }
@@ -4375,7 +4410,7 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
                        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;
index fc873899a61b7bda2fa9e0a2ce23af502b536896..0ff8a13f839d70f0fb2aa495dafc4b64ca3f0de5 100644 (file)
@@ -212,10 +212,10 @@ tls_get: len:8 dest:i clob:c
 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
index abe0657e632da7712cb184a41b5683172fb91fe7..be6a3509d1d1f13c5e8a88a455ecdc80d2f8717e 100644 (file)
@@ -70,7 +70,7 @@ call_reg: dest:o src1:i len:8 clob:c
 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
index ba9f7dbbb6381a78d6a8d9af119ae8dfff5f91c0..1d74a7d9b01164aef249d73795c2dad668022eab 100644 (file)
@@ -73,6 +73,7 @@ int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
 #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>
@@ -2681,6 +2682,12 @@ suspend_vm (void)
 
        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 ();
 }
 
@@ -2719,6 +2726,9 @@ resume_vm (void)
        mono_mutex_unlock (&suspend_mutex);
        //g_assert (err == 0);
 
+       if (suspend_count == 0)
+               mono_thread_pool_resume ();
+
        mono_loader_unlock ();
 }
 
@@ -4063,7 +4073,9 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
        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
@@ -4089,7 +4101,7 @@ remove_breakpoint (BreakpointInstance *inst)
 
        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
index 7a7b9473a030166fbc2bfad1dfef82aded818b60..95b765069e70d6842fd9080516ab1a188ee9cf76 100644 (file)
@@ -7,6 +7,9 @@
 #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;
 
index b86678d4e2305694c31a6a5706e162f09f10af0e..c15502818fbd048bd473e1c25b3f31d497bb8688 100644 (file)
@@ -269,6 +269,7 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
        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 */
 
@@ -410,18 +411,55 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
                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;
@@ -447,8 +485,6 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
 
                        NULLIFY_INS (ins);
                }
-               break;
-       }
        }
 
        if (ins->opcode == OP_NOP) {
index e5fe5bfc71d39a43b7259002786ef960cb2e53f0..b7574c1e7b45270159751278888efeb023a84e77 100644 (file)
@@ -1271,9 +1271,6 @@ BOOL APIENTRY DllMain (HMODULE module_handle, DWORD reason, LPVOID reserved)
                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;
index fb106aa887259fdf924c053645f0e7e6bdf66388..9c69c9b9f40f36aeb293f0fdb74374d7df0d34a2 100644 (file)
@@ -310,6 +310,16 @@ class Tests {
                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);
@@ -332,6 +342,11 @@ class Tests {
                if (m.class_field.t != 5)
                        return 4;
 
+               // gshared
+               var m2 = new MRO<string> ();
+               if (m2.stfld_ldfld ("A") != "A")
+                       return 5;
+
                return 0;
        }
 
index 561b233394720b1a442075c028ea8e595ef6d413..5889d6792b8e1266bce15f038f30be3766bd6b1a 100644 (file)
@@ -183,6 +183,25 @@ public class Tests
                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;
@@ -1086,4 +1105,18 @@ public class Tests
                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;
+       }
 }
index 84a6f7c1292ea4eaaf2176993d40b34dee15bfd0..44f5df686264554a53f3753fd4be808b9fa87f14 100644 (file)
@@ -261,7 +261,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #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) { \
@@ -426,7 +426,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #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)
 
index 43129136143cb68da9b04f9b8f07231c4370ac50..51b5e52937d2184c2c2cc76757257756d05190ad 100644 (file)
@@ -2897,7 +2897,7 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                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))) {
@@ -6182,6 +6182,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        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);
 
@@ -6242,6 +6243,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        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)
@@ -6721,6 +6723,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        //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;
@@ -7387,7 +7392,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * 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);
                        }
@@ -7396,7 +7401,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        (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);
@@ -7421,7 +7426,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        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);
@@ -7728,7 +7733,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* 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))) {
@@ -8725,7 +8730,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                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);
                        }
@@ -8738,7 +8743,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        */
 
                        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);
@@ -8917,7 +8922,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        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;
 
@@ -9080,8 +9085,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        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))
@@ -9100,13 +9106,38 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                /* 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;
@@ -9460,8 +9491,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                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);
                                        }
@@ -10356,7 +10387,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        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);
                                        }
@@ -11449,6 +11480,21 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                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) {
index 99d84ec657d431df2bc3cfff5566109a69b06cd3..c52a814945f51a3792ae763c781a34ffabb6d5e7 100644 (file)
@@ -22,7 +22,6 @@
 #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
@@ -91,7 +84,9 @@ static CRITICAL_SECTION mini_arch_mutex;
 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
  */
@@ -151,7 +146,7 @@ typedef struct {
  * 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;
 
@@ -373,10 +368,7 @@ emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
        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);
@@ -805,9 +797,7 @@ mono_arch_init (void)
        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;
@@ -898,6 +888,23 @@ mono_arch_cpu_enumerate_simd_versions (void)
 
 #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)
@@ -2176,12 +2183,6 @@ mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
                                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 ();
                }
@@ -2226,9 +2227,7 @@ dyn_call_supported (CallInfo *cinfo, MonoMethodSignature *sig)
        case RegTypeStructByAddr:
                break;
        case RegTypeFP:
-               if (IS_FPA)
-                       return FALSE;
-               else if (IS_VFP)
+               if (IS_VFP)
                        break;
                else
                        return FALSE;
@@ -2948,6 +2947,16 @@ loop_start:
                                /* 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;
@@ -3133,9 +3142,7 @@ static guchar*
 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
@@ -3971,15 +3978,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                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 */
@@ -4102,12 +4113,25 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
@@ -4214,15 +4238,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
                        }
@@ -4626,113 +4646,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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) {
@@ -4879,23 +4793,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                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;
@@ -4917,17 +4815,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
                        }
@@ -4935,9 +4829,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
                        }
@@ -4945,9 +4837,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
                        }
@@ -4956,10 +4846,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
                        }
@@ -4967,10 +4854,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
                        }
@@ -5018,10 +4902,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        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);
@@ -6628,6 +6509,13 @@ mono_arch_set_target (char *mtriple)
        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;
index f8aae7b9ac229a399b073fec5aaceb378e89828f..1fc345f58b5a2c87c8240dfde7016a2b6dfb794e 100644 (file)
 #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
@@ -147,9 +145,8 @@ mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpoint
 
 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 */
@@ -231,6 +228,7 @@ typedef struct MonoCompileArch {
 #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
index 8ef772a1b14c82c2c139ba05f0ea329e46bc9b16..4e4c783d622c681aa69580ac4086bb6ebada79c2 100644 (file)
@@ -820,7 +820,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo
 
        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) {
@@ -837,7 +837,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo
                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 */
index ece328263f554386e5ab305795a783559a05139c..66be5bef73bc84b2077374ea8d74fd6d5901f14e 100644 (file)
@@ -119,6 +119,7 @@ mono_exceptions_init (void)
        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);
 }
@@ -1279,10 +1280,10 @@ build_native_trace (void)
  * 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 ();
@@ -1322,6 +1323,8 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                *out_filter_idx = -1;
        if (out_ji)
                *out_ji = NULL;
+       if (out_prev_ji)
+               *out_prev_ji = NULL;
        filter_idx = 0;
        initial_ctx = *ctx;
 
@@ -1333,6 +1336,9 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                
                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) {
@@ -1480,7 +1486,7 @@ static gboolean
 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);
@@ -1596,7 +1602,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                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)
@@ -1613,11 +1619,22 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        // 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);
@@ -1874,7 +1891,7 @@ mono_debugger_handle_exception (MonoContext *ctx, MonoObject *obj)
                 * 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
@@ -2704,8 +2721,18 @@ mono_invoke_unhandled_exception_hook (MonoObject *exc)
                
                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__)
index 2fbac8e0ba78898be29cc7d6ccac86594e86b3fb..2f309cec9f8ec151d9df1891a5ce173622a92f81 100644 (file)
@@ -15,8 +15,8 @@
 
 #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__
@@ -658,12 +658,15 @@ generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
                                                  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
@@ -676,7 +679,10 @@ generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
                return FALSE;
        }
 
-       return TRUE;
+       if (allow_partial)
+               return has_ref;
+       else
+               return TRUE;
 }
 
 /*
@@ -704,9 +710,6 @@ mono_is_partially_sharable_inst (MonoGenericInst *inst)
  * 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)
@@ -718,9 +721,11 @@ 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) {
@@ -754,6 +759,7 @@ get_shared_class (MonoClass *class)
        }
 #endif
 
+       // FIXME: Use this in all cases can be problematic wrt domain/assembly unloading
        return class_uninstantiated (class);
 }
 
@@ -1931,7 +1937,7 @@ is_async_method (MonoMethod *method)
 }
 
 /*
- * 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
@@ -1942,12 +1948,15 @@ is_async_method (MonoMethod *method)
  * 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
@@ -2003,9 +2012,9 @@ mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_ty
 }
 
 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
@@ -2014,7 +2023,7 @@ mono_method_needs_static_rgctx_invoke (MonoMethod *method, gboolean allow_type_v
        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)
index f37b087e49d4f7d356256acf358ea642f768c88e..43677fc3ec9af85edfff546a6ef25c921c73a99e 100644 (file)
@@ -246,6 +246,9 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #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 =========================*/
 
 /*------------------------------------------------------------------*/
@@ -365,7 +368,7 @@ static gboolean is_regsize_var (MonoType *);
 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 *);
@@ -414,6 +417,11 @@ static gpointer bp_trigger_page;
 
 breakpoint_t breakpointCode;
 
+/* 
+ * This mutex protects architecture specific caches 
+ */
+static CRITICAL_SECTION mini_arch_mutex;
+
 /*====================== End of Global Variables ===================*/
 
 /*------------------------------------------------------------------*/
@@ -916,7 +924,7 @@ enter_method (MonoMethod *method, RegParm *rParm, char *sp)
        
        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]);
@@ -1623,12 +1631,13 @@ add_float (guint *fr,  size_data *sz, ArgInfo *ainfo)
 /*------------------------------------------------------------------*/
 
 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;
@@ -1659,11 +1668,11 @@ get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboo
        /* 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:
@@ -1704,13 +1713,10 @@ enum_retvalue:
                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;
@@ -1803,11 +1809,10 @@ enum_retvalue:
                        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:
@@ -1858,7 +1863,7 @@ enum_retvalue:
                        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++;
@@ -1867,30 +1872,29 @@ enum_retvalue:
                        /* 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;
@@ -1949,7 +1953,7 @@ enum_retvalue:
                }
                        break;
                default:
-                       g_error ("Can't trampoline 0x%x", sig->params [i]->type);
+                       g_error ("Can't trampoline 0x%x", ptype);
                }
        }
 
@@ -2043,7 +2047,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
        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) {
@@ -2229,7 +2233,8 @@ printf("%s %4d cookine %x\n",__FUNCTION__,__LINE__,cfg->sig_cookie);
        /*------------------------------------------------------*/
        /* 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;
 
        /*------------------------------------------------------*/
@@ -2272,7 +2277,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 
        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);
@@ -2387,7 +2392,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        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;
@@ -2761,10 +2766,21 @@ mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolea
 {
        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);
@@ -4161,6 +4177,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* 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: {
@@ -4979,8 +4996,11 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain,
                        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: 
@@ -5037,7 +5057,7 @@ emit_load_volatile_arguments (guint8 *code, MonoCompile *cfg)
        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;
@@ -5150,7 +5170,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        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;
@@ -5191,6 +5212,15 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
        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 
@@ -5211,7 +5241,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        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;
@@ -5446,8 +5476,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        
        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)) {
@@ -5467,8 +5496,6 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                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);
@@ -6231,6 +6258,44 @@ mono_arch_find_imt_method (mgreg_t *regs, guint8 *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
 
 /*------------------------------------------------------------------*/
index 930ef14de7e8d2ac617a8ea736e248c374f02bf2..764db673bf5dc792c311074bd0bdc1a58509bf2a 100644 (file)
@@ -117,6 +117,8 @@ typedef struct
 #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
@@ -124,6 +126,8 @@ typedef struct
 #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
index 30880c89f940cd6e923dcd6e44e913d1c122fbd7..6a5c42f67207ae2aee02de6719cb50c9057d7f49 100644 (file)
@@ -652,7 +652,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                        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 */
index c3f58ce5f89e341d3724cc3452847e5c1d3934b7..18d16021c6480f77281a34f260a78634819f3469 100644 (file)
@@ -3281,7 +3281,7 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *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;
@@ -3414,8 +3414,10 @@ mono_add_seq_point (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, int nat
 {
        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
@@ -3673,6 +3675,8 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        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 */
@@ -4382,6 +4386,21 @@ is_gsharedvt_method (MonoMethod *method)
        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)
 {
@@ -4447,7 +4466,7 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
        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);
@@ -4459,12 +4478,14 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                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);
@@ -4473,7 +4494,6 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                 * 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
@@ -4487,6 +4507,8 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                        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);
@@ -4575,10 +4597,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                 * 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)
@@ -4594,7 +4616,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                        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);
@@ -5446,7 +5468,7 @@ lookup_method_inner (MonoDomain *domain, MonoMethod *method)
        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);
 }
@@ -5763,7 +5785,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                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++;
index 5f64c2ef1b4b9901af828173441a27f7ab5ba590..f89cc9771280ce86bb83d785885992c55a45192f 100644 (file)
 #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))
@@ -213,9 +213,7 @@ typedef struct MonoAotFileInfo
        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;
@@ -2188,6 +2186,7 @@ void      mono_arch_set_target                  (char *mtriple) MONO_INTERNAL;
 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
@@ -2467,10 +2466,10 @@ gboolean
 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;
index 7f3dd4aadd4b80afa7dff14ef0fa3c4ebb6a441c..91e760e41880a7af372befeb3c76d343e9b053a5 100644 (file)
@@ -27,6 +27,9 @@
 #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                  */
@@ -343,10 +346,11 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
                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 */
                
@@ -387,10 +391,12 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        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);
@@ -435,7 +441,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        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);
@@ -462,9 +468,201 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 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 ========================*/
index d829fd68f4f9bd9d91047f5de17eb0fa10dcff8c..24fade03a89f600bbabd0473480706d6022441a8 100644 (file)
@@ -1545,7 +1545,7 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf, int recurse)
                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]);
index e9d94af800e9a2606952722e32a4d712d24265db..c900988048711d9c8af79ec01e5d3877b7d27dc6 100644 (file)
@@ -26,3 +26,6 @@
 /tests-config
 /TAGS
 /runtime-invoke.gen.cs
+/*.exe.dylib
+/*.exe.dylib.dSYM
+
index 08e9880f87716ca673fa4e96456c38241475f9f9..fbfdcbbb16b763ad02e9852402e36055c2c0e64a 100644 (file)
@@ -66,42 +66,81 @@ public class Tests
        [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);
 
@@ -389,6 +428,29 @@ public class Tests
                        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
index 64fc73e2a5db61d6dcac3fdf071353a9cc2d5ab6..869850e94783e302f7fb3e74bf16f3e3c4c3e394 100644 (file)
@@ -10,6 +10,7 @@ descriptor-tests.exe : descriptor-tests.cs
        $(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
index 643beff42d7f83fe80299c43e04e757329d9fe5a..dc1606e86c9bfe04901c634659e0601ade47cf4e 100644 (file)
@@ -2432,6 +2432,7 @@ typedef struct {
                guint16 uiVal;
                guint32 ulVal;
                guint64 ullVal;
+               gpointer byref;
                struct {
                        gpointer pvRecord;
                        gpointer pRecInfo;
@@ -2660,6 +2661,16 @@ mono_test_marshal_variant_out_sbyte(VARIANT* variant)
        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)
 {      
@@ -2669,6 +2680,16 @@ 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)
 {
@@ -2678,6 +2699,16 @@ 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)
 {
@@ -2687,6 +2718,16 @@ 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)
 {
@@ -2696,6 +2737,16 @@ 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)
 {
@@ -2705,6 +2756,16 @@ 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)
 {
@@ -2714,6 +2775,16 @@ 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)
 {
@@ -2723,6 +2794,16 @@ 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)
 {
@@ -2732,6 +2813,16 @@ 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)
 {
@@ -2741,6 +2832,16 @@ 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)
 {
@@ -2750,6 +2851,16 @@ 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)
 {
@@ -2759,6 +2870,16 @@ 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)
 {
@@ -2768,6 +2889,16 @@ 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);
 
diff --git a/mono/tests/verifier/badmd_constraint_must_be_visible.il b/mono/tests/verifier/badmd_constraint_must_be_visible.il
new file mode 100644 (file)
index 0000000..b580d10
--- /dev/null
@@ -0,0 +1,40 @@
+.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 
+       }
+}
+
diff --git a/mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il b/mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il
new file mode 100644 (file)
index 0000000..3682f48
--- /dev/null
@@ -0,0 +1,127 @@
+.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
+
diff --git a/mono/tests/verifier/valid_delegate_return_variant_iface.cs b/mono/tests/verifier/valid_delegate_return_variant_iface.cs
new file mode 100644 (file)
index 0000000..ee4dfd2
--- /dev/null
@@ -0,0 +1,19 @@
+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
diff --git a/mono/tests/verifier/valid_merge_boxed_values.il b/mono/tests/verifier/valid_merge_boxed_values.il
new file mode 100644 (file)
index 0000000..fe173b7
--- /dev/null
@@ -0,0 +1,106 @@
+.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 
+       }
+}
+
index 290584e2e9fda34cfde2510c57004383fb33d85b..da381f665f142e9be870be1aa2eea05c84e18476 100644 (file)
 
 #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
@@ -64,8 +66,6 @@ pthread_mutex_timedlock (pthread_mutex_t *mutex, CONST_NEEDED struct timespec *t
 #endif /* HAVE_PTHREAD_MUTEX_TIMEDLOCK */
 
 
-#ifndef HOST_WIN32
-
 int
 mono_once (mono_once_t *once, void (*once_init) (void))
 {
@@ -134,7 +134,7 @@ mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
 
        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);
 
index a1db7cb41650c10aeb2d33c4b82af8aa627dc6e6..d94c42c25166c9217ef7c5df90e65db9943d2c17 100644 (file)
@@ -41,7 +41,7 @@ inner_start_thread (void *arg)
        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);
@@ -49,6 +49,7 @@ inner_start_thread (void *arg)
        result = start_func (t_arg);
        g_assert (!mono_domain_get ());
 
+       mono_thread_info_dettach ();
 
        return result;
 }
index ae039da39425c3fe1b94e09110738b8d30526f8e..4ed9dd13f99b4944e2791c1ad0abf48937640f0c 100644 (file)
@@ -83,7 +83,7 @@ inner_start_thread (LPVOID arg)
        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);
@@ -98,6 +98,8 @@ inner_start_thread (LPVOID arg)
 
        g_assert (!mono_domain_get ());
 
+       mono_thread_info_dettach ();
+
        return result;
 }
 
index 29da4ba152247561f4b96299c3ab0fc01ec2eb45..feff58fdbe4660b80209ddc688d677fde57f3b9f 100644 (file)
@@ -255,6 +255,7 @@ mono_thread_info_dettach (void)
        if (info) {
                THREADS_DEBUG ("detaching %p\n", info);
                unregister_thread (info);
+               mono_native_tls_set_value (thread_info_key, NULL);
        }
 }
 
index 92d6d16d7ef02a8181cfa4ad216421a16c16e9db..b30e9ac4c16716c201ce2cb1bf853b177014cadc 100644 (file)
@@ -96,6 +96,9 @@ typedef struct {
        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;
index b95ad9226d4093e0a07cc742651c8dadd2ee12fe..bb22ec6bb620ae67fc1b0719d8592550db5cea4c 100644 (file)
@@ -356,6 +356,7 @@ dist distdir:
        @$(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"; \
index c339ebced737526b4eed078345d66c4f46d9ae61..b24739fa686de7d203056aa7670c081f7abaab4f 100644 (file)
@@ -32,6 +32,7 @@ MPH_UNIX_SOURCE =                             \
        fstab.c                                 \
        grp.c                                   \
        macros.c                                \
+       mac-reachability.c                      \
        nl.c                                    \
        nl.h                                    \
        old-map.c                               \
@@ -115,6 +116,10 @@ libMonoPosixHelper_la_LIBADD =                     \
 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                  \
diff --git a/support/mac-reachability.c b/support/mac-reachability.c
new file mode 100644 (file)
index 0000000..c2499f5
--- /dev/null
@@ -0,0 +1,153 @@
+//
+// 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